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();