public class FpdFileContents {\r
\r
static final String xmlNs = "http://www.TianoCore.org/2006/Edk2.0";\r
- static final String regNewLineAndSpaces = "((\n)|(\r\n)|(\r)|(\u0085)|(\u2028)|(\u2029))(\\s)*";\r
+ static final String regExpNewLineAndSpaces = "((\n)|(\r\n)|(\r)|(\u0085)|(\u2028)|(\u2029))(\\s)*";\r
\r
private PlatformSurfaceAreaDocument fpdd = null;\r
\r
break;\r
}\r
String s = cursor.getTextValue();\r
- if (s.matches(regNewLineAndSpaces)) {\r
+ if (s.matches(regExpNewLineAndSpaces)) {\r
continue;\r
}\r
}\r
vMi.add(libMi);\r
}\r
\r
- try {\r
nextPcd:for (int i = 0; i < saaModuleSaPcd.length; ++i) {\r
\r
for (int j = 0; j < vMi.size(); ++j) {\r
removePcdData(seqModuleSa, saaModuleSaPcd[i][0], saaModuleSaPcd[i][1]);\r
dataModified = true;\r
}\r
- }\r
- catch (Exception e) {\r
- throw e;\r
- }\r
//\r
// add new Pcd from MSA file to ModuleSA.\r
//\r
- try {\r
- \r
- for (int i = 0; i < vMi.size(); ++i) {\r
+ for (int i = 0; i < vMi.size(); ++i) {\r
ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea) WorkspaceProfile\r
.getModuleXmlObject(vMi\r
.get(i));\r
}\r
\r
}\r
- }\r
- catch (Exception e){\r
- throw e;\r
- }\r
\r
return dataModified;\r
}\r
return false;\r
}\r
\r
+ private boolean multiSourcePcd (String cName, String tsGuidCName, String moduleKey) {\r
+ int libCount = getLibraryInstancesCount(moduleKey);\r
+ String[][] saaLib = new String[libCount][5];\r
+ getLibraryInstances(moduleKey, saaLib);\r
+ ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
+ Vector<ModuleIdentification> vMi = new Vector<ModuleIdentification>();\r
+ //\r
+ // create vector for module & library instance MIs.\r
+ //\r
+ vMi.add(mi);\r
+ for (int j = 0; j < saaLib.length; ++j) {\r
+ String libKey = saaLib[j][1] + " " + saaLib[j][2] + " " + saaLib[j][3] + " " + saaLib[j][4];\r
+ ModuleIdentification libMi = WorkspaceProfile.getModuleId(libKey);\r
+ vMi.add(libMi);\r
+ }\r
+ \r
+ int pcdSourceCount = 0;\r
+ for (int i = 0; i < vMi.size(); ++i) {\r
+ if (WorkspaceProfile.pcdInMsa(cName, tsGuidCName, vMi.get(i))) {\r
+ pcdSourceCount++;\r
+ }\r
+ }\r
+ \r
+ if (pcdSourceCount < 2) {\r
+ return false;\r
+ }\r
+ else {\r
+ return true;\r
+ }\r
+ \r
+ }\r
+ \r
/**Remove PCDBuildDefinition entries from ModuleSA\r
* @param moduleKey identifier of ModuleSA.\r
* @param consumer where these entries come from.\r
*/\r
public void removePcdData(String moduleKey, ModuleIdentification consumer) {\r
- try {\r
+ \r
ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea)WorkspaceProfile.getModuleXmlObject(consumer);\r
if (msa.getPcdCoded() == null) {\r
return;\r
do {\r
PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData pcdData = (PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData) cursor\r
.getObject();\r
- if (msaPcd.getCName().equals(pcdData.getCName())\r
- && msaPcd.getTokenSpaceGuidCName().equals(pcdData.getTokenSpaceGuidCName())) {\r
+ String cName = msaPcd.getCName();\r
+ String tsGuidCName = msaPcd.getTokenSpaceGuidCName();\r
+ if (cName.equals(pcdData.getCName())\r
+ && tsGuidCName.equals(pcdData.getTokenSpaceGuidCName()) && !multiSourcePcd(cName, tsGuidCName, moduleKey)) {\r
\r
maintainDynPcdMap(pcdData.getCName() + " " + pcdData.getTokenSpaceGuidCName(),\r
moduleKey);\r
cursor.dispose();\r
}\r
}\r
- \r
- }\r
- catch (Exception e){\r
- e.printStackTrace();\r
- \r
- }\r
+ \r
}\r
//\r
// key for ModuleSA : "ModuleGuid ModuleVer PackageGuid PackageVer Arch"\r
break;\r
}\r
String s = cursor.getTextValue();\r
- if (s.matches(regNewLineAndSpaces)) {\r
+ if (s.matches(regExpNewLineAndSpaces)) {\r
continue;\r
}\r
}\r
pcdConsumer = new ArrayList<String>();\r
}\r
//\r
+ // Check whether this PCD has already added to ModuleSA, if so, just return.\r
+ //\r
+ String moduleInfo = moduleSa.getModuleGuid().toLowerCase() + " " + moduleSa.getModuleVersion() \r
+ + " " + moduleSa.getPackageGuid().toLowerCase() + " " + moduleSa.getPackageVersion() + " " + listToString(moduleSa.getSupArchList());\r
+ for (int i = 0; i < pcdConsumer.size(); ++i) {\r
+ String pcdInfo = pcdConsumer.get(i);\r
+ if (moduleInfo.equals(pcdInfo.substring(0, pcdInfo.lastIndexOf(" ")))){\r
+ return;\r
+ }\r
+ }\r
+ //\r
// Using existing Pcd type, if this pcd already exists in other ModuleSA\r
//\r
if (pcdConsumer.size() > 0) {\r
\r
itemType = itemType (pcdConsumer.get(0));\r
}\r
- String listValue = moduleSa.getModuleGuid() + " " + moduleSa.getModuleVersion() \r
- + " " + moduleSa.getPackageGuid() + " " + moduleSa.getPackageVersion() + " " + listToString(moduleSa.getSupArchList())\r
- + " " + itemType;\r
+ String listValue = moduleInfo + " " + itemType;\r
pcdConsumer.add(listValue);\r
dynPcdMap.put(cName + " " + tsGuid, pcdConsumer);\r
\r
private JPanel jPanelCustomToolChain = null;\r
private JPanel jPanelToolchainS = null;\r
private JPanel jPanelToolchainC = null;\r
+ private JPanel jPanelLibraryCenterN = null;\r
+ private JPanel jPanelLibraryCenterC = null; // @jve:decl-index=0:visual-constraint="20,224"\r
/**\r
* This is the default constructor\r
*/\r
libInstanceTableModel.setRowCount(0);\r
}\r
\r
- private void addLibInstance (ModuleIdentification libMi) {\r
+ private void addLibInstance (ModuleIdentification libMi) throws Exception{\r
\r
- ffc.genLibraryInstance(libMi, moduleKey);\r
//\r
// Add pcd information of selected instance to current moduleSA\r
//\r
- try{\r
- ffc.addFrameworkModulesPcdBuildDefs(libMi, null, ffc.getModuleSA(moduleKey));\r
- }\r
- catch (Exception exception) {\r
- JOptionPane.showMessageDialog(frame, "Adding Instance" + libMi.getName() + ": "+ exception.getMessage());\r
- }\r
+ ffc.addFrameworkModulesPcdBuildDefs(libMi, null, ffc.getModuleSA(moduleKey));\r
\r
+ ffc.genLibraryInstance(libMi, moduleKey);\r
}\r
/**\r
* This method initializes this\r
* @return void\r
*/\r
private void initialize() {\r
- this.setSize(664, 515);\r
+ this.setSize(877, 555);\r
this.setResizable(false);\r
this.centerWindow();\r
this.setModal(true);\r
private JPanel getJPanelPcd() {\r
if (jPanelPcd == null) {\r
jLabelPcdData = new JLabel();\r
- jLabelPcdData.setText("PcdData");\r
+ jLabelPcdData.setText(" PCD Data");\r
jPanelPcd = new JPanel();\r
jPanelPcd.setLayout(new BorderLayout());\r
jPanelPcd.add(jLabelPcdData, java.awt.BorderLayout.NORTH);\r
model = new IDefaultTableModel();\r
jTablePcd = new JTable(model);\r
jTablePcd.setRowHeight(20);\r
- jTablePcd.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
+ jTablePcd.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);\r
model.addColumn("CName");\r
model.addColumn("TokenSpaceGUID");\r
model.addColumn("ItemType");\r
private JScrollPane getJScrollPaneSelectedInstances() {\r
if (jScrollPaneSelectedInstances == null) {\r
jScrollPaneSelectedInstances = new JScrollPane();\r
- jScrollPaneSelectedInstances.setPreferredSize(new java.awt.Dimension(453,150));\r
+ jScrollPaneSelectedInstances.setPreferredSize(new java.awt.Dimension(600,150));\r
jScrollPaneSelectedInstances.setViewportView(getJTableSelectedInstances());\r
}\r
return jScrollPaneSelectedInstances;\r
private JScrollPane getJScrollPaneQualifiedInstance() {\r
if (jScrollPaneQualifiedInstance == null) {\r
jScrollPaneQualifiedInstance = new JScrollPane();\r
- jScrollPaneQualifiedInstance.setPreferredSize(new java.awt.Dimension(430,170));\r
+ jScrollPaneQualifiedInstance.setPreferredSize(new java.awt.Dimension(600,170));\r
jScrollPaneQualifiedInstance.setViewportView(getJTableLibInstances());\r
}\r
return jScrollPaneQualifiedInstance;\r
jLabelSelectedInstances = new JLabel();\r
jLabelSelectedInstances.setText("Selected Instances");\r
jPanelLibraryCenter = new JPanel();\r
- jPanelLibraryCenter.add(jLabelInstanceHelp, null);\r
- jPanelLibraryCenter.add(getJScrollPaneInstanceHelp(), null);\r
- jPanelLibraryCenter.add(getJButtonAdd(), null);\r
- jPanelLibraryCenter.add(getJButtonDeleteInstance(), null);\r
- jPanelLibraryCenter.add(jLabelSelectedInstances, null);\r
- jPanelLibraryCenter.add(getJScrollPaneSelectedInstances(), null);\r
+ jPanelLibraryCenter.setLayout(new BorderLayout());\r
+\r
+ jPanelLibraryCenter.add(getJPanelLibraryCenterC(), java.awt.BorderLayout.CENTER);\r
+ jPanelLibraryCenter.add(getJPanelLibraryCenterN(), java.awt.BorderLayout.NORTH);\r
+\r
}\r
return jPanelLibraryCenter;\r
}\r
private JScrollPane getJScrollPaneInstanceHelp() {\r
if (jScrollPaneInstanceHelp == null) {\r
jScrollPaneInstanceHelp = new JScrollPane();\r
- jScrollPaneInstanceHelp.setPreferredSize(new java.awt.Dimension(300,50));\r
+ jScrollPaneInstanceHelp.setPreferredSize(new java.awt.Dimension(400,50));\r
jScrollPaneInstanceHelp.setViewportView(getJTextAreaInstanceHelp());\r
}\r
return jScrollPaneInstanceHelp;\r
if (row < 0) {\r
return;\r
}\r
- docConsole.setSaved(false);\r
- Object[] s = {libInstanceTableModel.getValueAt(row, 0), libInstanceTableModel.getValueAt(row, 1),\r
- libInstanceTableModel.getValueAt(row, 2), libInstanceTableModel.getValueAt(row, 3),\r
- libInstanceTableModel.getValueAt(row, 4)};\r
- selectedInstancesTableModel.addRow(s);\r
+ \r
String instanceValue = libInstanceTableModel.getValueAt(row, 1) + " " +\r
libInstanceTableModel.getValueAt(row, 2) + " " +\r
libInstanceTableModel.getValueAt(row, 3) + " " +\r
libInstanceTableModel.getValueAt(row, 4);\r
ModuleIdentification libMi = WorkspaceProfile.getModuleId(instanceValue);\r
- addLibInstance (libMi);\r
+ try {\r
+ addLibInstance (libMi);\r
+ }\r
+ catch (Exception exception) {\r
+ JOptionPane.showMessageDialog(frame, "Adding Instance" + libMi.getName() + ": "+ exception.getMessage());\r
+ return;\r
+ }\r
+ docConsole.setSaved(false);\r
+ Object[] s = {libInstanceTableModel.getValueAt(row, 0), libInstanceTableModel.getValueAt(row, 1),\r
+ libInstanceTableModel.getValueAt(row, 2), libInstanceTableModel.getValueAt(row, 3),\r
+ libInstanceTableModel.getValueAt(row, 4)};\r
+ selectedInstancesTableModel.addRow(s);\r
resolveLibraryInstances(instanceValue);\r
showClassToResolved();\r
}\r
}\r
return jPanelToolchainC;\r
}\r
+/**\r
+ * This method initializes jPanelLibraryCenterN \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+private JPanel getJPanelLibraryCenterN() {\r
+ if (jPanelLibraryCenterN == null) {\r
+ FlowLayout flowLayout5 = new FlowLayout();\r
+ flowLayout5.setAlignment(java.awt.FlowLayout.CENTER);\r
+ flowLayout5.setHgap(10);\r
+ jPanelLibraryCenterN = new JPanel();\r
+ jPanelLibraryCenterN.setLayout(flowLayout5);\r
+ jPanelLibraryCenterN.add(jLabelInstanceHelp, null);\r
+ jPanelLibraryCenterN.add(getJScrollPaneInstanceHelp(), null);\r
+ jPanelLibraryCenterN.add(getJButtonAdd(), null);\r
+ jPanelLibraryCenterN.add(getJButtonDeleteInstance(), null);\r
+ }\r
+ return jPanelLibraryCenterN;\r
+}\r
+/**\r
+ * This method initializes jPanelLibraryCenterC \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+private JPanel getJPanelLibraryCenterC() {\r
+ if (jPanelLibraryCenterC == null) {\r
+ jPanelLibraryCenterC = new JPanel();\r
+ jPanelLibraryCenterC.add(jLabelSelectedInstances, null);\r
+ jPanelLibraryCenterC.add(getJScrollPaneSelectedInstances(), null);\r
+ }\r
+ return jPanelLibraryCenterC;\r
+}\r
\r
\r
} // @jve:decl-index=0:visual-constraint="10,10"\r