changeset 19:cc68a00f9850

*** empty log message ***
author pin
date Tue, 31 Oct 2006 16:30:54 +0900
parents e87cae12907e
children e5472194938a
files bin/remoteeditor/editors/RemoteEditor.class bin/remoteeditor/network/REP.class src/remoteeditor/editors/RemoteEditor.java src/remoteeditor/network/REP.java src/sample/merge/Merge.java src/sample/merge/MergeSample.java
diffstat 6 files changed, 92 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
Binary file bin/remoteeditor/editors/RemoteEditor.class has changed
Binary file bin/remoteeditor/network/REP.class has changed
--- a/src/remoteeditor/editors/RemoteEditor.java	Tue Oct 31 12:11:11 2006 +0900
+++ b/src/remoteeditor/editors/RemoteEditor.java	Tue Oct 31 16:30:54 2006 +0900
@@ -85,7 +85,7 @@
 			}
 		}else {
 			try {
-				rep.delete(line, length, lineText);
+				rep.delete(line+1, length, "\n");
 			} catch (IOException e) {
 				e.printStackTrace();
 			}
--- a/src/remoteeditor/network/REP.java	Tue Oct 31 12:11:11 2006 +0900
+++ b/src/remoteeditor/network/REP.java	Tue Oct 31 16:30:54 2006 +0900
@@ -49,6 +49,7 @@
 	
 	List myCmdList = new LinkedList();
 	List othersCmdList = new LinkedList();
+	private String filename;
 	
 	public REP() throws Exception {
 		String host = "localhost";
@@ -79,6 +80,7 @@
 		
 		dialog = new InputDialog(shell, "repput", "read packet:" + cmd +", "+ sid +", "+ eid +", "+ seqid +", "+ lineno +", "+ textsiz +", "+ string, "hugo", null);
 		if(dialog.open() == Window.OK){
+			filename = dialog.getValue();
 			put();
 		}
 		
@@ -99,7 +101,7 @@
 	}
 	
 	public void put() throws Exception {
-		sc.write(pack(REP_PUT_CMD, sid, eid, seqid, lineno, "filename"));
+		sc.write(pack(REP_PUT_CMD, sid, eid, seqid, lineno, filename));
 		unpack();
 		System.out.println("read packet:" + cmd +", "+ sid +", "+ eid +", "+ seqid +", "+ lineno +", "+ textsiz +", "+ string);
 	}
--- a/src/sample/merge/Merge.java	Tue Oct 31 12:11:11 2006 +0900
+++ b/src/sample/merge/Merge.java	Tue Oct 31 16:30:54 2006 +0900
@@ -1,52 +1,49 @@
 package sample.merge;
 
 import java.util.LinkedList;
+import java.util.List;
+
+import remoteeditor.network.REP;
 
 
 public class Merge {
-	static final int REP_INSERT_CMD = 6;
-	static final int REP_INSERT_ACK_CMD = 7;
-	static final int REP_JOIN_CMD = 41;
-	static final int REP_JOIN_ACK_CMD = 42;
-	static final int REP_PUT_CMD = 45;
-	static final int REP_PUT_ACK_CMD = 46;
-	static final int REP_SELECT_CMD = 47;
-	static final int REP_SELECT_ACK_CMD = 48;
-	static final int REP_QUIT_CMD = 53;
-	static final int REP_QUIT_ACK_CMD = 54;
+	
+	public static void main(String[] args) throws Exception{
+		List userCmdList = new LinkedList();
+		List tokenCmdList = new LinkedList();
+
+		System.out.println("---------- パターン2 ----------");
+		userCmdList.add(new Rep_Cmd(REP.REP_INSERT_CMD, 1, 1, 0, 10, 4, "test"));
+		System.out.println("UserList : " + userCmdList.toString());
+		tokenCmdList.add(new Rep_Cmd(REP.REP_INSERT_CMD, 1, 2, 0, 12, 5, "test3"));
+		tokenCmdList.add(new Rep_Cmd(REP.REP_INSERT_CMD, 1, 2, 0, 15, 5, "test4"));
+		System.out.println("TokenList : " + tokenCmdList.toString());
+		new MergeSample(userCmdList, tokenCmdList);
+		System.out.println();
+		System.out.println("NewUserList : " + userCmdList.toString());
+		System.out.println("NewTokenList : " + tokenCmdList.toString());
 
-	private static LinkedList inUserList;
-	private LinkedList inTokenList;
-	
-	private LinkedList outUserList;
-	private LinkedList outTokenList;
-	
-	protected Merge() {
-	}
-	
-	public Merge(LinkedList inUserList, LinkedList inTokenList) {
-		this.inUserList = inUserList;
-		this.inTokenList = inTokenList;
-	}
-		
-	public byte[] mergeRepCommand() {
+		System.out.println("");
 		
-		return null;
-	}
-	public int addList(int i, int j) {
+		System.out.println("---------- パターン2 ----------");
+		userCmdList = new LinkedList();
+		tokenCmdList = new LinkedList();
+		userCmdList.add(new Rep_Cmd(REP.REP_INSERT_CMD, 1, 1, 0, 10, 4, "test"));
+		System.out.println("UserList : " + userCmdList.toString());
+		tokenCmdList.add(new Rep_Cmd(REP.REP_INSERT_CMD, 1, 2, 0, 5, 5, "test3"));
+		tokenCmdList.add(new Rep_Cmd(REP.REP_INSERT_CMD, 1, 2, 0, 15, 5, "test4"));
+		System.out.println("TokenList : " + tokenCmdList.toString());
+		new MergeSample(userCmdList, tokenCmdList);
+		System.out.println();
+		System.out.println("NewUserList : " + userCmdList.toString());
+		System.out.println("NewTokenList : " + tokenCmdList.toString());
 		
-		return i+j;
-	}
-	
-	public static void main(String[] args) throws Exception {
-		Merge merge = new Merge();
-		LinkedList inList = new LinkedList();
-		inList.add(new Rep_Cmd(47,1,0,0,0,0,"test"));
-		inList.add(new Rep_Cmd(41,1,0,0,0,0,"tesu"));
-		inList.add(new Rep_Cmd(41,1,0,0,0,0,"tesu"));
-		inList.add(new Rep_Cmd(41,1,0,0,0,0,"tesu"));
-		inUserList.add(new Rep_Cmd(41,1,0,0,0,0,"tesu"));
 		
 		
 	}
+	
+	public Merge(){
+		
+	}
+
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sample/merge/MergeSample.java	Tue Oct 31 16:30:54 2006 +0900
@@ -0,0 +1,52 @@
+package sample.merge;
+
+import java.util.Iterator;
+import java.util.List;
+
+import remoteeditor.network.REP;
+
+public class MergeSample {
+	List userList;
+	List tokenList;
+	private int REP_IGNORE = -1;
+	public MergeSample(List userList, List tokenList){
+		this.userList = userList;
+		this.tokenList = tokenList;
+		merge();
+	}
+
+
+	void merge(){
+		Iterator userListIterator = userList.iterator();
+		while(userListIterator.hasNext()){
+			Iterator tokenListIterator = tokenList.iterator();
+			Rep_Cmd userCmd = (Rep_Cmd)userListIterator.next();
+			if(userCmd.stat == REP_IGNORE) continue;     /* 削除される(予定)のREPコマンドの比較は無視 */
+			while(tokenListIterator.hasNext()){
+				Rep_Cmd tokenCmd =(Rep_Cmd)tokenListIterator.next();
+				if(tokenCmd.stat == REP_IGNORE) continue;     /* 削除される(予定)のREPコマンドの比較は無視 */
+				if(userCmd.stat == REP_IGNORE) break;
+				if(userCmd.lineno < tokenCmd.lineno) {     /* UsersLineNumber < TokensLineNumber */
+					if(userCmd.cmd == REP.REP_INSERT_CMD){
+						tokenCmd.lineno++;
+					}else if(userCmd.cmd == REP.REP_DELETE_CMD){
+						tokenCmd.lineno--;
+					}
+				}else if(userCmd.lineno > tokenCmd.lineno){     /* UsersLineNumber > TokensLineNumber */
+					if(tokenCmd.cmd == REP.REP_INSERT_CMD){
+						userCmd.lineno++;
+					}else if(tokenCmd.cmd == REP.REP_DELETE_CMD){
+						userCmd.lineno--;
+					}
+				}else if(userCmd.lineno == tokenCmd.lineno){     /* UsersLineNumber == TokensLineNumber */
+					/*
+	                 * 行番号が重なるとREPコマンドの競合が起こるので、
+	                 * どちらかが譲らないといけない。
+	                 * uid が小さい方を優先(h_pricmdに)し、
+	                 * uid が大きい方(l_pricmd)を変更する。
+	                 */
+				}
+			}
+		}
+	}
+}