- MsaWriter(ModuleInfo moduleinfo) {\r
- mi = moduleinfo;\r
- }\r
- \r
- private ModuleInfo mi;\r
- private ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.newInstance();\r
- \r
- private ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.addNewModuleSurfaceArea();\r
- private MsaHeaderDocument.MsaHeader msaheader = msa.addNewMsaHeader();\r
- private ModuleDefinitionsDocument.ModuleDefinitions md = msa.addNewModuleDefinitions();\r
- private SourceFilesDocument.SourceFiles sourcefiles = msa.addNewSourceFiles(); //found local .h files are not written\r
- private GuidsDocument.Guids guids;\r
- private ProtocolsDocument.Protocols protocols;\r
- private PPIsDocument.PPIs ppis;\r
- private PackageDependenciesDocument.PackageDependencies pd = msa.addNewPackageDependencies();\r
- private LibraryClassDefinitionsDocument.LibraryClassDefinitions libclassdefs = msa.addNewLibraryClassDefinitions();\r
- private ExternsDocument.Externs externs = msa.addNewExterns();\r
- \r
- private String Query (String requirement) throws Exception {\r
- String answer;\r
- BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));\r
- System.out.println(requirement);\r
- while ((answer = rd.readLine()).length() == 0) ;\r
- return answer;\r
- }\r
- \r
- private void addSourceFiles (String name) { // furthur modification needed\r
- List<Enum> arch = new ArrayList<Enum>();\r
- FilenameDocument.Filename filename;\r
- filename = sourcefiles.addNewFilename();\r
- filename.setStringValue(name);\r
- \r
- if (name.contains("x64" + File.separator)) { // filename ???\r
- arch.add(SupportedArchitectures.X_64);\r
- System.out.println("x64" + File.separator);\r
- filename.setSupArchList(arch);\r
- } else if (name.contains("Ia32" + File.separator)) { // filename ???\r
- arch.add(SupportedArchitectures.IA_32);\r
- System.out.println("Ia32" + File.separator);\r
- filename.setSupArchList(arch);\r
- } else if (name.contains("Ipf" + File.separator)) { // filename ???\r
- arch.add(SupportedArchitectures.IPF);\r
- System.out.println("Ipf" + File.separator);\r
- filename.setSupArchList(arch);\r
- } else if (name.contains("Ebc" + File.separator)) { // filename ???\r
- arch.add(SupportedArchitectures.EBC);\r
- System.out.println("Ebc" + File.separator);\r
- filename.setSupArchList(arch);\r
- }\r
- }\r
- private void addWrapper() {\r
- XmlCursor cursor = msa.newCursor();\r
- String uri = "http://www.TianoCore.org/2006/Edk2.0";\r
- cursor.push();\r
- cursor.toNextToken();\r
- cursor.insertNamespace("", uri);\r
- cursor.insertNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");\r
- cursor.pop();\r
- msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea)cursor.getObject();\r
- }\r
- private ModuleSurfaceAreaDocument fulfillMsadoc() throws Exception {\r
- Iterator<String> it;\r
- String temp;\r
- \r
- if (mi.modulename != null) {\r
- msaheader.setModuleName(mi.modulename);\r
- } else {\r
- msaheader.setModuleName(mi.modulename = Query("Module Name Not Found! Please Input ModuleName"));\r
- }\r
- if (mi.guidvalue == null) {\r
- mi.guidvalue = UUID.randomUUID().toString();\r
- MigrationTool.ui.println ("Guid value can not be retrieved from inf file. Generate " + mi.guidvalue + " at random!"); \r
- } \r
- msaheader.setGuidValue(mi.guidvalue);\r
- if (mi.moduletype != null) {\r
- msaheader.setModuleType(ModuleTypeDef.Enum.forString(mi.getModuleType()));\r
- } else {\r
- msaheader.setModuleType(ModuleTypeDef.Enum.forString(mi.moduletype = Query("Guid Value Not Found! Please Input Guid Value")));\r
- }\r
-\r
- msaheader.setCopyright("Copyright (c) 2006, Intel Corporation. All right reserved.");\r
- msaheader.setVersion("1.0");\r
- msaheader.setAbstract("Component name for module " + mi.modulename);\r
- msaheader.setDescription("FIX ME!");\r
-\r
- if (mi.license == null) {\r
- mi.license = "FIX ME!";\r
- MigrationTool.ui.println ("Fail to extract license info in inf file"); \r
- }\r
- msaheader.addNewLicense().setStringValue(mi.license);\r
- msaheader.setSpecification("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052");\r
- \r
- List<Enum> arch = new ArrayList<Enum>();\r
- arch.add(SupportedArchitectures.IA_32);\r
- arch.add(SupportedArchitectures.X_64);\r
- arch.add(SupportedArchitectures.IPF);\r
- arch.add(SupportedArchitectures.EBC);\r
- md.setSupportedArchitectures(arch);\r
- md.setBinaryModule(false);\r
- md.setOutputFileBasename(mi.modulename);\r
- //\r
- // For now, simply add all package guids in the database. \r
- // \r
- it = MigrationTool.db.dumpAllPkgGuid();\r
- while (it.hasNext()) {\r
- pd.addNewPackage().setPackageGuid(it.next());\r
- }\r
- externs.addNewSpecification().setStringValue("EFI_SPECIFICATION_VERSION 0x00020000");\r
- externs.addNewSpecification().setStringValue("EDK_RELEASE_VERSION 0x00020000");\r
- if (mi.entrypoint != null) {\r
- externs.addNewExtern().setModuleEntryPoint(mi.entrypoint);\r
- org.tianocore.ModuleTypeDef.Enum moduleType = msaheader.getModuleType();\r
- if (moduleType == ModuleTypeDef.PEIM) {\r
- mi.hashrequiredr9libs.add("PeimEntryPoint");\r
- } else {\r
- mi.hashrequiredr9libs.add("UefiDriverEntryPoint");\r
- }\r
- }\r
- \r
- it = mi.localmodulesources.iterator();\r
- while (it.hasNext()) {\r
- addSourceFiles(it.next());\r
- }\r
- if (!mi.protocols.isEmpty()) {\r
- protocols = msa.addNewProtocols();\r
- it = mi.protocols.iterator();\r
- while (it.hasNext()) {\r
- if ((temp = it.next()) != null) {\r
- ProtocolsDocument.Protocols.Protocol pr = protocols.addNewProtocol();\r
- pr.setProtocolCName(temp);\r
- pr.setUsage(UsageTypes.ALWAYS_CONSUMED);\r
- }\r
- }\r
- }\r
- if (!mi.ppis.isEmpty()) {\r
- ppis = msa.addNewPPIs();\r
- it = mi.ppis.iterator();\r
- while (it.hasNext()) {\r
- if ((temp = it.next()) != null) {\r
- PPIsDocument.PPIs.Ppi pp = ppis.addNewPpi();\r
- pp.setPpiCName(temp);\r
- pp.setUsage(UsageTypes.ALWAYS_CONSUMED);\r
- }\r
- }\r
- }\r
- if (!mi.guids.isEmpty()) {\r
- guids = msa.addNewGuids();\r
- it = mi.guids.iterator();\r
- while (it.hasNext()) {\r
- if ((temp = it.next()) != null) {\r
- GuidsDocument.Guids.GuidCNames gcn = guids.addNewGuidCNames();\r
- gcn.setGuidCName(temp);\r
- gcn.setUsage(UsageTypes.ALWAYS_CONSUMED);\r
- }\r
- }\r
- }\r
- it = mi.hashrequiredr9libs.iterator();\r
- while (it.hasNext()) {\r
- if ((temp = it.next()) != null && !temp.matches("%") && !temp.matches("n/a")) {\r
- LibraryClassDocument.LibraryClass lc = libclassdefs.addNewLibraryClass();\r
- lc.setKeyword(temp);\r
- lc.setUsage(UsageTypes.ALWAYS_CONSUMED);\r
- }\r
- }\r
- addWrapper();\r
- msadoc.setModuleSurfaceArea(msa);\r
- return msadoc;\r
- }\r
- \r
- public void flush() 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(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + mi.modulename + ".msa"));\r
- fulfillMsadoc().save(bw, options);\r
- //MsaTreeEditor.init(mi, ui, msadoc);\r
- bw.flush();\r
- bw.close();\r
- }\r
-\r
- private static void flush(String path, ModuleSurfaceAreaDocument msadoc) 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(path));\r
- msadoc.save(bw, options);\r
- bw.flush();\r
- bw.close();\r
- }\r
-\r
- public static final void parse(String msafile) throws Exception {\r
- ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(msafile);\r
- flush("c:\\temp.msa", msadoc);\r
- }\r
+ MsaWriter(ModuleInfo moduleinfo) {\r
+ mi = moduleinfo;\r
+ }\r
+\r
+ private ModuleInfo mi;\r
+\r
+ private ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory\r
+ .newInstance();\r
+\r
+ private ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc\r
+ .addNewModuleSurfaceArea();\r
+\r
+ private MsaHeaderDocument.MsaHeader msaheader = msa.addNewMsaHeader();\r
+\r
+ private ModuleDefinitionsDocument.ModuleDefinitions md = msa\r
+ .addNewModuleDefinitions();\r
+\r
+ private SourceFilesDocument.SourceFiles sourcefiles = msa\r
+ .addNewSourceFiles(); // found local .h files are not written\r
+\r
+ private GuidsDocument.Guids guids;\r
+\r
+ private ProtocolsDocument.Protocols protocols;\r
+\r
+ private PPIsDocument.PPIs ppis;\r
+\r
+ private PackageDependenciesDocument.PackageDependencies pd = msa\r
+ .addNewPackageDependencies();\r
+\r
+ private LibraryClassDefinitionsDocument.LibraryClassDefinitions libclassdefs = msa\r
+ .addNewLibraryClassDefinitions();\r
+\r
+ private ExternsDocument.Externs externs = msa.addNewExterns();\r
+\r
+ private String Query(String requirement) throws Exception {\r
+ String answer;\r
+ BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));\r
+ System.out.println(requirement);\r
+ while ((answer = rd.readLine()).length() == 0)\r
+ ;\r
+ return answer;\r
+ }\r
+\r
+ private void addSourceFiles(String name) { // furthur modification needed\r
+ List<Enum> arch = new ArrayList<Enum>();\r
+ FilenameDocument.Filename filename;\r
+ filename = sourcefiles.addNewFilename();\r
+ filename.setStringValue(name);\r
+\r
+ if (name.contains("x64" + File.separator)) { // filename ???\r
+ arch.add(SupportedArchitectures.X_64);\r
+ System.out.println("x64" + File.separator);\r
+ filename.setSupArchList(arch);\r
+ } else if (name.contains("Ia32" + File.separator)) { // filename ???\r
+ arch.add(SupportedArchitectures.IA_32);\r
+ System.out.println("Ia32" + File.separator);\r
+ filename.setSupArchList(arch);\r
+ } else if (name.contains("Ipf" + File.separator)) { // filename ???\r
+ arch.add(SupportedArchitectures.IPF);\r
+ System.out.println("Ipf" + File.separator);\r
+ filename.setSupArchList(arch);\r
+ } else if (name.contains("Ebc" + File.separator)) { // filename ???\r
+ arch.add(SupportedArchitectures.EBC);\r
+ System.out.println("Ebc" + File.separator);\r
+ filename.setSupArchList(arch);\r
+ }\r
+ }\r
+\r
+ private void addWrapper() {\r
+ XmlCursor cursor = msa.newCursor();\r
+ String uri = "http://www.TianoCore.org/2006/Edk2.0";\r
+ cursor.push();\r
+ cursor.toNextToken();\r
+ cursor.insertNamespace("", uri);\r
+ cursor.insertNamespace("xsi",\r
+ "http://www.w3.org/2001/XMLSchema-instance");\r
+ cursor.pop();\r
+ msa = (ModuleSurfaceAreaDocument.ModuleSurfaceArea) cursor.getObject();\r
+ }\r
+\r
+ private ModuleSurfaceAreaDocument fulfillMsadoc() throws Exception {\r
+ Iterator<String> it;\r
+ String temp;\r
+\r
+ if (mi.modulename != null) {\r
+ msaheader.setModuleName(mi.modulename);\r
+ } else {\r
+ msaheader\r
+ .setModuleName(mi.modulename = Query("Module Name Not Found! Please Input ModuleName"));\r
+ }\r
+ if (mi.guidvalue == null) {\r
+ mi.guidvalue = UUID.randomUUID().toString();\r
+ MigrationTool.ui\r
+ .println("Guid value can not be retrieved from inf file. Generate "\r
+ + mi.guidvalue + " at random!");\r
+ }\r
+ msaheader.setGuidValue(mi.guidvalue);\r
+ if (mi.moduletype != null) {\r
+ msaheader.setModuleType(ModuleTypeDef.Enum.forString(mi\r
+ .getModuleType()));\r
+ } else {\r
+ msaheader\r
+ .setModuleType(ModuleTypeDef.Enum\r
+ .forString(mi.moduletype = Query("Guid Value Not Found! Please Input Guid Value")));\r
+ }\r
+\r
+ msaheader\r
+ .setCopyright("Copyright (c) 2006, Intel Corporation. All right reserved.");\r
+ msaheader.setVersion("1.0");\r
+ msaheader.setAbstract("Component name for module " + mi.modulename);\r
+ msaheader.setDescription("FIX ME!");\r
+\r
+ if (mi.license == null) {\r
+ mi.license = "FIX ME!";\r
+ MigrationTool.ui\r
+ .println("Fail to extract license info in inf file");\r
+ }\r
+ msaheader.addNewLicense().setStringValue(mi.license);\r
+ msaheader\r
+ .setSpecification("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052");\r
+\r
+ List<Enum> arch = new ArrayList<Enum>();\r
+ arch.add(SupportedArchitectures.IA_32);\r
+ arch.add(SupportedArchitectures.X_64);\r
+ arch.add(SupportedArchitectures.IPF);\r
+ arch.add(SupportedArchitectures.EBC);\r
+ md.setSupportedArchitectures(arch);\r
+ md.setBinaryModule(false);\r
+ md.setOutputFileBasename(mi.modulename);\r
+ //\r
+ // For now, simply add all package guids in the database.\r
+ // \r
+ it = MigrationTool.db.dumpAllPkgGuid();\r
+ while (it.hasNext()) {\r
+ pd.addNewPackage().setPackageGuid(it.next());\r
+ }\r
+ externs.addNewSpecification().setStringValue(\r
+ "EFI_SPECIFICATION_VERSION 0x00020000");\r
+ externs.addNewSpecification().setStringValue(\r
+ "EDK_RELEASE_VERSION 0x00020000");\r
+ if (mi.entrypoint != null) {\r
+ externs.addNewExtern().setModuleEntryPoint(mi.entrypoint);\r
+ org.tianocore.ModuleTypeDef.Enum moduleType = msaheader\r
+ .getModuleType();\r
+ if (moduleType == ModuleTypeDef.PEIM) {\r
+ mi.hashrequiredr9libs.add("PeimEntryPoint");\r
+ } else {\r
+ mi.hashrequiredr9libs.add("UefiDriverEntryPoint");\r
+ }\r
+ }\r
+\r
+ it = mi.localmodulesources.iterator();\r
+ while (it.hasNext()) {\r
+ addSourceFiles(it.next());\r
+ }\r
+ if (!mi.protocols.isEmpty()) {\r
+ protocols = msa.addNewProtocols();\r
+ it = mi.protocols.iterator();\r
+ while (it.hasNext()) {\r
+ if ((temp = it.next()) != null) {\r
+ ProtocolsDocument.Protocols.Protocol pr = protocols\r
+ .addNewProtocol();\r
+ pr.setProtocolCName(temp);\r
+ pr.setUsage(UsageTypes.ALWAYS_CONSUMED);\r
+ }\r
+ }\r
+ }\r
+ if (!mi.ppis.isEmpty()) {\r
+ ppis = msa.addNewPPIs();\r
+ it = mi.ppis.iterator();\r
+ while (it.hasNext()) {\r
+ if ((temp = it.next()) != null) {\r
+ PPIsDocument.PPIs.Ppi pp = ppis.addNewPpi();\r
+ pp.setPpiCName(temp);\r
+ pp.setUsage(UsageTypes.ALWAYS_CONSUMED);\r
+ }\r
+ }\r
+ }\r
+ if (!mi.guids.isEmpty()) {\r
+ guids = msa.addNewGuids();\r
+ it = mi.guids.iterator();\r
+ while (it.hasNext()) {\r
+ if ((temp = it.next()) != null) {\r
+ GuidsDocument.Guids.GuidCNames gcn = guids\r
+ .addNewGuidCNames();\r
+ gcn.setGuidCName(temp);\r
+ gcn.setUsage(UsageTypes.ALWAYS_CONSUMED);\r
+ }\r
+ }\r
+ }\r
+ it = mi.hashrequiredr9libs.iterator();\r
+ while (it.hasNext()) {\r
+ if ((temp = it.next()) != null && !temp.matches("%")\r
+ && !temp.matches("n/a")) {\r
+ LibraryClassDocument.LibraryClass lc = libclassdefs\r
+ .addNewLibraryClass();\r
+ lc.setKeyword(temp);\r
+ lc.setUsage(UsageTypes.ALWAYS_CONSUMED);\r
+ }\r
+ }\r
+ addWrapper();\r
+ msadoc.setModuleSurfaceArea(msa);\r
+ return msadoc;\r
+ }\r
+\r
+ public void flush() 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(\r
+ MigrationTool.ModuleInfoMap.get(mi) + File.separator\r
+ + "Migration_" + mi.modulename + File.separator\r
+ + mi.modulename + ".msa"));\r
+ fulfillMsadoc().save(bw, options);\r
+ // MsaTreeEditor.init(mi, ui, msadoc);\r
+ bw.flush();\r
+ bw.close();\r
+ }\r
+\r
+ private static void flush(String path, ModuleSurfaceAreaDocument msadoc)\r
+ 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(path));\r
+ msadoc.save(bw, options);\r
+ bw.flush();\r
+ bw.close();\r
+ }\r
+\r
+ public static final void parse(String msafile) throws Exception {\r
+ ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory\r
+ .parse(msafile);\r
+ flush("c:\\temp.msa", msadoc);\r
+ }\r