Mercurial > hg > Database > jungle-network
view src/alice/jungle/operations/NetworkNodePath.java @ 76:9e3198bf9547
Modified NetworkNodePath
author | one |
---|---|
date | Tue, 15 Oct 2013 15:53:36 +0900 |
parents | b0af3960917f |
children | 5b9708d9febc |
line wrap: on
line source
package alice.jungle.operations; import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; import org.msgpack.MessagePack; import org.msgpack.annotation.Message; import org.msgpack.type.Value; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; @Message public class NetworkNodePath implements NodePath { LinkedList<Integer> path; public static void main(String[] args) throws IOException { NetworkNodePath path = new NetworkNodePath(); path = path.add(1).add(2).add(3); MessagePack msgpack = new MessagePack(); Value value = msgpack.unconvert(path); NetworkNodePath mPath = msgpack.convert(value, NetworkNodePath.class); for (Integer i : mPath) { System.out.println(i); } } public NetworkNodePath() { path = new LinkedList<Integer>(); } public NetworkNodePath(NodePath _p) { path = new LinkedList<Integer>(); for(Integer pos: _p) { path.add(pos); } } private NetworkNodePath(LinkedList<Integer> _path) { path = _path; } @Override public Iterator<Integer> iterator() { return path.iterator(); } @Override public NetworkNodePath add(int _pos) { LinkedList<Integer> newPath = copyPath(); newPath.add(_pos); return new NetworkNodePath(newPath); } @Override public Pair<Integer, NodePath> pop() { LinkedList<Integer> cPath = copyPath(); int e = cPath.getFirst(); cPath.remove(); return new Pair<Integer, NodePath>(e, new NetworkNodePath(cPath)); } @Override public int size() { return path.size(); } private LinkedList<Integer> copyPath() { LinkedList<Integer> newPath = new LinkedList<Integer>(); for (Integer i : path) { newPath.add(i); } return newPath; } @Override public String toString() { return path.toString(); } }