Mercurial > hg > Members > nobuyasu > jungle-network
comparison src/main/java/app/bbs/BulletinBoardJungleManager.java @ 147:202ea963ec20
Added requestCounter in BulletinBoardJungleManager
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 28 Jan 2014 09:16:39 +0900 |
parents | 29734d7d6521 |
children | 7d248be1d3e4 |
comparison
equal
deleted
inserted
replaced
146:29734d7d6521 | 147:202ea963ec20 |
---|---|
1 package app.bbs; | 1 package app.bbs; |
2 | 2 |
3 import java.nio.ByteBuffer; | 3 import java.nio.ByteBuffer; |
4 import java.util.Date; | 4 import java.util.Date; |
5 import java.util.concurrent.atomic.AtomicInteger; | |
5 | 6 |
6 import javax.naming.directory.Attribute; | |
7 | 7 |
8 import alice.jungle.operations.NetworkTreeOperationLog; | 8 import alice.jungle.operations.NetworkTreeOperationLog; |
9 import alice.jungle.transaction.JungleUpdater; | 9 import alice.jungle.transaction.JungleUpdater; |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Attributes; | |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; | 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; |
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; |
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | 18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | 19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; |
22 | 20 |
23 public class BulletinBoardJungleManager { | 21 public class BulletinBoardJungleManager { |
24 private static BulletinBoardJungleManager instance = new BulletinBoardJungleManager(); | 22 private static BulletinBoardJungleManager instance = new BulletinBoardJungleManager(); |
25 private Jungle jungle; | 23 private Jungle jungle; |
24 private static AtomicInteger requestCounter = new AtomicInteger(0); | |
26 | 25 |
27 private BulletinBoardJungleManager() { | 26 private BulletinBoardJungleManager() { |
28 jungle = new DefaultJungle(null,"default",new DefaultTreeEditor(new DefaultTraverser())); | 27 jungle = new DefaultJungle(null,"default",new DefaultTreeEditor(new DefaultTraverser())); |
28 } | |
29 | |
30 public static int requestGetAndIncrement() { | |
31 return requestCounter.getAndIncrement(); | |
32 } | |
33 | |
34 public static int requestIncrementAndGet() { | |
35 return requestCounter.incrementAndGet(); | |
29 } | 36 } |
30 | 37 |
31 public static BulletinBoardJungleManager getInstantce() { | 38 public static BulletinBoardJungleManager getInstantce() { |
32 return instance; | 39 return instance; |
33 } | 40 } |
34 | 41 |
35 public static void setJungle(Jungle _j) { | 42 public static void setJungle(Jungle _j) { |
36 instance.jungle = _j; | 43 instance.jungle = _j; |
44 } | |
45 public static AtomicInteger getRequestCounter() { | |
46 return requestCounter; | |
37 } | 47 } |
38 | 48 |
39 public static Jungle getJungle() { | 49 public static Jungle getJungle() { |
40 return instance.jungle; | 50 return instance.jungle; |
41 } | 51 } |
50 if (jungle.getTreeByName(treeName) == null) { | 60 if (jungle.getTreeByName(treeName) == null) { |
51 if(null == jungle.createNewTree(treeName)){ | 61 if(null == jungle.createNewTree(treeName)){ |
52 throw new IllegalStateException(); | 62 throw new IllegalStateException(); |
53 } | 63 } |
54 } | 64 } |
55 | |
56 | |
57 Either<Error, JungleTreeEditor> either = null; | 65 Either<Error, JungleTreeEditor> either = null; |
58 JungleTree tree = jungle.getTreeByName(treeName); | 66 JungleTree tree = jungle.getTreeByName(treeName); |
59 | 67 |
60 do { | 68 do { |
61 JungleTreeEditor editor = tree.getLocalTreeEditor(); | 69 JungleTreeEditor editor = tree.getLocalTreeEditor(); |
71 editor = either.b(); | 79 editor = either.b(); |
72 either = editor.success(); | 80 either = editor.success(); |
73 }while(either.isA()); | 81 }while(either.isA()); |
74 | 82 |
75 renewBoardTimeStamp(tree); | 83 renewBoardTimeStamp(tree); |
84 requestCounter.incrementAndGet(); | |
76 return either; | 85 return either; |
77 } | 86 } |
78 | 87 |
79 private static void renewBoardTimeStamp(JungleTree tree) { | 88 private static void renewBoardTimeStamp(JungleTree tree) { |
80 JungleTreeEditor editor = tree.getLocalTreeEditor(); | 89 JungleTreeEditor editor = tree.getLocalTreeEditor(); |
84 tBuffer.putLong(timestamp); | 93 tBuffer.putLong(timestamp); |
85 | 94 |
86 Either<Error, JungleTreeEditor> either = null; | 95 Either<Error, JungleTreeEditor> either = null; |
87 do { | 96 do { |
88 either = editor.putAttribute(root, "renewtime", tBuffer); | 97 either = editor.putAttribute(root, "renewtime", tBuffer); |
98 if(either.isA()) { | |
99 throw new IllegalStateException(); | |
100 } | |
89 editor = either.b(); | 101 editor = either.b(); |
90 either = editor.success(); | 102 either = editor.success(); |
91 }while(either.isA()); | 103 }while(either.isA()); |
92 | |
93 } | 104 } |
94 | 105 |
95 private static int calculatePosition(Node node, long newNodeTimeStamp) { | 106 private static int calculatePosition(Node node, long newNodeTimeStamp) { |
96 int count = 0; | 107 int count = 0; |
97 long childTimeStamp = 0; | 108 long childTimeStamp = 0; |