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
\r
**/\r
public static void main(String[] args) {\r
- // TODO Auto-generated method stub\r
-\r
+ \r
+ }\r
+ \r
+ private static void createDirectory(String path) throws Exception {\r
+ File f = new File(path);\r
+ path = f.getParent();\r
+ FileOperation.newFolder(path);\r
}\r
\r
/**\r
\r
**/\r
public static void saveMsaFile(String path, ModuleSurfaceArea msa) throws Exception {\r
+ //\r
+ // Create the file's directory first\r
+ //\r
+ createDirectory(path);\r
+ \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
//Save the file\r
//\r
msaDoc.save(f, options);\r
+ cursor.dispose();\r
}\r
\r
/**\r
\r
**/\r
public static void saveSpdFile(String path, PackageSurfaceArea spd) throws Exception {\r
+ //\r
+ // Create the file's directory first\r
+ //\r
+ createDirectory(path);\r
+ \r
PackageSurfaceAreaDocument spdDoc = PackageSurfaceAreaDocument.Factory.newInstance();\r
File f = new File(path);\r
\r
//Save the file\r
//\r
spdDoc.save(f, options);\r
+ cursor.dispose();\r
}\r
\r
/**\r
\r
**/\r
public static void saveFpdFile(String path, PlatformSurfaceArea fpd) throws Exception {\r
+ //\r
+ // Create the file's directory first\r
+ //\r
+ createDirectory(path);\r
+ \r
PlatformSurfaceAreaDocument fpdDoc = PlatformSurfaceAreaDocument.Factory.newInstance();\r
File f = new File(path);\r
\r
//Save the file\r
//\r
fpdDoc.save(f, options);\r
+ cursor.dispose();\r
}\r
\r
/**\r
//\r
dbDoc.addNewFrameworkDatabase();\r
dbDoc.setFrameworkDatabase((FrameworkDatabase) cursor.getObject());\r
- \r
+\r
//\r
//Save the file\r
//\r
dbDoc.save(f, options);\r
+ cursor.dispose();\r
}\r
}\r