]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/SaveFile.java
1. Remove empty top level elements if they have no data
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / common / SaveFile.java
index ec587bb5bedd6dfa9bac642e15c7b87d08df68ab..5d5ab9fd2b700af8c7e025b6d0d358261c59648f 100644 (file)
@@ -17,6 +17,7 @@ package org.tianocore.frameworkwizard.common;
 import java.io.File;\r
 \r
 import org.apache.xmlbeans.XmlCursor;\r
+import org.apache.xmlbeans.XmlObject;\r
 import org.apache.xmlbeans.XmlOptions;\r
 import org.tianocore.FrameworkDatabaseDocument;\r
 import org.tianocore.ModuleSurfaceAreaDocument;\r
@@ -44,6 +45,157 @@ public class SaveFile {
      \r
      **/\r
     public static void saveMsaFile(String path, ModuleSurfaceArea msa) throws Exception {\r
+        //\r
+        // Remove all empty top level elements\r
+        //\r
+        XmlObject o = msa.getLibraryClassDefinitions();\r
+        if (o != null) {\r
+            if (msa.getLibraryClassDefinitions().getLibraryClassList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getSourceFiles();\r
+        if (o != null) {\r
+            if (msa.getSourceFiles().getFilenameList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getPackageDependencies();\r
+        if (o != null) {\r
+            if (msa.getPackageDependencies().getPackageList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getProtocols();\r
+        if (o != null) {\r
+            if (msa.getProtocols().getProtocolList().size() <= 0\r
+                && msa.getProtocols().getProtocolNotifyList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getEvents();\r
+        if (o != null) {\r
+            if (msa.getEvents().getCreateEvents() != null || msa.getEvents().getSignalEvents() != null) {\r
+                if (msa.getEvents().getCreateEvents() != null && msa.getEvents().getCreateEvents().getEventTypesList().size() <= 0) {\r
+                    XmlCursor xmlCursor = o.newCursor();\r
+                    xmlCursor.removeXml();\r
+                    xmlCursor.dispose();\r
+                }\r
+                if (msa.getEvents().getSignalEvents() != null && msa.getEvents().getSignalEvents().getEventTypesList().size() <= 0) {\r
+                    XmlCursor xmlCursor = o.newCursor();\r
+                    xmlCursor.removeXml();\r
+                    xmlCursor.dispose();    \r
+                }\r
+            } else {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getHobs();\r
+        if (o != null) {\r
+            if (msa.getHobs().getHobTypesList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getPPIs();\r
+        if (o != null) {\r
+            if (msa.getPPIs().getPpiList().size() <= 0 && msa.getPPIs().getPpiNotifyList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getVariables();\r
+        if (o != null) {\r
+            if (msa.getVariables().getVariableList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getBootModes();\r
+        if (o != null) {\r
+            if (msa.getBootModes().getBootModeList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getSystemTables();\r
+        if (o != null) {\r
+            if (msa.getSystemTables().getSystemTableCNamesList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getDataHubs();\r
+        if (o != null) {\r
+            if (msa.getDataHubs().getDataHubRecordList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getHiiPackages();\r
+        if (o != null) {\r
+            if (msa.getHiiPackages().getHiiPackageList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getGuids();\r
+        if (o != null) {\r
+            if (msa.getGuids().getGuidCNamesList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getExterns();\r
+        if (o != null) {\r
+            if (msa.getExterns().getExternList().size() <= 0 && msa.getExterns().getSpecificationList().size() <= 0\r
+                && msa.getExterns().getPcdIsDriver() == null) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
+        o = msa.getPcdCoded();\r
+        if (o != null) {\r
+            if (msa.getPcdCoded().getPcdEntryList().size() <= 0) {\r
+                XmlCursor xmlCursor = o.newCursor();\r
+                xmlCursor.removeXml();\r
+                xmlCursor.dispose();\r
+            }\r
+        }\r
+\r
         ModuleSurfaceAreaDocument msaDoc = ModuleSurfaceAreaDocument.Factory.newInstance();\r
         File f = new File(path);\r
 \r
@@ -149,7 +301,7 @@ public class SaveFile {
         //\r
         dbDoc.addNewFrameworkDatabase();\r
         dbDoc.setFrameworkDatabase((FrameworkDatabase) cursor.getObject());\r
-             \r
+\r
         //\r
         //Save the file\r
         //\r