Mercurial > hg > RemoteEditor > Eclipse
view src/sample/merge/MergeSample.java @ 19:cc68a00f9850
*** empty log message ***
author | pin |
---|---|
date | Tue, 31 Oct 2006 16:30:54 +0900 |
parents | |
children | e5472194938a |
line wrap: on
line source
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)を変更する。 */ } } } } }