annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNodePath.java @ 172:809f813d1083

minner change
author one
date Tue, 10 Feb 2015 11:28:39 +0900
parents b998fdc99bc0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
2
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
3 import java.util.Iterator;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
4
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
5 import fj.F;
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
6 import fj.data.List;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
9
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
10 public class DefaultNodePath implements NodePath
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
11 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
12 private final List<Integer> path;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
13
104
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
14 public static void main(String args[])
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
15 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
16 DefaultNodePath p = new DefaultNodePath();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
17 p = p.add(1).add(2).add(3).add(4);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
18 System.out.println(p.toString());
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
19 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
20
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
21 public DefaultNodePath()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
22 {
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
23 path = List.list(-1);
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
24 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
25
104
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
26 private DefaultNodePath(List<Integer> path)
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
27 {
104
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
28 this.path = path;
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
29 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
30
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
31 @Override
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
32 public Iterator<Integer> iterator()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
33 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
34 return path.iterator();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
35 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
36
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
37 @Override
104
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
38 public DefaultNodePath add(int pos)
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
39 {
104
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
40 List<Integer> newPath = path.snoc(pos);
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
41 return new DefaultNodePath(newPath);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
42 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
44 @Override
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
45 public Pair<Integer, NodePath> pop()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
46 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
47 Integer head = path.head();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
48 List<Integer> tail = path.tail();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
49
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
50 return new Pair<Integer,NodePath>(head,new DefaultNodePath(tail));
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
51 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
52
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
53 @Override
135
6e9a8d26e0cf refactor
one
parents: 104
diff changeset
54 public Pair<Integer,NodePath> last(){
6e9a8d26e0cf refactor
one
parents: 104
diff changeset
55 Integer last = path.last();
6e9a8d26e0cf refactor
one
parents: 104
diff changeset
56 List<Integer> list = path.reverse().tail().reverse();
6e9a8d26e0cf refactor
one
parents: 104
diff changeset
57 return new Pair<Integer,NodePath>(last,new DefaultNodePath(list));
6e9a8d26e0cf refactor
one
parents: 104
diff changeset
58 }
6e9a8d26e0cf refactor
one
parents: 104
diff changeset
59
6e9a8d26e0cf refactor
one
parents: 104
diff changeset
60 @Override
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
61 public String toString()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
62 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
63 return path.toString();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
64 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
65
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
66 @Override
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
67 public int size()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
68 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
69 return path.length();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
70 }
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
71
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
72 public List<DefaultNodePath> inits()
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
73 {
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
74 List<List<Integer>> inits = path.inits();
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
75 inits = inits.filter(new F<List<Integer>,Boolean>(){
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
76 @Override
104
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
77 public Boolean f(List<Integer> init){
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
78 return init.length() != 0;
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
79 }
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
80 });
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
81
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
82 return inits.map(new F<List<Integer>,DefaultNodePath>(){
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
83 @Override
104
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
84 public DefaultNodePath f(List<Integer> path){
f9a0e7069811 delete worning halfway
one
parents: 98
diff changeset
85 return new DefaultNodePath(path);
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
86 }
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
87 });
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
88 }
98
95000ff9064d Create Query
one
parents: 44
diff changeset
89
172
809f813d1083 minner change
one
parents: 138
diff changeset
90 //PATHの一番後ろを取り除いたPATHを新しく作って返す
809f813d1083 minner change
one
parents: 138
diff changeset
91 // EXAMPLE <0,0,3> → <0,0>
98
95000ff9064d Create Query
one
parents: 44
diff changeset
92 @Override
95000ff9064d Create Query
one
parents: 44
diff changeset
93 public NodePath tail() {
95000ff9064d Create Query
one
parents: 44
diff changeset
94 List<Integer> tail = path.reverse();
95000ff9064d Create Query
one
parents: 44
diff changeset
95 tail = tail.tail().reverse();
95000ff9064d Create Query
one
parents: 44
diff changeset
96 return new DefaultNodePath(tail);
95000ff9064d Create Query
one
parents: 44
diff changeset
97 }
138
b998fdc99bc0 add NodePathCompare and Test
one
parents: 135
diff changeset
98
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
99 }