]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/MigrationTools/org/tianocore/migration/Common.java
Coding Style
[mirror_edk2.git] / Tools / Java / 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
71f30e51 15import java.io.BufferedReader;\r
16import java.io.BufferedWriter;\r
17import java.io.File;\r
18import java.io.FileReader;\r
19import java.io.FileWriter;\r
20import java.io.PrintWriter;\r
21import java.lang.reflect.Method;\r
22import java.util.ArrayList;\r
23import java.util.Iterator;\r
24import java.util.Set;\r
25import java.util.regex.Matcher;\r
26import java.util.regex.Pattern;\r
90503bad 27\r
5ea254f6 28public final class Common {\r
71f30e51 29 public static final int BOTH = 0;\r
30\r
31 public static final int FILE = 1;\r
32\r
33 public static final int DIR = 2;\r
34\r
35 public static final String STRSEPARATER = "(.*)\\\\([^\\\\]*)";\r
36\r
37 public static final Pattern PTNSEPARATER = Pattern\r
38 .compile("(.*)\\\\([^\\\\]*)");\r
39\r
40 // -------------------------------------regex------------------------------------------//\r
41\r
42 public static final String replaceAll(String line, Pattern ptn, String des) {\r
43 Matcher mtr = ptn.matcher(line);\r
44\r
45 if (mtr.find()) {\r
46 return mtr.replaceAll(des);\r
47 }\r
48\r
49 return line;\r
50 }\r
51\r
52 public static final boolean find(String line, String regex) {\r
53 Pattern ptn = Pattern.compile(regex);\r
54\r
55 return ptn.matcher(line).find();\r
56 }\r
57\r
58 // -------------------------------------regex------------------------------------------//\r
59\r
60 // -----------------------------------file&string---------------------------------------//\r
61\r
62 public static final String file2string(String filename) throws Exception {\r
63 BufferedReader rd = new BufferedReader(new FileReader(filename));\r
64 StringBuffer wholefile = new StringBuffer();\r
65 String line;\r
66 while ((line = rd.readLine()) != null) {\r
67 wholefile.append(line + "\n");\r
68 }\r
69 rd.close();\r
70 return wholefile.toString();\r
71 }\r
72\r
73 public static final void string2file(String content, String filename)\r
74 throws Exception {\r
75 ensureDir(filename);\r
76 PrintWriter outfile = new PrintWriter(new BufferedWriter(\r
77 new FileWriter(filename)));\r
78 outfile.append(content);\r
79 outfile.flush();\r
80 outfile.close();\r
81 }\r
82\r
83 public static final void fileCopy(String src, String des) throws Exception {\r
84 string2file(file2string(src), des);\r
85 }\r
86\r
87 // -----------------------------------file&string---------------------------------------//\r
88\r
89 // --------------------------------------dir--------------------------------------------//\r
90 /*\r
91 * public static final HashSet<String> walkDir(String path, int mode)\r
92 * throws Exception { HashSet<String> pathlist = new HashSet<String>();\r
93 * Common.toDoAll(path, Common.class.getMethod("walkDir", String.class),\r
94 * null, null, mode); return pathlist; }\r
95 */\r
96 public static final void ensureDir(String objFileWhole) {\r
97 File tempdir;\r
98 Matcher mtrseparate = PTNSEPARATER.matcher(objFileWhole);\r
99 if (mtrseparate.find()) {\r
100 tempdir = new File(mtrseparate.group(1));\r
101 if (!tempdir.exists())\r
102 tempdir.mkdirs();\r
103 }\r
104 }\r
105\r
106 public static final void deleteDir(String objFileWhole) {\r
107 String[] list = new File(objFileWhole).list();\r
108 File temp;\r
109 for (int i = 0; i < list.length; i++) {\r
110 temp = new File(objFileWhole + File.separator + list[i]);\r
111 if (temp.isDirectory()) {\r
112 deleteDir(objFileWhole + File.separator + list[i]);\r
113 } else {\r
114 temp.delete();\r
115 }\r
116 }\r
117 new File(objFileWhole).delete();\r
118 }\r
119\r
120 public static final String dirCopy_(String src) throws Exception {\r
121 Matcher mtrseparate = Common.PTNSEPARATER.matcher(src);\r
122 if (mtrseparate.find()) {\r
123 dirCopy(src, mtrseparate.group(1) + File.separator + "_"\r
124 + mtrseparate.group(2));\r
125 }\r
126 return mtrseparate.group(1) + File.separator + "_"\r
127 + mtrseparate.group(2);\r
128 }\r
129\r
130 public static final void dirCopy(String src, String des) throws Exception {\r
131 String[] list = new File(src).list();\r
132 File test;\r
133\r
134 ensureDir(des);\r
135 for (int i = 0; i < list.length; i++) {\r
136 test = new File(src + File.separator + list[i]);\r
137 if (test.isDirectory()) {\r
138 dirCopy(src + File.separator + list[i], des + File.separator\r
139 + list[i]);\r
140 } else {\r
141 // ensureDir(des + File.separator + list[i]);\r
142 string2file(file2string(src + File.separator + list[i]), des\r
143 + File.separator + list[i]);\r
144 }\r
145 }\r
146 }\r
147\r
148 public static final void oneLevelDirCopy(String src, String des, String type)\r
149 throws Exception {\r
150 String[] list = new File(src).list();\r
151\r
152 ensureDir(des);\r
153 for (int i = 0; i < list.length; i++) {\r
154 if (list[i].contains(type)) {\r
155 string2file(file2string(src + File.separator + list[i]), des\r
156 + File.separator + list[i]);\r
157 }\r
158 }\r
159 }\r
160\r
161 // --------------------------------------dir--------------------------------------------//\r
162\r
163 // -------------------------------like python\r
164 // walk-----------------------------------------//\r
165\r
166 public static final void toDoAll(String path, Method md, Object obj,\r
167 Object[] args, int type) throws Exception {\r
168 String[] list = new File(path).list();\r
169 ArrayList<Object> _args = new ArrayList<Object>();\r
170\r
171 _args.add(path);\r
172 if (args != null) {\r
173 for (int i = 0; i < args.length; i++) {\r
174 _args.add(args[i]);\r
175 }\r
176 }\r
177\r
178 if (type == DIR || type == BOTH) {\r
179 md.invoke(obj, _args.toArray());\r
180 }\r
181 for (int i = 0; i < list.length; i++) {\r
182 if (new File(path + File.separator + list[i]).isDirectory()) {\r
183 toDoAll(path + File.separator + list[i], md, obj, args, type);\r
184 } else {\r
185 if (type == FILE || type == BOTH) {\r
186 _args.set(0, path + File.separator + list[i]);\r
187 md.invoke(obj, _args.toArray());\r
188 }\r
189 }\r
190 }\r
191 }\r
192\r
193 public static final void toDoAll(Set<String> set, ForDoAll fda)\r
194 throws Exception {\r
195 Iterator<String> di = set.iterator();\r
196 while (di.hasNext()) {\r
197 fda.run(di.next());\r
198 }\r
199 }\r
200\r
201 public static final void toDoAll(String path, ForDoAll fda, int type)\r
202 throws Exception { // filter of file type can be done in toDo\r
203 String[] list = new File(path).list();\r
204 File test;\r
205\r
206 if (type == DIR || type == BOTH) {\r
207 fda.run(path);\r
208 }\r
209 for (int i = 0; i < list.length; i++) {\r
210 test = new File(path + File.separator + list[i]);\r
211 if (test.isDirectory()) {\r
212 if (fda.filter(test)) {\r
213 toDoAll(path + File.separator + list[i], fda, type);\r
214 }\r
215 } else {\r
216 if (type == FILE || type == BOTH) {\r
217 fda.run(path + File.separator + list[i]);\r
218 }\r
219 }\r
220 }\r
221 }\r
222\r
223 public static interface ForDoAll {\r
224 public void run(String filepath) throws Exception;\r
225\r
226 public boolean filter(File dir);\r
227 }\r
228\r
229 public static abstract class Laplace {\r
230 public void transform(String src, String des) throws Exception {\r
231 Common.string2file(operation(Common.file2string(src)), des);\r
232 }\r
233\r
234 public abstract String operation(String wholeline);\r
235\r
236 public abstract boolean recognize(String filename);\r
237\r
238 public abstract String namechange(String oldname);\r
239 }\r
240\r
241 public static interface Element {\r
242\r
243 // public int replace = 0;\r
244 // public int type = 1;\r
245\r
246 public String getReplace(String key);\r
247\r
248 // public void getType(String key);\r
249 // \r
250 // public void setReplace(int num);\r
251 // \r
252 // public void setType(int num);\r
253\r
254 }\r
90503bad 255}\r