annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNodePath.java @ 98:95000ff9064d

Create Query
author one
date Tue, 09 Sep 2014 16:23:01 +0900
parents 449d67be0886
children f9a0e7069811
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
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
10
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
11 public class DefaultNodePath implements NodePath
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
12 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
13 private final List<Integer> path;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
14
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
15 public static void main(String _args[])
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
16 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
17 DefaultNodePath p = new DefaultNodePath();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
18 p = p.add(1).add(2).add(3).add(4);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
19 System.out.println(p.toString());
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
20 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
21
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
22 public DefaultNodePath()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
23 {
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
24 path = List.list(-1);
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
25 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
26
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
27 private DefaultNodePath(List<Integer> _path)
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
28 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
29 path = _path;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
30 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
31
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
32 @Override
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
33 public Iterator<Integer> iterator()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
34 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
35 return path.iterator();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
36 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
37
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
38 @Override
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
39 public DefaultNodePath add(int _pos)
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
40 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
41 List<Integer> newPath = path.snoc(_pos);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
42 return new DefaultNodePath(newPath);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
43 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
44
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
45 @Override
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
46 public Pair<Integer, NodePath> pop()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
47 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
48 Integer head = path.head();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
49 List<Integer> tail = path.tail();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
50
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
51 return new Pair<Integer,NodePath>(head,new DefaultNodePath(tail));
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
52 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
53
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
54 @Override
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
55 public String toString()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
56 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
57 return path.toString();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
58 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
59
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
60 @Override
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
61 public int size()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
62 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
63 return path.length();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
64 }
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
65
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
66 public List<DefaultNodePath> inits()
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
67 {
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
68 List<List<Integer>> inits = path.inits();
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
69 inits = inits.filter(new F<List<Integer>,Boolean>(){
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
70 @Override
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
71 public Boolean f(List<Integer> _init){
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
72 return _init.length() != 0;
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
73 }
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
74 });
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
75
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
76 return inits.map(new F<List<Integer>,DefaultNodePath>(){
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
77 @Override
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
78 public DefaultNodePath f(List<Integer> _path){
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
79 return new DefaultNodePath(_path);
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 }
98
95000ff9064d Create Query
one
parents: 44
diff changeset
83
95000ff9064d Create Query
one
parents: 44
diff changeset
84 @Override
95000ff9064d Create Query
one
parents: 44
diff changeset
85 public NodePath tail() {
95000ff9064d Create Query
one
parents: 44
diff changeset
86 List<Integer> tail = path.reverse();
95000ff9064d Create Query
one
parents: 44
diff changeset
87 tail = tail.tail().reverse();
95000ff9064d Create Query
one
parents: 44
diff changeset
88 return new DefaultNodePath(tail);
95000ff9064d Create Query
one
parents: 44
diff changeset
89 }
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
90 }