Mercurial > hg > Database > jungle-network
comparison src/jungle/test/bbs/NetworkJungleBulletinBoard.java @ 65:ebf42371454b
remove warning
author | one |
---|---|
date | Wed, 14 Aug 2013 17:44:09 +0900 |
parents | 16135d5e804f |
children |
comparison
equal
deleted
inserted
replaced
64:16135d5e804f | 65:ebf42371454b |
---|---|
6 import java.util.concurrent.atomic.AtomicInteger; | 6 import java.util.concurrent.atomic.AtomicInteger; |
7 | 7 |
8 import alice.jungle.core.NetworkDefaultJungle; | 8 import alice.jungle.core.NetworkDefaultJungle; |
9 import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer; | 9 import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer; |
10 import alice.jungle.transaction.NetworkDefaultJungleTreeEditor; | 10 import alice.jungle.transaction.NetworkDefaultJungleTreeEditor; |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; | 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; | 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | 16 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; | 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; |
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; | 18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; |
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode; | 19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode; |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; | 20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | 22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; |
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; | 23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; |
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | 24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | 25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; |
26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter; | 26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter; |
27 import jungle.test.bbs.codesegment.HashLogUpdateCodeSegment; | 27 import jungle.test.bbs.codesegment.HashLogUpdateCodeSegment; |
28 import jungle.test.bbs.codesegment.NullCodeSegmentForUpdate; | |
29 | 28 |
30 public class NetworkJungleBulletinBoard implements BulletinBoard | 29 public class NetworkJungleBulletinBoard implements BulletinBoard |
31 { | 30 { |
32 private final Jungle jungle; | 31 private final Jungle jungle; |
33 | 32 |
125 JungleTree tree = jungle.getTreeByName(_board); | 124 JungleTree tree = jungle.getTreeByName(_board); |
126 if(tree == null){ | 125 if(tree == null){ |
127 throw new IllegalStateException(); | 126 throw new IllegalStateException(); |
128 } | 127 } |
129 | 128 |
130 JungleTreeEditor editor; | |
131 Either<Error, JungleTreeEditor> either; | 129 Either<Error, JungleTreeEditor> either; |
132 do{ | 130 do{ |
133 Node node = tree.getRootNode(); | 131 Node node = tree.getRootNode(); |
134 int size = node.getChildren().size(); | 132 int size = node.getChildren().size(); |
135 DefaultNodePath path = new DefaultNodePath(); | 133 DefaultNodePath path = new DefaultNodePath(); |
136 | 134 |
137 editor = tree.getTreeEditor(); | 135 JungleTreeEditor editor = tree.getTreeEditor(); |
138 either = editor.addNewChildAt(path,size); | 136 either = editor.addNewChildAt(path,size); |
139 if(either.isA()){ | 137 if(either.isA()){ |
140 throw new IllegalStateException(); | 138 throw new IllegalStateException(); |
141 } | 139 } |
142 editor = either.b(); | 140 editor = either.b(); |
157 throw new IllegalStateException(); | 155 throw new IllegalStateException(); |
158 } | 156 } |
159 editor = either.b(); | 157 editor = either.b(); |
160 either = editor.success(); | 158 either = editor.success(); |
161 try { | 159 try { |
162 putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, size, timestamp); | 160 NetworkDefaultJungleTreeEditor<DefaultTreeNode> netEditor = (NetworkDefaultJungleTreeEditor<DefaultTreeNode>) editor; |
161 putTreeOperationLog(netEditor, size, timestamp); | |
163 } catch (IOException e1) { | 162 } catch (IOException e1) { |
164 e1.printStackTrace(); | 163 e1.printStackTrace(); |
165 } | 164 } |
166 }while(either.isA()); | 165 }while(either.isA()); |
167 /* Put DataSegment */ | 166 /* Put DataSegment */ |
168 } | 167 } |
169 | 168 |
170 public void editMessage(String _board,String _uuid,final String _author,final String _message,final String _editKey) | 169 public void editMessage(String _board,String _uuid,final String _author,final String _message,final String _editKey) |
171 { | 170 { |
172 JungleTreeEditor editor = null; | 171 for(;;) { |
173 Either<Error,JungleTreeEditor> either = null; | |
174 do{ | |
175 DefaultNodePath path = new DefaultNodePath(); | 172 DefaultNodePath path = new DefaultNodePath(); |
176 path = path.add(Integer.parseInt(_uuid)); | 173 path = path.add(Integer.parseInt(_uuid)); |
177 | 174 |
178 JungleTree tree = jungle.getTreeByName(_board); | 175 JungleTree tree = jungle.getTreeByName(_board); |
179 editor = tree.getTreeEditor(); | 176 JungleTreeEditor editor = tree.getTreeEditor(); |
180 final long timestamp = new Date().getTime(); | 177 final long timestamp = new Date().getTime(); |
181 NodeEditor e = new NodeEditor(){ | 178 NodeEditor e = new NodeEditor(){ |
182 public <T extends EditableNode<T>> Either<Error, T> edit(T _e){ | 179 public <T extends EditableNode<T>> Either<Error, T> edit(T _e){ |
183 _e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b(); | 180 _e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b(); |
184 _e = _e.getAttributes().put("mes",ByteBuffer.wrap(_message.getBytes())).b(); | 181 _e = _e.getAttributes().put("mes",ByteBuffer.wrap(_message.getBytes())).b(); |
187 _e = _e.getAttributes().put("timestamp",tBuffer.putLong(timestamp)).b(); | 184 _e = _e.getAttributes().put("timestamp",tBuffer.putLong(timestamp)).b(); |
188 return DefaultEither.newB(_e); | 185 return DefaultEither.newB(_e); |
189 } | 186 } |
190 }; | 187 }; |
191 | 188 |
192 either = editor.edit(path,e); | 189 Either<Error, JungleTreeEditor> either = editor.edit(path,e); |
193 if(either.isA()){ | 190 if(either.isA()){ |
194 throw new IllegalStateException(); | 191 throw new IllegalStateException(); |
195 } | 192 } |
196 editor = either.b(); | 193 editor = either.b(); |
197 either = editor.success(); | 194 either = editor.success(); |
198 try { | 195 try { |
199 putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, Integer.parseInt(_uuid), timestamp); | 196 putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor, Integer.parseInt(_uuid), timestamp); |
200 } catch (IOException e1) { | 197 } catch (IOException e1) { |
201 e1.printStackTrace(); | 198 e1.printStackTrace(); |
202 } | 199 } |
203 }while(either.isA()); | 200 if(!either.isA()) { |
201 return; | |
202 } | |
203 } | |
204 | |
204 } | 205 } |
205 | 206 |
206 public Iterable<BoardMessage> getMessages(String _boardName) | 207 public Iterable<BoardMessage> getMessages(String _boardName) |
207 { | 208 { |
208 JungleTree tree = jungle.getTreeByName(_boardName); | 209 JungleTree tree = jungle.getTreeByName(_boardName); |
221 }; | 222 }; |
222 | 223 |
223 return new IterableConverter<BoardMessage,Node>(chs,converter); | 224 return new IterableConverter<BoardMessage,Node>(chs,converter); |
224 } | 225 } |
225 | 226 |
226 private void putTreeOperationLog(NetworkDefaultJungleTreeEditor editor, int pos, long timestamp) throws IOException { | 227 private void putTreeOperationLog(NetworkDefaultJungleTreeEditor<DefaultTreeNode> editor, int pos, long timestamp) throws IOException { |
227 String uuid = editor.getID(); | 228 String uuid = editor.getID(); |
228 String treeName = editor.getTreeName(); | 229 String treeName = editor.getTreeName(); |
229 String updaterName = editor.getUpdaterName(); | 230 String updaterName = editor.getUpdaterName(); |
230 String revision = editor.getRevision(); | 231 String revision = editor.getRevision(); |
231 Iterable<TreeOperation> log = editor.getTreeOperationLog(); | 232 Iterable<TreeOperation> log = editor.getTreeOperationLog(); |