]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/global/LibraryClassDescriptor.java
remove unnecessary check for NULL pointer.
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / global / LibraryClassDescriptor.java
CommitLineData
50d4c727 1/** @file\r
2 This file is for surface area information retrieval.\r
3\r
4 Copyright (c) 2006, Intel Corporation\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13 **/\r
14package org.tianocore.frameworkwizard.platform.ui.global;\r
15\r
16import java.util.Vector;\r
17\r
18public class LibraryClassDescriptor {\r
19 public String className = "";\r
20 public String supArchs = "";\r
21 public String supModTypes = "";\r
22 \r
23 public LibraryClassDescriptor (String s1, String s2, String s3) {\r
24 className = s1;\r
25 if (s2 != null) {\r
26 supArchs = s2; \r
27 }\r
28 if (s3 != null) {\r
29 supModTypes = s3; \r
30 }\r
31 \r
32 }\r
33 \r
34 public boolean equals(Object obj) {\r
35 if (obj instanceof LibraryClassDescriptor) {\r
36 LibraryClassDescriptor id = (LibraryClassDescriptor)obj;\r
37 if (className.equals(id.className) && sameArchs (supArchs, id.supArchs) && sameModTypes(supModTypes, id.supModTypes)) {\r
38 return true;\r
39 }\r
40 return false;\r
41 }\r
42 else {\r
43 return super.equals(obj);\r
44 }\r
45 }\r
46 \r
47 public int hashCode(){\r
48 return (className + supArchs + supModTypes).toLowerCase().hashCode();\r
49 }\r
50 \r
51 public String toString() {\r
52 return "Library Class "+ className + " [SupArchs: " + supArchs + " SupModTypes: " + supModTypes + "]";\r
53 }\r
54 \r
55 public boolean isSubSetByArchs (LibraryClassDescriptor lcd) {\r
56 if (className.equals(lcd.className)) {\r
57 Vector<String> vArchs1 = getVectorFromString(supArchs);\r
58 Vector<String> vArchs2 = getVectorFromString(lcd.supArchs);\r
59 \r
60 if (isSubSet(vArchs1, vArchs2)) {\r
61 return true;\r
62 }\r
63 }\r
64 return false;\r
65 }\r
66 \r
67 public boolean isSubSetByModTypes (LibraryClassDescriptor lcd) {\r
68 if (className.equals(lcd.className)) {\r
69 Vector<String> vModTypes1 = getVectorFromString(supModTypes);\r
70 Vector<String> vModTypes2 = getVectorFromString(lcd.supModTypes);\r
71 \r
72 if (isSubSet(vModTypes1, vModTypes2)) {\r
73 return true;\r
74 }\r
75 }\r
76 return false;\r
77 }\r
78 \r
79 public boolean hasInterSectionWith (LibraryClassDescriptor lcd) {\r
80 if (className.equals(lcd.className)) {\r
81 Vector<String> vArchs1 = getVectorFromString(supArchs);\r
82 Vector<String> vArchs2 = getVectorFromString(lcd.supArchs);\r
83 if (vArchs1.size() == 0 || (vArchs1.size() == 1 && vArchs1.get(0).equalsIgnoreCase(""))) {\r
84 return true;\r
85 }\r
86 if (vArchs2.size() == 0 || (vArchs2.size() == 1 && vArchs2.get(0).equalsIgnoreCase(""))) {\r
87 return true;\r
88 }\r
89 vArchs1.retainAll(vArchs2);\r
90 if (vArchs1.size() > 0) {\r
91 return true;\r
92 }\r
93 }\r
94 return false;\r
95 }\r
96 \r
97 private boolean isSubSet (Vector<String> v1, Vector<String> v2) {\r
98 if (v2.size() == 0 || (v2.size() == 1 && v2.get(0).equalsIgnoreCase(""))) {\r
99 return true;\r
100 }\r
101 if (v2.containsAll(v1)) {\r
102 return true;\r
103 }\r
104 return false;\r
105 }\r
106 \r
107 public Vector<String> getVectorFromString (String s) {\r
108 if (s == null || s.equals("null")) {\r
109 s = "";\r
110 }\r
111 String[] sa1 = s.split(" ");\r
112 Vector<String> v = new Vector<String>();\r
113 for (int i = 0; i < sa1.length; ++i) {\r
114 v.add(sa1[i]);\r
115 }\r
116 return v;\r
117 }\r
118 \r
119 private boolean sameArchs (String archs1, String archs2) {\r
120 Vector<String> vArchs1 = getVectorFromString(archs1);\r
121 Vector<String> vArchs2 = getVectorFromString(archs2);\r
122 \r
123 if (vArchs1.containsAll(vArchs2) && vArchs2.containsAll(vArchs1)) {\r
124 return true;\r
125 }\r
126 return false;\r
127 }\r
128 \r
129 private boolean sameModTypes (String modTypes1, String modTypes2) {\r
130 return sameArchs(modTypes1, modTypes2);\r
131 }\r
132}