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));
		}
	}
}