Mercurial > hg > Members > nobuyasu > jungle-network
diff src/jungle/app/bbs/codesegment/ChildLogCheckCodeSegment.java @ 66:29127ac788a6
move some files
author | one |
---|---|
date | Tue, 20 Aug 2013 17:38:09 +0900 |
parents | src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java@ebf42371454b |
children | 87ec5dd0dc27 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jungle/app/bbs/codesegment/ChildLogCheckCodeSegment.java Tue Aug 20 17:38:09 2013 +0900 @@ -0,0 +1,55 @@ +package jungle.app.bbs.codesegment; + + + +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; +import alice.jungle.datasegment.HashSetDataSegment; +import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer; + +public class ChildLogCheckCodeSegment extends CodeSegment { + + Receiver host = ids.create(CommandType.PEEK); + Receiver childLog = ids.create(CommandType.TAKE); + Receiver hashLog = ids.create(CommandType.PEEK); + + public ChildLogCheckCodeSegment() { + host.setKey("host"); + childLog.setKey("local","childLog"); + hashLog.setKey("hashLog"); + } + + public ChildLogCheckCodeSegment(int index) { + host.setKey("host"); + childLog.setKey("local","childLog", index); + hashLog.setKey("hashLog"); + } + + public void run() { + int index = childLog.index; + String hostName = host.asString(); + DefaultTreeOperationLogContainer container = childLog.asClass(DefaultTreeOperationLogContainer.class); + HashSetDataSegment ds = hashLog.asClass(HashSetDataSegment.class); + if(ds.hash.contains(container.getHashLogString())) { + ods.update("hashLog", ds); + new LogUpdateCodeSegment(index); + return; + } + Either<Error, JungleTreeEditor> either = JungleManager.update(container); + if(either.isA()) { + throw new IllegalStateException(); + } + ds.hash.add(container.getHashLogString()); + ods.update("hashLog", ds); + ods.put("log", container); + new ChildLogCheckCodeSegment(index); + if(!hostName.equals("node0")) { + ods.put("parent", "childLog", container); + } + } +}