]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFrameworkModules.java
1. only show ModuleName, version, PackageName, version, supported Arch, path in table...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFrameworkModules.java
index 27faa3644f8b8fcd3099a885ae3060c1a798b9d0..53a3396c93c804c354fb2539399902b5430ff1cd 100644 (file)
@@ -27,6 +27,7 @@ import java.util.HashMap;
 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
@@ -56,7 +57,7 @@ public class FpdFrameworkModules extends IInternalFrame {
     \r
     private FpdFileContents ffc = null;\r
     private OpeningPlatformType docConsole = null;\r
-    private Map<String, String> fpdMsa = null;\r
+    private Map<String, ArrayList<String>> fpdMsa = null;\r
     \r
     private ArrayList<ModuleIdentification> miList = null;\r
 \r
@@ -137,10 +138,10 @@ public class FpdFrameworkModules extends IInternalFrame {
             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
@@ -180,34 +181,68 @@ public class FpdFrameworkModules extends IInternalFrame {
                         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
-                        JOptionPane.showMessageDialog(frame, "This Module Already Added.");\r
-                        return;\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
-                    //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
+                    if (vArchs == null) {\r
+                        JOptionPane.showMessageDialog(frame, "No supported Archs specified in MSA file.");\r
+                        return;\r
                     }\r
-                    model1.addRow(row);\r
                     \r
-                    docConsole.setSaved(false);\r
-                    try{\r
-                        ffc.addFrameworkModulesPcdBuildDefs(mi, null);\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
-                    catch (Exception exception) {\r
-                        JOptionPane.showMessageDialog(frame, "PCD Insertion Fail. " + exception.getMessage());\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
-                    JOptionPane.showMessageDialog(frame, "This Module Added Successfully.");\r
+                    //ToDo put Arch instead of null\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
+                    \r
+                    \r
+                    JOptionPane.showMessageDialog(frame, "This Module with Arch "+ archsAdded +" Added Successfully.");\r
                     jTable1.changeSelection(model1.getRowCount()-1, 0, false, false);\r
                 }\r
             });\r
@@ -257,11 +292,11 @@ public class FpdFrameworkModules extends IInternalFrame {
             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
@@ -288,11 +323,14 @@ public class FpdFrameworkModules extends IInternalFrame {
                         settingDlg = new FpdModuleSA(ffc);\r
                     }\r
                     docConsole.setSaved(false);\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, selectedRow);\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);\r
                     settingDlg.setVisible(true);\r
                 }\r
             });\r
@@ -316,12 +354,30 @@ public class FpdFrameworkModules extends IInternalFrame {
                     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
@@ -371,21 +427,36 @@ public class FpdFrameworkModules extends IInternalFrame {
         }\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
@@ -404,15 +475,21 @@ public class FpdFrameworkModules extends IInternalFrame {
         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
@@ -433,7 +510,7 @@ public class FpdFrameworkModules extends IInternalFrame {
     \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