]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/GenBuild/org/tianocore/build/id/ModuleIdentification.java
Used the DAG algorithm given by Mike to re-implemented library constructor sorting...
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / id / ModuleIdentification.java
CommitLineData
5f42a4ba 1/** @file\r
2This file is to define ModuleIdentification class.\r
3\r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13\r
a29c47e0 14package org.tianocore.build.id;\r
15\r
16import java.io.File;\r
17\r
01413f0c 18/**\r
19 This class is used to identify a module with Module Guid, Module Version, \r
20 Package Guid, Package Version. \r
a29c47e0 21\r
01413f0c 22 @since GenBuild 1.0\r
23**/\r
a29c47e0 24public class ModuleIdentification extends Identification {\r
25 \r
26 private PackageIdentification packageId;\r
27 \r
28 private File msaFile;\r
29 \r
30 private String moduleType;\r
31 \r
32 private boolean isLibrary = false;\r
33\r
bc33b23d 34 private String constructor = "";\r
35\r
36 private String destructor = "";\r
37\r
01413f0c 38 /**\r
39 @param guid Guid\r
40 @param version Version\r
41 **/\r
a29c47e0 42 public ModuleIdentification(String guid, String version){\r
43 super(guid, version);\r
44 }\r
45 \r
01413f0c 46 /**\r
47 @param guid Guid\r
48 @param version Version\r
49 @param packageId Package Identification\r
50 **/\r
a29c47e0 51 public ModuleIdentification(String guid, String version, PackageIdentification packageId){\r
52 super(guid, version);\r
53 this.packageId = packageId;\r
54 }\r
55 \r
01413f0c 56 /**\r
57 @param name Name\r
58 @param guid Guid\r
59 @param version Version\r
60 **/\r
a29c47e0 61 public ModuleIdentification(String name, String guid, String version){\r
62 super(name, guid, version);\r
63 }\r
64 \r
01413f0c 65 /**\r
66 @param name Name\r
67 @param guid Guid\r
68 @param version Version\r
69 @param packageId PackageIdentification\r
70 **/\r
a29c47e0 71 public ModuleIdentification(String name, String guid, String version, PackageIdentification packageId){\r
72 super(name, guid, version);\r
73 this.packageId = packageId;\r
74 }\r
75 \r
01413f0c 76 /**\r
77 @return boolean is this module is library\r
78 **/\r
a29c47e0 79 public boolean isLibrary() {\r
80 return isLibrary;\r
81 }\r
82\r
01413f0c 83 /**\r
84 @param isLibrary \r
85 **/\r
a29c47e0 86 public void setLibrary(boolean isLibrary) {\r
87 this.isLibrary = isLibrary;\r
88 }\r
89\r
01413f0c 90 /**\r
91 @return MSA File\r
92 **/\r
a29c47e0 93 public File getMsaFile() {\r
a29c47e0 94 return msaFile;\r
95 }\r
96 \r
01413f0c 97 /**\r
98 @return Module relative path to package\r
99 **/\r
a29c47e0 100 public String getModuleRelativePath() {\r
a29c47e0 101 if (msaFile.getParent().length() == packageId.getPackageDir().length()) {\r
102 return ".";\r
103 }\r
104 return msaFile.getParent().substring(packageId.getPackageDir().length() + 1);\r
105 }\r
106\r
01413f0c 107 /**\r
108 @param msaFile Set Msa File\r
109 **/\r
a29c47e0 110 public void setMsaFile(File msaFile) {\r
111 this.msaFile = msaFile;\r
112 }\r
113 \r
114 public boolean equals(Object obj) {\r
115 if (obj instanceof ModuleIdentification) {\r
116 ModuleIdentification id = (ModuleIdentification)obj;\r
117 if (guid.equalsIgnoreCase(id.getGuid()) && packageId.equals(id.getPackage())) {\r
118 if (version == null || id.version == null) {\r
119 return true;\r
120 }\r
121 else if (version.trim().equalsIgnoreCase("") || id.version.trim().equalsIgnoreCase("")){\r
122 return true;\r
123 }\r
124 else if (version.equalsIgnoreCase(id.version)) {\r
125 return true;\r
126 }\r
127 }\r
128 return false;\r
129 }\r
130 else {\r
131 return super.equals(obj);\r
132 }\r
133 }\r
134 \r
892b0e7a 135 public String toString() {\r
89da7eba 136 String nameString;\r
137 String versionString;\r
138 String packageString;\r
139\r
140 if (name != null && name != "") {\r
141 nameString = name;\r
142 } else {\r
143 if (guid != null && guid != "") {\r
144 nameString = guid;\r
145 } else {\r
146 nameString = "UNKNOWN";\r
147 }\r
a29c47e0 148 }\r
89da7eba 149\r
150 if (version != null) {\r
151 versionString = version;\r
152 } else {\r
153 versionString = ""; \r
a29c47e0 154 }\r
89da7eba 155\r
156 if (packageId != null) {\r
157 packageString = packageId.toString();\r
158 } else {\r
159 packageString = "Package [UNKNOWN]";\r
160 }\r
161\r
162 return "Module [" + nameString + versionString + "] in " + packageString; \r
a29c47e0 163 }\r
164\r
01413f0c 165 /**\r
166 @param packageId set package identification\r
167 **/\r
a29c47e0 168 public void setPackage(PackageIdentification packageId) {\r
169 this.packageId = packageId;\r
170 }\r
171\r
01413f0c 172 /**\r
173 @return get package identification\r
174 **/\r
a29c47e0 175 public PackageIdentification getPackage() {\r
176 return packageId;\r
177 }\r
178\r
01413f0c 179 /**\r
180 @return get module type\r
181 **/\r
a29c47e0 182 public String getModuleType() {\r
a29c47e0 183 return moduleType;\r
184 }\r
185\r
01413f0c 186 /**\r
187 @param moduleType set module type\r
188 **/\r
a29c47e0 189 public void setModuleType(String moduleType) {\r
190 this.moduleType = moduleType;\r
191 }\r
192 \r
193 public String getName() {\r
a29c47e0 194 return name;\r
195 }\r
bc33b23d 196\r
197 public boolean hasConstructor() {\r
198 return constructor != "";\r
199 }\r
200\r
201 public boolean hasDestructor() {\r
202 return destructor != "";\r
203 }\r
204\r
205 public void setConstructor(String name) {\r
206 if (name != null) {\r
207 constructor = name;\r
208 }\r
209 }\r
210\r
211 public void setDestructor(String name) {\r
212 if (name != null) {\r
213 destructor = name;\r
214 }\r
215 }\r
a29c47e0 216}\r