diff src/jungle/test/bbs/NetworkJungleBulletinBoard.java @ 56:ccfe9b5e8f11

bug LogUpdateCodeSegment
author one
date Sun, 14 Jul 2013 21:26:49 +0900
parents 61b2de3f7730
children 1bfd13f831ea
line wrap: on
line diff
--- a/src/jungle/test/bbs/NetworkJungleBulletinBoard.java	Sun Jul 14 17:23:48 2013 +0900
+++ b/src/jungle/test/bbs/NetworkJungleBulletinBoard.java	Sun Jul 14 21:26:49 2013 +0900
@@ -2,6 +2,7 @@
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.Date;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import alice.jungle.codesegment.HashLogUpdateCodeSegment;
@@ -77,9 +78,10 @@
 		if(result.isA()){
 			throw new IllegalStateException();
 		}
+		final long timestamp = new Date().getTime();
 		/* Put DataSegment */
 		try {
-			putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor);
+			putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, timestamp);
 		} catch (IOException e1) {
 			e1.printStackTrace();
 		}
@@ -97,6 +99,8 @@
 				_e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b();
 				_e = _e.getAttributes().put("mes",ByteBuffer.wrap(_initMessage.getBytes())).b();
 				_e = _e.getAttributes().put("key",ByteBuffer.wrap(_editKey.getBytes())).b();
+				ByteBuffer tBuffer = ByteBuffer.allocate(16);
+				_e = _e.getAttributes().put("timestamp",tBuffer.putLong(timestamp)).b();
 				return DefaultEither.newB(_e);
 			}
 		};
@@ -109,7 +113,7 @@
 		editor.success();
 		/* Put DataSegment */
 		try {
-			putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor);
+			putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, timestamp);
 		} catch (IOException e1) {
 			e1.printStackTrace();
 		}
@@ -136,11 +140,14 @@
 				throw new IllegalStateException();
 			}
 			editor = either.b();
+			final long timestamp = new Date().getTime();
 			NodeEditor e = new NodeEditor(){
 				public <T extends EditableNode<T>> Either<Error, T> edit(T _e){
 					_e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b();
 					_e = _e.getAttributes().put("mes",ByteBuffer.wrap(_message.getBytes())).b();
 					_e = _e.getAttributes().put("key",ByteBuffer.wrap(_editKey.getBytes())).b();
+					ByteBuffer tBuffer = ByteBuffer.allocate(16);
+					_e = _e.getAttributes().put("timestamp",tBuffer.putLong(timestamp)).b();
 					return DefaultEither.newB(_e);
 				}
 			};
@@ -152,7 +159,7 @@
 			editor = either.b();
 			either = editor.success();
 			try {
-				putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor);
+				putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, timestamp);
 			} catch (IOException e1) {
 				e1.printStackTrace();
 			}
@@ -170,11 +177,14 @@
 		
 			JungleTree tree = jungle.getTreeByName(_board);
 			editor = tree.getTreeEditor();
+			final long timestamp = new Date().getTime(); 
 			NodeEditor e = new NodeEditor(){
 				public <T extends EditableNode<T>> Either<Error, T> edit(T _e){
 					_e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b();
 					_e = _e.getAttributes().put("mes",ByteBuffer.wrap(_message.getBytes())).b();
 					_e = _e.getAttributes().put("key",ByteBuffer.wrap(_editKey.getBytes())).b();
+					ByteBuffer tBuffer = ByteBuffer.allocate(16);
+					_e = _e.getAttributes().put("timestamp",tBuffer.putLong(timestamp)).b();
 				return DefaultEither.newB(_e);
 				}
 			};
@@ -186,7 +196,7 @@
 			editor = either.b();
 			either = editor.success();
 			try {
-				putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor);
+				putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, timestamp);
 			} catch (IOException e1) {
 				e1.printStackTrace();
 			}
@@ -213,27 +223,28 @@
 		return new IterableConverter<BoardMessage,Node>(chs,converter);
 	}
 	
-	private void putTreeOperationLog(NetworkDefaultJungleTreeEditor editor) throws IOException {
+	private void putTreeOperationLog(NetworkDefaultJungleTreeEditor editor, long timestamp) throws IOException {
 		String uuid = editor.getID();
 		String treeName = editor.getTreeName();
 		String updaterName = editor.getUpdaterName();
 		String revision = editor.getRevision();
 		Iterable<TreeOperation> log = editor.getTreeOperationLog();
-		putDataSegment(uuid, treeName, updaterName, log, revision);
+		putDataSegment(uuid, treeName, updaterName, log, revision, timestamp);
 	}
 	
-	private void putDataSegment(String _uuid, String _treeName, String _updaterName, Iterable<TreeOperation> _log, String nextRevision) throws IOException {
+	private void putDataSegment(String _uuid, String _treeName, String _updaterName, Iterable<TreeOperation> _log, String nextRevision, long timestamp) throws IOException {
 		DefaultTreeOperationLogContainer container = new DefaultTreeOperationLogContainer();
 		container.setTreeName(_treeName);
 		container.setUUID(_uuid);
 		container.setUpdaterName(_updaterName);
 		container.setRevision(nextRevision);
 		container.unconvert(_log);
-		NullCodeSegmentForUpdate cs = new NullCodeSegmentForUpdate();
+		container.setTimeStamp(timestamp);
+		HashLogUpdateCodeSegment cs = new HashLogUpdateCodeSegment();
+		container.getHashLogString();
 		cs.ods.put("log", container);
-		new HashLogUpdateCodeSegment(container.getHashLogString());
-		System.out.println("putDataSegment");
-		System.out.println(container.getHashLogString());
+		cs.ods.put("logString", container.getHashLogString());
+		System.out.println("putDataSegment : "+container.getHashLogString());
 		/* If this node is not Root node, push log to parent node's DS */
 		if(!_updaterName.equals("node0")) {
 			cs.ods.put("parent", "childLog", container);