annotate src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/network/codesegment/LogUpdateCodeSegment.java @ 8:766f7668521f

commit
author tatsuki
date Thu, 02 Feb 2017 23:05:59 +0900
parents f3d30646c863
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.bbs.network.codesegment;
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
2
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
3 import alice.codesegment.CodeSegment;
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
4 import alice.datasegment.CommandType;
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
5 import alice.datasegment.Receiver;
8
tatsuki
parents: 3
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
2
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
8
tatsuki
parents: 3
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.bbs.network.bbs.BulletinBoardJungleManager;
tatsuki
parents: 3
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error;
2
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkTreeOperationLog;
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
11
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
12 import java.util.List;
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
13
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
14 public class LogUpdateCodeSegment extends CodeSegment {
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
15
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
16 Receiver log = ids.create(CommandType.TAKE);
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
17 Receiver clist = ids.create(CommandType.PEEK);
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
18
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
19 public LogUpdateCodeSegment() {
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
20 log.setKey("log");
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
21 clist.setKey("_CLIST");;
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
22 }
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
23
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
24 public LogUpdateCodeSegment(int index) {
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
25 log.setKey("log", index);
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
26 clist.setKey("_CLIST");;
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
27 }
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
28
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
29 public void run() {
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
30 int index = log.index;
3
f3d30646c863 fix error
tatsuki
parents: 2
diff changeset
31 new LogUpdateCodeSegment();
2
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
32 NetworkTreeOperationLog netLog = log.asClass(NetworkTreeOperationLog.class);
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
33 @SuppressWarnings("unchecked")
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
34 List<String> list = clist.asClass(List.class);
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
35 for (String node : list) {
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
36 if (!node.equals(log.from)) {
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
37 ods.put(node, log.key, log.getVal());
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
38 }
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
39 }
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
40 if (!log.from.equals("local")) {
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
41 Either<Error, JungleTreeEditor> either = BulletinBoardJungleManager.update(netLog);
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
42 if(either.isA()) {
3
f3d30646c863 fix error
tatsuki
parents: 2
diff changeset
43 new LogUpdateCodeSegment(index);
2
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
44 throw new IllegalStateException();
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
45 }
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
46 }
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
47 }
3c188a5b69ef add network bbs
tatsuki
parents:
diff changeset
48 }