]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/far/PackageQuery.java
1. Show source files' attributes when editing SourceFiles in msa
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / far / PackageQuery.java
CommitLineData
5a24e806 1/** @file\r
2\r
3 Copyright (c) 2006, Intel Corporation\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution. The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8 \r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11 \r
12 **/\r
13\r
14package org.tianocore.frameworkwizard.far;\r
15\r
16import java.io.File;\r
17import java.io.InputStream;\r
18import java.util.ArrayList;\r
19import java.util.Iterator;\r
20import java.util.List;\r
21import java.util.Vector;\r
22\r
23import org.apache.xmlbeans.XmlObject;\r
24import org.tianocore.ModuleSurfaceAreaDocument;\r
25import org.tianocore.PackageDependenciesDocument;\r
26import org.tianocore.PackageSurfaceAreaDocument;\r
27import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
f9d0ab92 28import org.tianocore.frameworkwizard.common.OpenFile;\r
5a24e806 29import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
30import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
31\r
32public class PackageQuery implements PackageQueryInterface {\r
33\r
34 public PackageIdentification getPackageIdentification(File spdFile) {\r
35 PackageIdentification packageId = null;\r
36 try {\r
37 String path = spdFile.getPath();\r
38 WorkspaceTools wt = new WorkspaceTools();\r
39 packageId = new PackageIdentification(wt.getId(path, OpenFile.openSpdFile(path)));\r
40 } catch (Exception e) {\r
41 e.printStackTrace();\r
42 }\r
43 return packageId;\r
44 }\r
45\r
46 public List<String> getPackageMsaList(InputStream spdInput) {\r
47 List<String> result = new ArrayList<String>();\r
48 try {\r
49 PackageSurfaceAreaDocument spd = (PackageSurfaceAreaDocument) XmlObject.Factory.parse(spdInput);\r
50 result = spd.getPackageSurfaceArea().getMsaFiles().getFilenameList();\r
51 } catch (Exception e) {\r
52 e.printStackTrace();\r
53 }\r
54 return result;\r
55 }\r
56\r
57 public List<PackageIdentification> getModuleDependencies(InputStream msaInput) {\r
58 List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
59 try {\r
60 ModuleSurfaceAreaDocument msa = (ModuleSurfaceAreaDocument) XmlObject.Factory.parse(msaInput);\r
61 ModuleSurfaceAreaDocument.ModuleSurfaceArea sa = msa.getModuleSurfaceArea();\r
62 if (sa == null) {\r
63 return result;\r
64 }\r
65 PackageDependenciesDocument.PackageDependencies pkgDep = sa.getPackageDependencies();\r
66 if (pkgDep == null) {\r
67 return result;\r
68 }\r
69 List<PackageDependenciesDocument.PackageDependencies.Package> list = pkgDep.getPackageList();\r
70 Iterator<PackageDependenciesDocument.PackageDependencies.Package> iter = list.iterator();\r
71 while (iter.hasNext()) {\r
72 PackageDependenciesDocument.PackageDependencies.Package item = iter.next();\r
73 PackageIdentification packageId = new PackageIdentification(null, item.getPackageGuid(),\r
74 item.getPackageVersion());\r
75 result.add(packageId);\r
76 }\r
77 } catch (Exception e) {\r
78 e.printStackTrace();\r
79 }\r
80 return result;\r
81 }\r
82\r
83 public List<File> getPackageMsaList(File spdFile) {\r
84 List<File> result = new Vector<File>();\r
85 WorkspaceTools wt = new WorkspaceTools();\r
86 List<String> v = wt.getAllModulesOfPackage(spdFile.getPath());\r
87 Iterator<String> iter = v.iterator();\r
88 while (iter.hasNext()) {\r
89 result.add(new File(iter.next()));\r
90 }\r
91 return result;\r
92 }\r
93\r
94 public List<PackageIdentification> getPackageDependencies(File spdFile) {\r
95 List<File> msaFiles = getPackageMsaList(spdFile);\r
96 return getPackageDependencies(msaFiles);\r
97 }\r
98\r
99 public List<PackageIdentification> getPackageDependencies(List<File> msaFiles) {\r
100 List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
101 Iterator<File> iter = msaFiles.iterator();\r
102 while (iter.hasNext()) {\r
103 result = AggregationOperation.union(result, getModuleDependencies(iter.next()));\r
104 }\r
105 return result;\r
106 }\r
107\r
108 public List<PackageIdentification> getModuleDependencies(File msaFile) {\r
109 List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
110 try {\r
111 ModuleSurfaceArea msa = OpenFile.openMsaFile(msaFile.getPath());\r
112 List<PackageDependenciesDocument.PackageDependencies.Package> p = msa.getPackageDependencies()\r
113 .getPackageList();\r
114 Iterator<PackageDependenciesDocument.PackageDependencies.Package> iter = p.iterator();\r
115 while (iter.hasNext()) {\r
116 PackageDependenciesDocument.PackageDependencies.Package item = iter.next();\r
117 PackageIdentification packageId = new PackageIdentification(null, item.getPackageGuid(),\r
118 item.getPackageVersion());\r
119 if (!AggregationOperation.belongs(packageId, result)) {\r
120 result.add(packageId);\r
121 }\r
122 }\r
123 } catch (Exception e) {\r
124 }\r
125 return result;\r
126 }\r
127}\r