diff src/main/java/alice/jungle/core/NetworkDefaultJungle.java @ 105:f9e29a52efd3

Move some files
author one
date Tue, 26 Nov 2013 06:43:10 +0900
parents src/alice/jungle/core/NetworkDefaultJungle.java@2c7b3f2b2ee1
children 6f104ab4eb81
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/alice/jungle/core/NetworkDefaultJungle.java	Tue Nov 26 06:43:10 2013 +0900
@@ -0,0 +1,66 @@
+package alice.jungle.core;
+
+import java.util.Iterator;
+import java.util.concurrent.ConcurrentHashMap;
+
+import alice.jungle.transaction.NetworkDefaultJungleTree;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
+import fj.data.List;
+
+public class NetworkDefaultJungle implements Jungle {
+	private Journal journal;
+	private ConcurrentHashMap<String,JungleTree> trees;
+	private String uuid;
+	private TreeEditor editor;
+	
+	public NetworkDefaultJungle(Journal _journal,String _uuid,TreeEditor _editor)
+	{
+		journal = _journal;
+		trees = new ConcurrentHashMap<String,JungleTree>();
+		uuid = _uuid;
+		editor = _editor;
+	}
+
+	@Override
+	public JungleTree getTreeByName(String _name)
+	{
+		return trees.get(_name);
+	}
+
+	@Override
+	public JungleTree createNewTree(final String _name)
+	{
+		ChangeList list = new ChangeList(){
+			@Override
+			public Iterator<TreeOperation> iterator() {
+				List<TreeOperation> nil = List.nil();
+				return nil.iterator();
+			}
+			@Override
+			public String uuid() {
+				return uuid;
+			}
+			@Override
+			public String getTreeName() {
+				return _name;
+			}
+		};
+		DefaultTreeNode root = new DefaultTreeNode();
+		ChangeSet set = new DefaultChangeSet(root.getAsNode(),null,list,uuid,_name, 0);
+		DefaultTreeContext<DefaultTreeNode> tc = new DefaultTreeContext<DefaultTreeNode>(root,set);
+		JungleTree newTree = new NetworkDefaultJungleTree<DefaultTreeNode>(_name, tc,uuid,journal.getWriter(),editor);
+		if(trees.putIfAbsent(_name,newTree) != null){
+			return null;
+		}
+		return newTree;
+	}
+}