2 This file is for surface area information retrieval.
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 package org
.tianocore
.frameworkwizard
.platform
.ui
.global
;
16 import java
.util
.Vector
;
18 public class LibraryClassDescriptor
{
19 public String className
= "";
20 public String supArchs
= "";
21 public String supModTypes
= "";
23 public LibraryClassDescriptor (String s1
, String s2
, String s3
) {
34 public boolean equals(Object obj
) {
35 if (obj
instanceof LibraryClassDescriptor
) {
36 LibraryClassDescriptor id
= (LibraryClassDescriptor
)obj
;
37 if (className
.equals(id
.className
) && sameArchs (supArchs
, id
.supArchs
) && sameModTypes(supModTypes
, id
.supModTypes
)) {
43 return super.equals(obj
);
47 public int hashCode(){
48 return (className
+ supArchs
+ supModTypes
).toLowerCase().hashCode();
51 public String
toString() {
52 return "Library Class "+ className
+ " [SupArchs: " + supArchs
+ " SupModTypes: " + supModTypes
+ "]";
55 public boolean isSubSetByArchs (LibraryClassDescriptor lcd
) {
56 if (className
.equals(lcd
.className
)) {
57 Vector
<String
> vArchs1
= getVectorFromString(supArchs
);
58 Vector
<String
> vArchs2
= getVectorFromString(lcd
.supArchs
);
60 if (isSubSet(vArchs1
, vArchs2
)) {
67 public boolean isSubSetByModTypes (LibraryClassDescriptor lcd
) {
68 if (className
.equals(lcd
.className
)) {
69 Vector
<String
> vModTypes1
= getVectorFromString(supModTypes
);
70 Vector
<String
> vModTypes2
= getVectorFromString(lcd
.supModTypes
);
72 if (isSubSet(vModTypes1
, vModTypes2
)) {
79 public boolean hasInterSectionWith (LibraryClassDescriptor lcd
) {
80 if (className
.equals(lcd
.className
)) {
81 Vector
<String
> vArchs1
= getVectorFromString(supArchs
);
82 Vector
<String
> vArchs2
= getVectorFromString(lcd
.supArchs
);
83 if (vArchs1
.size() == 0 || (vArchs1
.size() == 1 && vArchs1
.get(0).equalsIgnoreCase(""))) {
86 if (vArchs2
.size() == 0 || (vArchs2
.size() == 1 && vArchs2
.get(0).equalsIgnoreCase(""))) {
89 vArchs1
.retainAll(vArchs2
);
90 if (vArchs1
.size() > 0) {
97 private boolean isSubSet (Vector
<String
> v1
, Vector
<String
> v2
) {
98 if (v2
.size() == 0 || (v2
.size() == 1 && v2
.get(0).equalsIgnoreCase(""))) {
101 if (v2
.containsAll(v1
)) {
107 public Vector
<String
> getVectorFromString (String s
) {
108 if (s
== null || s
.equals("null")) {
111 String
[] sa1
= s
.split(" ");
112 Vector
<String
> v
= new Vector
<String
>();
113 for (int i
= 0; i
< sa1
.length
; ++i
) {
119 private boolean sameArchs (String archs1
, String archs2
) {
120 Vector
<String
> vArchs1
= getVectorFromString(archs1
);
121 Vector
<String
> vArchs2
= getVectorFromString(archs2
);
123 if (vArchs1
.containsAll(vArchs2
) && vArchs2
.containsAll(vArchs1
)) {
129 private boolean sameModTypes (String modTypes1
, String modTypes2
) {
130 return sameArchs(modTypes1
, modTypes2
);