Mercurial > hg > Members > shoshi > TreeCMSv2
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の変更が必要.