Mercurial > hg > RemoteEditor > Eclipse
view src/pathfinder/mergetest/test/RepCommandOptimizeTest.java @ 159:a5c56bff6359
*** empty log message ***
author | tkaito |
---|---|
date | Tue, 26 Aug 2008 19:45:26 +0900 |
parents | 55bc9f6b0691 |
children | 5c458f1a7679 |
line wrap: on
line source
package pathfinder.mergetest.test; import java.util.LinkedList; import pathfinder.mergetest.Text; import remoteeditor.command.REPCommand; import remoteeditor.network.REP; public class RepCommandOptimizeTest { //テストコマンド (command,string,lineno,id) static String[] test1 = { Integer.toString(REP.REPCMD_INSERT),"TEST0","3","1", Integer.toString(REP.REPCMD_INSERT),"TEST1","3","2", Integer.toString(REP.REPCMD_INSERT),"TEST2","3","3" }; //String[] test2 = new String[test1.length]; static LinkedList<REPCommand> cmdlist = new LinkedList<REPCommand>(); Text text = new Text(); //REPコマンドの生成 void makeCommand(String[] str){ int seq = 0; try{ for( int i = 0;i < str.length; i+=4){ int cmd = Integer.parseInt(str[i]); int lineno = Integer.parseInt(str[i+2]); int sid = Integer.parseInt(str[i+3]); int eid = sid; cmdlist.add(new REPCommand(cmd, sid, eid, seq++, lineno, str[i+1].length(), str[i+1])); } }catch(Exception e){ e.printStackTrace(); } } //生成したコマンドのリストを表示 void printCmdList(){ System.out.println("---------- CmdList ----------"); for(REPCommand r: cmdlist){ System.out.println(r.toString()); } } void edit(){ for(REPCommand r : cmdlist){ text.edit(r); } } void printText(){ System.out.println("------------ Text -----------"); text.printAllText(); } LinkedList<REPCommand> optimize(LinkedList<REPCommand> input){ LinkedList<REPCommand> output = new LinkedList<REPCommand>(); for(REPCommand r : input){ optimizedAdd(output,r); } return reverse(output); } private LinkedList<REPCommand> reverse(LinkedList<REPCommand> outp) { LinkedList<REPCommand> reverse = new LinkedList<REPCommand>(); for(REPCommand r : outp){ reverse.addFirst(r); } return reverse; } private void optimizedAdd(LinkedList<REPCommand> output, REPCommand r) { switch(r.cmd){ case REP.REPCMD_INSERT: optimizedAddInsert(output,r);break; case REP.REPCMD_DELETE: optimizedAddDelete(output,r);break; } } private void optimizedAddDelete(LinkedList<REPCommand> output, REPCommand r) { for(REPCommand s : output){ switch(r.cmd){ case REP.REPCMD_INSERT: break; case REP.REPCMD_DELETE: break; } } } private void optimizedAddInsert(LinkedList<REPCommand> output, REPCommand r) { int lineno = r.lineno; for(int i = 0; i < output.size(); i++){ REPCommand s = output.get(i); switch(s.cmd){ case REP.REPCMD_INSERT: break; case REP.REPCMD_DELETE: if(s.lineno == lineno){ output.remove(s); } break; } } } public static void main(String[] s){ RepCommandOptimizeTest rco = new RepCommandOptimizeTest(); rco.makeCommand(test1); java.util.Collections.shuffle(cmdlist); rco.printCmdList(); rco.edit(); rco.printText(); //java.util.Collections.shuffle(cmdlist); for ( int i = 0; i < 10; ++i ) { System.out.println(cmdlist.get(i)); } } }