view CHANGELOG @ 14:8bf59f161b23

separete Node methods to NodeContext , NodeAttribute , NodeChildren
author misaka
date Tue, 17 May 2011 18:44:14 +0900
parents c8601b0fa8a3
children bb9760760744
line wrap: on
line source

ChangeLog.
2011-03-29
	changed byte[] to ByteBuffer
	added TreeEditor.updateTree(Node,NodeData,Node[]) for node path is known.
	added GUIEditor
2011-03-17
	added concurrent access client for cassandra
2011-03-14
	added javadoc treecms.api
2011-02-28
	added test case
2011-02-25
	finished treecms.cassandra.v1 implementation ( not tested yet. )
2011-02-18 
	finished treecms.memory basic implementation ( not tested yet. )	
2011-02-16
	added OnMemoryForest	
2011-02-16 
	add Forest	

	
Requirements.

	Cassandra 0.6.x

	
開発メモ

2011-05-17
	NodeAttributes、NodeChildrenを作って分けた.
	NodeAttributesはノードの要素を保持する。
	NodeChildrenはノードの子供のリストを表す。
	
	Node extends NodeAttributes,NodeChildren
	
	SingleNode extends NodeBase , NodeAttributes , NodeChildren<SingleNode>
	TreeNode extends NodeBase , NodeAttributes , NodeChildren<TreeNode>
	
	NodeChildrenをNodeChildren<T>にしようかと思っていまする。
	この方法なら行けるかも?

2011-05-16
	replaceChildの実装を忘れていたので実装しよう。
	書き換える必要があるのは Node,TreeNode,MonotonicTreeNode
	の3つのインターフェイスかな
	
	現段階でNodeのメソッドは
		属性関係が get,getAll,put,putAll,remove,removeAll,clear
		子供関係が getChildren,addChild,addChildren,removeChild,removeChildren,replaceChildren,clearChildren
		その他 getID
		
	やっぱり、子供ノード用の専用リストをつくりましょう。
	NodeChildList
		public List<Node> getList();
		public boolean add(Node _n); //ノード追加
		public boolean addAll(List<Node> _list); //ノードのリストを追加
		public Node get(String _id); //NodeIDに当たるNodeの取得
		public Node get(int _index); //_indexの場所にいるNodeの取得
		public Node remove(String _id); //NodeIDを削除
		public Node remove(int _index); //_indexの場所にいるNodeの削除
		public boolean contains(String _id); //NodeIDがこのリストに含まれるかチェック
		public boolean swap(String _id1,String _id2); //2つのNodeIDを入れ替える
		public void clear(); //リストのクリア
		
	もう訳がわからない

2011-05-11
	クローンを伝搬させる方法で非破壊的編集の実装を書いている.

	やっぱり、子供を管理するリストは自身で開発したほうが良さそうな気がしてきた.
	子供のリストに要求されていることは
		同じIDの子供が追加されないこと
	なので,順序付きの集合になる.ApacheCommonsのCollectionAPIは何故かGenericsに対応していないので警告を吐きまくる.
	やっぱり自分で書いたほうが良さそうですね.
	
	Apache CommonsのPredicateを使えば普通に実装できるはずなんだけど・・・・
	PredicateとPredicateListの実装もうちょっと;)

2011-05-10
	MonotonicTreeNodeのAPI合わせをやった.
	OnMemoryの実装に移ろう.実際はOnMemoryがキャッシュとして使いやすいようにしないといけないんだけどな.AbstractHogehogeとかみたいに,
	フレームワーク的に使いたいね.
	
	OnMemoryNode,OnMemoryTreeNode,OnMemoryMonotonicTreeNodeを実装した.OnMemoryMonotonicTreeNodeはだいたい完成している.
	
	NodeにcloneNodeっぽいメソッドを実装するの忘れてた.

2011-05-09
	Node自体はSingleLinkedNodeである,あるNodeを頂点とするTreeを作ることで、SingleLinkedNodeをラップしたDoubleLinkedNodeを作る.
	これをTreeNodeとする.
	Nodeからchildrenをとるときは防御的コピーをしよう.
	いろいろと気にし過ぎな気もする
	
	NodeDataを実装に合わせた.
	次はTreeNodeをあわせていくといいと思う.

2011-05-07
	Nodeの子供Listは重複要素を許可しないリストなので、NodeData、SetUniqueListにする。
	NodeDataをSetUniqueListに変更した。
	NodeDataってtreecms.apiよりはtreecms.utilの方なんじゃないかと思う、なので移動します。
	
2011-05-05
	APIを変更した、ノードを表すクラスは[Node,TreeNode,MonotonicTreeNode]の3つで,TreeNodeとMonotonicTreeNodeはNodeを継承しない。
	TreeNodeとMonotonicTreeNodeもノードを表すクラスの一つであるが,継承ではなくNodeを内部にメンバーとして持つ,
	
	問題点は,TreeNodeとMonotonicTreeNodeのメソッドをNodeとAPIの定義を用いて一致させたいが出来ない,NodeのAPIを変更するときには3つ全部書き換える必要がある.
	Genericsを使って無理やり出来る方法を考えたが、まあどうだろう・・・
	
	現段階でNodeのメソッドは
		属性関係が get,getAll,put,putAll,remove,removeAll,clear
		子供関係が getChildren,addChild,addChildren,removeChild,removeChildren,clearChildren
		その他 getID
	
	これをinterface Nodeに記述しておいた.TreeNodeとMonotonicTreeNode interfaceの変更が必要.