3 The file is used to provide all kinds of sorting method
5 Copyright (c) 2006, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 package org
.tianocore
.frameworkwizard
.common
;
18 import java
.util
.Vector
;
20 import org
.tianocore
.frameworkwizard
.module
.Identifications
.ModuleIdentification
;
21 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PcdCoded
.PcdIdentification
;
22 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PcdCoded
.PcdVector
;
23 import org
.tianocore
.frameworkwizard
.packaging
.PackageIdentification
;
24 import org
.tianocore
.frameworkwizard
.platform
.PlatformIdentification
;
29 Sort all elements in the vector as the specific sort type
31 @param v The vector need to be sorted
32 @param mode Sort type DataType.Sort_Type_Ascendin and DataType.Sort_Type_Descending
35 public static void sortVectorString(Vector
<String
> v
, int mode
) {
37 for (int indexI
= 0; indexI
< v
.size(); indexI
++) {
38 for (int indexJ
= indexI
+ 1; indexJ
< v
.size(); indexJ
++) {
39 if ((v
.get(indexJ
).compareTo(v
.get(indexI
)) < 0 && mode
== DataType
.SORT_TYPE_ASCENDING
)
40 || (v
.get(indexI
).compareTo(v
.get(indexJ
)) < 0 && mode
== DataType
.SORT_TYPE_DESCENDING
)) {
41 String temp
= v
.get(indexI
);
42 v
.setElementAt(v
.get(indexJ
), indexI
);
43 v
.setElementAt(temp
, indexJ
);
51 Sort all elements of vector and return sorted sequence
53 @param v The vector need to be sorted
54 @param mode Sort type DataType.Sort_Type_Ascendin and DataType.Sort_Type_Descending
55 @return Vector<Integer> The sorted sequence
58 public static Vector
<Integer
> getVectorSortSequence(Vector
<String
> v
, int mode
) {
59 Vector
<Integer
> vSequence
= new Vector
<Integer
>();
64 for (int index
= 0; index
< v
.size(); index
++) {
65 vSequence
.addElement(index
);
70 // sort and get new sequence
72 for (int indexI
= 0; indexI
< v
.size(); indexI
++) {
73 for (int indexJ
= indexI
+ 1; indexJ
< v
.size(); indexJ
++) {
74 if ((v
.get(indexJ
).compareTo(v
.get(indexI
)) < 0 && mode
== DataType
.SORT_TYPE_ASCENDING
)
75 || (v
.get(indexI
).compareTo(v
.get(indexJ
)) < 0 && mode
== DataType
.SORT_TYPE_DESCENDING
)) {
79 String tempStr
= v
.get(indexI
);
80 v
.setElementAt(v
.get(indexJ
), indexI
);
81 v
.setElementAt(tempStr
, indexJ
);
86 int tempInt
= vSequence
.get(indexI
);
87 vSequence
.setElementAt(vSequence
.get(indexJ
), indexI
);
88 vSequence
.setElementAt(tempInt
, indexJ
);
97 Sort all elements of vector as input sequence
99 @param v The vector need to be sorted
100 @param vSequence The sort sequence should be followed
103 public static void sortVectorString(Vector
<String
> v
, Vector
<Integer
> vSequence
) {
104 if (v
!= null && vSequence
!= null && v
.size() == vSequence
.size()) {
105 Vector
<String
> tempV
= new Vector
<String
>();
106 for (int index
= 0; index
< v
.size(); index
++) {
107 tempV
.addElement(v
.get(index
));
109 for (int index
= 0; index
< v
.size(); index
++) {
110 v
.setElementAt(tempV
.get(vSequence
.get(index
)), index
);
122 public static void sortModules(Vector
<ModuleIdentification
> v
, int mode
) {
127 for (int indexI
= 0; indexI
< v
.size(); indexI
++) {
128 for (int indexJ
= indexI
+ 1; indexJ
< v
.size(); indexJ
++) {
129 if ((v
.get(indexJ
).getName().compareTo(v
.get(indexI
).getName()) < 0 && mode
== DataType
.SORT_TYPE_ASCENDING
)
130 || (v
.get(indexI
).getName().compareTo(v
.get(indexJ
).getName()) < 0 && mode
== DataType
.SORT_TYPE_DESCENDING
)) {
131 ModuleIdentification temp
= v
.get(indexI
);
132 v
.setElementAt(v
.get(indexJ
), indexI
);
133 v
.setElementAt(temp
, indexJ
);
147 public static void sortPackages(Vector
<PackageIdentification
> v
, int mode
) {
152 for (int indexI
= 0; indexI
< v
.size(); indexI
++) {
153 for (int indexJ
= indexI
+ 1; indexJ
< v
.size(); indexJ
++) {
154 if ((v
.get(indexJ
).getName().compareTo(v
.get(indexI
).getName()) < 0 && mode
== DataType
.SORT_TYPE_ASCENDING
)
155 || (v
.get(indexI
).getName().compareTo(v
.get(indexJ
).getName()) < 0 && mode
== DataType
.SORT_TYPE_DESCENDING
)) {
156 PackageIdentification temp
= v
.get(indexI
);
157 v
.setElementAt(v
.get(indexJ
), indexI
);
158 v
.setElementAt(temp
, indexJ
);
172 public static void sortPlatforms(Vector
<PlatformIdentification
> v
, int mode
) {
177 for (int indexI
= 0; indexI
< v
.size(); indexI
++) {
178 for (int indexJ
= indexI
+ 1; indexJ
< v
.size(); indexJ
++) {
179 if ((v
.get(indexJ
).getName().compareTo(v
.get(indexI
).getName()) < 0 && mode
== DataType
.SORT_TYPE_ASCENDING
)
180 || (v
.get(indexI
).getName().compareTo(v
.get(indexJ
).getName()) < 0 && mode
== DataType
.SORT_TYPE_DESCENDING
)) {
181 PlatformIdentification temp
= v
.get(indexI
);
182 v
.setElementAt(v
.get(indexJ
), indexI
);
183 v
.setElementAt(temp
, indexJ
);
197 public static void sortPcds(PcdVector v
, int mode
) {
202 for (int indexI
= 0; indexI
< v
.size(); indexI
++) {
203 for (int indexJ
= indexI
+ 1; indexJ
< v
.size(); indexJ
++) {
204 if ((v
.getPcd(indexJ
).getName().compareTo(v
.getPcd(indexI
).getName()) < 0 && mode
== DataType
.SORT_TYPE_ASCENDING
)
205 || (v
.getPcd(indexI
).getName().compareTo(v
.getPcd(indexJ
).getName()) < 0 && mode
== DataType
.SORT_TYPE_DESCENDING
)) {
206 PcdIdentification temp
= v
.getPcd(indexI
);
207 v
.setPcd(v
.getPcd(indexJ
), indexI
);
208 v
.setPcd(temp
, indexJ
);
216 Sort all objects of a vector based on the object's "toString"
222 public static void sortObjectVector(Vector
<Object
> v
, int mode
) {
227 for (int indexI
= 0; indexI
< v
.size(); indexI
++) {
228 for (int indexJ
= indexI
+ 1; indexJ
< v
.size(); indexJ
++) {
229 if ((v
.get(indexJ
).toString().compareTo(v
.get(indexI
).toString()) < 0 && mode
== DataType
.SORT_TYPE_ASCENDING
)
230 || (v
.get(indexI
).toString().compareTo(v
.get(indexJ
).toString()) < 0 && mode
== DataType
.SORT_TYPE_DESCENDING
)) {
231 Object temp
= v
.get(indexI
);
232 v
.setElementAt(v
.get(indexJ
), indexI
);
233 v
.setElementAt(temp
, indexJ
);