view Main/jungle-network/core/NetworkDefaultJungle.cs @ 20:1f99e150f336

fix folder and add Object Mapper.
author Kazuma Takeda
date Thu, 15 Dec 2016 22:52:48 +0900
parents
children f2ea780b3e80
line wrap: on
line source

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace JungleDB {
	public class NetworkDefaultJungle : Jungle {

		private Journal Journal;
		private TreeMap<string, JungleTree> Trees;
		private string Uuid;
		private TreeEditor Editor;

		public NetworkDefaultJungle(Journal jou, string uid, TreeEditor edit) {
			this.Journal = jou;
			this.Trees   = new TreeMap<string, JungleTree>();
			this.Uuid    = uid;
			this.Editor  = edit;
		}

		public JungleTree getTreeByName (string name) {
			return Trees.get(name);
		}

		public JungleTree createNewTree(string name) {
			ChangeList list  = new InnerChangeList(this.Uuid, name);
			TreeNode root                = new DefaultTreeNode();
			InterfaceTraverser traverser = new InterfaceTraverser(root, true);
			TreeContext tc               = new DefaultTreeContext(root, null, list, this.Uuid, name, 0, traverser);
			JungleTree newTree = new NetworkDefaultJungleTree(name, tc, this.Uuid, Journal.getWriter(), this.Editor);
			if (Trees.put(name, newTree) != null) {
				return null;
			}
			return newTree;
		}


		public class InnerChangeList : ChangeList {

			string uuid;
			string name;


			IEnumerator IEnumerable.GetEnumerator()
			{
				return this.GetEnumerator();
			}

			public IEnumerator<TreeOperation> GetEnumerator()
			{
				return iterator ();
			}

			// construct
			public InnerChangeList(string _uuid, string _name) {
				this.uuid = _uuid;
				this.name = _name;
			}

			public IEnumerator<TreeOperation> iterator() {
				List<TreeOperation> nil = new List<TreeOperation>();
				return nil.iterator();
			}

			public string uuids() {
				return uuid;
			}

			public string getTreeName() {
				return name;
			}

			public TreeOperationLog getLog() {
				return new DefaultTreeOperationLog();
			}
		}
	}
}