**/\r
package org.tianocore.migration;\r
\r
-import java.io.*;\r
-import java.util.*;\r
-import java.util.regex.*;\r
+import java.io.BufferedReader;\r
+import java.io.File;\r
+import java.io.FileReader;\r
+import java.util.HashMap;\r
+import java.util.HashSet;\r
+import java.util.Iterator;\r
+import java.util.Map;\r
+import java.util.Set;\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
+\r
+import org.apache.xmlbeans.XmlObject;\r
+import org.tianocore.DbPathAndFilename;\r
+import org.tianocore.FrameworkDatabaseDocument;\r
+import org.tianocore.PackageSurfaceAreaDocument;\r
+import org.tianocore.FrameworkDatabaseDocument.FrameworkDatabase;\r
+import org.tianocore.GuidDeclarationsDocument.GuidDeclarations;\r
+import org.tianocore.LibraryClassDeclarationsDocument.LibraryClassDeclarations;\r
+import org.tianocore.LibraryClassDeclarationsDocument.LibraryClassDeclarations.LibraryClass;\r
+import org.tianocore.PackageSurfaceAreaDocument.PackageSurfaceArea;\r
+import org.tianocore.PpiDeclarationsDocument.PpiDeclarations;\r
+import org.tianocore.ProtocolDeclarationsDocument.ProtocolDeclarations;\r
\r
public final class Database {\r
- private static final Database INSTANCE = Database.init();\r
- \r
- Database(String path) {\r
- DatabasePath = path;\r
-\r
- try {\r
- importDBLib("Library.csv");\r
- importDBGuid("Guid.csv", "Guid");\r
- importDBGuid("Ppi.csv", "Ppi");\r
- importDBGuid("Protocol.csv", "Protocol");\r
- importDBMacro("Macro.csv");\r
- importListR8Only();\r
- } catch (Exception e) {\r
- System.out.println(e.getMessage());\r
- }\r
- }\r
- \r
- public String DatabasePath;\r
- public Set<String> error = new HashSet<String>();\r
- public Set<String> r8only = new HashSet<String>();\r
- \r
- private Map<String,Guid> hashguid = new HashMap<String,Guid>();\r
- private Map<String,Func> hashfunc = new HashMap<String,Func>();\r
- private Map<String,Macro> hashmacro = new HashMap<String,Macro>();\r
- \r
- //-------------------------------------import------------------------------------------//\r
- \r
- private void importDBLib(String filename) throws Exception {\r
- BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));\r
- String line;\r
- String[] linecontext;\r
- Func lf;\r
- \r
- if (rd.ready()) {\r
- System.out.println("Found " + filename + ", Importing Library Database.");\r
- while ((line = rd.readLine()) != null) {\r
- if (line.length() != 0) {\r
- linecontext = line.split(",");\r
- lf = new Func(linecontext);\r
- hashfunc.put(lf.r8funcname,lf);\r
- }\r
- }\r
- }\r
- }\r
- \r
- private void importDBGuid(String filename, String type) throws Exception {\r
- BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));\r
- String line;\r
- String[] linecontext;\r
- Guid gu;\r
- \r
- if (rd.ready()) {\r
- System.out.println("Found " + filename + ", Importing " + type + " Database.");\r
- while ((line = rd.readLine()) != null) {\r
- if (line.length() != 0) {\r
- linecontext = line.split(",");\r
- gu = new Guid(linecontext, type);\r
- hashguid.put(gu.r8name,gu);\r
- }\r
- }\r
- }\r
- }\r
- \r
- private void importDBMacro(String filename) throws Exception {\r
- BufferedReader rd = new BufferedReader(new FileReader(DatabasePath + File.separator + filename));\r
- String line;\r
- String[] linecontext;\r
- Macro mc;\r
- \r
- if (rd.ready()) {\r
- System.out.println("Found " + filename + ", Importing Macro Database.");\r
- while ((line = rd.readLine()) != null) {\r
- if (line.length() != 0) {\r
- linecontext = line.split(",");\r
- mc = new Macro(linecontext);\r
- hashmacro.put(mc.r8name,mc);\r
- }\r
- }\r
- }\r
- }\r
-\r
- private void importListR8Only() throws Exception {\r
- Pattern ptnr8only = Pattern.compile("////#?(\\w*)?.*?R8_(.*?)\\s*\\(.*?////~", Pattern.DOTALL);\r
- String wholeline = Common.file2string(DatabasePath + File.separator + "R8Lib.c");\r
- System.out.println("Found " + "R8Lib.c" + ", Importing R8Lib Database.");\r
- Matcher mtrr8only = ptnr8only.matcher(wholeline);\r
- while (mtrr8only.find()) {\r
- r8only.add(mtrr8only.group(2));\r
- }\r
- }\r
- \r
- //-------------------------------------import------------------------------------------//\r
-\r
- //-------------------------------------get------------------------------------------//\r
-\r
- public String getR9Lib(String r8funcname) {\r
- String temp = null;\r
- if (hashfunc.containsKey(r8funcname)) {\r
- temp = hashfunc.get(r8funcname).r9libname;\r
- }\r
- return temp;\r
- }\r
- \r
- public String getR9Func(String r8funcname) {\r
- String temp = null;\r
- if (hashfunc.containsKey(r8funcname)) {\r
- temp = hashfunc.get(r8funcname).r9funcname;\r
- }\r
- return temp;\r
- }\r
- \r
- public String getR9Macro(String r8macro) {\r
- return hashmacro.get(r8macro).r9name; // the verification job of if the macro exists in the database is done when registering it\r
- }\r
-\r
- public String getR9Guidname(String r8Guid) {\r
- String temp = null;\r
- try {\r
- temp = hashguid.get(r8Guid).r9name;\r
- } catch (NullPointerException e) {\r
- error.add("getR9Guidname :" + r8Guid);\r
- }\r
- return temp;\r
- }\r
-\r
- public String getGuidType(String r8Guid) {\r
- String temp = null;\r
- try {\r
- temp = hashguid.get(r8Guid).type;\r
- } catch (NullPointerException e) {\r
- error.add("getR9Guidname :" + r8Guid);\r
- }\r
- return temp;\r
- }\r
-\r
- //-------------------------------------get------------------------------------------//\r
-\r
- //-------------------------------------has------------------------------------------//\r
-\r
- public boolean hasFunc(String r8lib) {\r
- return hashfunc.containsKey(r8lib);\r
- }\r
-\r
- public boolean hasGuid(String r8guid) {\r
- return hashguid.containsKey(r8guid);\r
- }\r
-\r
- public boolean hasMacro(String r8macro) {\r
- return hashmacro.containsKey(r8macro);\r
- }\r
- \r
- //-------------------------------------has------------------------------------------//\r
- \r
- //-------------------------------------init------------------------------------------//\r
-\r
- private static final Database init() {\r
- if (System.getenv("WORKSPACE") == null) {\r
- return new Database("C:" + File.separator + "tianocore" + File.separator + "edk2" + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");\r
- } else {\r
- return new Database(System.getenv("WORKSPACE") + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");\r
- }\r
- }\r
- \r
- public static final Database getInstance() {\r
- return INSTANCE;\r
- }\r
+ private static final Database INSTANCE = Database.init();;\r
+\r
+ Database(String path) {\r
+ DatabasePath = path;\r
+\r
+ try {\r
+ // collectWorkSpaceDatabase();\r
+ importPkgGuid("PkgGuid.csv");\r
+ importDBLib("Library.csv");\r
+ importDBGuid("Guid.csv", "Guid");\r
+ importDBGuid("Ppi.csv", "Ppi");\r
+ importDBGuid("Protocol.csv", "Protocol");\r
+ importDBMacro("Macro.csv");\r
+ importListR8Only();\r
+ } catch (Exception e) {\r
+ System.out.println(e.getMessage());\r
+ }\r
+ }\r
+\r
+ public String DatabasePath;\r
+\r
+ public Set<String> error = new HashSet<String>();\r
+\r
+ public Set<String> r8only = new HashSet<String>();\r
+\r
+ private Map<String, Guid> hashguid = new HashMap<String, Guid>();\r
+\r
+ private Map<String, Func> hashfunc = new HashMap<String, Func>();\r
+\r
+ private Map<String, Macro> hashmacro = new HashMap<String, Macro>();\r
+\r
+ private Map<String, String> hashPkgGuid = new HashMap<String, String>();\r
+\r
+ // -------------------------------------import------------------------------------------//\r
+ private void importPkgGuid(String filename) throws Exception {\r
+ BufferedReader rd = new BufferedReader(new FileReader(DatabasePath\r
+ + File.separator + filename));\r
+ String line;\r
+ String[] linecontext;\r
+\r
+ if (rd.ready()) {\r
+ System.out.println("Found " + filename\r
+ + ", Importing Package Guid Database.");\r
+ //\r
+ // Skip the title row.\r
+ // \r
+ line = rd.readLine();\r
+ while ((line = rd.readLine()) != null) {\r
+ if (line.length() != 0) {\r
+ linecontext = line.split(",");\r
+ hashPkgGuid.put(linecontext[0], linecontext[1]);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ public Iterator<String> dumpAllPkgGuid() {\r
+ return hashPkgGuid.values().iterator();\r
+ }\r
+\r
+ private void importDBLib(String filename) throws Exception {\r
+ BufferedReader rd = new BufferedReader(new FileReader(DatabasePath\r
+ + File.separator + filename));\r
+ String line;\r
+ String[] linecontext;\r
+ Func lf;\r
+\r
+ if (rd.ready()) {\r
+ System.out.println("Found " + filename\r
+ + ", Importing Library Database.");\r
+ while ((line = rd.readLine()) != null) {\r
+ if (line.length() != 0) {\r
+ linecontext = line.split(",");\r
+ lf = new Func(linecontext);\r
+ hashfunc.put(lf.r8funcname, lf);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ private void importDBGuid(String filename, String type) throws Exception {\r
+ BufferedReader rd = new BufferedReader(new FileReader(DatabasePath\r
+ + File.separator + filename));\r
+ String line;\r
+ String[] linecontext;\r
+ Guid gu;\r
+\r
+ if (rd.ready()) {\r
+ System.out.println("Found " + filename + ", Importing " + type\r
+ + " Database.");\r
+ while ((line = rd.readLine()) != null) {\r
+ if (line.length() != 0) {\r
+ linecontext = line.split(",");\r
+ gu = new Guid(linecontext, type);\r
+ hashguid.put(gu.r8name, gu);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ private void importDBMacro(String filename) throws Exception {\r
+ BufferedReader rd = new BufferedReader(new FileReader(DatabasePath\r
+ + File.separator + filename));\r
+ String line;\r
+ String[] linecontext;\r
+ Macro mc;\r
+\r
+ if (rd.ready()) {\r
+ System.out.println("Found " + filename\r
+ + ", Importing Macro Database.");\r
+ while ((line = rd.readLine()) != null) {\r
+ if (line.length() != 0) {\r
+ linecontext = line.split(",");\r
+ mc = new Macro(linecontext);\r
+ hashmacro.put(mc.r8name, mc);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ private void importListR8Only() throws Exception {\r
+ Pattern ptnr8only = Pattern.compile(\r
+ "////#?(\\w*)?.*?R8_(.*?)\\s*\\(.*?////~", Pattern.DOTALL);\r
+ String wholeline = Common.file2string(DatabasePath + File.separator\r
+ + "R8Lib.c");\r
+ System.out\r
+ .println("Found " + "R8Lib.c" + ", Importing R8Lib Database.");\r
+ Matcher mtrr8only = ptnr8only.matcher(wholeline);\r
+ while (mtrr8only.find()) {\r
+ r8only.add(mtrr8only.group(2));\r
+ }\r
+ }\r
+\r
+ // -------------------------------------import------------------------------------------//\r
+\r
+ // -------------------------------------get------------------------------------------//\r
+\r
+ public String getR9Lib(String r8funcname) {\r
+ String temp = null;\r
+ if (hashfunc.containsKey(r8funcname)) {\r
+ temp = hashfunc.get(r8funcname).r9libname;\r
+ }\r
+ return temp;\r
+ }\r
+\r
+ public String getR9Func(String r8funcname) {\r
+ String temp = null;\r
+ if (hashfunc.containsKey(r8funcname)) {\r
+ temp = hashfunc.get(r8funcname).r9funcname;\r
+ }\r
+ return temp;\r
+ }\r
+\r
+ public String getR9Macro(String r8macro) {\r
+ return hashmacro.get(r8macro).r9name; // the verification job of if\r
+ // the macro exists in the\r
+ // database is done when\r
+ // registering it\r
+ }\r
+\r
+ public String getR9Guidname(String r8Guid) {\r
+ String temp = null;\r
+ try {\r
+ temp = hashguid.get(r8Guid).r9name;\r
+ } catch (NullPointerException e) {\r
+ error.add("getR9Guidname :" + r8Guid);\r
+ }\r
+ return temp;\r
+ }\r
+\r
+ public String getGuidType(String r8Guid) {\r
+ String temp = null;\r
+ try {\r
+ temp = hashguid.get(r8Guid).type;\r
+ } catch (NullPointerException e) {\r
+ error.add("getR9Guidname :" + r8Guid);\r
+ }\r
+ return temp;\r
+ }\r
+\r
+ // -------------------------------------get------------------------------------------//\r
+\r
+ // -------------------------------------has------------------------------------------//\r
+\r
+ public boolean hasFunc(String r8lib) {\r
+ return hashfunc.containsKey(r8lib);\r
+ }\r
+\r
+ public boolean hasGuid(String r8guid) {\r
+ return hashguid.containsKey(r8guid);\r
+ }\r
+\r
+ public boolean hasMacro(String r8macro) {\r
+ return hashmacro.containsKey(r8macro);\r
+ }\r
+\r
+ // -------------------------------------has------------------------------------------//\r
+\r
+ // -------------------------------------init------------------------------------------//\r
+\r
+ private static final Database init() {\r
+ if (System.getenv("WORKSPACE") == null) {\r
+ return new Database("C:" + File.separator + "tianocore"\r
+ + File.separator + "edk2" + File.separator + "Tools"\r
+ + File.separator + "Conf" + File.separator + "Migration");\r
+ } else {\r
+ return new Database(System.getenv("WORKSPACE") + File.separator\r
+ + "Tools" + File.separator + "Conf" + File.separator\r
+ + "Migration");\r
+ }\r
+ }\r
+\r
+ public static final Database getInstance() {\r
+ return INSTANCE;\r
+ }\r
+\r
+ private String workspacePath;\r
+\r
+ private HashMap<String, String> hashDbGuids = new HashMap<String, String>();\r
+\r
+ private HashMap<String, String> hashDbPpis = new HashMap<String, String>();\r
+\r
+ private HashMap<String, String> hashDbProtocols = new HashMap<String, String>();\r
+\r
+ private HashMap<String, String> hashDbLibSymbols = new HashMap<String, String>();\r
+\r
+ private HashMap<String, String> hashDbLibFunctions = new HashMap<String, String>();\r
+\r
+ private HashMap<String, String> hashDbLibExterns = new HashMap<String, String>();\r
+\r
+ private final String regLibClassName = ".*\\W(\\w[\\w\\d]*)\\.h";\r
+\r
+ private final Pattern ptnLibClassName = Pattern.compile(regLibClassName);\r
+\r
+ private final String regLibSymbol = "#define\\s+(\\w[\\w\\d]*)";\r
+\r
+ private final Pattern ptnLibSymbol = Pattern.compile(regLibSymbol);\r
+\r
+ private final String regLibDataType = "[A-Z][A-Z0-9_]*\\s*\\**";\r
+\r
+ private final String regLibFunction = regLibDataType\r
+ + "\\s*(?:EFIAPI)?\\s+" + "(\\w[\\w\\d]*)\\s*\\([^)]*\\)\\s*;";\r
+\r
+ private Pattern ptnLibFunction = Pattern.compile(regLibFunction);\r
+\r
+ private final String regLibExtern = "extern\\s+" + regLibDataType\r
+ + "\\s*(\\w[\\w\\d]*)";\r
+\r
+ private final Pattern ptnLibExtern = Pattern.compile(regLibExtern);\r
+\r
+ private final String convertToOsFilePath(String filePath) {\r
+ return filePath.replace("/", File.separator).replace("\\",\r
+ File.separator);\r
+ }\r
+\r
+ private final void collectLibHeaderFileInfo(String libHeaderFile,\r
+ String pkgGuid) throws Exception {\r
+ String fileContents;\r
+ String libClassName;\r
+ String libContainer;\r
+ Matcher mtrLibClass;\r
+ Matcher mtrLibSymbol;\r
+ Matcher mtrLibFunction;\r
+ Matcher mtrLibExtern;\r
+\r
+ System.out.println("Parsing: " + libHeaderFile);\r
+ mtrLibClass = ptnLibClassName.matcher(libHeaderFile);\r
+ if (!mtrLibClass.matches()) {\r
+ throw new Exception("Illegal libary header file");\r
+ }\r
+ libClassName = mtrLibClass.group(1);\r
+ libContainer = libClassName + "@" + pkgGuid;\r
+\r
+ fileContents = Common.file2string(libHeaderFile);\r
+ mtrLibSymbol = ptnLibSymbol.matcher(fileContents);\r
+ while (mtrLibSymbol.find()) {\r
+ String libSymbol;\r
+ String oldLibContainer;\r
+\r
+ libSymbol = mtrLibSymbol.group(1);\r
+ oldLibContainer = hashDbLibSymbols.put(libSymbol, libContainer);\r
+ if (oldLibContainer != null) {\r
+ String warnMessage;\r
+\r
+ warnMessage = "Duplicated Lib Symbol:" + libSymbol + " Found. "\r
+ + "Later package will overide the previous one";\r
+ System.out.println(warnMessage);\r
+ }\r
+ }\r
+\r
+ mtrLibFunction = ptnLibFunction.matcher(fileContents);\r
+ while (mtrLibFunction.find()) {\r
+ String libFunction;\r
+ String oldLibContainer;\r
+\r
+ libFunction = mtrLibFunction.group(1);\r
+ oldLibContainer = hashDbLibFunctions.put(libFunction, libContainer);\r
+ if (oldLibContainer != null) {\r
+ String warnMessage;\r
+\r
+ warnMessage = "Duplicated Lib Function:" + libFunction\r
+ + " Found. "\r
+ + "Later package will overide the previous one";\r
+ System.out.println(warnMessage);\r
+ }\r
+ }\r
+\r
+ mtrLibExtern = ptnLibExtern.matcher(fileContents);\r
+ while (mtrLibExtern.find()) {\r
+ String libExtern;\r
+ String oldLibContainer;\r
+\r
+ libExtern = mtrLibExtern.group(1);\r
+ oldLibContainer = hashDbLibExterns.put(libExtern, libContainer);\r
+ if (oldLibContainer != null) {\r
+ String warnMessage;\r
+\r
+ warnMessage = "Duplicated Lib Extern:" + libExtern + " Found. "\r
+ + "Later package will overide the previous one";\r
+ System.out.println(warnMessage);\r
+ }\r
+ }\r
+ }\r
+\r
+ private final void collectLibDataBase(PackageSurfaceArea spdDatabase,\r
+ String pkgDirectory) throws Exception {\r
+ String pkgGuid;\r
+ LibraryClassDeclarations libClassDeclarations;\r
+\r
+ pkgGuid = spdDatabase.getSpdHeader().getGuidValue();\r
+ libClassDeclarations = spdDatabase.getLibraryClassDeclarations();\r
+ if (libClassDeclarations != null) {\r
+ Iterator<LibraryClass> itLibClass;\r
+\r
+ itLibClass = libClassDeclarations.getLibraryClassList().iterator();\r
+ while (itLibClass.hasNext()) {\r
+ String libHeaderFile;\r
+\r
+ libHeaderFile = pkgDirectory + File.separator\r
+ + itLibClass.next().getIncludeHeader();\r
+ libHeaderFile = convertToOsFilePath(libHeaderFile);\r
+ try {\r
+ collectLibHeaderFileInfo(libHeaderFile, pkgGuid);\r
+ } catch (Exception e) {\r
+ String errorMessage;\r
+\r
+ errorMessage = "Error (" + e.getMessage()\r
+ + ")occurs when parsing " + libHeaderFile;\r
+ System.out.println(errorMessage);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ private final void collectGuidDatabase(PackageSurfaceArea spdDatabase)\r
+ throws Exception {\r
+ String pkgGuid;\r
+ GuidDeclarations guidDeclarations;\r
+\r
+ pkgGuid = spdDatabase.getSpdHeader().getGuidValue();\r
+ guidDeclarations = spdDatabase.getGuidDeclarations();\r
+ if (guidDeclarations != null) {\r
+ Iterator<GuidDeclarations.Entry> itGuids;\r
+\r
+ itGuids = guidDeclarations.getEntryList().iterator();\r
+ while (itGuids.hasNext()) {\r
+ hashDbGuids.put(itGuids.next().getCName(), pkgGuid);\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ private final void collectPpiDatabase(PackageSurfaceArea spdDatabase)\r
+ throws Exception {\r
+ String pkgGuid;\r
+ PpiDeclarations ppiDeclarations;\r
+\r
+ pkgGuid = spdDatabase.getSpdHeader().getGuidValue();\r
+ ppiDeclarations = spdDatabase.getPpiDeclarations();\r
+\r
+ if (ppiDeclarations != null) {\r
+ Iterator<PpiDeclarations.Entry> itPpis;\r
+\r
+ itPpis = ppiDeclarations.getEntryList().iterator();\r
+ while (itPpis.hasNext()) {\r
+ hashDbPpis.put(itPpis.next().getCName(), pkgGuid);\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ private final void collectProtocolDatabase(PackageSurfaceArea spdDatabase)\r
+ throws Exception {\r
+ String pkgGuid;\r
+ ProtocolDeclarations protocolDeclarations;\r
+\r
+ pkgGuid = spdDatabase.getSpdHeader().getGuidValue();\r
+ protocolDeclarations = spdDatabase.getProtocolDeclarations();\r
+\r
+ if (protocolDeclarations != null) {\r
+ Iterator<ProtocolDeclarations.Entry> itProtocols;\r
+\r
+ itProtocols = protocolDeclarations.getEntryList().iterator();\r
+ while (itProtocols.hasNext()) {\r
+ hashDbGuids.put(itProtocols.next().getCName(), pkgGuid);\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ private final void collectPackageDatabase(String packageFileName)\r
+ throws Exception {\r
+ XmlObject xmlPackage;\r
+ PackageSurfaceArea spdDatabase;\r
+ File pkgFile;\r
+\r
+ pkgFile = new File(packageFileName);\r
+ xmlPackage = XmlObject.Factory.parse(pkgFile);\r
+ spdDatabase = ((PackageSurfaceAreaDocument) xmlPackage)\r
+ .getPackageSurfaceArea();\r
+\r
+ collectGuidDatabase(spdDatabase);\r
+ collectProtocolDatabase(spdDatabase);\r
+ collectPpiDatabase(spdDatabase);\r
+ collectLibDataBase(spdDatabase, pkgFile.getParent());\r
+\r
+ }\r
+\r
+ public final void collectWorkSpaceDatabase() throws Exception {\r
+ String databaseFileName;\r
+ File databaseFile;\r
+ XmlObject xmlDatabase;\r
+ FrameworkDatabase frameworkDatabase;\r
+ Iterator<DbPathAndFilename> packageFile;\r
+\r
+ workspacePath = System.getenv("WORKSPACE");\r
+\r
+ if (workspacePath == null) {\r
+ String errorMessage = "Envivornment variable \"WORKSPACE\" is not set!";\r
+ throw new Exception(errorMessage);\r
+ }\r
+ databaseFileName = workspacePath + File.separator + "Tools"\r
+ + File.separator + "Conf" + File.separator\r
+ + "FrameworkDatabase.db";\r
+ System.out.println("Open " + databaseFileName);\r
+ databaseFile = new File(databaseFileName);\r
+ xmlDatabase = XmlObject.Factory.parse(databaseFile);\r
+ frameworkDatabase = ((FrameworkDatabaseDocument) xmlDatabase)\r
+ .getFrameworkDatabase();\r
+ packageFile = frameworkDatabase.getPackageList().getFilenameList()\r
+ .iterator();\r
+\r
+ while (packageFile.hasNext()) {\r
+ String packageFileName = packageFile.next().getStringValue();\r
+ packageFileName = workspacePath + File.separator + packageFileName;\r
+ packageFileName = convertToOsFilePath(packageFileName);\r
+\r
+ System.out.println("Parsing: " + packageFileName);\r
+ try {\r
+ collectPackageDatabase(packageFileName);\r
+ } catch (Exception e) {\r
+ System.out.println("Error occured when opening "\r
+ + packageFileName + e.getMessage());\r
+ }\r
+ }\r
+ }\r
}\r