import javax.swing.table.DefaultTableModel;\r
\r
import org.tianocore.PlatformSurfaceAreaDocument;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
import org.tianocore.frameworkwizard.platform.ui.global.GlobalData;\r
import org.tianocore.frameworkwizard.platform.ui.id.ModuleIdentification;\r
import java.util.Iterator;\r
import java.util.Map;\r
import java.util.Set;\r
+import java.util.Vector;\r
\r
public class FpdFrameworkModules extends IInternalFrame {\r
\r
private FpdModuleSA settingDlg = null;\r
\r
private FpdFileContents ffc = null;\r
- \r
- private Map<String, String> fpdMsa = null;\r
+ private OpeningPlatformType docConsole = null;\r
+ private Map<String, ArrayList<String>> fpdMsa = null;\r
\r
private ArrayList<ModuleIdentification> miList = null;\r
\r
jTable = new JTable(model);\r
jTable.setRowHeight(20);\r
model.addColumn("ModuleName");\r
- model.addColumn("ModuleGUID");\r
model.addColumn("ModuleVersion");\r
- model.addColumn("PackageGUID");\r
+ model.addColumn("PackageName");\r
model.addColumn("PackageVersion");\r
+ model.addColumn("Path");\r
\r
jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
}\r
return;\r
}\r
\r
- String mg = (String)model.getValueAt(selectedRow, 1);\r
- String mv = (String)model.getValueAt(selectedRow, 2);\r
- String pg = (String)model.getValueAt(selectedRow, 3);\r
- String pv = (String)model.getValueAt(selectedRow, 4);\r
- if (fpdMsa.containsKey(mg + mv + pg + pv)) {\r
+ String path = model.getValueAt(selectedRow, 4)+"";\r
+ ModuleIdentification mi = miList.get(selectedRow);\r
+ Vector<String> vArchs = null;\r
+ try {\r
+ vArchs = GlobalData.getModuleSupArchs(mi);\r
+ }\r
+ catch (Exception exp) {\r
+ JOptionPane.showMessageDialog(frame, exp.getMessage());\r
+ }\r
+ \r
+ if (vArchs == null) {\r
+ JOptionPane.showMessageDialog(frame, "No supported Archs specified in MSA file.");\r
+ return;\r
+ }\r
+ \r
+ String archsAdded = "";\r
+ String mg = mi.getGuid();\r
+ String mv = mi.getVersion();\r
+ String pg = mi.getPackage().getGuid();\r
+ String pv = mi.getPackage().getVersion();\r
+ \r
+ ArrayList<String> al = fpdMsa.get(mg + mv + pg + pv);\r
+ if (al == null) {\r
+ al = new ArrayList<String>();\r
+ fpdMsa.put(mg + mv + pg + pv, al);\r
+ }\r
+ for (int i = 0; i < al.size(); ++i) {\r
+ vArchs.remove(al.get(i));\r
+ }\r
+ //\r
+ // Archs this Module supported have already been added.\r
+ //\r
+ if (vArchs.size() == 0) {\r
JOptionPane.showMessageDialog(frame, "This Module Already Added.");\r
return;\r
}\r
//ToDo put Arch instead of null\r
- fpdMsa.put(mg + mv + pg + pv, null);\r
- \r
- String[] row = {" ", mg, mv, pg, pv};\r
- ModuleIdentification mi = getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
- if (mi != null) {\r
- row[0] = mi.getName();\r
- row[2] = mi.getVersion();\r
- row[4] = mi.getPackage().getVersion();\r
+ for (int i = 0; i < vArchs.size(); ++i) {\r
+ String arch = vArchs.get(i);\r
+ al.add(arch);\r
+ archsAdded += arch + " ";\r
+ String[] row = {"", mv, "", pv, arch, path};\r
+ \r
+ if (mi != null) {\r
+ row[0] = mi.getName();\r
+ row[2] = mi.getPackage().getName();\r
+ \r
+ }\r
+ model1.addRow(row);\r
+ \r
+ docConsole.setSaved(false);\r
+ try{\r
+ //ToDo : specify archs need to add.\r
+ ffc.addFrameworkModulesPcdBuildDefs(mi, arch, null);\r
+ }\r
+ catch (Exception exception) {\r
+ JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\r
+ }\r
}\r
- model1.addRow(row);\r
- ffc.addFrameworkModulesPcdBuildDefs(miList.get(selectedRow), null);\r
+ \r
+ \r
+ JOptionPane.showMessageDialog(frame, "This Module with Arch "+ archsAdded +" Added Successfully.");\r
+ jTable1.changeSelection(model1.getRowCount()-1, 0, false, false);\r
}\r
});\r
}\r
jTable1 = new JTable(model1);\r
jTable1.setRowHeight(20);\r
model1.addColumn("ModuleName");\r
- model1.addColumn("ModuleGUID");\r
model1.addColumn("ModuleVersion"); \r
- model1.addColumn("PackageGUID");\r
+ model1.addColumn("PackageName");\r
model1.addColumn("PackageVersion");\r
-// model1.addColumn("SupportedArch");\r
+ model1.addColumn("SupportedArch");\r
+ model1.addColumn("Path");\r
\r
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
}\r
settingDlg = new FpdModuleSA(ffc);\r
}\r
\r
- String mg = model1.getValueAt(selectedRow, 1)+"";\r
- String mv = model1.getValueAt(selectedRow, 2)+"";\r
- String pg = model1.getValueAt(selectedRow, 3)+"";\r
- String pv = model1.getValueAt(selectedRow, 4)+"";\r
- settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv);\r
+ String[] sa = new String[5];\r
+ ffc.getFrameworkModuleInfo(selectedRow, sa);\r
+ String mg = sa[0];\r
+ String mv = sa[1];\r
+ String pg = sa[2];\r
+ String pv = sa[3];\r
+ String arch = sa[4];\r
+ settingDlg.setKey(mg + " " + mv + " " + pg + " " + pv + " " + arch, selectedRow, docConsole);\r
settingDlg.setVisible(true);\r
}\r
});\r
if (selectedRow < 0){\r
return;\r
}\r
- String mg = model1.getValueAt(selectedRow, 1).toString();\r
- String mv = model1.getValueAt(selectedRow, 2).toString();\r
- String pg = model1.getValueAt(selectedRow, 3).toString();\r
- String pv = model1.getValueAt(selectedRow, 4).toString();\r
+ String[] sa = new String[5];\r
+ ffc.getFrameworkModuleInfo(selectedRow, sa);\r
+ String mg = sa[0];\r
+ String mv = sa[1];\r
+ String pg = sa[2];\r
+ String pv = sa[3];\r
+ String arch = sa[4];\r
+ ModuleIdentification mi = getModuleId(sa[0] + " " + sa[1] + " " + sa[2] + " " + sa[3] + " " + sa[4]);\r
+ mv = mi.getVersion();\r
+ pv = mi.getPackage().getVersion();\r
model1.removeRow(selectedRow);\r
- fpdMsa.remove(mg+mv+pg+pv);\r
+ if (arch == null) {\r
+ // if no arch specified in ModuleSA\r
+ fpdMsa.remove(mg+mv+pg+pv);\r
+ }\r
+ else {\r
+ ArrayList<String> al = fpdMsa.get(mg+mv+pg+pv);\r
+ al.remove(arch);\r
+ if (al.size() == 0) {\r
+ fpdMsa.remove(mg+mv+pg+pv);\r
+ }\r
+ }\r
+ \r
+ \r
+ docConsole.setSaved(false);\r
ffc.removeModuleSA(selectedRow);\r
}\r
});\r
\r
}\r
\r
+ public FpdFrameworkModules(OpeningPlatformType opt) {\r
+ this(opt.getXmlFpd());\r
+ docConsole = opt;\r
+ }\r
+ \r
private void init(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
try {\r
GlobalData.initInfo("Tools" + File.separator + "Conf" + File.separator + "FrameworkDatabase.db", System.getenv("WORKSPACE"));\r
}\r
catch(Exception e){\r
- JOptionPane.showMessageDialog(frame, "FrameworkDatabase Corrupted.");\r
+ JOptionPane.showMessageDialog(frame, "Error occurred when getting module data.");\r
}\r
\r
if (ffc == null){\r
}\r
\r
if (fpdMsa == null) {\r
- fpdMsa = new HashMap<String, String>();\r
+ fpdMsa = new HashMap<String, ArrayList<String>>();\r
}\r
\r
if (ffc.getFrameworkModulesCount() > 0) {\r
String[][] saa = new String[ffc.getFrameworkModulesCount()][5];\r
ffc.getFrameworkModulesInfo(saa);\r
for (int i = 0; i < saa.length; ++i) {\r
- ModuleIdentification mi = getModuleId(saa[i][1]+ " "+saa[i][2]+" "+saa[i][3]+" "+saa[i][4]);\r
+ ModuleIdentification mi = getModuleId(saa[i][0]+ " "+saa[i][1]+" "+saa[i][2]+" "+saa[i][3]);\r
+ String[] row = {"", "", "", "", "", ""};\r
if (mi != null) {\r
- saa[i][0] = mi.getName();\r
- saa[i][2] = mi.getVersion();\r
- saa[i][4] = mi.getPackage().getVersion();\r
+ row[0] = mi.getName();\r
+ row[1] = mi.getVersion();\r
+ row[2] = mi.getPackage().getName();\r
+ row[3] = mi.getPackage().getVersion();\r
+ row[4] = saa[i][4];\r
+ try{\r
+ row[5] = GlobalData.getMsaFile(mi).getPath().substring(System.getenv("WORKSPACE").length() + 1);\r
+ }\r
+ catch (Exception e) {\r
+ JOptionPane.showMessageDialog(frame, "ShowFPDModules:" + e.getMessage());\r
+ }\r
+ }\r
+ model1.addRow(row);\r
+ ArrayList<String> al = fpdMsa.get(saa[i][0]+row[1]+saa[i][2]+row[3]);\r
+ if (al == null) {\r
+ al = new ArrayList<String>();\r
+ fpdMsa.put(saa[i][0]+row[1]+saa[i][2]+row[3], al);\r
}\r
- model1.addRow(saa[i]);\r
- fpdMsa.put(saa[i][1]+saa[i][2]+saa[i][3]+saa[i][4], saa[i][0]);\r
+ al.add(saa[i][4]);\r
+ \r
}\r
}\r
\r
while(ispi.hasNext()) {\r
PackageIdentification pi = (PackageIdentification)ispi.next();\r
String[] s = {"", "", "", "", ""};\r
- s[3] = pi.getGuid();\r
- s[4] = pi.getVersion();\r
+ \r
Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
Iterator ismi = smi.iterator();\r
while(ismi.hasNext()) {\r
ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
s[0] = mi.getName();\r
- s[1] = mi.getGuid();\r
- s[2] = mi.getVersion();\r
+ s[1] = mi.getVersion();\r
+ s[2] = pi.getName();\r
+ s[3] = pi.getVersion();\r
+ try {\r
+ s[4] = GlobalData.getMsaFile(mi).getPath().substring(System.getenv("WORKSPACE").length() + 1);\r
+ }\r
+ catch (Exception e) {\r
+ JOptionPane.showMessageDialog(frame, "ShowAllModules:" + e.getMessage());\r
+ }\r
model.addRow(s);\r
miList.add(mi);\r
}\r
\r
private ModuleIdentification getModuleId(String key){\r
//\r
- // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion into string array.\r
+ // Get ModuleGuid, ModuleVersion, PackageGuid, PackageVersion, Arch into string array.\r
//\r
String[] keyPart = key.split(" ");\r
Set<PackageIdentification> spi = GlobalData.getPackageList();\r
while(ispi.hasNext()) {\r
PackageIdentification pi = (PackageIdentification)ispi.next();\r
if ( !pi.getGuid().equals(keyPart[2])){ \r
-// || !pi.getVersion().equals(keyPart[3])){\r
+\r
continue;\r
}\r
+ if (keyPart[3] != null && keyPart[3].length() > 0 && !keyPart[3].equals("null")){\r
+ if(!pi.getVersion().equals(keyPart[3])){\r
+ continue;\r
+ }\r
+ }\r
Set<ModuleIdentification> smi = GlobalData.getModules(pi);\r
Iterator ismi = smi.iterator();\r
while(ismi.hasNext()) {\r
ModuleIdentification mi = (ModuleIdentification)ismi.next();\r
if (mi.getGuid().equals(keyPart[0])){\r
-// && mi.getVersion().equals(keyPart[1])){\r
+ if (keyPart[1] != null && keyPart[1].length() > 0 && !keyPart[1].equals("null")){\r
+ if(!mi.getVersion().equals(keyPart[1])){\r
+ continue;\r
+ }\r
+ }\r
\r
return mi;\r
}\r