001 package plugins.JavaRolePluginModule;
002
003 import java.io.*;
004 import sharpster.common.*;
005 import plugins.JavaRolePlugin;
006
007 public class RMTester {
008
009 public static void main(String args[]) {
010 if(args.length==1) {
011 ParseTree tree=new ParseTree(new String(readFile(args[0]).getBody().getData()));
012 if(tree.hasSyntaxError()) {
013 System.out.println("Syntax Error!");
014 } else {
015 System.out.println(tree.toString());
016 }
017 }
018 else if(args.length==3) {
019 JavaRolePlugin rm = new JavaRolePlugin();
020 SharedFile contents = ((SharedFilesResponse)rm.extractParts(readFile(args[0]), args[1]).getResponse(0)).getFiles().getFile(0);
021 writeFile(args[2],contents);
022 }
023 else if(args.length==4) {
024 JavaRolePlugin rm = new JavaRolePlugin();
025 SharedFile contents = ((SharedFilesResponse)rm.mergeParts(readFile(args[0]), readFile(args[1]),args[2]).getResponse(0)).getFiles().getFile(0);
026 writeFile(args[3],contents);
027 }
028 else{
029 System.out.println("Usage:");
030 System.out.println(" To create parse tree:");
031 System.out.println(" java RMTester file");
032 System.out.println(" To extract parts:");
033 System.out.println(" java RMTester filetostrip role resultfile");
034 System.out.println(" To merge parts:");
035 System.out.println(" java RMTester originalfile strippedfile role resultfile");
036 }
037 }
038
039 private static void writeFile(String fileName, SharedFile contentSF) {
040 try {
041 BufferedWriter bw=new BufferedWriter(new FileWriter(fileName));
042 String contents = new String(contentSF.getBody().getData());
043 bw.write(contents);
044 bw.close();
045 } catch(IOException e) {
046 System.err.println(e.toString());
047 System.exit(0);
048 }
049 }
050
051 private static SharedFile readFile(String file) {
052 StringBuffer sb=new StringBuffer();
053
054 try {
055 BufferedReader br=new BufferedReader(new FileReader(file));
056 char[] chars=new char[1024];
057 int num;
058 while((num=br.read(chars,0,1024))>0) {
059 sb.append(chars,0,num);
060 }
061 br.close();
062 } catch (IOException e) {
063 System.err.println(e.toString());
064 System.exit(0);
065 }
066 SharedFile sf = new SharedFile();
067 Body body = new Body();
068
069 body.setData(sb.toString().getBytes());
070 sf.setBody(body);
071
072 return sf;
073 }
074
075 public static void print(Entity entity) {
076 System.out.println("Entity - Type: "+typeToString(entity)+", SPos: "+entity.startPos+", ContentSPos: "+ entity.contentStartPos+", EndPos: "+entity.endPos);
077 //System.out.println("Contents: "+'"'+entity.getContentAndWhitespace()+'"');
078 }
079
080 private static String typeToString(Entity entity) {
081 switch(entity.type) {
082 case Entity.UNKNOWN: return "UNKNOWN";
083 case Entity.FILE: return "FILE";
084 case Entity.ENDOFFILE: return "ENDOFFILE";
085 case Entity.CLASSHEAD: return "CLASSHEAD";
086 case Entity.CLASSBODY: return "CLASSBODY";
087 case Entity.ENDOFCLASSBODY:return "ENDOFCLASSBODY";
088 case Entity.METHODHEAD: return "METHODHEAD";
089 case Entity.METHODBODY: return "METHODBODY";
090 case Entity.VARIABLE: return "VARIABLE";
091 case Entity.DOCCOMMENT: return "DOCCOMMENT";
092 case Entity.SEMICOLON: return "SEMICOLON";
093 case Entity.EXTRA: return "EXTRA";
094 case Entity.SYNTAXERROR: return "SYNTAXERROR";
095 }
096 return "none";
097 }
098 }
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114