\r
import java.io.BufferedWriter;\r
import java.io.FileWriter;\r
-import java.util.*;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
\r
import org.apache.xmlbeans.XmlOptions;\r
-import org.tianocore.*;\r
+import org.tianocore.ExternsDocument;\r
+import org.tianocore.FilenameDocument;\r
+import org.tianocore.GuidsDocument;\r
+import org.tianocore.LibraryClassDefinitionsDocument;\r
+import org.tianocore.LibraryClassDocument;\r
+import org.tianocore.LicenseDocument;\r
+import org.tianocore.ModuleDefinitionsDocument;\r
+import org.tianocore.ModuleSurfaceAreaDocument;\r
+import org.tianocore.ModuleTypeDef;\r
+import org.tianocore.MsaHeaderDocument;\r
+import org.tianocore.PPIsDocument;\r
+import org.tianocore.PackageDependenciesDocument;\r
+import org.tianocore.ProtocolsDocument;\r
+import org.tianocore.SourceFilesDocument;\r
+import org.tianocore.SupportedArchitectures;\r
+import org.tianocore.UsageTypes;\r
import org.tianocore.SupportedArchitectures.Enum;\r
\r
public class MsaOwner {\r
- public static final String COPYRIGHT = "Copyright (c) 2006, Intel Corporation";\r
- public static final String VERSION = "1.0";\r
- public static final String ABSTRACT = "Component name for module ";\r
- public static final String DESCRIPTION = "FIX ME!";\r
- public static final String LICENSE = "All rights reserved.\n" +\r
- " This software and associated documentation (if any) is furnished\n" +\r
- " under a license and may only be used or copied in accordance\n" +\r
- " with the terms of the license. Except as permitted by such\n" +\r
- " license, no part of this software or documentation may be\n" +\r
- " reproduced, stored in a retrieval system, or transmitted in any\n" +\r
- " form or by any means without the express written consent of\n" +\r
- " Intel Corporation.";\r
- public static final String SPECIFICATION = "FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052";\r
- \r
- public static final Enum IA32 = SupportedArchitectures.IA_32;\r
- public static final Enum X64 = SupportedArchitectures.X_64;\r
- public static final Enum IPF = SupportedArchitectures.IPF;\r
- public static final Enum EBC = SupportedArchitectures.EBC;\r
- \r
- private ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.newInstance();\r
- \r
- private ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = null;\r
- private MsaHeaderDocument.MsaHeader msaheader = null;\r
- private LicenseDocument.License license = null;\r
- private ModuleDefinitionsDocument.ModuleDefinitions moduledefinitions = null;\r
- private SourceFilesDocument.SourceFiles sourcefiles = null; //found local .h files are not written\r
- private GuidsDocument.Guids guids = null;\r
- private ProtocolsDocument.Protocols protocols = null;\r
- private PPIsDocument.PPIs ppis = null;\r
- private PackageDependenciesDocument.PackageDependencies packagedependencies = null;\r
- private LibraryClassDefinitionsDocument.LibraryClassDefinitions libclassdefs = null;\r
- private ExternsDocument.Externs externs = null;\r
- \r
- private List<Enum> listarch = new ArrayList<Enum>();\r
- //private Map<String, Enum> mapfilenames = new HashMap<String, Enum>(); //this need to be installed manually when msa is to be written\r
- //private Map<String, UsageTypes.Enum> mapprotocols = new HashMap<String, UsageTypes.Enum>();\r
-\r
- //-----------------------------msaheader-------------------------------------//\r
-\r
- public final boolean addLibraryClass (String name, UsageTypes.Enum usage) {\r
- /*\r
- if (!libclassdefs.getLibraryClassList().contains(name)) {\r
- LibraryClassDocument.LibraryClass classname;\r
- classname = libclassdefs.addNewLibraryClass();\r
- classname.setKeyword(name);\r
- classname.setUsage(usage);\r
- return true;\r
- } else {\r
- return false;\r
- }\r
- */\r
- if (name == null) {\r
- return false;\r
- } else {\r
- Iterator<LibraryClassDocument.LibraryClass> classit = libclassdefs.getLibraryClassList().iterator();\r
- while (classit.hasNext()) {\r
- if (classit.next().getKeyword().matches(name)) {\r
- //MigrationTool.ui.println ("Warning: Duplicate LibraryClass");\r
- return false;\r
- }\r
- }\r
- \r
- LibraryClassDocument.LibraryClass classname;\r
- classname = libclassdefs.addNewLibraryClass();\r
- classname.setKeyword(name);\r
- classname.setUsage(usage);\r
- return true;\r
- \r
- }\r
- }\r
- \r
- public final boolean addGuid (String guidname, UsageTypes.Enum usage) {\r
- if (guids == null) {\r
- guids = msa.addNewGuids();\r
- }\r
- \r
- Iterator<GuidsDocument.Guids.GuidCNames> guidit = guids.getGuidCNamesList().iterator();\r
- while (guidit.hasNext()) {\r
- if (guidit.next().getGuidCName() == guidname) {\r
- //MigrationTool.ui.println ("Warning: Duplicate Guid");\r
- return false;\r
- }\r
- }\r
- \r
- GuidsDocument.Guids.GuidCNames guid;\r
- guid = guids.addNewGuidCNames();\r
- guid.setGuidCName(guidname);\r
- guid.setUsage(usage);\r
- return true;\r
- }\r
- \r
- \r
- public final boolean addPpi (String ppiname, UsageTypes.Enum usage) {\r
- if (ppis == null) {\r
- ppis = msa.addNewPPIs();\r
- }\r
- \r
- Iterator<PPIsDocument.PPIs.Ppi> ppiit = ppis.getPpiList().iterator();\r
- while (ppiit.hasNext()) {\r
- if (ppiit.next().getPpiCName() == ppiname) {\r
- //MigrationTool.ui.println ("Warning: Duplicate Ppi");\r
- return false;\r
- }\r
- }\r
- \r
- PPIsDocument.PPIs.Ppi ppi;\r
- ppi = ppis.addNewPpi();\r
- ppi.setPpiCName(ppiname);\r
- ppi.setUsage(usage);\r
- return true;\r
- }\r
- \r
- public final boolean addProtocol (String proname, UsageTypes.Enum usage) {\r
- if (protocols == null) {\r
- protocols = msa.addNewProtocols();\r
- }\r
-\r
- Iterator<ProtocolsDocument.Protocols.Protocol> proit = protocols.getProtocolList().iterator();\r
- while (proit.hasNext()) {\r
- if (proit.next().getProtocolCName() == proname) {\r
- //MigrationTool.ui.println ("Warning: Duplicate Protocol");\r
- return false;\r
- }\r
- }\r
-\r
- ProtocolsDocument.Protocols.Protocol protocol;\r
- protocol = protocols.addNewProtocol();\r
- protocol.setProtocolCName(proname);\r
- protocol.setUsage(usage);\r
- return true;\r
- }\r
- \r
- public final boolean addSourceFile (String name, Enum en) {\r
- Iterator<FilenameDocument.Filename> fileit = sourcefiles.getFilenameList().iterator();\r
- while (fileit.hasNext()) {\r
- if (fileit.next().getStringValue() == name) {\r
- MigrationTool.ui.println ("Warning: Duplicate SourceFileName");\r
- return false;\r
- }\r
- }\r
- \r
- FilenameDocument.Filename filename;\r
- List<Enum> arch = new ArrayList<Enum>();\r
- filename = sourcefiles.addNewFilename();\r
- filename.setStringValue(name);\r
- arch.add(en);\r
- filename.setSupArchList(arch);\r
- return true;\r
- }\r
- \r
- // entry point todo\r
- \r
- public final boolean setupExternSpecification () {\r
- addExternSpecification("EFI_SPECIFICATION_VERSION 0x00020000");\r
- addExternSpecification("EDK_RELEASE_VERSION 0x00020000");\r
- return true;\r
- }\r
- \r
- public final boolean addExternSpecification (String specification) {\r
- if (externs.getSpecificationList().contains(specification)) {\r
- return false;\r
- } else {\r
- externs.addSpecification(specification);\r
- return true;\r
- }\r
- }\r
- \r
- public final boolean setupPackageDependencies() {\r
- Iterator<String> it;\r
- //\r
- // For now, simply add all package guids in the database. \r
- // \r
- it = MigrationTool.db.dumpAllPkgGuid();\r
- while (it.hasNext()) {\r
- packagedependencies.addNewPackage().setPackageGuid(it.next());\r
- }\r
- return true;\r
- }\r
- \r
- public final boolean addPackage (String guid) {\r
- if (packagedependencies.getPackageList().contains(guid)) {\r
- return false;\r
- } else {\r
- packagedependencies.addNewPackage().setPackageGuid(guid);\r
- return true;\r
- }\r
- }\r
- \r
- public final boolean setupModuleDefinitions () { //????????? give this job to moduleinfo\r
- moduledefinitions.setBinaryModule(false);\r
- moduledefinitions.setOutputFileBasename(msaheader.getModuleName());\r
- return true;\r
- }\r
- public final boolean addSupportedArchitectures (Enum arch) {\r
- if (listarch.contains(arch)) {\r
- return false;\r
- } else {\r
- listarch.add(arch);\r
- return true;\r
- }\r
- }\r
- \r
- public final boolean addSpecification (String specification) {\r
- if (msaheader.getSpecification() == null) {\r
- if (specification == null) {\r
- msaheader.setSpecification(SPECIFICATION);\r
- } else {\r
- msaheader.setSpecification(specification);\r
- }\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate Specification");\r
- return false;\r
- }\r
- }\r
- \r
- public final boolean addLicense (String licensecontent) {\r
- if (msaheader.getLicense() == null) {\r
- license = msaheader.addNewLicense();\r
- if (licensecontent == null) {\r
- license.setStringValue(LICENSE);\r
- } else {\r
- license.setStringValue(licensecontent);\r
- }\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate License");\r
- return false;\r
- }\r
- }\r
- \r
- public final boolean addDescription (String description) {\r
- if (msaheader.getDescription() == null) {\r
- if (description == null) {\r
- msaheader.setDescription(DESCRIPTION);\r
- } else {\r
- msaheader.setDescription(description);\r
- }\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate Description");\r
- return false;\r
- }\r
- }\r
- \r
- public final boolean addAbstract (String abs) {\r
- if (msaheader.getAbstract() == null) {\r
- if (abs == null) {\r
- msaheader.setAbstract(ABSTRACT + msaheader.getModuleName());\r
- } else {\r
- msaheader.setVersion(abs);\r
- }\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate Abstract");\r
- return false;\r
- }\r
- }\r
- \r
- public final boolean addVersion (String version) {\r
- if (msaheader.getVersion() == null) {\r
- if (version == null) {\r
- msaheader.setVersion(VERSION);\r
- } else {\r
- msaheader.setVersion(version);\r
- }\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate Version");\r
- return false;\r
- }\r
- }\r
- \r
- public final boolean addCopyRight (String copyright) {\r
- if (msaheader.getCopyright() == null) {\r
- if (copyright == null) {\r
- msaheader.setCopyright(COPYRIGHT);\r
- } else {\r
- msaheader.setCopyright(copyright);\r
- }\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate CopyRight");\r
- return false;\r
- }\r
- }\r
- \r
- public final boolean addModuleType (String moduletype) {\r
- if (msaheader.getModuleType() == null) {\r
- msaheader.setModuleType(ModuleTypeDef.Enum.forString(moduletype));\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate ModuleType");\r
- return false;\r
- }\r
- }\r
- \r
- public final boolean addGuidValue (String guidvalue) {\r
- if (msaheader.getGuidValue() == null) {\r
- msaheader.setGuidValue(guidvalue);\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate GuidValue");\r
- return false;\r
- }\r
- }\r
- \r
- public final boolean addModuleName (String modulename) {\r
- if (msaheader.getModuleName() == null) {\r
- msaheader.setModuleName(modulename);\r
- return true;\r
- } else {\r
- MigrationTool.ui.println ("Warning: Duplicate ModuleName");\r
- return false;\r
- }\r
- }\r
- //-----------------------------msaheader-------------------------------------//\r
- \r
- private final void fullfill () throws Exception {\r
- addCopyRight(null);\r
- addVersion(null);\r
- addAbstract(null);\r
- addDescription(null);\r
- addLicense(null);\r
- addSpecification(null);\r
- }\r
- \r
- public final void flush(String outputpath) throws Exception {\r
- XmlOptions options = new XmlOptions();\r
-\r
- options.setCharacterEncoding("UTF-8");\r
- options.setSavePrettyPrint();\r
- options.setSavePrettyPrintIndent(2);\r
- options.setUseDefaultNamespace();\r
- \r
- BufferedWriter bw = new BufferedWriter(new FileWriter(outputpath));\r
- fullfill();\r
- msadoc.save(bw, options);\r
- bw.flush();\r
- bw.close();\r
- }\r
- \r
- private final MsaOwner init () {\r
- msa = msadoc.addNewModuleSurfaceArea();\r
- msaheader = msa.addNewMsaHeader();\r
- moduledefinitions = msa.addNewModuleDefinitions();\r
- moduledefinitions.setSupportedArchitectures(listarch);\r
- \r
- sourcefiles = msa.addNewSourceFiles();\r
- packagedependencies = msa.addNewPackageDependencies();\r
- libclassdefs = msa.addNewLibraryClassDefinitions();\r
- externs = msa.addNewExterns();\r
- return this;\r
- }\r
- \r
- public static final MsaOwner initNewMsaOwner() {\r
- return new MsaOwner().init();\r
- }\r
+ public static final String COPYRIGHT = "Copyright (c) 2006, Intel Corporation";\r
+\r
+ public static final String VERSION = "1.0";\r
+\r
+ public static final String ABSTRACT = "Component name for module ";\r
+\r
+ public static final String DESCRIPTION = "FIX ME!";\r
+\r
+ public static final String LICENSE = "All rights reserved.\n"\r
+ + " This software and associated documentation (if any) is furnished\n"\r
+ + " under a license and may only be used or copied in accordance\n"\r
+ + " with the terms of the license. Except as permitted by such\n"\r
+ + " license, no part of this software or documentation may be\n"\r
+ + " reproduced, stored in a retrieval system, or transmitted in any\n"\r
+ + " form or by any means without the express written consent of\n"\r
+ + " Intel Corporation.";\r
+\r
+ public static final String SPECIFICATION = "FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052";\r
+\r
+ public static final Enum IA32 = SupportedArchitectures.IA_32;\r
+\r
+ public static final Enum X64 = SupportedArchitectures.X_64;\r
+\r
+ public static final Enum IPF = SupportedArchitectures.IPF;\r
+\r
+ public static final Enum EBC = SupportedArchitectures.EBC;\r
+\r
+ private ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory\r
+ .newInstance();\r
+\r
+ private ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = null;\r
+\r
+ private MsaHeaderDocument.MsaHeader msaheader = null;\r
+\r
+ private LicenseDocument.License license = null;\r
+\r
+ private ModuleDefinitionsDocument.ModuleDefinitions moduledefinitions = null;\r
+\r
+ private SourceFilesDocument.SourceFiles sourcefiles = null; // found local\r
+ // .h files are\r
+ // not written\r
+\r
+ private GuidsDocument.Guids guids = null;\r
+\r
+ private ProtocolsDocument.Protocols protocols = null;\r
+\r
+ private PPIsDocument.PPIs ppis = null;\r
+\r
+ private PackageDependenciesDocument.PackageDependencies packagedependencies = null;\r
+\r
+ private LibraryClassDefinitionsDocument.LibraryClassDefinitions libclassdefs = null;\r
+\r
+ private ExternsDocument.Externs externs = null;\r
+\r
+ private List<Enum> listarch = new ArrayList<Enum>();\r
+\r
+ // private Map<String, Enum> mapfilenames = new HashMap<String, Enum>();\r
+ // //this need to be installed manually when msa is to be written\r
+ // private Map<String, UsageTypes.Enum> mapprotocols = new HashMap<String,\r
+ // UsageTypes.Enum>();\r
+\r
+ // -----------------------------msaheader-------------------------------------//\r
+\r
+ public final boolean addLibraryClass(String name, UsageTypes.Enum usage) {\r
+ /*\r
+ * if (!libclassdefs.getLibraryClassList().contains(name)) {\r
+ * LibraryClassDocument.LibraryClass classname; classname =\r
+ * libclassdefs.addNewLibraryClass(); classname.setKeyword(name);\r
+ * classname.setUsage(usage); return true; } else { return false; }\r
+ */\r
+ if (name == null) {\r
+ return false;\r
+ } else {\r
+ Iterator<LibraryClassDocument.LibraryClass> classit = libclassdefs\r
+ .getLibraryClassList().iterator();\r
+ while (classit.hasNext()) {\r
+ if (classit.next().getKeyword().matches(name)) {\r
+ // MigrationTool.ui.println ("Warning: Duplicate\r
+ // LibraryClass");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ LibraryClassDocument.LibraryClass classname;\r
+ classname = libclassdefs.addNewLibraryClass();\r
+ classname.setKeyword(name);\r
+ classname.setUsage(usage);\r
+ return true;\r
+\r
+ }\r
+ }\r
+\r
+ public final boolean addGuid(String guidname, UsageTypes.Enum usage) {\r
+ if (guids == null) {\r
+ guids = msa.addNewGuids();\r
+ }\r
+\r
+ Iterator<GuidsDocument.Guids.GuidCNames> guidit = guids\r
+ .getGuidCNamesList().iterator();\r
+ while (guidit.hasNext()) {\r
+ if (guidit.next().getGuidCName() == guidname) {\r
+ // MigrationTool.ui.println ("Warning: Duplicate Guid");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ GuidsDocument.Guids.GuidCNames guid;\r
+ guid = guids.addNewGuidCNames();\r
+ guid.setGuidCName(guidname);\r
+ guid.setUsage(usage);\r
+ return true;\r
+ }\r
+\r
+ public final boolean addPpi(String ppiname, UsageTypes.Enum usage) {\r
+ if (ppis == null) {\r
+ ppis = msa.addNewPPIs();\r
+ }\r
+\r
+ Iterator<PPIsDocument.PPIs.Ppi> ppiit = ppis.getPpiList().iterator();\r
+ while (ppiit.hasNext()) {\r
+ if (ppiit.next().getPpiCName() == ppiname) {\r
+ // MigrationTool.ui.println ("Warning: Duplicate Ppi");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ PPIsDocument.PPIs.Ppi ppi;\r
+ ppi = ppis.addNewPpi();\r
+ ppi.setPpiCName(ppiname);\r
+ ppi.setUsage(usage);\r
+ return true;\r
+ }\r
+\r
+ public final boolean addProtocol(String proname, UsageTypes.Enum usage) {\r
+ if (protocols == null) {\r
+ protocols = msa.addNewProtocols();\r
+ }\r
+\r
+ Iterator<ProtocolsDocument.Protocols.Protocol> proit = protocols\r
+ .getProtocolList().iterator();\r
+ while (proit.hasNext()) {\r
+ if (proit.next().getProtocolCName() == proname) {\r
+ // MigrationTool.ui.println ("Warning: Duplicate Protocol");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ ProtocolsDocument.Protocols.Protocol protocol;\r
+ protocol = protocols.addNewProtocol();\r
+ protocol.setProtocolCName(proname);\r
+ protocol.setUsage(usage);\r
+ return true;\r
+ }\r
+\r
+ public final boolean addSourceFile(String name, Enum en) {\r
+ Iterator<FilenameDocument.Filename> fileit = sourcefiles\r
+ .getFilenameList().iterator();\r
+ while (fileit.hasNext()) {\r
+ if (fileit.next().getStringValue() == name) {\r
+ MigrationTool.ui.println("Warning: Duplicate SourceFileName");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ FilenameDocument.Filename filename;\r
+ List<Enum> arch = new ArrayList<Enum>();\r
+ filename = sourcefiles.addNewFilename();\r
+ filename.setStringValue(name);\r
+ arch.add(en);\r
+ filename.setSupArchList(arch);\r
+ return true;\r
+ }\r
+\r
+ // entry point todo\r
+\r
+ public final boolean setupExternSpecification() {\r
+ addExternSpecification("EFI_SPECIFICATION_VERSION 0x00020000");\r
+ addExternSpecification("EDK_RELEASE_VERSION 0x00020000");\r
+ return true;\r
+ }\r
+\r
+ public final boolean addExternSpecification(String specification) {\r
+ if (externs.getSpecificationList().contains(specification)) {\r
+ return false;\r
+ } else {\r
+ externs.addSpecification(specification);\r
+ return true;\r
+ }\r
+ }\r
+\r
+ public final boolean setupPackageDependencies() {\r
+ Iterator<String> it;\r
+ //\r
+ // For now, simply add all package guids in the database.\r
+ // \r
+ it = MigrationTool.db.dumpAllPkgGuid();\r
+ while (it.hasNext()) {\r
+ packagedependencies.addNewPackage().setPackageGuid(it.next());\r
+ }\r
+ return true;\r
+ }\r
+\r
+ public final boolean addPackage(String guid) {\r
+ if (packagedependencies.getPackageList().contains(guid)) {\r
+ return false;\r
+ } else {\r
+ packagedependencies.addNewPackage().setPackageGuid(guid);\r
+ return true;\r
+ }\r
+ }\r
+\r
+ public final boolean setupModuleDefinitions() { // ????????? give this job\r
+ // to moduleinfo\r
+ moduledefinitions.setBinaryModule(false);\r
+ moduledefinitions.setOutputFileBasename(msaheader.getModuleName());\r
+ return true;\r
+ }\r
+\r
+ public final boolean addSupportedArchitectures(Enum arch) {\r
+ if (listarch.contains(arch)) {\r
+ return false;\r
+ } else {\r
+ listarch.add(arch);\r
+ return true;\r
+ }\r
+ }\r
+\r
+ public final boolean addSpecification(String specification) {\r
+ if (msaheader.getSpecification() == null) {\r
+ if (specification == null) {\r
+ msaheader.setSpecification(SPECIFICATION);\r
+ } else {\r
+ msaheader.setSpecification(specification);\r
+ }\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate Specification");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public final boolean addLicense(String licensecontent) {\r
+ if (msaheader.getLicense() == null) {\r
+ license = msaheader.addNewLicense();\r
+ if (licensecontent == null) {\r
+ license.setStringValue(LICENSE);\r
+ } else {\r
+ license.setStringValue(licensecontent);\r
+ }\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate License");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public final boolean addDescription(String description) {\r
+ if (msaheader.getDescription() == null) {\r
+ if (description == null) {\r
+ msaheader.setDescription(DESCRIPTION);\r
+ } else {\r
+ msaheader.setDescription(description);\r
+ }\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate Description");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public final boolean addAbstract(String abs) {\r
+ if (msaheader.getAbstract() == null) {\r
+ if (abs == null) {\r
+ msaheader.setAbstract(ABSTRACT + msaheader.getModuleName());\r
+ } else {\r
+ msaheader.setVersion(abs);\r
+ }\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate Abstract");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public final boolean addVersion(String version) {\r
+ if (msaheader.getVersion() == null) {\r
+ if (version == null) {\r
+ msaheader.setVersion(VERSION);\r
+ } else {\r
+ msaheader.setVersion(version);\r
+ }\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate Version");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public final boolean addCopyRight(String copyright) {\r
+ if (msaheader.getCopyright() == null) {\r
+ if (copyright == null) {\r
+ msaheader.setCopyright(COPYRIGHT);\r
+ } else {\r
+ msaheader.setCopyright(copyright);\r
+ }\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate CopyRight");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public final boolean addModuleType(String moduletype) {\r
+ if (msaheader.getModuleType() == null) {\r
+ msaheader.setModuleType(ModuleTypeDef.Enum.forString(moduletype));\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate ModuleType");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public final boolean addGuidValue(String guidvalue) {\r
+ if (msaheader.getGuidValue() == null) {\r
+ msaheader.setGuidValue(guidvalue);\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate GuidValue");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public final boolean addModuleName(String modulename) {\r
+ if (msaheader.getModuleName() == null) {\r
+ msaheader.setModuleName(modulename);\r
+ return true;\r
+ } else {\r
+ MigrationTool.ui.println("Warning: Duplicate ModuleName");\r
+ return false;\r
+ }\r
+ }\r
+\r
+ // -----------------------------msaheader-------------------------------------//\r
+\r
+ private final void fullfill() throws Exception {\r
+ addCopyRight(null);\r
+ addVersion(null);\r
+ addAbstract(null);\r
+ addDescription(null);\r
+ addLicense(null);\r
+ addSpecification(null);\r
+ }\r
+\r
+ public final void flush(String outputpath) throws Exception {\r
+ XmlOptions options = new XmlOptions();\r
+\r
+ options.setCharacterEncoding("UTF-8");\r
+ options.setSavePrettyPrint();\r
+ options.setSavePrettyPrintIndent(2);\r
+ options.setUseDefaultNamespace();\r
+\r
+ BufferedWriter bw = new BufferedWriter(new FileWriter(outputpath));\r
+ fullfill();\r
+ msadoc.save(bw, options);\r
+ bw.flush();\r
+ bw.close();\r
+ }\r
+\r
+ private final MsaOwner init() {\r
+ msa = msadoc.addNewModuleSurfaceArea();\r
+ msaheader = msa.addNewMsaHeader();\r
+ moduledefinitions = msa.addNewModuleDefinitions();\r
+ moduledefinitions.setSupportedArchitectures(listarch);\r
+\r
+ sourcefiles = msa.addNewSourceFiles();\r
+ packagedependencies = msa.addNewPackageDependencies();\r
+ libclassdefs = msa.addNewLibraryClassDefinitions();\r
+ externs = msa.addNewExterns();\r
+ return this;\r
+ }\r
+\r
+ public static final MsaOwner initNewMsaOwner() {\r
+ return new MsaOwner().init();\r
+ }\r
}
\ No newline at end of file