# HG changeset patch # User one # Date 1384164416 -32400 # Node ID eef737ab3b2c0cb1593feab446bb953a1eebdde7 # Parent f3f89613c7e33ccd9dfe11f491264c31703bf6c2 Modified JungleManager class diff -r f3f89613c7e3 -r eef737ab3b2c src/alice/jungle/core/NetworkDefaultJungle.java --- 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); diff -r f3f89613c7e3 -r eef737ab3b2c src/alice/jungle/persistence/PersistentChangeListWriter.java --- 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) { diff -r f3f89613c7e3 -r eef737ab3b2c src/jungle/app/bbs/JungleManager.java --- 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 edit(JungleTreeEditor _editor ,TreeOperationLog _log, int pos) { JungleTreeEditor editor = _editor; Either 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 _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 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 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(); diff -r f3f89613c7e3 -r eef737ab3b2c src/jungle/app/bbs/NetworkJungleBulletinBoard.java --- 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 netEditor = (NetworkDefaultJungleTreeEditor) 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(chs,converter); } - private void putTreeOperationLog(NetworkDefaultJungleTreeEditor editor, int pos, long timestamp) 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 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 _log, String nextRevision, int pos, long timestamp) throws IOException { + private void putDataSegment(String _uuid, String _treeName, String _updaterName, Iterable _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();