Modify error message contents when an improper library instance was selected for...
authorjlin16 <jlin16@de2fecce-e211-0410-80a6-f3fac2684e05>
Wed, 24 Jan 2007 07:51:16 +0000 (07:51 +0000)
committerjlin16 <jlin16@de2fecce-e211-0410-80a6-f3fac2684e05>
Wed, 24 Jan 2007 07:51:16 +0000 (07:51 +0000)
git-svn-id: https://edk2.tianocore.org/svn/edk2/trunk@2292 de2fecce-e211-0410-80a6-f3fac2684e05

edk2/Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdModuleSA.java

index 230b9e8..2dbb72f 100644 (file)
@@ -159,12 +159,12 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         classConsumed = null;\r
         jTabbedPane.setSelectedIndex(0);\r
         initPcdBuildDefinition(i);\r
-        ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
-        if (mi == null) {\r
+        moduleId = WorkspaceProfile.getModuleId(moduleKey);\r
+        if (moduleId == null) {\r
             return;\r
         }\r
         int tabIndex = jTabbedPane.indexOfTab("Libraries");\r
-        if (mi.isLibrary()) {\r
+        if (moduleId.isLibrary()) {\r
             jTabbedPane.setEnabledAt(tabIndex, false);\r
         }\r
         else {\r
@@ -199,7 +199,6 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         libClassTableModel.setRowCount(0);\r
         libInstanceTableModel.setRowCount(0);\r
         selectedInstancesTableModel.setRowCount(0);\r
-        moduleId = WorkspaceProfile.getModuleId(moduleKey);\r
         Vector<String> errorMsg = new Vector<String>();\r
         try {\r
             //\r
@@ -350,7 +349,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         //\r
         // Get dependency pkg list into which we will search lib instances.\r
         //\r
-        depPkgList = SurfaceAreaQuery.getDependencePkg(null, mi);\r
+        //depPkgList = SurfaceAreaQuery.getDependencePkg(null, mi);\r
         //\r
         // Get the lib class consumed, produced by this module itself.\r
         //\r
@@ -416,7 +415,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         Iterator<LibraryClassDescriptor> lic = this.classConsumed.keySet().iterator();\r
         while (lic.hasNext()) {\r
             LibraryClassDescriptor cls = lic.next();\r
-            if (isBoundedClass(cls)) {\r
+            if (isBoundedClass(cls, errorMsg)) {\r
                 continue;\r
             }\r
             ArrayList<String> instances = getInstancesForClass(cls, depPkgList);\r
@@ -438,15 +437,28 @@ public class FpdModuleSA extends JDialog implements ActionListener {
      * @param cls\r
      * @return\r
      */\r
-    private boolean isBoundedClass (LibraryClassDescriptor cls) {\r
-        if (this.classProduced.containsKey(cls)) {\r
-            return true;\r
-        }\r
+    private boolean isBoundedClass (LibraryClassDescriptor cls, Vector<String> errorMsg) {\r
+//        if (this.classProduced.containsKey(cls)) {\r
+//            return true;\r
+//        }\r
         Iterator<LibraryClassDescriptor> lcdi = this.classProduced.keySet().iterator();\r
         while (lcdi.hasNext()) {\r
             LibraryClassDescriptor lcd = lcdi.next();\r
-            if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)) {\r
-                return true;\r
+            if (cls.className.equals(lcd.className)) {\r
+                if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)) {\r
+                    return true;\r
+                }\r
+                else {\r
+                    ArrayList<String> producedBy = this.classProduced.get(lcd);\r
+                    String instancesName = "";\r
+                    for (int i = 0; i < producedBy.size(); ++i) {\r
+                        ModuleIdentification mi = WorkspaceProfile.getModuleId(producedBy.get(i));\r
+                        instancesName += mi.getName();\r
+                        instancesName += " ";\r
+                    }\r
+                    String msg = new ImproperInstanceException(lcd.className, instancesName, lcd.supArchs, lcd.supModTypes).getMessage();\r
+                    errorMsg.add(msg);\r
+                }\r
             }\r
         }\r
         \r
@@ -473,7 +485,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                         isPotential = true;\r
                     }\r
                     \r
-                    if (hasBeenProduced(lcd)) {\r
+                    if (isPotential && hasBeenProduced(lcd)) {\r
                         isPotential = false;\r
                         break;\r
                     }\r
@@ -492,7 +504,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
         Iterator<LibraryClassDescriptor> lcdi = this.classProduced.keySet().iterator();\r
         while (lcdi.hasNext()) {\r
             LibraryClassDescriptor lcd = lcdi.next();\r
-            if (cls.hasInterSectionWith(lcd)) {\r
+            if (cls.isSubSetByArchs(lcd) && cls.isSubSetByModTypes(lcd)) {\r
                 return true;\r
             }\r
         }\r
@@ -565,6 +577,7 @@ public class FpdModuleSA extends JDialog implements ActionListener {
     }\r
     \r
     private void showClassToResolved(){\r
+        Vector<String> errorMsg = new Vector<String>();\r
         libClassTableModel.setRowCount(0);\r
         libInstanceTableModel.setRowCount(0);\r
         if (classConsumed == null || classConsumed.size() == 0) {\r
@@ -578,11 +591,18 @@ public class FpdModuleSA extends JDialog implements ActionListener {
                 continue;\r
             }\r
             \r
-            if (!isBoundedClass(lcd)){\r
+            if (!isBoundedClass(lcd, errorMsg)){\r
                 libClassTableModel.addRow(s);\r
             }\r
         }\r
         \r
+        if (errorMsg.size() > 0) {\r
+            String errors = "";\r
+            for (int i = 0; i < errorMsg.size(); ++i) {\r
+                errors += " " + errorMsg.get(i) + "\n";\r
+            }\r
+            JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), errors);\r
+        }\r
     }\r
     \r
     private String getModuleArch () {\r
@@ -2030,6 +2050,37 @@ class MultipleInstanceException extends Exception {
     \r
 }\r
 \r
+class ImproperInstanceException extends Exception {\r
+\r
+    /**\r
+     * \r
+     */\r
+    private static final long serialVersionUID = -5279700566993277033L;\r
+    private String className = null;\r
+    private String libInstance = null;\r
+    private String instanceSupArch = null;\r
+    private String instanceSupModType = null;\r
+    \r
+    ImproperInstanceException (String libClass, String instance1, String arch, String type) {\r
+        super();\r
+        className = libClass;\r
+        libInstance = instance1;\r
+        instanceSupArch = arch;\r
+        instanceSupModType = type;\r
+    }\r
+\r
+    /* (non-Javadoc)\r
+     * @see java.lang.Throwable#getMessage()\r
+     */\r
+    @Override\r
+    public String getMessage() {\r
+        // TODO Auto-generated method stub\r
+        return " Library Class " + className + " Produced by Library Instance: " \r
+            + libInstance + "\nOnly Supports " + instanceSupArch + " and Module Type " + instanceSupModType + ".\n This instance should be removed.\n";\r
+    }\r
+    \r
+}\r
+\r
 class NoInstanceException extends Exception {\r
 \r
     /**\r