Mercurial > hg > Database > jungle-network
diff src/main/java/jungle/app/bbs/codesegment/LogUpdateCodeSegment.java @ 105:f9e29a52efd3
Move some files
author | one |
---|---|
date | Tue, 26 Nov 2013 06:43:10 +0900 |
parents | src/jungle/app/bbs/codesegment/LogUpdateCodeSegment.java@55a4f2bb44a8 |
children | f42f2e6b31de |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jungle/app/bbs/codesegment/LogUpdateCodeSegment.java Tue Nov 26 06:43:10 2013 +0900 @@ -0,0 +1,51 @@ +package jungle.app.bbs.codesegment; + + + +import java.util.List; + +import alice.jungle.operations.NetworkTreeOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; +import jungle.app.bbs.JungleManager; +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.Receiver; + +public class LogUpdateCodeSegment extends CodeSegment { + + Receiver log = ids.create(CommandType.PEEK); + Receiver clist = ids.create(CommandType.PEEK); + + + public LogUpdateCodeSegment() { + log.setKey("log"); + clist.setKey("_CLIST");; + } + + public LogUpdateCodeSegment(int index) { + log.setKey("log", index); + clist.setKey("_CLIST");; + } + + public void run() { + int index = log.index; + NetworkTreeOperationLog netLog = log.asClass(NetworkTreeOperationLog.class); + @SuppressWarnings("unchecked") + List<String> list = clist.asClass(List.class); + if (!log.from.equals("local")) { + Either<Error, JungleTreeEditor> either = JungleManager.update(netLog); + if(either.isA()) { + /* Should throw after new LogUpdateCodeSegment */ + throw new IllegalStateException(); + } + } + for (String node : list) { + if (!node.equals(log.from)) { + ods.put(node, log.key, log.getVal()); + } + } + new LogUpdateCodeSegment(index); + } +}