remodel 1

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1335 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
alfred 2006-08-21 08:54:07 +00:00
parent b391448129
commit 7bcb8d17b2
10 changed files with 69 additions and 92 deletions

View File

@ -15,13 +15,9 @@ package org.tianocore.migration;
import java.io.*; import java.io.*;
import java.util.*; import java.util.*;
public class Database { public final class Database {
Database() throws Exception { Database(String path) throws Exception {
if (System.getenv("WORKSPACE") == null) { DatabasePath = path;
DatabasePath = "C:" + File.separator + "tianocore" + File.separator + "edk2" + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration";
} else {
DatabasePath = System.getenv("WORKSPACE") + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration";
}
importDBLib("Library.csv"); importDBLib("Library.csv");
importDBGuid("Guid.csv", "Guid"); importDBGuid("Guid.csv", "Guid");
@ -124,7 +120,7 @@ public class Database {
public String getR9Macro(String r8macro) { public String getR9Macro(String r8macro) {
return hashmacro.get(r8macro).r9name; // the verification job of if the macro exists in the database is done when registering it return hashmacro.get(r8macro).r9name; // the verification job of if the macro exists in the database is done when registering it
} }
public String getR9Guidname(String r8Guid) { public String getR9Guidname(String r8Guid) {
String temp = null; String temp = null;
try { try {
@ -134,7 +130,7 @@ public class Database {
} }
return temp; return temp;
} }
public String getGuidType(String r8Guid) { public String getGuidType(String r8Guid) {
String temp = null; String temp = null;
try { try {
@ -144,4 +140,12 @@ public class Database {
} }
return temp; return temp;
} }
public static Database init() throws Exception {
if (System.getenv("WORKSPACE") == null) {
return new Database("C:" + File.separator + "tianocore" + File.separator + "edk2" + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");
} else {
return new Database(System.getenv("WORKSPACE") + File.separator + "Tools" + File.separator + "Conf" + File.separator + "Migration");
}
}
} }

View File

@ -128,21 +128,11 @@ public final class FirstPanel extends JPanel implements ActionListener, UI {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if ( e.getSource() == moduleButton ) { if ( e.getSource() == moduleButton ) {
modulepath = getFilepath(); modulepath = getFilepath();
/*
int ret = fc.showOpenDialog(this);
if (ret == JFileChooser.APPROVE_OPTION) {
modulepath = fc.getSelectedFile().getAbsolutePath();
moduletext.setText(modulepath);
log.append("ModulePath: " + modulepath + "\n");
}
*/
} }
if ( e.getSource() == goButton ) { if ( e.getSource() == goButton ) {
try { try {
logfile = new PrintWriter(new BufferedWriter(new FileWriter(modulepath + File.separator + "migration.log"))); logfile = new PrintWriter(new BufferedWriter(new FileWriter(modulepath + File.separator + "migration.log")));
println("Project MsaGen"); ModuleInfo.triger(modulepath);
println("Copyright (c) 2006, Intel Corporation");
Common.toDoAll(modulepath, ModuleInfo.class.getMethod("seekModule", String.class), null, null, Common.DIR);
logfile.flush(); logfile.flush();
} catch (Exception en) { } catch (Exception en) {
println(en.getMessage()); println(en.getMessage());

View File

@ -45,8 +45,8 @@ public class Guid {
String temp = null; String temp = null;
temp = mtr.group(); temp = mtr.group();
if (db.hasGuid(temp)) { // only changed guids registered, because both changed and not changed guids are included in database if (MigrationTool.db.hasGuid(temp)) { // only changed guids registered, because both changed and not changed guids are included in database
type = db.getGuidType(temp); type = MigrationTool.db.getGuidType(temp);
if (type.matches("Protocol")) { if (type.matches("Protocol")) {
mi.protocol.add(temp); mi.protocol.add(temp);
} else if (type.matches("Ppi")) { } else if (type.matches("Ppi")) {

View File

@ -35,7 +35,7 @@ public class Macro {
String temp = null; String temp = null;
temp = mtr.group(); temp = mtr.group();
if (db.hasMacro(temp)) { // only changed macros registered, because the database of macro has only changed ones if (MigrationTool.db.hasMacro(temp)) { // only changed macros registered, because the database of macro has only changed ones
if (!unmacro.contains(temp)) { if (!unmacro.contains(temp)) {
mi.hashnonlocalmacro.add(temp); mi.hashnonlocalmacro.add(temp);
} }

View File

@ -1,8 +1,11 @@
package org.tianocore.migration; package org.tianocore.migration;
public class MigrationTool { public class MigrationTool {
public static UI ui = null;
public static Database db = null;
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
ModuleInfo.ui = FirstPanel.init(); ui = FirstPanel.init();
ModuleInfo.db = new Database(); db = Database.init();
} }
} }

View File

@ -24,16 +24,16 @@ public class ModuleInfo {
ModuleInfo(String modulepath) throws Exception { ModuleInfo(String modulepath) throws Exception {
this.modulepath = modulepath; this.modulepath = modulepath;
ui.println("Choose where to place the result"); MigrationTool.ui.println("Choose where to place the result");
if ((outputpath = ui.getFilepath()) == null) { if ((outputpath = MigrationTool.ui.getFilepath()) == null) {
outputpath = modulepath; outputpath = modulepath;
} }
ui.println(outputpath); MigrationTool.ui.println(outputpath);
moduleScan(); moduleScan();
} }
public static UI ui = null; //if MIM is still usefull, this can be given to it //public static UI ui = null; //if MIM is still usefull, this can be given to it
public static Database db = null; //if MIM is still usefull, this can be given to it public static Database db = null; //if MIM is still usefull, this can be given to it
public String modulepath = null; public String modulepath = null;
@ -68,10 +68,10 @@ public class ModuleInfo {
String filename = null; String filename = null;
if (msaorinf.isEmpty()) { if (msaorinf.isEmpty()) {
ui.println("No INF nor MSA file found!"); MigrationTool.ui.println("No INF nor MSA file found!");
System.exit(0); System.exit(0);
} else { } else {
filename = ui.choose("Found .inf or .msa file for module\n" + modulepath + "\nChoose one Please", msaorinf.toArray()); filename = MigrationTool.ui.choose("Found .inf or .msa file for module\n" + modulepath + "\nChoose one Please", msaorinf.toArray());
} }
//ModuleReader mr = new ModuleReader(modulepath, this, db, ui); //ModuleReader mr = new ModuleReader(modulepath, this, db, ui);
if (filename.contains(".inf")) { if (filename.contains(".inf")) {
@ -83,12 +83,12 @@ public class ModuleInfo {
CommentOutNonLocalHFile(); CommentOutNonLocalHFile();
parsePreProcessedSourceCode(); parsePreProcessedSourceCode();
new SourceFileReplacer(modulepath, outputpath, this, db, ui).flush(); // some adding library actions are taken here,so it must be put before "MsaWriter" new SourceFileReplacer(modulepath, outputpath, this).flush(); // some adding library actions are taken here,so it must be put before "MsaWriter"
// show result // show result
if (ui.yesOrNo("Parse of the Module Information has completed. View details?")) { if (MigrationTool.ui.yesOrNo("Parse of the Module Information has completed. View details?")) {
ui.println("\nModule Information : "); MigrationTool.ui.println("\nModule Information : ");
ui.println("Entrypoint : " + entrypoint); MigrationTool.ui.println("Entrypoint : " + entrypoint);
show(protocol, "Protocol : "); show(protocol, "Protocol : ");
show(ppi, "Ppi : "); show(ppi, "Ppi : ");
show(guid, "Guid : "); show(guid, "Guid : ");
@ -100,20 +100,20 @@ public class ModuleInfo {
show(hashr8only, "hashr8only : "); show(hashr8only, "hashr8only : ");
} }
new MsaWriter(modulepath, outputpath, this, db, ui).flush(); new MsaWriter(modulepath, outputpath, this).flush();
Common.deleteDir(modulepath + File.separator + "temp"); Common.deleteDir(modulepath + File.separator + "temp");
//Common.toDoAll(modulepath + File.separator + "temp", Common.class.getMethod("deleteDir", String.class), null, null, Common.DIR); //Common.toDoAll(modulepath + File.separator + "temp", Common.class.getMethod("deleteDir", String.class), null, null, Common.DIR);
ui.println("Errors Left : " + db.error); MigrationTool.ui.println("Errors Left : " + MigrationTool.db.error);
ui.println("Complete!"); MigrationTool.ui.println("Complete!");
ui.println("Your R9 module was placed here: " + modulepath + File.separator + "result"); MigrationTool.ui.println("Your R9 module was placed here: " + modulepath + File.separator + "result");
ui.println("Your logfile was placed here: " + modulepath); MigrationTool.ui.println("Your logfile was placed here: " + modulepath);
} }
private void show(Set<String> hash, String show) { private void show(Set<String> hash, String show) {
ui.println(show + hash.size()); MigrationTool.ui.println(show + hash.size());
ui.println(hash); MigrationTool.ui.println(hash);
} }
// add '//' to all non-local include lines // add '//' to all non-local include lines
@ -204,7 +204,7 @@ public class ModuleInfo {
matguid = Guid.ptnguid.matcher(line); // several ways to implement this , which one is faster ? : matguid = Guid.ptnguid.matcher(line); // several ways to implement this , which one is faster ? :
while (matguid.find()) { // 1.currently , find once , then call to identify which is it while (matguid.find()) { // 1.currently , find once , then call to identify which is it
if ((temp = Guid.register(matguid, this, db)) != null) { // 2.use 3 different matchers , search 3 times to find each if ((temp = Guid.register(matguid, this, db)) != null) { // 2.use 3 different matchers , search 3 times to find each
//matguid.appendReplacement(result, db.getR9Guidname(temp)); // search the database for all 3 kinds of guids , high cost //matguid.appendReplacement(result, MigrationTool.db.getR9Guidname(temp)); // search the database for all 3 kinds of guids , high cost
} }
} }
//matguid.appendTail(result); //matguid.appendTail(result);
@ -221,8 +221,8 @@ public class ModuleInfo {
matfuncc = Func.ptnfuncc.matcher(line); matfuncc = Func.ptnfuncc.matcher(line);
while (matfuncc.find()) { while (matfuncc.find()) {
if ((temp = Func.register(matfuncc, this, db)) != null) { if ((temp = Func.register(matfuncc, this, db)) != null) {
//ui.println(ifile + " dofunc " + temp); //MigrationTool.ui.println(ifile + " dofunc " + temp);
//matfuncc.appendReplacement(result, db.getR9Func(temp)); //matfuncc.appendReplacement(result, MigrationTool.db.getR9Func(temp));
} }
} }
//matfuncc.appendTail(result); //matfuncc.appendTail(result);
@ -268,10 +268,9 @@ public class ModuleInfo {
msaorinf.add(temp[temp.length - 1]); msaorinf.add(temp[temp.length - 1]);
} }
} }
public static final void seekModule(String filepath) throws Exception { public static final void seekModule(String filepath) throws Exception {
if (isModule(filepath)) { if (isModule(filepath)) {
//System.out.println("I'm in");
new ModuleInfo(filepath); new ModuleInfo(filepath);
} }
} }
@ -287,10 +286,10 @@ public class ModuleInfo {
} }
return false; return false;
} }
/*
public static final void main(String[] args) throws Exception { public static final void triger(String path) throws Exception {
ui = FirstPanel.init(); MigrationTool.ui.println("Project Migration");
db = new Database(); MigrationTool.ui.println("Copyright (c) 2006, Intel Corporation");
Common.toDoAll(path, ModuleInfo.class.getMethod("seekModule", String.class), null, null, Common.DIR);
} }
*/
} }

View File

@ -18,17 +18,6 @@ import java.util.regex.*;
import org.tianocore.*; import org.tianocore.*;
public final class ModuleReader { public final class ModuleReader {
ModuleReader(String path, ModuleInfo moduleinfo, Database database, UI u) {
//modulepath = path;
//mi = moduleinfo;
db = database;
ui = u;
}
//private static String modulepath;
//private static ModuleInfo mi;
private static Database db;
private static UI ui;
private static final Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*=\\s*([^\\s]*)"); private static final Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*=\\s*([^\\s]*)");
private static final Pattern ptnsection = Pattern.compile("\\[([^\\[\\]]*)\\]([^\\[\\]]*)\\n", Pattern.MULTILINE); private static final Pattern ptnsection = Pattern.compile("\\[([^\\[\\]]*)\\]([^\\[\\]]*)\\n", Pattern.MULTILINE);
private static final Pattern ptnfilename = Pattern.compile("[^\\s]+"); private static final Pattern ptnfilename = Pattern.compile("[^\\s]+");
@ -37,11 +26,11 @@ public final class ModuleReader {
ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(new File(mi.modulepath + File.separator + name)); ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(new File(mi.modulepath + File.separator + name));
ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.getModuleSurfaceArea(); ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.getModuleSurfaceArea();
MsaHeaderDocument.MsaHeader msaheader = msa.getMsaHeader(); MsaHeaderDocument.MsaHeader msaheader = msa.getMsaHeader();
mi.modulename = msaheader.getModuleName(); mi.modulename = msaheader.getModuleName();
mi.guidvalue = msaheader.getGuidValue(); mi.guidvalue = msaheader.getGuidValue();
mi.moduletype = msaheader.getModuleType().toString(); // ??? mi.moduletype = msaheader.getModuleType().toString(); // ???
SourceFilesDocument.SourceFiles sourcefiles = msa.getSourceFiles(); SourceFilesDocument.SourceFiles sourcefiles = msa.getSourceFiles();
String temp; String temp;
@ -85,7 +74,7 @@ public final class ModuleReader {
} }
if (mtrinfequation.group(1).matches("DPX_SOURCE")) { if (mtrinfequation.group(1).matches("DPX_SOURCE")) {
if (!mi.localmodulesources.contains(mtrinfequation.group(2))) { if (!mi.localmodulesources.contains(mtrinfequation.group(2))) {
ui.println("DPX File Missing! : " + mtrinfequation.group(2)); MigrationTool.ui.println("DPX File Missing! : " + mtrinfequation.group(2));
} }
} }
} }
@ -94,7 +83,7 @@ public final class ModuleReader {
mtrfilename = ptnfilename.matcher(mtrsection.group(2)); mtrfilename = ptnfilename.matcher(mtrsection.group(2));
while (mtrfilename.find()) { while (mtrfilename.find()) {
if (!mi.localmodulesources.contains(mtrfilename.group())) { if (!mi.localmodulesources.contains(mtrfilename.group())) {
ui.println("Source File Missing! : " + mtrfilename.group()); MigrationTool.ui.println("Source File Missing! : " + mtrfilename.group());
} }
} }
} }

View File

@ -104,7 +104,7 @@ public class MsaTreeEditor extends JPanel {
} }
private void addNode() { private void addNode() {
addNode((DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent()), ui.getInput("Input Node Name")); addNode((DefaultMutableTreeNode)(tree.getSelectionPath().getLastPathComponent()), MigrationTool.ui.getInput("Input Node Name"));
} }
private void addNode(DefaultMutableTreeNode parentNode, Object child) { private void addNode(DefaultMutableTreeNode parentNode, Object child) {

View File

@ -20,19 +20,15 @@ import org.tianocore.SupportedArchitectures.Enum;
import org.apache.xmlbeans.*; import org.apache.xmlbeans.*;
public class MsaWriter { public class MsaWriter {
MsaWriter(String path, String outpath, ModuleInfo moduleinfo, Database database, UI u) { MsaWriter(String path, String outpath, ModuleInfo moduleinfo) {
modulepath = path; modulepath = path;
outputpath = outpath; outputpath = outpath;
mi = moduleinfo; mi = moduleinfo;
db = database;
ui = u;
} }
private String modulepath; private String modulepath;
private String outputpath; private String outputpath;
private ModuleInfo mi; private ModuleInfo mi;
private Database db;
private UI ui;
private ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.newInstance(); private ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.newInstance();

View File

@ -18,18 +18,14 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public final class SourceFileReplacer { public final class SourceFileReplacer {
SourceFileReplacer(String path, String outpath, ModuleInfo moduleinfo, Database database, UI fp) { SourceFileReplacer(String path, String outpath, ModuleInfo moduleinfo) {
modulepath = path; modulepath = path;
outputpath = outpath; outputpath = outpath;
mi = moduleinfo; mi = moduleinfo;
db = database;
ui = fp;
} }
private String modulepath; private String modulepath;
private String outputpath; private String outputpath;
private ModuleInfo mi; private ModuleInfo mi;
private Database db;
private UI ui;
private boolean showdetails = false; private boolean showdetails = false;
private class r8tor9 { private class r8tor9 {
@ -72,7 +68,7 @@ public final class SourceFileReplacer {
public void flush() throws Exception { public void flush() throws Exception {
String outname = null; String outname = null;
String inname = null; String inname = null;
if (ui.yesOrNo("Changes will be made to the Source Code. View details?")) { if (MigrationTool.ui.yesOrNo("Changes will be made to the Source Code. View details?")) {
showdetails = true; showdetails = true;
} }
@ -85,7 +81,7 @@ public final class SourceFileReplacer {
} else { } else {
outname = inname; outname = inname;
} }
ui.println("\nModifying file: " + inname); MigrationTool.ui.println("\nModifying file: " + inname);
Common.string2file(sourcefilereplace(modulepath + File.separator + "temp" + File.separator + inname), outputpath + File.separator + "Migration_" + mi.modulename + File.separator + outname); Common.string2file(sourcefilereplace(modulepath + File.separator + "temp" + File.separator + inname), outputpath + File.separator + "Migration_" + mi.modulename + File.separator + outname);
} else if (inname.contains(".h") || inname.contains(".H") || inname.contains(".dxs") || inname.contains(".uni")) { } else if (inname.contains(".h") || inname.contains(".H") || inname.contains(".dxs") || inname.contains(".uni")) {
if (inname.contains(".H")) { if (inname.contains(".H")) {
@ -93,7 +89,7 @@ public final class SourceFileReplacer {
} else { } else {
outname = inname; outname = inname;
} }
ui.println("\nCopying file: " + inname); MigrationTool.ui.println("\nCopying file: " + inname);
Common.string2file(Common.file2string(modulepath + File.separator + "temp" + File.separator + inname), outputpath + File.separator + "Migration_" + mi.modulename + File.separator + outname); Common.string2file(Common.file2string(modulepath + File.separator + "temp" + File.separator + inname), outputpath + File.separator + "Migration_" + mi.modulename + File.separator + outname);
} }
} }
@ -156,7 +152,7 @@ public final class SourceFileReplacer {
// replace BS -> gBS , RT -> gRT // replace BS -> gBS , RT -> gRT
Matcher mat = pat.matcher(line); Matcher mat = pat.matcher(line);
if (mat.find()) { // add a library here if (mat.find()) { // add a library here
ui.println("Converting all BS->gBS, RT->gRT"); MigrationTool.ui.println("Converting all BS->gBS, RT->gRT");
line = mat.replaceAll("g$1$2$3"); //unknown correctiveness line = mat.replaceAll("g$1$2$3"); //unknown correctiveness
} }
mat.reset(); mat.reset();
@ -173,7 +169,7 @@ public final class SourceFileReplacer {
Pattern patentrypoint = Pattern.compile("EFI_DRIVER_ENTRY_POINT[^\\}]*\\}"); Pattern patentrypoint = Pattern.compile("EFI_DRIVER_ENTRY_POINT[^\\}]*\\}");
Matcher matentrypoint = patentrypoint.matcher(line); Matcher matentrypoint = patentrypoint.matcher(line);
if (matentrypoint.find()) { if (matentrypoint.find()) {
ui.println("Deleting Entry_Point"); MigrationTool.ui.println("Deleting Entry_Point");
line = matentrypoint.replaceAll(""); line = matentrypoint.replaceAll("");
} }
*/ */
@ -191,10 +187,10 @@ public final class SourceFileReplacer {
mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib"); //a mi.hashrequiredr9libs.add("UefiRuntimeServicesTableLib"); //a
mi.hashrequiredr9libs.add("DxeServicesTableLib"); //l mi.hashrequiredr9libs.add("DxeServicesTableLib"); //l
} else { // } else { //
mi.hashrequiredr9libs.add(db.getR9Lib(r8thing)); // add a library here mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing)); // add a library here
} }
if ((r9thing = db.getR9Func(r8thing)) != null) { if ((r9thing = MigrationTool.db.getR9Func(r8thing)) != null) {
if (!r8thing.equals(r9thing)) { if (!r8thing.equals(r9thing)) {
if (line.contains(r8thing)) { if (line.contains(r8thing)) {
line = line.replaceAll(r8thing, r9thing); line = line.replaceAll(r8thing, r9thing);
@ -220,8 +216,8 @@ public final class SourceFileReplacer {
it = mi.hashnonlocalmacro.iterator(); it = mi.hashnonlocalmacro.iterator();
while (it.hasNext()) { //macros are all assumed MdePkg currently while (it.hasNext()) { //macros are all assumed MdePkg currently
r8thing = it.next(); r8thing = it.next();
//mi.hashrequiredr9libs.add(db.getR9Lib(r8thing)); //mi.hashrequiredr9libs.add(MigrationTool.db.getR9Lib(r8thing));
if ((r9thing = db.getR9Macro(r8thing)) != null) { if ((r9thing = MigrationTool.db.getR9Macro(r8thing)) != null) {
if (line.contains(r8thing)) { if (line.contains(r8thing)) {
line = line.replaceAll(r8thing, r9thing); line = line.replaceAll(r8thing, r9thing);
filemacro.add(new r8tor9(r8thing, r9thing)); filemacro.add(new r8tor9(r8thing, r9thing));
@ -288,7 +284,7 @@ public final class SourceFileReplacer {
show(fileppi, "ppi"); show(fileppi, "ppi");
show(fileprotocol, "protocol"); show(fileprotocol, "protocol");
if (!filer8only.isEmpty()) { if (!filer8only.isEmpty()) {
ui.println("Converting r8only : " + filer8only); MigrationTool.ui.println("Converting r8only : " + filer8only);
} }
filefunc.clear(); filefunc.clear();
@ -306,12 +302,12 @@ public final class SourceFileReplacer {
r8tor9 temp; r8tor9 temp;
if (showdetails) { if (showdetails) {
if (!hash.isEmpty()) { if (!hash.isEmpty()) {
ui.print("Converting " + sh + " : "); MigrationTool.ui.print("Converting " + sh + " : ");
while (it.hasNext()) { while (it.hasNext()) {
temp = it.next(); temp = it.next();
ui.print("[" + temp.r8thing + "->" + temp.r9thing + "] "); MigrationTool.ui.print("[" + temp.r8thing + "->" + temp.r9thing + "] ");
} }
ui.println(""); MigrationTool.ui.println("");
} }
} }
} }
@ -323,7 +319,7 @@ public final class SourceFileReplacer {
it = hash.iterator(); it = hash.iterator();
while (it.hasNext()) { while (it.hasNext()) {
r8thing = it.next(); r8thing = it.next();
if ((r9thing = db.getR9Guidname(r8thing)) != null) { if ((r9thing = MigrationTool.db.getR9Guidname(r8thing)) != null) {
if (!r8thing.equals(r9thing)) { if (!r8thing.equals(r9thing)) {
if (line.contains(r8thing)) { if (line.contains(r8thing)) {
line = line.replaceAll(r8thing, r9thing); line = line.replaceAll(r8thing, r9thing);