]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/GlobalData.java
1. Merge ModuleDefinitions to MsaHeader
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / common / GlobalData.java
diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/GlobalData.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/GlobalData.java
new file mode 100644 (file)
index 0000000..2d4fbe4
--- /dev/null
@@ -0,0 +1,193 @@
+/** @file \r
+ The file is used to provide initializing global data.\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
+package org.tianocore.frameworkwizard.common;\r
+\r
+import java.io.IOException;\r
+import java.util.Vector;\r
+\r
+import org.apache.xmlbeans.XmlException;\r
+import org.tianocore.FrameworkDatabaseDocument.FrameworkDatabase;\r
+import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
+import org.tianocore.MsaFilesDocument.MsaFiles;\r
+import org.tianocore.PackageSurfaceAreaDocument.PackageSurfaceArea;\r
+import org.tianocore.PlatformSurfaceAreaDocument.PlatformSurfaceArea;\r
+import org.tianocore.frameworkwizard.common.Identifications.Identification;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleList;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageList;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformList;\r
+import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+\r
+public class GlobalData {\r
+\r
+    public static FrameworkDatabase fdb = null;\r
+\r
+    public static OpeningModuleList openingModuleList = new OpeningModuleList();\r
+\r
+    public static OpeningPackageList openingPackageList = new OpeningPackageList();\r
+\r
+    public static OpeningPlatformList openingPlatformList = new OpeningPlatformList();\r
+\r
+    public static Vector<ModuleIdentification> vModuleList = new Vector<ModuleIdentification>();\r
+\r
+    public static Vector<PackageIdentification> vPackageList = new Vector<PackageIdentification>();\r
+\r
+    public static Vector<PlatformIdentification> vPlatformList = new Vector<PlatformIdentification>();\r
+\r
+    public static void init() {\r
+        initDatabase();\r
+        initPackage();\r
+        initPlatform();\r
+        initModule();\r
+    }\r
+\r
+    public static void initDatabase() {\r
+        String strFrameworkDbFilePath = Workspace.getCurrentWorkspace() + Workspace.getStrWorkspaceDatabaseFile();\r
+        strFrameworkDbFilePath = Tools.convertPathToCurrentOsType(strFrameworkDbFilePath);\r
+        try {\r
+            fdb = OpenFile.openFrameworkDb(strFrameworkDbFilePath);\r
+        } catch (XmlException e) {\r
+            Log.err("Open Framework Database " + strFrameworkDbFilePath, e.getMessage());\r
+            return;\r
+        } catch (Exception e) {\r
+            Log.err("Open Framework Database " + strFrameworkDbFilePath, "Invalid file type");\r
+            return;\r
+        }\r
+    }\r
+\r
+    public static void initModule() {\r
+        vModuleList = new Vector<ModuleIdentification>();\r
+        openingModuleList = new OpeningModuleList();\r
+\r
+        ModuleSurfaceArea msa = null;\r
+        Vector<String> modulePaths = new Vector<String>();\r
+        Identification id = null;\r
+        ModuleIdentification mid = null;\r
+        String packagePath = null;\r
+        String modulePath = null;\r
+\r
+        //\r
+        // For each package, get all modules list\r
+        //\r
+        if (vPackageList.size() > 0) {\r
+            for (int indexI = 0; indexI < vPackageList.size(); indexI++) {\r
+                packagePath = vPackageList.elementAt(indexI).getPath();\r
+                modulePaths = getAllModulesOfPackage(packagePath);\r
+\r
+                for (int indexJ = 0; indexJ < modulePaths.size(); indexJ++) {\r
+                    try {\r
+                        modulePath = modulePaths.get(indexJ);\r
+                        msa = OpenFile.openMsaFile(modulePath);\r
+\r
+                    } catch (IOException e) {\r
+                        Log.err("Open Module Surface Area " + modulePath, e.getMessage());\r
+                    } catch (XmlException e) {\r
+                        Log.err("Open Module Surface Area " + modulePath, e.getMessage());\r
+                    } catch (Exception e) {\r
+                        Log.err("Open Module Surface Area " + modulePath, "Invalid file type");\r
+                    }\r
+                    id = Tools.getId(modulePath, msa);\r
+                    mid = new ModuleIdentification(id, vPackageList.elementAt(indexI));\r
+                    vModuleList.addElement(mid);\r
+                    openingModuleList.insertToOpeningModuleList(mid, msa);\r
+                }\r
+            }\r
+            Sort.sortModules(vModuleList, DataType.SORT_TYPE_ASCENDING);\r
+        }\r
+    }\r
+\r
+    public static void initPackage() {\r
+        vPackageList = new Vector<PackageIdentification>();\r
+        openingPackageList = new OpeningPackageList();\r
+        if (fdb != null) {\r
+            for (int index = 0; index < fdb.getPackageList().getFilenameList().size(); index++) {\r
+                String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR\r
+                              + fdb.getPackageList().getFilenameArray(index).getStringValue();\r
+                path = Tools.convertPathToCurrentOsType(path);\r
+                PackageSurfaceArea spd = null;\r
+                PackageIdentification id = null;\r
+                try {\r
+                    spd = OpenFile.openSpdFile(path);\r
+                } catch (IOException e) {\r
+                    Log.err("Open Package Surface Area " + path, e.getMessage());\r
+                } catch (XmlException e) {\r
+                    Log.err("Open Package Surface Area " + path, e.getMessage());\r
+                } catch (Exception e) {\r
+                    Log.err("Open Package Surface Area " + path, "Invalid file type");\r
+                }\r
+                id = Tools.getId(path, spd);\r
+                vPackageList.addElement(id);\r
+                openingPackageList.insertToOpeningPackageList(id, spd);\r
+            }\r
+            Sort.sortPackages(vPackageList, DataType.SORT_TYPE_ASCENDING);\r
+        }\r
+    }\r
+\r
+    public static void initPlatform() {\r
+        vPlatformList = new Vector<PlatformIdentification>();\r
+        openingPlatformList = new OpeningPlatformList();\r
+\r
+        if (fdb != null) {\r
+            for (int index = 0; index < fdb.getPlatformList().getFilenameList().size(); index++) {\r
+                String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR\r
+                              + fdb.getPlatformList().getFilenameArray(index).getStringValue();\r
+                path = Tools.convertPathToCurrentOsType(path);\r
+                PlatformSurfaceArea fpd = null;\r
+                PlatformIdentification id = null;\r
+                try {\r
+                    fpd = OpenFile.openFpdFile(path);\r
+                } catch (IOException e) {\r
+                    Log.err("Open Platform Surface Area " + path, e.getMessage());\r
+                } catch (XmlException e) {\r
+                    Log.err("Open Platform Surface Area " + path, e.getMessage());\r
+                } catch (Exception e) {\r
+                    Log.err("Open Platform Surface Area " + path, "Invalid file type");\r
+                }\r
+                id = Tools.getId(path, fpd);\r
+                vPlatformList.addElement(new PlatformIdentification(id));\r
+                openingPlatformList.insertToOpeningPlatformList(id, fpd);\r
+            }\r
+            Sort.sortPlatforms(vPlatformList, DataType.SORT_TYPE_ASCENDING);\r
+        }\r
+    }\r
+\r
+    /**\r
+     Get all modules' paths from one package\r
+     \r
+     @return a Vector with all modules' path\r
+     \r
+     **/\r
+    private static Vector<String> getAllModulesOfPackage(String path) {\r
+        Vector<String> modulePath = new Vector<String>();\r
+        try {\r
+            MsaFiles files = OpenFile.openSpdFile(path).getMsaFiles();\r
+            if (files != null) {\r
+                for (int index = 0; index < files.getFilenameList().size(); index++) {\r
+                    String msaPath = files.getFilenameList().get(index);\r
+                    msaPath = Tools.addFileSeparator(Tools.getFilePathOnly(path)) + msaPath;\r
+                    msaPath = Tools.convertPathToCurrentOsType(msaPath);\r
+                    modulePath.addElement(msaPath);\r
+                }\r
+            }\r
+        } catch (IOException e) {\r
+            Log.err("Get all mdoules of a package " + path, e.getMessage());\r
+        } catch (XmlException e) {\r
+            Log.err("Get all mdoules of a package " + path, e.getMessage());\r
+        } catch (Exception e) {\r
+            Log.err("Get all mdoules of a package " + path, e.getMessage());\r
+        }\r
+        return modulePath;\r
+    }\r
+}\r