223
|
1 package jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations;
|
|
2
|
|
3
|
263
|
4 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
|
308
|
5 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.PathType;
|
223
|
6 import jp.ac.u_ryukyu.ie.cr.jungle.util.Pair;
|
|
7 import org.msgpack.annotation.Message;
|
|
8
|
308
|
9 import java.nio.ByteBuffer;
|
223
|
10 import java.util.Iterator;
|
|
11 import java.util.LinkedList;
|
|
12
|
|
13 @Message
|
|
14 public class NetworkNodePath implements NodePath {
|
237
|
15 LinkedList<Integer> path;
|
316
|
16 int type;
|
223
|
17
|
237
|
18 public NetworkNodePath() {
|
|
19 path = new LinkedList<Integer>();
|
|
20 path.add(-1);
|
310
|
21 type = PathType.Default;
|
237
|
22 }
|
223
|
23
|
237
|
24 public NetworkNodePath(NodePath _p) {
|
|
25 path = new LinkedList<Integer>();
|
|
26 for (Integer pos : _p) {
|
|
27 path.add(pos);
|
|
28 }
|
310
|
29 type = _p.getPathType();
|
|
30 }
|
|
31
|
316
|
32 public NetworkNodePath(NodePath _p, int type) {
|
310
|
33 path = new LinkedList<Integer>();
|
|
34 for (Integer pos : _p) {
|
|
35 path.add(pos);
|
|
36 }
|
|
37 this.type = type;
|
223
|
38 }
|
237
|
39
|
|
40 private NetworkNodePath(LinkedList<Integer> _path) {
|
|
41 path = _path;
|
|
42 }
|
223
|
43
|
237
|
44 @Override
|
|
45 public Iterator<Integer> iterator() {
|
|
46 return path.iterator();
|
|
47 }
|
223
|
48
|
237
|
49 @Override
|
265
|
50 public int get(int index) {
|
|
51 return path.get(index);
|
|
52 }
|
|
53
|
|
54 @Override
|
237
|
55 public NetworkNodePath add(int _pos) {
|
|
56 LinkedList<Integer> newPath = copyPath();
|
|
57 newPath.add(_pos);
|
|
58 return new NetworkNodePath(newPath);
|
|
59 }
|
223
|
60
|
237
|
61 @Override
|
|
62 public NodePath addHead(int pos) {
|
|
63 return null; //Linked Listを後で直す
|
|
64 // List<Integer> newPath = path.add(0, pos);
|
|
65 // return new DefaultNodePath(newPath);
|
|
66 }
|
|
67
|
|
68 @Override
|
|
69 public Pair<Integer, NodePath> pop() {
|
|
70 LinkedList<Integer> cPath = copyPath();
|
|
71 int e = cPath.getFirst();
|
|
72 cPath.remove();
|
|
73 return new Pair<Integer, NodePath>(e, new NetworkNodePath(cPath));
|
|
74 }
|
223
|
75
|
237
|
76 @Override
|
|
77 public int size() {
|
|
78 return path.size();
|
223
|
79 }
|
|
80
|
237
|
81 private LinkedList<Integer> copyPath() {
|
|
82 LinkedList<Integer> newPath = new LinkedList<Integer>();
|
|
83 for (Integer i : path) {
|
|
84 newPath.add(i);
|
|
85 }
|
|
86 return newPath;
|
|
87 }
|
223
|
88
|
237
|
89 @Override
|
|
90 public String toString() {
|
|
91 return path.toString();
|
|
92 }
|
223
|
93
|
237
|
94 @Override
|
|
95 public NodePath tail() {
|
|
96 path.removeLast();
|
|
97 return new NetworkNodePath(path);
|
|
98 }
|
|
99
|
|
100 @Override
|
|
101 public Pair<Integer, NodePath> last() {
|
|
102 Integer num = path.removeLast();
|
|
103 return new Pair<Integer, NodePath>(num, new NetworkNodePath(path));
|
|
104 }
|
223
|
105
|
307
|
106 //以下使わない
|
|
107 @Override
|
|
108 public String getKey() {
|
|
109 return null;
|
|
110 }
|
|
111
|
|
112 @Override
|
308
|
113 public ByteBuffer getValue() {
|
307
|
114 return null;
|
|
115 }
|
308
|
116
|
|
117 @Override
|
316
|
118 public int getPathType() {
|
308
|
119 return PathType.Default;
|
|
120 }
|
310
|
121
|
|
122 @Override //ネットワークでは今のところ使わない
|
316
|
123 public NodePath setType(int type) {
|
310
|
124 return null;
|
|
125 }
|
223
|
126 }
|