]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/Tools.java
Fixed a spelling error and changed the Package Headers Tab title to be Package Header...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / common / Tools.java
CommitLineData
a13899c5 1/** @file\r
2 \r
3 The file is used to provides some useful interfaces \r
4 \r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 **/\r
15\r
16package org.tianocore.frameworkwizard.common;\r
17\r
18import java.io.File;\r
19import java.text.SimpleDateFormat;\r
20import java.util.Date;\r
21import java.util.List;\r
22import java.util.UUID;\r
23import java.util.Vector;\r
24\r
92e29378 25import javax.swing.DefaultListModel;\r
a13899c5 26import javax.swing.JComboBox;\r
92e29378 27import javax.swing.JList;\r
a13899c5 28import javax.swing.JOptionPane;\r
29\r
92e29378 30import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
9a8d6d9f 31import org.tianocore.frameworkwizard.module.Identifications.PcdCoded.PcdIdentification;\r
32import org.tianocore.frameworkwizard.module.Identifications.PcdCoded.PcdVector;\r
92e29378 33import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
34import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
35\r
a13899c5 36/**\r
37 The class is used to provides some useful interfaces \r
38 \r
39 **/\r
40public class Tools {\r
41\r
42 //\r
43 // The dir user selected to create new package in\r
44 //\r
45 public static String dirForNewSpd = null;\r
46\r
47 /**\r
48 Used for test\r
49 \r
50 @param args\r
51 \r
52 **/\r
53 public static void main(String[] args) {\r
54 System.out.println(getCurrentDateTime());\r
9a8d6d9f 55 // Vector<String> v = new Vector<String>();\r
56 // Vector<String> v1 = new Vector<String>();\r
57 // \r
58 // v.addElement("CAC");\r
59 // v1.addElement("1111");\r
60 // v.addElement("1AC");\r
61 // v1.addElement("2222");\r
62 // v.addElement("ABC");\r
63 // v1.addElement("3333");\r
64 // v.addElement("0C");\r
65 // v1.addElement("4444");\r
66 // v.addElement("AAC");\r
67 // v1.addElement("5555");\r
68 // Vector<Integer> vs = new Vector<Integer>();\r
69 // vs = Tools.getVectorSortSequence(v, DataType.Sort_Type_Ascending);\r
70 // Tools.sortVectorString(v1, Tools.getVectorSortSequence(v, DataType.Sort_Type_Ascending));\r
71 // \r
72 // Tools.sortVectorString(v, DataType.Sort_Type_Ascending);\r
73 // Tools.sortVectorString(v, DataType.Sort_Type_Descending);\r
a13899c5 74 }\r
75\r
76 /**\r
77 Get current date and time and format it as "yyyy-MM-dd HH:mm"\r
78 \r
79 @return formatted current date and time\r
80 \r
81 **/\r
82 public static String getCurrentDateTime() {\r
83 Date now = new Date(System.currentTimeMillis());\r
84 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");\r
85 return sdf.format(now);\r
86 }\r
87\r
88 /**\r
89 Generate a UUID\r
90 \r
91 @return the created UUID\r
92 \r
93 **/\r
94 public static String generateUuidString() {\r
95 return UUID.randomUUID().toString();\r
96 }\r
97\r
98 /**\r
99 Use current file separator in the path\r
100 \r
101 @param strPath\r
102 @return\r
103 \r
104 **/\r
105 public static String convertPathToCurrentOsType(String strPath) {\r
106 strPath = strPath.replace(DataType.DOS_FILE_SEPARATOR, DataType.FILE_SEPARATOR);\r
107 strPath = strPath.replace(DataType.UNIX_FILE_SEPARATOR, DataType.FILE_SEPARATOR);\r
108 return strPath;\r
109 }\r
110\r
111 /**\r
112 Use Unix file separator in the path\r
113 \r
114 @param strPath\r
115 @return\r
116 \r
117 **/\r
118 public static String convertPathToUnixType(String strPath) {\r
119 strPath = strPath.replace(DataType.DOS_FILE_SEPARATOR, DataType.UNIX_FILE_SEPARATOR);\r
120 return strPath;\r
121 }\r
122\r
123 /**\r
124 Use Dos file separator in the path\r
125 \r
126 @param strPath\r
127 @return\r
128 \r
129 **/\r
130 public static String convertPathToDosType(String strPath) {\r
131 strPath = strPath.replace(DataType.UNIX_FILE_SEPARATOR, DataType.DOS_FILE_SEPARATOR);\r
132 return strPath;\r
133 }\r
134\r
135 /**\r
136 Get all system properties and output to the console\r
137 \r
138 **/\r
139 public static void getSystemProperties() {\r
140 System.out.println(System.getProperty("java.class.version"));\r
141 System.out.println(System.getProperty("java.class.path"));\r
142 System.out.println(System.getProperty("java.ext.dirs"));\r
143 System.out.println(System.getProperty("os.name"));\r
144 System.out.println(System.getProperty("os.arch"));\r
145 System.out.println(System.getProperty("os.version"));\r
146 System.out.println(System.getProperty("file.separator"));\r
147 System.out.println(System.getProperty("path.separator"));\r
148 System.out.println(System.getProperty("line.separator"));\r
149 System.out.println(System.getProperty("user.name"));\r
150 System.out.println(System.getProperty("user.home"));\r
151 System.out.println(System.getProperty("user.dir"));\r
152 System.out.println(System.getProperty("PATH"));\r
153\r
154 System.out.println(System.getenv("PROCESSOR_REVISION"));\r
155 }\r
156\r
157 /**\r
158 Generate selection items for JComboBox by input vector\r
159 \r
160 **/\r
161 public static void generateComboBoxByVector(JComboBox jcb, Vector<String> vector) {\r
162 if (jcb != null) {\r
163 jcb.removeAllItems();\r
164 }\r
165 if (vector != null) {\r
166 for (int index = 0; index < vector.size(); index++) {\r
167 jcb.addItem(vector.elementAt(index));\r
168 }\r
169 }\r
170 }\r
9a8d6d9f 171\r
92e29378 172 /**\r
9a8d6d9f 173 Generate selection items for JList by input vector\r
174 \r
175 **/\r
176 public static void generateListByVector(JList jl, Vector<String> vector) {\r
177 if (jl != null) {\r
178 DefaultListModel listModel = (DefaultListModel) jl.getModel();\r
179 listModel.removeAllElements();\r
180\r
181 if (vector != null) {\r
182 for (int index = 0; index < vector.size(); index++) {\r
183 listModel.addElement(vector.get(index));\r
184 }\r
185 }\r
186\r
187 if (listModel.size() > 0) {\r
188 jl.setSelectedIndex(0);\r
189 }\r
190 }\r
191 }\r
79cb6fdb 192\r
a13899c5 193 /**\r
194 Get path only from a path\r
79cb6fdb 195 \r
a13899c5 196 @param filePath\r
197 @return\r
79cb6fdb 198 \r
199 **/\r
a13899c5 200 public static String getFilePathOnly(String filePath) {\r
201 String path = filePath.substring(0, filePath.length() - getFileNameOnly(filePath).length());\r
202 if (path.endsWith(DataType.FILE_SEPARATOR)) {\r
203 path = path.substring(0, path.length() - DataType.FILE_SEPARATOR.length());\r
204 }\r
79cb6fdb 205\r
a13899c5 206 return path;\r
207 }\r
79cb6fdb 208\r
a13899c5 209 /**\r
210 Get file name from a path\r
211 \r
212 @param filePath\r
213 @return\r
79cb6fdb 214 \r
215 **/\r
a13899c5 216 public static String getFileNameOnly(String filePath) {\r
217 File f = new File(filePath);\r
218 return f.getAbsoluteFile().getName();\r
219 }\r
79cb6fdb 220\r
a13899c5 221 public static String getFileNameWithoutExt(String filePath) {\r
222 filePath = getFileNameOnly(filePath);\r
223 filePath = filePath.substring(0, filePath.lastIndexOf(DataType.FILE_EXT_SEPARATOR));\r
224 return filePath;\r
225 }\r
226\r
227 /**\r
228 Get relative path\r
229 \r
230 @param wholePath\r
231 @param commonPath\r
232 @return wholePath - commonPath \r
233 \r
234 **/\r
235 public static String getRelativePath(String wholePath, String commonPath) {\r
236 String path = "";\r
237 int i = 0;\r
238 i = wholePath.indexOf(commonPath);\r
239 if (i > -1) {\r
240 i = i + commonPath.length();\r
241 } else {\r
242 return "";\r
243 }\r
244 path = wholePath.substring(i);\r
245 //\r
246 // remove file separator of head\r
247 //\r
248 if (path.indexOf(DataType.DOS_FILE_SEPARATOR) == 0) {\r
249 path = path.substring(0 + DataType.DOS_FILE_SEPARATOR.length());\r
250 }\r
251 if (path.indexOf(DataType.UNIX_FILE_SEPARATOR) == 0) {\r
252 path = path.substring(0 + DataType.DOS_FILE_SEPARATOR.length());\r
253 }\r
254 //\r
255 // remove file separator of rear\r
256 //\r
257 if (path.indexOf(DataType.DOS_FILE_SEPARATOR) == path.length() - DataType.DOS_FILE_SEPARATOR.length()) {\r
258 path = path.substring(0, path.length() - DataType.DOS_FILE_SEPARATOR.length());\r
259 }\r
260 if (path.indexOf(DataType.UNIX_FILE_SEPARATOR) == path.length() - DataType.UNIX_FILE_SEPARATOR.length()) {\r
261 path = path.substring(0, path.length() - DataType.DOS_FILE_SEPARATOR.length());\r
262 }\r
263 //\r
264 // convert to UNIX format\r
265 //\r
266 path = Tools.convertPathToUnixType(path);\r
267 return path;\r
268 }\r
269\r
270 /**\r
271 Convert List ot Vector\r
272 \r
273 @param list\r
274 @return\r
275 \r
276 **/\r
277 public static Vector<String> convertListToVector(List list) {\r
278 Vector<String> v = new Vector<String>();\r
279 if (list != null && list.size() > 0) {\r
280 for (int index = 0; index < list.size(); index++) {\r
281 v.addElement(list.get(index).toString());\r
282 }\r
283 }\r
284 return v;\r
285 }\r
286\r
287 /**\r
288 If the input path missing ext, append the ext to the path\r
289 \r
290 @param path\r
291 @param type\r
292 @return\r
293 \r
294 **/\r
295 public static String addPathExt(String path, int type) {\r
296 String match = "";\r
297 if (type == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
298 match = DataType.FILE_EXT_SEPARATOR + DataType.MODULE_SURFACE_AREA_EXT;\r
299 }\r
300 if (type == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
301 match = DataType.FILE_EXT_SEPARATOR + DataType.PACKAGE_SURFACE_AREA_EXT;\r
302 }\r
303 if (type == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
304 match = DataType.FILE_EXT_SEPARATOR + DataType.PLATFORM_SURFACE_AREA_EXT;\r
305 }\r
92e29378 306 if (type == DataType.RETURN_TYPE_TEXT) {\r
307 match = DataType.FILE_EXT_SEPARATOR + DataType.TEXT_FILE_EXT;\r
308 }\r
5a24e806 309 if (type == DataType.RETURN_TYPE_FAR_SURFACE_AREA) {\r
55a2762d 310 match = DataType.FILE_EXT_SEPARATOR + DataType.FAR_SURFACE_AREA_EXT;\r
311 }\r
a13899c5 312 if (path.length() <= match.length()) {\r
313 path = path + match;\r
314 return path;\r
315 }\r
316 if (!(path.substring(path.length() - match.length())).equals(match)) {\r
317 path = path + match;\r
318 }\r
319 return path;\r
320 }\r
79cb6fdb 321\r
a13899c5 322 /**\r
323 Show a message box\r
324 \r
325 @param arg0\r
79cb6fdb 326 \r
327 **/\r
a13899c5 328 public static void showInformationMessage(String arg0) {\r
329 JOptionPane.showConfirmDialog(null, arg0, "Error", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE);\r
330 }\r
92e29378 331\r
332 /**\r
333 if the string doesn't end with a file separator, append it to the string\r
334 \r
335 @param arg0\r
336 @return\r
337 \r
338 **/\r
339 public static String addFileSeparator(String arg0) {\r
340 if (!arg0.endsWith(DataType.FILE_SEPARATOR)) {\r
341 arg0 = arg0 + DataType.FILE_SEPARATOR;\r
342 }\r
343 return arg0;\r
344 }\r
345\r
346 /**\r
347 Sort all elements in the vector as the specific sort type\r
348 \r
349 @param v The vector need to be sorted\r
350 @param mode Sort type DataType.Sort_Type_Ascendin and DataType.Sort_Type_Descending\r
351\r
352 **/\r
353 public static void sortVectorString(Vector<String> v, int mode) {\r
354 if (v != null) {\r
355 for (int indexI = 0; indexI < v.size(); indexI++) {\r
356 for (int indexJ = indexI + 1; indexJ < v.size(); indexJ++) {\r
357 if ((v.get(indexJ).compareTo(v.get(indexI)) < 0 && mode == DataType.SORT_TYPE_ASCENDING)\r
358 || (v.get(indexI).compareTo(v.get(indexJ)) < 0 && mode == DataType.SORT_TYPE_DESCENDING)) {\r
359 String temp = v.get(indexI);\r
360 v.setElementAt(v.get(indexJ), indexI);\r
361 v.setElementAt(temp, indexJ);\r
362 }\r
363 }\r
364 }\r
365 }\r
366 }\r
367\r
368 /**\r
369 Sort all elements of vector and return sorted sequence\r
370 \r
371 @param v The vector need to be sorted\r
372 @param mode Sort type DataType.Sort_Type_Ascendin and DataType.Sort_Type_Descending\r
373 @return Vector<Integer> The sorted sequence\r
374 \r
375 **/\r
376 public static Vector<Integer> getVectorSortSequence(Vector<String> v, int mode) {\r
377 Vector<Integer> vSequence = new Vector<Integer>();\r
378 //\r
379 // Init sequence\r
380 //\r
381 if (v != null) {\r
382 for (int index = 0; index < v.size(); index++) {\r
383 vSequence.addElement(index);\r
384 }\r
385 }\r
386\r
387 //\r
388 // sort and get new sequence\r
389 //\r
390 for (int indexI = 0; indexI < v.size(); indexI++) {\r
391 for (int indexJ = indexI + 1; indexJ < v.size(); indexJ++) {\r
392 if ((v.get(indexJ).compareTo(v.get(indexI)) < 0 && mode == DataType.SORT_TYPE_ASCENDING)\r
393 || (v.get(indexI).compareTo(v.get(indexJ)) < 0 && mode == DataType.SORT_TYPE_DESCENDING)) {\r
394 //\r
395 // Swap strings\r
396 //\r
397 String tempStr = v.get(indexI);\r
398 v.setElementAt(v.get(indexJ), indexI);\r
399 v.setElementAt(tempStr, indexJ);\r
9a8d6d9f 400\r
92e29378 401 //\r
402 // Swap sequences\r
403 //\r
404 int tempInt = vSequence.get(indexI);\r
405 vSequence.setElementAt(vSequence.get(indexJ), indexI);\r
406 vSequence.setElementAt(tempInt, indexJ);\r
407 }\r
408 }\r
409 }\r
410\r
411 return vSequence;\r
412 }\r
413\r
414 /**\r
415 Sort all elements of vector as input sequence\r
416 \r
417 @param v The vector need to be sorted\r
418 @param vSequence The sort sequence should be followed\r
419 \r
420 **/\r
421 public static void sortVectorString(Vector<String> v, Vector<Integer> vSequence) {\r
422 if (v != null && vSequence != null && v.size() == vSequence.size()) {\r
423 Vector<String> tempV = new Vector<String>();\r
424 for (int index = 0; index < v.size(); index++) {\r
425 tempV.addElement(v.get(index));\r
426 }\r
427 for (int index = 0; index < v.size(); index++) {\r
428 v.setElementAt(tempV.get(vSequence.get(index)), index);\r
429 }\r
430 }\r
431 }\r
9a8d6d9f 432\r
92e29378 433 /**\r
434 Sort all modules\r
435 \r
436 @param v\r
437 @param mode\r
9a8d6d9f 438 \r
439 **/\r
92e29378 440 public static void sortModules(Vector<ModuleIdentification> v, int mode) {\r
441 if (v != null) {\r
442 //\r
443 // sort by name\r
444 //\r
445 for (int indexI = 0; indexI < v.size(); indexI++) {\r
446 for (int indexJ = indexI + 1; indexJ < v.size(); indexJ++) {\r
447 if ((v.get(indexJ).getName().compareTo(v.get(indexI).getName()) < 0 && mode == DataType.SORT_TYPE_ASCENDING)\r
448 || (v.get(indexI).getName().compareTo(v.get(indexJ).getName()) < 0 && mode == DataType.SORT_TYPE_DESCENDING)) {\r
449 ModuleIdentification temp = v.get(indexI);\r
450 v.setElementAt(v.get(indexJ), indexI);\r
451 v.setElementAt(temp, indexJ);\r
452 }\r
453 }\r
454 }\r
455 }\r
456 }\r
9a8d6d9f 457\r
458 /**\r
459 Sort all packages\r
460 \r
461 @param v\r
462 @param mode\r
463 \r
464 **/\r
465 public static void sortPackages(Vector<PackageIdentification> v, int mode) {\r
466 if (v != null) {\r
467 //\r
468 // sort by name\r
469 //\r
470 for (int indexI = 0; indexI < v.size(); indexI++) {\r
471 for (int indexJ = indexI + 1; indexJ < v.size(); indexJ++) {\r
472 if ((v.get(indexJ).getName().compareTo(v.get(indexI).getName()) < 0 && mode == DataType.SORT_TYPE_ASCENDING)\r
473 || (v.get(indexI).getName().compareTo(v.get(indexJ).getName()) < 0 && mode == DataType.SORT_TYPE_DESCENDING)) {\r
474 PackageIdentification temp = v.get(indexI);\r
475 v.setElementAt(v.get(indexJ), indexI);\r
476 v.setElementAt(temp, indexJ);\r
477 }\r
478 }\r
479 }\r
480 }\r
481 }\r
482\r
483 /**\r
484 Sort all platforms\r
485 \r
486 @param v\r
487 @param mode\r
488 \r
489 **/\r
490 public static void sortPlatforms(Vector<PlatformIdentification> v, int mode) {\r
491 if (v != null) {\r
492 //\r
493 // sort by name\r
494 //\r
495 for (int indexI = 0; indexI < v.size(); indexI++) {\r
496 for (int indexJ = indexI + 1; indexJ < v.size(); indexJ++) {\r
497 if ((v.get(indexJ).getName().compareTo(v.get(indexI).getName()) < 0 && mode == DataType.SORT_TYPE_ASCENDING)\r
498 || (v.get(indexI).getName().compareTo(v.get(indexJ).getName()) < 0 && mode == DataType.SORT_TYPE_DESCENDING)) {\r
499 PlatformIdentification temp = v.get(indexI);\r
500 v.setElementAt(v.get(indexJ), indexI);\r
501 v.setElementAt(temp, indexJ);\r
502 }\r
503 }\r
504 }\r
505 }\r
506 }\r
79cb6fdb 507 \r
508 /**\r
9a8d6d9f 509 Sort all pcd entries\r
510 \r
511 @param v\r
512 @param mode\r
79cb6fdb 513 \r
9a8d6d9f 514 **/\r
515 public static void sortPcds(PcdVector v, int mode) {\r
516 if (v != null) {\r
517 //\r
518 // sort by name\r
519 //\r
520 for (int indexI = 0; indexI < v.size(); indexI++) {\r
521 for (int indexJ = indexI + 1; indexJ < v.size(); indexJ++) {\r
522 if ((v.getPcd(indexJ).getName().compareTo(v.getPcd(indexI).getName()) < 0 && mode == DataType.SORT_TYPE_ASCENDING)\r
523 || (v.getPcd(indexI).getName().compareTo(v.getPcd(indexJ).getName()) < 0 && mode == DataType.SORT_TYPE_DESCENDING)) {\r
524 PcdIdentification temp = v.getPcd(indexI);\r
525 v.setPcd(v.getPcd(indexJ), indexI);\r
526 v.setPcd(temp, indexJ);\r
527 }\r
528 }\r
529 }\r
530 }\r
531 }\r
a13899c5 532}\r