]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/MigrationTools/org/tianocore/migration/MsaOwner.java
Coding Style
[mirror_edk2.git] / Tools / Java / Source / MigrationTools / org / tianocore / migration / MsaOwner.java
index d2c20b3b2322c2d0de43c5ccc5ab6fdf09eeb0db..085a6ba1113bfbf7b95d43245f3dd3b9c0182df8 100644 (file)
@@ -14,369 +14,412 @@ package org.tianocore.migration;
 \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