]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/MigrationTools/org/tianocore/migration/Common.java
default outputpath
[mirror_edk2.git] / Tools / Source / MigrationTools / org / tianocore / migration / Common.java
CommitLineData
8c4eeeb6 1/** @file\r
2 \r
3 Copyright (c) 2006, Intel Corporation\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution. The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8 \r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11 \r
12 **/\r
90503bad 13package org.tianocore.migration;\r
14\r
fed802b1 15import java.io.*;\r
16import java.util.regex.*;\r
17import java.util.*;\r
5ea254f6 18import java.lang.reflect.*;\r
90503bad 19\r
5ea254f6 20public final class Common {\r
21 public static final int BOTH = 0;\r
22 public static final int FILE = 1;\r
23 public static final int DIR = 2;\r
8c4eeeb6 24 \r
ac62aa9a 25 public static final String strseparate = "(.*)\\\\([^\\\\]*)";\r
5ea254f6 26 public static final Pattern ptnseparate = Pattern.compile("(.*)\\\\([^\\\\]*)");\r
27\r
28 //-------------------------------------regex------------------------------------------//\r
29 \r
30 public static final String replaceAll(String line, Pattern ptn, String des) {\r
31 Matcher mtr = ptn.matcher(line);\r
32 if (mtr.find()) {\r
33 return mtr.replaceAll(des);\r
34 }\r
35 return line;\r
36 }\r
37\r
38 //-------------------------------------regex------------------------------------------//\r
39 \r
40 //-----------------------------------file&string---------------------------------------//\r
41 \r
42 public static final String file2string(String filename) throws Exception {\r
90503bad 43 BufferedReader rd = new BufferedReader(new FileReader(filename));\r
44 StringBuffer wholefile = new StringBuffer();\r
45 String line;\r
46 while ((line = rd.readLine()) != null) {\r
47 wholefile.append(line + "\n");\r
48 }\r
49 return wholefile.toString();\r
50 }\r
51\r
5ea254f6 52 public static final void string2file(String content, String filename) throws Exception {\r
a756211f 53 ensureDir(filename);\r
54 PrintWriter outfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));\r
55 outfile.append(content);\r
56 outfile.flush();\r
57 outfile.close();\r
58 }\r
59\r
5ea254f6 60 //-----------------------------------file&string---------------------------------------//\r
61\r
62 //--------------------------------------dir--------------------------------------------//\r
63 \r
64 public static final void ensureDir(String objFileWhole) {\r
90503bad 65 File tempdir;\r
8c4eeeb6 66 Matcher mtrseparate = ptnseparate.matcher(objFileWhole);\r
90503bad 67 if (mtrseparate.find()) {\r
68 tempdir = new File(mtrseparate.group(1));\r
69 if (!tempdir.exists()) tempdir.mkdirs();\r
70 }\r
fed802b1 71 }\r
72 \r
5ea254f6 73 public static final void deleteDir(String objFileWhole) {\r
74 String[] list = new File(objFileWhole).list();\r
75 File temp;\r
fed802b1 76 for (int i = 0 ; i < list.length ; i++) {\r
5ea254f6 77 temp = new File(objFileWhole + File.separator + list[i]);\r
78 if (temp.isDirectory()) {\r
79 deleteDir(objFileWhole + File.separator + list[i]);\r
fed802b1 80 } else {\r
5ea254f6 81 temp.delete();\r
fed802b1 82 }\r
83 }\r
5ea254f6 84 new File(objFileWhole).delete();\r
a756211f 85 }\r
86 \r
5ea254f6 87 public static final String dirCopy_(String src) throws Exception {\r
8c4eeeb6 88 Matcher mtrseparate = Common.ptnseparate.matcher(src);\r
89 if (mtrseparate.find()) {\r
90 dirCopy(src, mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2));\r
91 }\r
92 return mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2);\r
93 }\r
94 \r
5ea254f6 95 public static final void dirCopy(String src, String des) throws Exception {\r
8c4eeeb6 96 String[] list = new File(src).list();\r
97 File test;\r
98\r
99 for (int i = 0 ; i < list.length ; i++) {\r
100 test = new File(src + File.separator + list[i]);\r
101 if (test.isDirectory()) {\r
102 dirCopy(src + File.separator + list[i], des + File.separator + list[i]);\r
103 } else {\r
104 ensureDir(des + File.separator + list[i]);\r
105 string2file(file2string(src + File.separator + list[i]), des + File.separator + list[i]);\r
106 }\r
107 }\r
108 }\r
5ea254f6 109\r
110 //--------------------------------------dir--------------------------------------------//\r
111\r
112 //-------------------------------like python walk-----------------------------------------//\r
113 \r
114 public static final void toDoAll(String path, Method md, Object obj, Object[] args, int type) throws Exception {\r
115 String[] list = new File(path).list();\r
116 ArrayList<Object> _args = new ArrayList<Object>();\r
117 \r
118 _args.add(path);\r
119 if (args != null) {\r
120 for (int i = 0; i < args.length; i++) {\r
121 _args.add(args[i]);\r
122 }\r
123 }\r
124\r
125 if (type == DIR || type == BOTH) {\r
126 md.invoke(obj, _args.toArray());\r
127 }\r
128 for (int i = 0 ; i < list.length ; i++) {\r
129 if (new File(path + File.separator + list[i]).isDirectory()) {\r
130 toDoAll(path + File.separator + list[i], md, obj, args, type);\r
131 } else {\r
132 if (type == FILE || type == BOTH) {\r
133 _args.set(0, path + File.separator + list[i]);\r
134 md.invoke(obj, _args.toArray());\r
135 }\r
136 }\r
137 }\r
138 }\r
fed802b1 139 \r
140 public static void toDoAll(String path, ForDoAll fda) throws Exception { // filter of file type can be done in toDo\r
141 String[] list = new File(path).list();\r
142 File test;\r
143\r
144 for (int i = 0 ; i < list.length ; i++) {\r
145 test = new File(path + File.separator + list[i]);\r
146 if (test.isDirectory()) {\r
147 toDoAll(path + File.separator + list[i], fda);\r
148 } else {\r
149 fda.toDo(path + File.separator + list[i]);\r
150 }\r
151 }\r
152 }\r
153 \r
154 public static interface ForDoAll {\r
155 public void toDo(String filepath) throws Exception;\r
90503bad 156 }\r
157}\r