From 5f4eb6b6d5eb39012da23c16fdf3f9d988f9db06 Mon Sep 17 00:00:00 2001 From: alfred Date: Fri, 1 Sep 2006 03:24:35 +0000 Subject: [PATCH] add ModuleInfo2OutputPath Map modify inf chooser git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1417 6f19259b-4bc3-4df7-8a09-765794883524 --- .../org/tianocore/migration/Common.java | 38 ------------------- .../tianocore/migration/MigrationTool.java | 24 ++++++++++-- .../org/tianocore/migration/ModuleInfo.java | 18 +++------ .../org/tianocore/migration/ModuleReader.java | 1 + .../org/tianocore/migration/MsaWriter.java | 2 +- .../org/tianocore/migration/PathIterator.java | 33 ++++++++++++++++ .../migration/SourceFileReplacer.java | 8 ++-- 7 files changed, 65 insertions(+), 59 deletions(-) create mode 100644 Tools/Source/MigrationTools/org/tianocore/migration/PathIterator.java diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/Common.java b/Tools/Source/MigrationTools/org/tianocore/migration/Common.java index 5b4d33adb8..ca51ed43ad 100644 --- a/Tools/Source/MigrationTools/org/tianocore/migration/Common.java +++ b/Tools/Source/MigrationTools/org/tianocore/migration/Common.java @@ -165,42 +165,4 @@ public final class Common { public static interface ForDoAll { public void toDo(String filepath) throws Exception; } - /* - // this PathIterator is based on HashSet, an thread implementation is required. - private final class PathIterator implements ForDoAll{ - PathIterator(String path) throws Exception { - startpath = path; - Common.toDoAll(startpath, this, mode); - } - PathIterator(String path, int md) throws Exception { - startpath = path; - mode = md; - Common.toDoAll(startpath, this, mode); - } - private String startpath; - private int mode = Common.BOTH; - private HashSet pathlist = new HashSet(); - private Iterator it = pathlist.iterator(); - - public final void toDo(String path) throws Exception { - pathlist.add(path); - } - - public final String next() { - return it.next(); - } - - public final boolean hasNext() { - return it.hasNext(); - } - - public final String toString() { - return pathlist.toString(); - } - } - - public final PathIterator getPathIterator(String path, int md) throws Exception { - return new PathIterator(path, md); - } - */ } diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java b/Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java index 5c74ee03f1..3b3486fea6 100644 --- a/Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java +++ b/Tools/Source/MigrationTools/org/tianocore/migration/MigrationTool.java @@ -1,7 +1,7 @@ package org.tianocore.migration; import java.io.File; -import java.util.Set; +import java.util.*; public class MigrationTool { public static UI ui = null; @@ -12,10 +12,13 @@ public class MigrationTool { public static boolean printModuleInfo = false; public static boolean doCritic = false; public static boolean defaultoutput = false; + + public static final HashMap ModuleInfoMap = new HashMap(); private static final void mainFlow(ModuleInfo mi) throws Exception { ModuleReader.ModuleScan(mi); + //MigrationTool.ui.yesOrNo("go on replace?"); SourceFileReplacer.flush(mi); // some adding library actions are taken here,so it must be put before "MsaWriter" @@ -40,7 +43,7 @@ public class MigrationTool { //MigrationTool.ui.yesOrNo("go on critic?"); if (MigrationTool.doCritic) { - Critic.fireAt(mi.outputpath + File.separator + "Migration_" + mi.modulename); + Critic.fireAt(ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename); } //MigrationTool.ui.yesOrNo("go on delete?"); @@ -57,9 +60,17 @@ public class MigrationTool { MigrationTool.ui.println(hash); } + private static final String assignOutPutPath(String inputpath) { + if (MigrationTool.defaultoutput) { + return inputpath.replaceAll(Common.strseparate, "$1"); + } else { + return MigrationTool.ui.getFilepath("Please choose where to place the output module"); + } + } + public static final void seekModule(String filepath) throws Exception { if (ModuleInfo.isModule(filepath)) { - mainFlow(new ModuleInfo(filepath)); + ModuleInfoMap.put(new ModuleInfo(filepath), assignOutPutPath(filepath)); } } @@ -67,6 +78,13 @@ public class MigrationTool { MigrationTool.ui.println("Project Migration"); MigrationTool.ui.println("Copyright (c) 2006, Intel Corporation"); Common.toDoAll(path, MigrationTool.class.getMethod("seekModule", String.class), null, null, Common.DIR); + + Iterator miit = ModuleInfoMap.keySet().iterator(); + while (miit.hasNext()) { + mainFlow(miit.next()); + } + + ModuleInfoMap.clear(); } public static void main(String[] args) throws Exception { diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java b/Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java index 3fd446433a..428f82b659 100644 --- a/Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java +++ b/Tools/Source/MigrationTools/org/tianocore/migration/ModuleInfo.java @@ -22,22 +22,10 @@ information and all the temporary data. public final class ModuleInfo { ModuleInfo(String modulepath) throws Exception { this.modulepath = modulepath; - - if (MigrationTool.defaultoutput) { - this.outputpath = this.modulepath.replaceAll(Common.strseparate, "$1"); - } else { - MigrationTool.ui.println("Choose where to place the result"); - if ((outputpath = MigrationTool.ui.getFilepath("Please choose where to place the output module")) == null) { - outputpath = modulepath; - } - MigrationTool.ui.println("Output to: " + outputpath); - } } public final String modulepath; - public String outputpath = null; - public String modulename = null; public String guidvalue = null; public String moduletype = null; @@ -60,11 +48,15 @@ public final class ModuleInfo { public final Set ppi = new HashSet(); public final void enroll(String filepath) throws Exception { + String temp = null; if (filepath.contains(".c") || filepath.contains(".C") || filepath.contains(".h") || filepath.contains(".H") || filepath.contains(".dxs") || filepath.contains(".uni")) { localmodulesources.add(filepath.replace(modulepath + "\\", "")); } else if (filepath.contains(".inf") || filepath.contains(".msa")) { - msaorinf.add(filepath.replace(modulepath + "\\", "")); + temp = filepath.replace(modulepath + "\\", ""); + if (!temp.contains(File.separator)) { // .inf in subdirectory is not regarded + msaorinf.add(temp); + } } } diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/ModuleReader.java b/Tools/Source/MigrationTools/org/tianocore/migration/ModuleReader.java index bc3fd75cb2..b5c47c40b5 100644 --- a/Tools/Source/MigrationTools/org/tianocore/migration/ModuleReader.java +++ b/Tools/Source/MigrationTools/org/tianocore/migration/ModuleReader.java @@ -41,6 +41,7 @@ public final class ModuleReader { filename = MigrationTool.ui.choose("Found .inf or .msa file for module\n" + mi.modulepath + "\nChoose one Please", mi.msaorinf.toArray()); } } + if (filename.contains(".inf")) { readInf(filename); } else if (filename.contains(".msa")) { diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/MsaWriter.java b/Tools/Source/MigrationTools/org/tianocore/migration/MsaWriter.java index cf4426df82..d6d836cc74 100644 --- a/Tools/Source/MigrationTools/org/tianocore/migration/MsaWriter.java +++ b/Tools/Source/MigrationTools/org/tianocore/migration/MsaWriter.java @@ -181,7 +181,7 @@ public class MsaWriter { options.setSavePrettyPrintIndent(2); options.setUseDefaultNamespace(); - BufferedWriter bw = new BufferedWriter(new FileWriter(mi.outputpath + File.separator + "Migration_" + mi.modulename + File.separator + mi.modulename + ".msa")); + BufferedWriter bw = new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + mi.modulename + ".msa")); fulfillMsadoc().save(bw, options); //MsaTreeEditor.init(mi, ui, msadoc); bw.flush(); diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/PathIterator.java b/Tools/Source/MigrationTools/org/tianocore/migration/PathIterator.java new file mode 100644 index 0000000000..0207577ba3 --- /dev/null +++ b/Tools/Source/MigrationTools/org/tianocore/migration/PathIterator.java @@ -0,0 +1,33 @@ +package org.tianocore.migration; + +import java.util.*; + +public final class PathIterator implements Common.ForDoAll { +// this PathIterator is based on HashSet, an thread implementation is required. + PathIterator(String path, int md) throws Exception { + startpath = path; + mode = md; + Common.toDoAll(startpath, this, mode); + it = pathlist.iterator(); + } + private String startpath = null; + private int mode; + private HashSet pathlist = new HashSet(); + private Iterator it = null; + + public final void toDo(String path) throws Exception { + pathlist.add(path); + } + + public final String next() { + return it.next(); + } + + public final boolean hasNext() { + return it.hasNext(); + } + + public final String toString() { + return pathlist.toString(); + } +} diff --git a/Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java b/Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java index 42a220f680..8ae1d8d05e 100644 --- a/Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java +++ b/Tools/Source/MigrationTools/org/tianocore/migration/SourceFileReplacer.java @@ -61,7 +61,7 @@ public final class SourceFileReplacer { outname = inname; } MigrationTool.ui.println("\nModifying file: " + inname); - Common.string2file(sourcefilereplace(mi.modulepath + File.separator + "temp" + File.separator + inname), mi.outputpath + File.separator + "Migration_" + mi.modulename + File.separator + outname); + Common.string2file(sourcefilereplace(mi.modulepath + File.separator + "temp" + File.separator + inname), MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + outname); } else if (inname.contains(".h") || inname.contains(".H") || inname.contains(".dxs") || inname.contains(".uni")) { if (inname.contains(".H")) { outname = inname.replaceFirst(".H", ".h"); @@ -69,7 +69,7 @@ public final class SourceFileReplacer { outname = inname; } MigrationTool.ui.println("\nCopying file: " + inname); - Common.string2file(Common.file2string(mi.modulepath + File.separator + "temp" + File.separator + inname), mi.outputpath + File.separator + "Migration_" + mi.modulename + File.separator + outname); + Common.string2file(Common.file2string(mi.modulepath + File.separator + "temp" + File.separator + inname), MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + outname); } } @@ -82,8 +82,8 @@ public final class SourceFileReplacer { String paragraph = null; String line = Common.file2string(MigrationTool.db.DatabasePath + File.separator + "R8Lib.c"); //Common.ensureDir(mi.modulepath + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.c"); - PrintWriter outfile1 = new PrintWriter(new BufferedWriter(new FileWriter(mi.outputpath + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.c"))); - PrintWriter outfile2 = new PrintWriter(new BufferedWriter(new FileWriter(mi.outputpath + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.h"))); + PrintWriter outfile1 = new PrintWriter(new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.c"))); + PrintWriter outfile2 = new PrintWriter(new BufferedWriter(new FileWriter(MigrationTool.ModuleInfoMap.get(mi) + File.separator + "Migration_" + mi.modulename + File.separator + "R8Lib.h"))); Pattern ptnr8only = Pattern.compile("////#?(\\w*)?.*?R8_(\\w*).*?////~", Pattern.DOTALL); Matcher mtrr8only = ptnr8only.matcher(line); Matcher mtrr8onlyhead; -- 2.39.2