changeset 90:eef737ab3b2c

Modified JungleManager class
author one
date Mon, 11 Nov 2013 19:06:56 +0900
parents f3f89613c7e3
children 2c7b3f2b2ee1
files src/alice/jungle/core/NetworkDefaultJungle.java src/alice/jungle/persistence/PersistentChangeListWriter.java src/jungle/app/bbs/JungleManager.java src/jungle/app/bbs/NetworkJungleBulletinBoard.java
diffstat 4 files changed, 21 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/alice/jungle/core/NetworkDefaultJungle.java	Tue Nov 05 15:56:31 2013 +0900
+++ b/src/alice/jungle/core/NetworkDefaultJungle.java	Mon Nov 11 19:06:56 2013 +0900
@@ -56,7 +56,6 @@
 			public String getTreeName() {
 				return _name;
 			}
-			
 		};
 		DefaultTreeNode root = new DefaultTreeNode();
 		ChangeSet set = new DefaultChangeSet(root.getAsNode(),null,list,uuid,_name, 0);
--- a/src/alice/jungle/persistence/PersistentChangeListWriter.java	Tue Nov 05 15:56:31 2013 +0900
+++ b/src/alice/jungle/persistence/PersistentChangeListWriter.java	Mon Nov 11 19:06:56 2013 +0900
@@ -12,7 +12,7 @@
 
 public class PersistentChangeListWriter implements ChangeListWriter {
 	
-	MessagePack msgpack = NetworkJournal.getMessagePack();
+	MessagePack msgpack = PersistentJournal.getMessagePack();
 	OutputStream out;
 	
 	public PersistentChangeListWriter(OutputStream _out) {
--- a/src/jungle/app/bbs/JungleManager.java	Tue Nov 05 15:56:31 2013 +0900
+++ b/src/jungle/app/bbs/JungleManager.java	Mon Nov 11 19:06:56 2013 +0900
@@ -10,6 +10,7 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
@@ -21,6 +22,7 @@
 public class JungleManager {
 	private static JungleManager jm = new JungleManager();
 	private Jungle jungle;
+	private static int NOT_CHANGE_POSITION = 0;
 
 	private JungleManager() {
 
@@ -41,7 +43,7 @@
 	public static Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log, int pos) {
 		JungleTreeEditor editor = _editor;
 		Either<Error, JungleTreeEditor> either = null;
-		for (TreeOperation op : _log) { 
+		for (TreeOperation op : _log) {
 			either = _edit(editor, op, pos);
 			if(either.isA()) {
 				return either;
@@ -52,14 +54,18 @@
 	}
 	
 	private static Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor,
-			TreeOperation op, int pos) {
-		DefaultNodePath path = new DefaultNodePath();
+			TreeOperation op, int _pos) {
+		NodePath path = new DefaultNodePath();
 		NodeOperation nodeOp = op.getNodeOperation();
+		int pos = _pos;
+		if (_pos == NOT_CHANGE_POSITION ) {
+			pos = nodeOp.getPosition();
+		}
 		Command c = nodeOp.getCommand();
 		String key = "";
 		switch (c) {
 		case PUT_ATTRIBUTE:
-			path = path.add(pos);
+			path = op.getNodePath();
 			key = nodeOp.getKey();
 			ByteBuffer value = nodeOp.getValue();
 			return editor.putAttribute(path, key, value);
@@ -89,7 +95,7 @@
 		}
 		JungleTree tree = JungleManager.getJungle().getTreeByName(treeName);
 		JungleTreeEditor editor = tree.getTreeEditor();
-		int pos = checkTimeStamp(tree.getRootNode(), container.getTimeStamp(), container.getPosition());
+		int pos = calculatePosition(tree.getRootNode(), container.getTimeStamp());
 		Either<Error, JungleTreeEditor> either = JungleManager.edit(editor, log, pos);
 		if(either.isA()) {
 			throw new IllegalStateException();
@@ -102,13 +108,13 @@
 		return either;
 	}
 	
-	private static int checkTimeStamp(Node node, long newNodeTimeStamp, int containerPosition) {
+	private static int calculatePosition(Node node, long newNodeTimeStamp) {
 		int count = 0;
 		long childTimeStamp = 0;
 		for(Iterator<Node> iter = node.getChildren().iterator();iter.hasNext();) {
 			Node n = iter.next();
 			if(n.getAttributes().get("timestamp") == null) {
-				return containerPosition;
+				return NOT_CHANGE_POSITION;
 			}
 			if(n.getAttributes().get("timestamp") != null) {
 				childTimeStamp = n.getAttributes().get("timestamp").getLong();
--- a/src/jungle/app/bbs/NetworkJungleBulletinBoard.java	Tue Nov 05 15:56:31 2013 +0900
+++ b/src/jungle/app/bbs/NetworkJungleBulletinBoard.java	Mon Nov 11 19:06:56 2013 +0900
@@ -81,7 +81,7 @@
 		final long timestamp = new Date().getTime();
 		/* Put DataSegment */
 		try {
-			putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, 0, timestamp);
+			putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor,timestamp);
 		} catch (IOException e1) {
 			e1.printStackTrace();
 		}
@@ -113,7 +113,7 @@
 		editor.success();
 		/* Put DataSegment */
 		try {
-			putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, 0, timestamp);
+			putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, timestamp);
 		} catch (IOException e1) {
 			e1.printStackTrace();
 		}
@@ -159,7 +159,7 @@
 			either = editor.success();
 			try {
 				NetworkDefaultJungleTreeEditor<DefaultTreeNode> netEditor = (NetworkDefaultJungleTreeEditor<DefaultTreeNode>) editor;
-				putTreeOperationLog(netEditor, size, timestamp);
+				putTreeOperationLog(netEditor, timestamp);
 			} catch (IOException e1) {
 				e1.printStackTrace();
 			}
@@ -194,7 +194,7 @@
 			editor = either.b();
 			either = editor.success();
 			try {
-				putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, Integer.parseInt(_uuid), timestamp);
+				putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor,  timestamp);
 			} catch (IOException e1) {
 				e1.printStackTrace();
 			}
@@ -225,22 +225,21 @@
 		return new IterableConverter<BoardMessage,Node>(chs,converter);
 	}
 	
-	private void putTreeOperationLog(NetworkDefaultJungleTreeEditor<DefaultTreeNode> editor, int pos, long timestamp) throws IOException {
+	private void putTreeOperationLog(NetworkDefaultJungleTreeEditor<DefaultTreeNode> 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, pos,timestamp);
+		putDataSegment(uuid, treeName, updaterName, log, revision, timestamp);
 	}
 	
-	private void putDataSegment(String _uuid, String _treeName, String _updaterName, Iterable<TreeOperation> _log, String nextRevision, int pos, long timestamp) 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.setPosition(pos);
 		container.unconvert(_log);
 		container.setTimeStamp(timestamp);
 		HashLogUpdateCodeSegment cs = new HashLogUpdateCodeSegment();