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