X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=Tools%2FSource%2FMigrationTools%2Forg%2Ftianocore%2Fmigration%2FCommon.java;h=b2265c0c5ea4af49993bbaca24e5bc97188c826a;hp=d3d781f32213b89d81c635c338ad874866a12a44;hb=190293ab4ef0ce3a66de1fdadd51d123cd5bc1bd;hpb=a756211f3f6af8c5ec72e7d114213a4257b3bfa5 diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/Common.java b/Tools/Source/MigrationTools/org/tianocore/migration/Common.java index d3d781f322..b2265c0c5e 100644 --- a/Tools/Source/MigrationTools/org/tianocore/migration/Common.java +++ b/Tools/Source/MigrationTools/org/tianocore/migration/Common.java @@ -15,100 +15,216 @@ package org.tianocore.migration; import java.io.*; import java.util.regex.*; import java.util.*; +import java.lang.reflect.*; -public class Common { - public static Pattern ptnseparate = Pattern.compile("(.*)\\\\([^\\\\]*)"); - - public static String file2string(String filename) throws Exception { - BufferedReader rd = new BufferedReader(new FileReader(filename)); - StringBuffer wholefile = new StringBuffer(); - String line; - while ((line = rd.readLine()) != null) { - wholefile.append(line + "\n"); - } - return wholefile.toString(); - } +public final class Common { + public static final int BOTH = 0; + public static final int FILE = 1; + public static final int DIR = 2; + + public static final String STRSEPARATER = "(.*)\\\\([^\\\\]*)"; + public static final Pattern PTNSEPARATER = Pattern.compile("(.*)\\\\([^\\\\]*)"); - public static void string2file(String content, String filename) throws Exception { - ensureDir(filename); - PrintWriter outfile = new PrintWriter(new BufferedWriter(new FileWriter(filename))); - outfile.append(content); - outfile.flush(); - outfile.close(); - } + //-------------------------------------regex------------------------------------------// + + public static final String replaceAll(String line, Pattern ptn, String des) { + Matcher mtr = ptn.matcher(line); - public static void ensureDir(String objFileWhole) { - File tempdir; - Matcher mtrseparate = ptnseparate.matcher(objFileWhole); - if (mtrseparate.find()) { - tempdir = new File(mtrseparate.group(1)); - if (!tempdir.exists()) tempdir.mkdirs(); - } - } - - public static HashSet dirScan(String path) { // use HashSet, persue speed rather than space - HashSet filelist = new HashSet(); - String[] list = new File(path).list(); - File test; + if (mtr.find()) { + return mtr.replaceAll(des); + } + + return line; + } - for (int i = 0 ; i < list.length ; i++) { - test = new File(path + File.separator + list[i]); - if (test.isDirectory()) { - dirScan(path + File.separator + list[i]); - } else { - filelist.add(path + File.separator + list[i]); - } - } - - return filelist; - } + public static final boolean find (String line, String regex) { + Pattern ptn = Pattern.compile(regex); - public static String replaceAll(String line, Pattern ptn, String des) { - Matcher mtr = ptn.matcher(line); - if (mtr.find()) { - return mtr.replaceAll(des); - } - return line; - } - - public static String dirCopy_(String src) throws Exception { - Matcher mtrseparate = Common.ptnseparate.matcher(src); - if (mtrseparate.find()) { - dirCopy(src, mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2)); - } - return mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2); - } - - public static void dirCopy(String src, String des) throws Exception { - String[] list = new File(src).list(); - File test; + return ptn.matcher (line).find (); + } + //-------------------------------------regex------------------------------------------// + + //-----------------------------------file&string---------------------------------------// + + public static final String file2string(String filename) throws Exception { + BufferedReader rd = new BufferedReader(new FileReader(filename)); + StringBuffer wholefile = new StringBuffer(); + String line; + while ((line = rd.readLine()) != null) { + wholefile.append(line + "\n"); + } + rd.close(); + return wholefile.toString(); + } - for (int i = 0 ; i < list.length ; i++) { - test = new File(src + File.separator + list[i]); - if (test.isDirectory()) { - dirCopy(src + File.separator + list[i], des + File.separator + list[i]); - } else { - ensureDir(des + File.separator + list[i]); - string2file(file2string(src + File.separator + list[i]), des + File.separator + list[i]); - } - } - } - - public static void toDoAll(String path, ForDoAll fda) throws Exception { // filter of file type can be done in toDo - String[] list = new File(path).list(); - File test; + public static final void string2file(String content, String filename) throws Exception { + ensureDir(filename); + PrintWriter outfile = new PrintWriter(new BufferedWriter(new FileWriter(filename))); + outfile.append(content); + outfile.flush(); + outfile.close(); + } - for (int i = 0 ; i < list.length ; i++) { - test = new File(path + File.separator + list[i]); - if (test.isDirectory()) { - toDoAll(path + File.separator + list[i], fda); - } else { - fda.toDo(path + File.separator + list[i]); - } - } - } - - public static interface ForDoAll { - public void toDo(String filepath) throws Exception; - } + public static final void fileCopy(String src, String des) throws Exception { + string2file(file2string(src), des); + } + + //-----------------------------------file&string---------------------------------------// + + //--------------------------------------dir--------------------------------------------// + /* + public static final HashSet walkDir(String path, int mode) throws Exception { + HashSet pathlist = new HashSet(); + Common.toDoAll(path, Common.class.getMethod("walkDir", String.class), null, null, mode); + return pathlist; + } + */ + public static final void ensureDir(String objFileWhole) { + File tempdir; + Matcher mtrseparate = PTNSEPARATER.matcher(objFileWhole); + if (mtrseparate.find()) { + tempdir = new File(mtrseparate.group(1)); + if (!tempdir.exists()) tempdir.mkdirs(); + } + } + + public static final void deleteDir(String objFileWhole) { + String[] list = new File(objFileWhole).list(); + File temp; + for (int i = 0 ; i < list.length ; i++) { + temp = new File(objFileWhole + File.separator + list[i]); + if (temp.isDirectory()) { + deleteDir(objFileWhole + File.separator + list[i]); + } else { + temp.delete(); + } + } + new File(objFileWhole).delete(); + } + + public static final String dirCopy_(String src) throws Exception { + Matcher mtrseparate = Common.PTNSEPARATER.matcher(src); + if (mtrseparate.find()) { + dirCopy(src, mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2)); + } + return mtrseparate.group(1) + File.separator + "_" + mtrseparate.group(2); + } + + public static final void dirCopy(String src, String des) throws Exception { + String[] list = new File(src).list(); + File test; + + ensureDir(des); + for (int i = 0 ; i < list.length ; i++) { + test = new File(src + File.separator + list[i]); + if (test.isDirectory()) { + dirCopy(src + File.separator + list[i], des + File.separator + list[i]); + } else { + //ensureDir(des + File.separator + list[i]); + string2file(file2string(src + File.separator + list[i]), des + File.separator + list[i]); + } + } + } + + public static final void oneLevelDirCopy(String src, String des, String type) throws Exception { + String[] list = new File(src).list(); + + ensureDir(des); + for (int i = 0; i < list.length; i++) { + if (list[i].contains(type)) { + string2file(file2string(src + File.separator + list[i]), des + File.separator + list[i]); + } + } + } + + //--------------------------------------dir--------------------------------------------// + + //-------------------------------like python walk-----------------------------------------// + + public static final void toDoAll(String path, Method md, Object obj, Object[] args, int type) throws Exception { + String[] list = new File(path).list(); + ArrayList _args = new ArrayList(); + + _args.add(path); + if (args != null) { + for (int i = 0; i < args.length; i++) { + _args.add(args[i]); + } + } + + if (type == DIR || type == BOTH) { + md.invoke(obj, _args.toArray()); + } + for (int i = 0 ; i < list.length ; i++) { + if (new File(path + File.separator + list[i]).isDirectory()) { + toDoAll(path + File.separator + list[i], md, obj, args, type); + } else { + if (type == FILE || type == BOTH) { + _args.set(0, path + File.separator + list[i]); + md.invoke(obj, _args.toArray()); + } + } + } + } + + public static final void toDoAll(Set set, ForDoAll fda) throws Exception { + Iterator di = set.iterator(); + while (di.hasNext()) { + fda.run(di.next()); + } + } + + public static final void toDoAll(String path, ForDoAll fda, int type) throws Exception { // filter of file type can be done in toDo + String[] list = new File(path).list(); + File test; + + if (type == DIR || type == BOTH) { + fda.run(path); + } + for (int i = 0 ; i < list.length ; i++) { + test = new File(path + File.separator + list[i]); + if (test.isDirectory()) { + if (fda.filter(test)) { + toDoAll(path + File.separator + list[i], fda, type); + } + } else { + if (type == FILE || type == BOTH) { + fda.run(path + File.separator + list[i]); + } + } + } + } + + public static interface ForDoAll { + public void run(String filepath) throws Exception; + + public boolean filter(File dir); + } + + public static abstract class Laplace { + public void transform(String src, String des) throws Exception { + Common.string2file(operation(Common.file2string(src)), des); + } + + public abstract String operation(String wholeline); + + public abstract boolean recognize(String filename); + + public abstract String namechange(String oldname); + } + + public static interface Element { + +// public int replace = 0; +// public int type = 1; + + public String getReplace(String key); + +// public void getType(String key); +// +// public void setReplace(int num); +// +// public void setType(int num); + + } }