+++ /dev/null
-/** @file\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
- **/\r
-\r
-package org.tianocore.frameworkwizard.far;\r
-\r
-import java.io.File;\r
-import java.io.InputStream;\r
-import java.util.ArrayList;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.xmlbeans.XmlObject;\r
-import org.tianocore.ModuleSurfaceAreaDocument;\r
-import org.tianocore.PackageDependenciesDocument;\r
-import org.tianocore.PackageSurfaceAreaDocument;\r
-import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
-import org.tianocore.frameworkwizard.common.OpenFile;\r
-import org.tianocore.frameworkwizard.common.Tools;\r
-import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
-import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
-\r
-public class PackageQuery implements PackageQueryInterface {\r
-\r
- public PackageIdentification getPackageIdentification(File spdFile) {\r
- PackageIdentification packageId = null;\r
- try {\r
- String path = spdFile.getPath();\r
- packageId = Tools.getId(path, OpenFile.openSpdFile(path));\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return packageId;\r
- }\r
-\r
- public List<String> getPackageMsaList(InputStream spdInput) {\r
- List<String> result = new ArrayList<String>();\r
- try {\r
- PackageSurfaceAreaDocument spd = (PackageSurfaceAreaDocument) XmlObject.Factory.parse(spdInput);\r
- result = spd.getPackageSurfaceArea().getMsaFiles().getFilenameList();\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return result;\r
- }\r
-\r
- public List<PackageIdentification> getModuleDependencies(InputStream msaInput) {\r
- List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
- try {\r
- ModuleSurfaceAreaDocument msa = (ModuleSurfaceAreaDocument) XmlObject.Factory.parse(msaInput);\r
- ModuleSurfaceAreaDocument.ModuleSurfaceArea sa = msa.getModuleSurfaceArea();\r
- if (sa == null) {\r
- return result;\r
- }\r
- PackageDependenciesDocument.PackageDependencies pkgDep = sa.getPackageDependencies();\r
- if (pkgDep == null) {\r
- return result;\r
- }\r
- List<PackageDependenciesDocument.PackageDependencies.Package> list = pkgDep.getPackageList();\r
- Iterator<PackageDependenciesDocument.PackageDependencies.Package> iter = list.iterator();\r
- while (iter.hasNext()) {\r
- PackageDependenciesDocument.PackageDependencies.Package item = iter.next();\r
- PackageIdentification packageId = new PackageIdentification(null, item.getPackageGuid(),\r
- item.getPackageVersion());\r
- result.add(packageId);\r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- return result;\r
- }\r
-\r
- public List<File> getPackageMsaList(File spdFile) {\r
- List<File> result = new Vector<File>();\r
- WorkspaceTools wt = new WorkspaceTools();\r
- List<String> v = wt.getAllModulesOfPackage(spdFile.getPath());\r
- Iterator<String> iter = v.iterator();\r
- while (iter.hasNext()) {\r
- result.add(new File(iter.next()));\r
- }\r
- return result;\r
- }\r
-\r
- public List<PackageIdentification> getPackageDependencies(File spdFile) {\r
- List<File> msaFiles = getPackageMsaList(spdFile);\r
- return getPackageDependencies(msaFiles);\r
- }\r
-\r
- public List<PackageIdentification> getPackageDependencies(List<File> msaFiles) {\r
- List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
- Iterator<File> iter = msaFiles.iterator();\r
- while (iter.hasNext()) {\r
- result = AggregationOperation.union(result, getModuleDependencies(iter.next()));\r
- }\r
- return result;\r
- }\r
-\r
- public List<PackageIdentification> getModuleDependencies(File msaFile) {\r
- List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
- try {\r
- ModuleSurfaceArea msa = OpenFile.openMsaFile(msaFile.getPath());\r
- List<PackageDependenciesDocument.PackageDependencies.Package> p = msa.getPackageDependencies()\r
- .getPackageList();\r
- Iterator<PackageDependenciesDocument.PackageDependencies.Package> iter = p.iterator();\r
- while (iter.hasNext()) {\r
- PackageDependenciesDocument.PackageDependencies.Package item = iter.next();\r
- PackageIdentification packageId = new PackageIdentification(null, item.getPackageGuid(),\r
- item.getPackageVersion());\r
- if (!AggregationOperation.belongs(packageId, result)) {\r
- result.add(packageId);\r
- }\r
- }\r
- } catch (Exception e) {\r
- }\r
- return result;\r
- }\r
-}\r