-/** @file\r
- \r
- The file provides interface to save xml file.\r
- \r
- Copyright (c) 2006, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
- \r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
- \r
- **/\r
-package org.tianocore.frameworkwizard.common;\r
-\r
-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
-import org.tianocore.PackageSurfaceAreaDocument;\r
-import org.tianocore.PlatformSurfaceAreaDocument;\r
-import org.tianocore.FrameworkDatabaseDocument.FrameworkDatabase;\r
-import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
-import org.tianocore.PackageSurfaceAreaDocument.PackageSurfaceArea;\r
-import org.tianocore.PlatformSurfaceAreaDocument.PlatformSurfaceArea;\r
-\r
-public class SaveFile {\r
-\r
- /**\r
- \r
- @param args\r
- \r
- **/\r
- public static void main(String[] args) {\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
- Save file as msa\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
- //\r
- //Init namespace\r
- //\r
- XmlCursor cursor = XmlConfig.setupXmlCursor(msa.newCursor());\r
-\r
- //\r
- //Config file format\r
- //\r
- XmlOptions options = XmlConfig.setupXmlOptions();\r
-\r
- //\r
- //Create finial doc\r
- //\r
- msaDoc.addNewModuleSurfaceArea();\r
- msaDoc.setModuleSurfaceArea((ModuleSurfaceArea) cursor.getObject());\r
- //\r
- //Save the file\r
- //\r
- msaDoc.save(f, options);\r
- cursor.dispose();\r
- }\r
-\r
- /**\r
- Save file as spd\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
- //\r
- //Init namespace\r
- //\r
- XmlCursor cursor = XmlConfig.setupXmlCursor(spd.newCursor());\r
-\r
- //\r
- //Config file format\r
- //\r
- XmlOptions options = XmlConfig.setupXmlOptions();\r
-\r
- //\r
- //Create finial doc\r
- //\r
- spdDoc.addNewPackageSurfaceArea();\r
- spdDoc.setPackageSurfaceArea((PackageSurfaceArea) cursor.getObject());\r
- //\r
- //Save the file\r
- //\r
- spdDoc.save(f, options);\r
- cursor.dispose();\r
- }\r
-\r
- /**\r
- Save file as fpd\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
- //\r
- //Init namespace\r
- //\r
- XmlCursor cursor = XmlConfig.setupXmlCursor(fpd.newCursor());\r
-\r
- //\r
- //Config file format\r
- //\r
- XmlOptions options = XmlConfig.setupXmlOptions();\r
-\r
- //\r
- //Create finial doc\r
- //\r
- fpdDoc.addNewPlatformSurfaceArea();\r
- fpdDoc.setPlatformSurfaceArea((PlatformSurfaceArea) cursor.getObject());\r
- //\r
- //Save the file\r
- //\r
- fpdDoc.save(f, options);\r
- cursor.dispose();\r
- }\r
-\r
- /**\r
- Save file as framework db\r
- \r
- **/\r
- public static void saveDbFile(String path, FrameworkDatabase db) throws Exception {\r
- FrameworkDatabaseDocument dbDoc = FrameworkDatabaseDocument.Factory.newInstance();\r
- File f = new File(path);\r
-\r
- //\r
- //Init namespace\r
- //\r
- XmlCursor cursor = XmlConfig.setupXmlCursor(db.newCursor());\r
-\r
- //\r
- //Config file format\r
- //\r
- XmlOptions options = XmlConfig.setupXmlOptions();\r
-\r
- //\r
- //Create finial doc\r
- //\r
- dbDoc.addNewFrameworkDatabase();\r
- dbDoc.setFrameworkDatabase((FrameworkDatabase) cursor.getObject());\r
-\r
- //\r
- //Save the file\r
- //\r
- dbDoc.save(f, options);\r
- cursor.dispose();\r
- }\r
-}\r