annotate src/main/java/app/bbs/thinks/NetworkMatrixBulletinBoard.java @ 187:f9b26747ef63

add matrixBullet in board
author tatsuki
date Sat, 27 Sep 2014 16:23:21 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
187
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
1 package app.bbs.thinks;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
2
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
3 import java.io.File;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
4 import java.io.IOException;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
5 import java.nio.ByteBuffer;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
6 import java.text.SimpleDateFormat;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
7 import java.util.Date;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
8 import java.util.Iterator;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
9 import java.util.concurrent.atomic.AtomicInteger;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
10
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
27 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
28 import alice.jungle.core.NetworkDefaultJungle;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
29 import alice.jungle.persistent.AliceJournal;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
30 import alice.jungle.persistent.NetworkJournal;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
31 import alice.jungle.persistent.PersistentJournal;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
32 import alice.jungle.transaction.JungleUpdater;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
33 import app.bbs.BulletinBoardJungleManager;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
34 import app.bbs.NetworkBulletinBoard;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
35 import app.bbs.NetworkJungleBulletinBoard;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
36
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
37 public class NetworkMatrixBulletinBoard implements NetworkBulletinBoard {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
38
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
39 private final Jungle jungle;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
40 private final NetworkJournal journal;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
41 private final String LOG_DIR;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
42 private Boolean persistentFlag;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
43 private AtomicInteger requestCounter;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
44 private long renewTime;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
45
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
46 private NetworkMatrixBulletinBoard(String _uuid, NetworkJournal _journal) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
47 journal = _journal;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
48 jungle = new NetworkDefaultJungle(journal, _uuid,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
49 new DefaultTreeEditor(new DefaultTraverser()));
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
50 BulletinBoardJungleManager.setJungle(jungle);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
51 persistentFlag = false;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
52 requestCounter = BulletinBoardJungleManager.getRequestCounter();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
53 LOG_DIR = "./log";
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
54 renewTime = 0;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
55 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
56
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
57 public NetworkMatrixBulletinBoard(String _uuid) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
58 this(_uuid, new AliceJournal());
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
59 jungle.createNewTree("boards");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
60 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
61
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
62 public static NetworkBulletinBoard NewPersistentJungle(String _uuid) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
63 NetworkMatrixBulletinBoard board = new NetworkMatrixBulletinBoard( _uuid, new PersistentJournal());
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
64 board.persistentFlag = true;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
65 return board;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
66 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
67
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
68 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
69 public void init() {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
70 if (!persistentFlag) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
71 return;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
72 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
73 checkAndCreateLogDirectory();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
74 try {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
75 commitLogRecover();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
76 } catch (IOException e) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
77 e.printStackTrace();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
78 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
79 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
80
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
81 public void checkAndCreateLogDirectory() {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
82 File logFile = new File(LOG_DIR);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
83 if (!logFile.exists()) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
84 logFile.mkdir();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
85 return;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
86 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
87 if (logFile.isFile()) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
88 logFile.delete();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
89 logFile.mkdir();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
90 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
91 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
92
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
93 public void commitLogRecover() throws IOException {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
94 File[] logFiles = new File(LOG_DIR).listFiles();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
95 for (File logFile : logFiles) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
96 commitLogRecover(logFile);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
97 logFile.delete();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
98 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
99 if (jungle.getTreeByName("boards") == null) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
100 jungle.createNewTree("boards");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
101 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
102 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
103
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
104 private void commitLogRecover(File logFile) throws IOException {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
105 journal.setInputFile(logFile);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
106 ChangeListReader reader = journal.getReader();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
107 if (reader == null)
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
108 return;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
109 for (ChangeList chList : reader) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
110 String treeName = chList.getTreeName();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
111 JungleTree tree = jungle.getTreeByName(treeName);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
112 if (tree == null) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
113 tree = jungle.createNewTree(treeName);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
114 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
115 JungleTreeEditor editor = tree.getLocalTreeEditor();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
116 Either<Error, JungleTreeEditor> either = JungleUpdater.edit(editor,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
117 chList);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
118 editor = either.b();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
119 if (either.isA()) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
120 throw new IOException("Failed commit log recovery");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
121 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
122 editor.success();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
123 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
124 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
125
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
126 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
127 public Iterable<String> getBoards() {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
128 JungleTree tree = jungle.getTreeByName("boards");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
129 TreeNode node = tree.getRootNode();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
130 Children chs = node.getChildren();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
131
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
132 IterableConverter.Converter<String, TreeNode> converter = new IterableConverter.Converter<String, TreeNode>() {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
133 public String conv(TreeNode _b) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
134 ByteBuffer e = _b.getAttributes().get("name");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
135 System.out.println(new String(e.array()));
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
136 return new String(e.array());
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
137 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
138 };
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
139
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
140 return new IterableConverter<String, TreeNode>(chs, converter);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
141 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
142
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
143 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
144 public long getRenewTime(String _boardName) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
145 return renewTime;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
146 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
147
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
148 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
149 public void createBoards(String _name, String _author, String _initMessage,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
150 String _editKey) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
151 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
152
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
153 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
154
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
155 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
156 public void createBoardMessage(String _board, String _author,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
157 String _message, String _editKey) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
158 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
159
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
160 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
161
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
162 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
163 public void editMessage(String _board, String _uuid, String _author,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
164 String _message, String _editKey) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
165 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
166
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
167 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
168
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
169 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
170 public String sanitize(String str) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
171 if (str == null) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
172 return str;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
173 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
174 str = str.replaceAll("&", "&amp;");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
175 str = str.replaceAll("<", "&lt;");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
176 str = str.replaceAll(">", "&gt;");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
177 str = str.replaceAll("\"", "&quot;");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
178 str = str.replaceAll("'", "&#39;");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
179 return str;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
180 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
181
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
182 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
183 public Iterable<BoardMessage> getMessages(String _boardName) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
184 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
185 return null;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
186 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
187
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
188 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
189 public int getRequestNum() {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
190 return requestCounter.get();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
191 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
192
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
193 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
194 public Iterable<BoardMessage> getFolder(String _boardName, String nodeNum) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
195 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
196 return null;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
197 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
198
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
199 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
200 public void createFolder(String boardName, String author, String msg,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
201 String key, String _nodeNum) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
202 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
203
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
204 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
205
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
206 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
207 public void createAttribute(String boardName, String uuid, String author,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
208 String msg, String key) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
209 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
210
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
211 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
212
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
213 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
214 public getAttributeImp getAttribute(String _bname, String nodeNum) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
215 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
216 return null;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
217 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
218
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
219 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
220 public void editAttribute(String boardName, String path, String id,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
221 String message) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
222 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
223
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
224 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
225
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
226 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
227 public void deleteAttribute(String _board, String _path, String id) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
228 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
229
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
230 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
231
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
232 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
233 public void deleteNode(String _board, String _path, String id) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
234 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
235
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
236 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
237
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
238 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
239 public void editMatrixMessage(String boardName, String path, String author,
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
240 String msg, String key) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
241 // TODO Auto-generated method stub
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
242
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
243 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
244
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
245
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
246 private static class BoardMessageImpl implements BoardMessage {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
247 private final String author;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
248 private final String message;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
249 private final String uuid;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
250
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
251 public BoardMessageImpl(String _author, String _message, String _uuid) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
252 author = _author;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
253 message = _message;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
254 uuid = _uuid;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
255 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
256
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
257 public String getAuthor() {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
258 return author;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
259 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
260
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
261 public String getMessage() {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
262 return message;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
263 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
264
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
265 public String getUUID() {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
266 return uuid;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
267 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
268
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
269 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
270
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
271 public TreeNode search(JungleTree tree ,String searchAttribute,String key){
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
272 InterfaceTraverser ifTraverser = tree.getTraverser();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
273 Iterator<Pair<TreeNode, NodePath>> searchNode = ifTraverser.find(
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
274 (TreeNode node) -> {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
275 ByteBuffer attribute = node.getAttributes().get(key);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
276 if(attribute != null){
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
277 byte[] byteAttribute = attribute.array();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
278 String str = new String(byteAttribute);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
279 System.out.println(str);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
280 return str.equals(searchAttribute);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
281 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
282 return false;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
283 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
284 );
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
285
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
286 if (!searchNode.hasNext())
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
287 return null;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
288 return searchNode.next().left();
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
289
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
290 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
291
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
292 public boolean compare(TreeNode compareNode, String compareAttribute) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
293 String labName = compareNode.getAttributes().getString("mes");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
294 if (labName.equals(compareAttribute))
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
295 return true;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
296
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
297 int loopCount = 0;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
298 for (loopCount = 0 ;compareNode.getAttributes().getString("mes" + loopCount) != null; loopCount++ ) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
299 labName = compareNode.getAttributes().getString("mes" + loopCount);
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
300 if (labName.equals(compareAttribute))
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
301 return true;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
302 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
303
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
304 return false;
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
305 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
306
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
307 @Override
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
308 public String searchJungle(String requestName , String approvalName) {
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
309 JungleTree tree = jungle.getTreeByName("人物");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
310
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
311
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
312 TreeNode searchNode = search(tree , requestName,"mes");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
313 if (searchNode == null)
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
314 return "申請者がデータに無い人物です";
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
315
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
316 if (!compare(searchNode, "河野研"))
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
317 return "河野研以外に所属している人は、この申請をすることが出来ません";
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
318
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
319
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
320 searchNode = search(tree , approvalName,"mes");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
321 if (searchNode == null)
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
322 return "承認者がデータに無い人物です";
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
323
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
324 String position = searchNode.getAttributes().getString("mes1");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
325
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
326 JungleTree grantTree = jungle.getTreeByName("役職");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
327 searchNode = search(grantTree , position,"mes");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
328
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
329 if (!compare(searchNode, "准教授権限") && !compare(searchNode, "教授権限"))
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
330 return "権限がありません(この申請の承認は助教授か、教授である必要があります";
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
331
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
332
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
333 searchNode = search(tree , approvalName,"mes");
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
334 if (searchNode == null)
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
335 return "申請者がデータに無い人物です";
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
336
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
337 if (!compare(searchNode, "上位申請権限"))
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
338 return "権限がありません(この申請の承認は上位申請者である必要があります";
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
339
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
340
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
341 }
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
342
f9b26747ef63 add matrixBullet in board
tatsuki
parents:
diff changeset
343 }