annotate src/main/java/app/bbs/NetworkJungleBulletinBoard.java @ 175:ac7d1070f449

sanitizing
author tatsuki
date Wed, 30 Jul 2014 22:17:23 +0900
parents e30880a72909
children 6f104ab4eb81
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
112
8f9811a1e00c Moved app files
one
parents: 105
diff changeset
1 package app.bbs;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
2
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
3 import java.io.File;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
4 import java.io.IOException;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
5 import java.nio.ByteBuffer;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
6 import java.util.concurrent.atomic.AtomicInteger;
39
10359a815068 add alice.jungle.codesegment.remote
one
parents: 38
diff changeset
7
10359a815068 add alice.jungle.codesegment.remote
one
parents: 38
diff changeset
8 import alice.jungle.core.NetworkDefaultJungle;
124
dacfa7eba841 To select persistent mode "-persistent"
one
parents: 123
diff changeset
9 import alice.jungle.persistent.AliceJournal;
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
10 import alice.jungle.persistent.NetworkJournal;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
11 import alice.jungle.persistent.PersistentJournal;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
12 import alice.jungle.transaction.JungleUpdater;
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
13 import app.bbs.thinks.getAttributeImp;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
125
6104702a1880 Added dependency bulletinboard in pom.xml
one
parents: 124
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TraversableNodeWrapper;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
27 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
28 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
29 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
30 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
31 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
32 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
33 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
34 import junit.framework.Assert;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
35
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
36 public class NetworkJungleBulletinBoard implements NetworkBulletinBoard {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
37 private final Jungle jungle;
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
38 private final NetworkJournal journal;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
39 private final String LOG_DIR;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
40 private Boolean persistentFlag;
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
41 private AtomicInteger requestCounter;
150
eef85b5faa15 Removed renew atribute
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
42 private long renewTime;
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
43
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
44 private NetworkJungleBulletinBoard(String _uuid, NetworkJournal _journal) {
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
45 journal = _journal;
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
46 jungle = new NetworkDefaultJungle(journal, _uuid, new DefaultTreeEditor(new DefaultTraverser()));
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
47 BulletinBoardJungleManager.setJungle(jungle);
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
48 persistentFlag = false;
147
202ea963ec20 Added requestCounter in BulletinBoardJungleManager
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 146
diff changeset
49 requestCounter = BulletinBoardJungleManager.getRequestCounter();
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
50 LOG_DIR = "./log";
150
eef85b5faa15 Removed renew atribute
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
51 renewTime = 0;
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
52 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
53
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
54 public NetworkJungleBulletinBoard(String _uuid) {
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
55 this(_uuid, new AliceJournal());
124
dacfa7eba841 To select persistent mode "-persistent"
one
parents: 123
diff changeset
56 jungle.createNewTree("boards");
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
57 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
58
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
59 public static NetworkBulletinBoard NewPersistentJungle(String _uuid) {
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
60 NetworkJungleBulletinBoard board = new NetworkJungleBulletinBoard( _uuid, new PersistentJournal());
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
61 board.persistentFlag = true;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
62 return board;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
63 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
64
124
dacfa7eba841 To select persistent mode "-persistent"
one
parents: 123
diff changeset
65 public void init() {
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
66 if (!persistentFlag) {
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
67 return;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
68 }
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
69 checkAndCreateLogDirectory();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
70 try {
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
71 commitLogRecover();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
72 } catch (IOException e) {
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
73 e.printStackTrace();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
74 }
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
75 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
76
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
77 public void checkAndCreateLogDirectory() {
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
78 File logFile = new File(LOG_DIR);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
79 if (!logFile.exists()) {
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
80 logFile.mkdir();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
81 return;
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
82 }
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
83 if (logFile.isFile()) {
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
84 logFile.delete();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
85 logFile.mkdir();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
86 }
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
87 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
88
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
89 public void commitLogRecover() throws IOException {
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
90 File[] logFiles = new File(LOG_DIR).listFiles();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
91 for (File logFile : logFiles) {
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
92 commitLogRecover(logFile);
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
93 logFile.delete();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
94 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
95 if (jungle.getTreeByName("boards") == null) {
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
96 jungle.createNewTree("boards");
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
97 }
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
98 }
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
99
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
100 private void commitLogRecover(File logFile) throws IOException {
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
101 journal.setInputFile(logFile);
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
102 ChangeListReader reader = journal.getReader();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
103 if (reader == null)
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
104 return;
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
105 for (ChangeList chList : reader) {
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
106 String treeName = chList.getTreeName();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
107 JungleTree tree = jungle.getTreeByName(treeName);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
108 if (tree == null) {
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
109 tree = jungle.createNewTree(treeName);
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
110 }
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
111 JungleTreeEditor editor = tree.getLocalTreeEditor();
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
112 Either<Error, JungleTreeEditor> either = JungleUpdater.edit(editor, chList);
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
113 editor = either.b();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
114 if (either.isA()) {
135
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
115 throw new IOException("Failed commit log recovery");
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
116 }
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
117 editor.success();
2e8034524259 Added NetworkJournal and SingletonMessageFromAlice class
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 133
diff changeset
118 }
118
f64ff5bd66f5 Implements persistent for bbs app and Fixed bug JungleUpdater
one
parents: 112
diff changeset
119 }
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
120
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
121 public Iterable<String> getBoards() {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
122 JungleTree tree = jungle.getTreeByName("boards");
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
123 Node node = tree.getRootNode();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
124 Children<Node> chs = node.getChildren();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
125
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
126 IterableConverter.Converter<String, Node> converter = new IterableConverter.Converter<String, Node>() {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
127 public String conv(Node _b) {
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
128 ByteBuffer e = _b.getAttributes().get("name");
173
e30880a72909 change servlet encode utf-8
tatsuki
parents: 171
diff changeset
129 System.out.println(new String(e.array()));
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
130 return new String(e.array());
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
131 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
132 };
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
133
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
134 return new IterableConverter<String, Node>(chs, converter);
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
135 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
136
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
137 public long getRenewTime(String _boardName) {
150
eef85b5faa15 Removed renew atribute
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
138 return renewTime;
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
139 }
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
140
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
141 public void createBoards(final String _name, final String _author, final String _initMessage, final String _editKey) {
143
7a7bac51a3cc Added RequestNumCheckServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
142 requestCounter.incrementAndGet();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
143 if (null == jungle.createNewTree(_name)) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
144 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
145 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
146
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
147 JungleTree tree = jungle.getTreeByName("boards");
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
148 JungleTreeEditor editor = tree.getTreeEditor();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
149 DefaultNodePath root = new DefaultNodePath();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
150 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(root, 0);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
151 if (either.isA()) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
152 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
153 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
154 editor = either.b();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
155
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
156 either = editor.putAttribute(root.add(0), "name",ByteBuffer.wrap(_name.getBytes()));
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
157 if (either.isA()) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
158 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
159 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
160 editor = either.b();
149
06cddf529325 Modified lates renew time
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 147
diff changeset
161 final long timestamp = System.currentTimeMillis();
129
1a3edba05f50 Fixed bug NetworkJungleBulletinBoard
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 126
diff changeset
162 ByteBuffer tBuffer = ByteBuffer.allocate(16);
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
163 tBuffer.putLong(timestamp);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
164 either = editor.putAttribute(root.add(0), "timestamp", tBuffer);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
165 if (either.isA()) {
129
1a3edba05f50 Fixed bug NetworkJungleBulletinBoard
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 126
diff changeset
166 throw new IllegalStateException();
1a3edba05f50 Fixed bug NetworkJungleBulletinBoard
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 126
diff changeset
167 }
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
168 either = either.b().success();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
169 if (either.isA()) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
170 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
171 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
172
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
173 tree = jungle.getTreeByName(_name);
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
174 editor = tree.getTreeEditor();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
175 either = editor.addNewChildAt(root, 0);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
176 if (either.isA()) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
177 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
178 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
179 editor = either.b();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
180
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
181 NodeEditor e = new NodeEditor() {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
182 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
183 _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
184 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_initMessage.getBytes())).b();
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
185 _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
130
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 129
diff changeset
186 ByteBuffer tBuffer2 = ByteBuffer.allocate(16);
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
187 tBuffer2.putLong(timestamp);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
188 _e = _e.getAttributes().put("timestamp", tBuffer2).b();
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
189 return DefaultEither.newB(_e);
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
190 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
191 };
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
192
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
193 either = editor.edit(root.add(0), e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
194 if (either.isA()) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
195 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
196 }
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
197 either.b().success();
147
202ea963ec20 Added requestCounter in BulletinBoardJungleManager
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 146
diff changeset
198
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
199 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
200
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
201 public void createFolder(final String _board, final String _author, final String _message, final String _editKey, String _nodeNum) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
202 JungleTree tree = jungle.getTreeByName(_board);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
203 if (tree == null) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
204 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
205 }
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
206
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
207 DefaultNodePath path = new DefaultNodePath();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
208 try {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
209 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
210 if (!_nodeNum.substring(count, count + 1).equals("/"))
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
211 path = path.add(Integer.parseInt(_nodeNum.substring(count, count + 1)));
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
212 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
213 } catch (Exception _e) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
214 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
215 requestCounter.incrementAndGet();
46
fd3643699f83 modified pom.xml. fix conflict log4j libraries
one
parents: 45
diff changeset
216 Either<Error, JungleTreeEditor> either;
149
06cddf529325 Modified lates renew time
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 147
diff changeset
217 final long timestamp = System.currentTimeMillis();
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
218 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
219 tBuffer.putLong(timestamp);
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
220
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
221 do {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
222 Node node = tree.getRootNode();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
223 DefaultTraverser traverser = new DefaultTraverser();
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
224 TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>(node);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
225 DefaultEvaluator evaluator = new DefaultEvaluator(path);
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
226 Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser.traverse(traversable, evaluator);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
227 if (ret.isA()) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
228 Assert.fail();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
229 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
230
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
231 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
232 TraversableNodeWrapper<Node> target = traversal.destination();
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
233 int size = target.getWrapped().getChildren().size();
65
ebf42371454b remove warning
one
parents: 64
diff changeset
234 JungleTreeEditor editor = tree.getTreeEditor();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
235 either = editor.addNewChildAt(path, size);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
236 if (either.isA()) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
237 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
238 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
239 editor = either.b();
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
240
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
241 NodeEditor e = new NodeEditor() {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
242 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
243 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
244 _e = _e.getAttributes().put("timestamp", tBuffer).b();
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
245 return DefaultEither.newB(_e);
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
246 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
247 };
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
248 path = path.add(size);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
249 either = editor.edit(path, e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
250 if (either.isA()) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
251 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
252 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
253 editor = either.b();
46
fd3643699f83 modified pom.xml. fix conflict log4j libraries
one
parents: 45
diff changeset
254 either = editor.success();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
255 } while (either.isA());
93
75cf01a430a6 Added LocalTreeEditor
one
parents: 92
diff changeset
256
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
257 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
258
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
259 public void createBoardMessage(final String _board, final String _author, final String _message, final String _editKey) {
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
260 requestCounter.incrementAndGet();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
261 JungleTree tree = jungle.getTreeByName(_board);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
262 if (tree == null) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
263 throw new IllegalStateException();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
264 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
265
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
266 Either<Error, JungleTreeEditor> either;
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
267 final long timestamp = System.currentTimeMillis();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
268 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
269 tBuffer.putLong(timestamp);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
270 do {
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
271
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
272 Node node = tree.getRootNode();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
273 int size = node.getChildren().size();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
274 DefaultNodePath path = new DefaultNodePath();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
275
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
276 JungleTreeEditor editor = tree.getTreeEditor();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
277 either = editor.addNewChildAt(path, size);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
278 if (either.isA()) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
279 throw new IllegalStateException();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
280 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
281 editor = either.b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
282
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
283 NodeEditor e = new NodeEditor() {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
284 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
285 _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
286 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
287 _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
288 _e = _e.getAttributes().put("timestamp", tBuffer).b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
289 return DefaultEither.newB(_e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
290 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
291 };
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
292 path = path.add(size);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
293 either = editor.edit(path, e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
294 if (either.isA()) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
295 throw new IllegalStateException();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
296 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
297 editor = either.b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
298 either = editor.success();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
299 } while (either.isA());
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
300
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
301 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
302
168
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
303 public void editMessage(String _board, String _nodeNum, final String _author, final String _message, final String _editKey) {
143
7a7bac51a3cc Added RequestNumCheckServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
304 requestCounter.incrementAndGet();
149
06cddf529325 Modified lates renew time
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 147
diff changeset
305 final long timestamp = System.currentTimeMillis();
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
306 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
307 tBuffer.putLong(timestamp);
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
308 JungleTree tree = jungle.getTreeByName(_board);
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
309 Either<Error, JungleTreeEditor> either = null;
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
310
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
311 do {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
312 DefaultNodePath path = new DefaultNodePath();
168
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
313 try {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
314 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
315 if (!_nodeNum.substring(count, count + 1).equals("/"))
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
316 path = path.add(Integer.parseInt(_nodeNum.substring(count,count + 1)));
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
317 }
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
318 } catch (Exception _e) {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
319 }
65
ebf42371454b remove warning
one
parents: 64
diff changeset
320 JungleTreeEditor editor = tree.getTreeEditor();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
321 NodeEditor e = new NodeEditor() {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
322 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
323 _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
324 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
325 _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
326 _e = _e.getAttributes().put("timestamp", tBuffer).b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
327 return DefaultEither.newB(_e);
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
328 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
329 };
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
330 either = editor.edit(path, e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
331 if (either.isA()) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
332 throw new IllegalStateException();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
333 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
334 editor = either.b();
46
fd3643699f83 modified pom.xml. fix conflict log4j libraries
one
parents: 45
diff changeset
335 either = editor.success();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
336 } while (either.isA());
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
337 renewTime = timestamp;
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
338 }
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
339
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
340 public void createAttribute(String _board, String _uuid, final String _author, final String _message, final String _editKey) {
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
341 requestCounter.incrementAndGet();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
342 final long timestamp = System.currentTimeMillis();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
343 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
344 tBuffer.putLong(timestamp);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
345 JungleTree tree = jungle.getTreeByName(_board);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
346 Either<Error, JungleTreeEditor> either = null;
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
347 DefaultNodePath path = new DefaultNodePath();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
348 do {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
349 try {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
350 for (int count = 0; _uuid.substring(count, count + 1) != null; count++) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
351 if (!_uuid.substring(count, count + 1).equals("/"))
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
352 path = path.add(Integer.parseInt(_uuid.substring(count, count + 1)));
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
353 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
354 } catch (Exception _e) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
355 }
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
356
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
357 JungleTreeEditor editor = tree.getTreeEditor();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
358 NodeEditor e = new NodeEditor() {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
359 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
360 String str = "0";
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
361 int count = 0;
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
362 for (; _e.getAttributes().get("mes" + String.valueOf(count)) != null; count++) {
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
363 }
168
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
364 str = String.valueOf(count);
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
365 _e = _e.getAttributes().put("mes" + str, ByteBuffer.wrap(_message.getBytes())).b();
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
366 _e = _e.getAttributes().put("timestamp" + str, tBuffer).b();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
367 return DefaultEither.newB(_e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
368 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
369 };
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
370 either = editor.edit(path, e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
371 if (either.isA()) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
372 throw new IllegalStateException();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
373 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
374 editor = either.b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
375 either = editor.success();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
376 } while (either.isA());
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
377 }
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
378
173
e30880a72909 change servlet encode utf-8
tatsuki
parents: 171
diff changeset
379 public void editAttribute(String boardName, String _path, final String id, final String _message) {
168
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
380 requestCounter.incrementAndGet();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
381 final long timestamp = System.currentTimeMillis();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
382 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
383 tBuffer.putLong(timestamp);
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
384 JungleTree tree = jungle.getTreeByName(boardName);
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
385 Either<Error, JungleTreeEditor> either = null;
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
386 DefaultNodePath path = new DefaultNodePath();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
387 do {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
388 try {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
389 for (int count = 0; _path.substring(count, count + 1) != null; count++) {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
390 if (!_path.substring(count, count + 1).equals("/"))
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
391 path = path.add(Integer.parseInt(_path.substring(count, count + 1)));
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
392 }
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
393 } catch (Exception _e) {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
394 }
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
395
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
396 JungleTreeEditor editor = tree.getTreeEditor();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
397 NodeEditor e = new NodeEditor() {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
398 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
399 // EnableNodeWrapper<T> node = _e.getWrap();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
400 _e = _e.getAttributes().put("mes" + id, ByteBuffer.wrap(_message.getBytes())).b();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
401 _e = _e.getAttributes().put("timestamp" + id, tBuffer).b();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
402 return DefaultEither.newB(_e);
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
403 }
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
404 };
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
405 either = editor.edit(path, e);
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
406 if (either.isA()) {
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
407 throw new IllegalStateException();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
408 }
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
409 editor = either.b();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
410 either = editor.success();
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
411 } while (either.isA());
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
412 }
170
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
413
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
414
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
415 public void deleteNode(String _board, String _path, String _id) {
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
416 requestCounter.incrementAndGet();
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
417 int id = Integer.parseInt(_id);
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
418 final long timestamp = System.currentTimeMillis();
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
419 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
420 tBuffer.putLong(timestamp);
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
421 JungleTree tree = jungle.getTreeByName(_board);
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
422 Either<Error, JungleTreeEditor> either = null;
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
423 DefaultNodePath path = new DefaultNodePath();
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
424 do {
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
425 try {
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
426 for (int count = 0; _path.substring(count, count + 1) != null; count++) {
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
427 if (!_path.substring(count, count + 1).equals("/"))
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
428 path = path.add(Integer.parseInt(_path.substring(count, count + 1)));
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
429 }
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
430 } catch (Exception _e) {
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
431 }
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
432
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
433 JungleTreeEditor editor = tree.getTreeEditor();
168
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
434
170
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
435 either = editor.deleteChildAt(path, id);
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
436 if (either.isA()) {
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
437 throw new IllegalStateException();
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
438 }
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
439 editor = either.b();
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
440 either = editor.success();
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
441 } while (either.isA());
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
442
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
443 }
169
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
444 public void deleteAttribute(String _board, String _path ,final String id) {
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
445 requestCounter.incrementAndGet();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
446 final long timestamp = System.currentTimeMillis();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
447 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
448 tBuffer.putLong(timestamp);
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
449 JungleTree tree = jungle.getTreeByName(_board);
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
450 Either<Error, JungleTreeEditor> either = null;
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
451 DefaultNodePath path = new DefaultNodePath();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
452 do {
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
453 try {
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
454 for (int count = 0; _path.substring(count, count + 1) != null; count++) {
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
455 if (!_path.substring(count, count + 1).equals("/"))
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
456 path = path.add(Integer.parseInt(_path.substring(count, count + 1)));
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
457 }
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
458 } catch (Exception _e) {
175
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
459 System.out.println("屑");
169
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
460 }
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
461
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
462 JungleTreeEditor editor = tree.getTreeEditor();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
463 NodeEditor e = new NodeEditor() {
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
464 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
465 _e = _e.getAttributes().delete("mes" + id ).b();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
466 _e = _e.getAttributes().delete("timestamp" + id ).b();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
467 int count = Integer.parseInt(id);
171
00c3cca1903c delete nod method bug fix
tatsuki
parents: 170
diff changeset
468 for (; _e.getAttributes().get("mes" + String.valueOf(count + 1)) != null;) {
169
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
469 _e = _e.getAttributes().put("mes" + count, _e.getAttributes().get("mes" + String.valueOf(count + 1))).b();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
470 _e = _e.getAttributes().put("timestamp" + count, tBuffer).b();
171
00c3cca1903c delete nod method bug fix
tatsuki
parents: 170
diff changeset
471 count++;
169
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
472 }
171
00c3cca1903c delete nod method bug fix
tatsuki
parents: 170
diff changeset
473 if(count != Integer.parseInt(id)){
00c3cca1903c delete nod method bug fix
tatsuki
parents: 170
diff changeset
474 _e = _e.getAttributes().delete("timestamp" + count ).b();
00c3cca1903c delete nod method bug fix
tatsuki
parents: 170
diff changeset
475 _e = _e.getAttributes().delete("mes" + count ).b();
00c3cca1903c delete nod method bug fix
tatsuki
parents: 170
diff changeset
476 }
00c3cca1903c delete nod method bug fix
tatsuki
parents: 170
diff changeset
477
169
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
478 return DefaultEither.newB(_e);
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
479 }
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
480 };
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
481 either = editor.edit(path, e);
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
482 if (either.isA()) {
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
483 throw new IllegalStateException();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
484 }
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
485 editor = either.b();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
486 either = editor.success();
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
487 } while (either.isA());
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
488 }
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
489
2403b9a4416f create Delete Attribute Method
tatsuki
parents: 168
diff changeset
490
168
54d68cda84c4 create edit Attribute & Folder Method
tatsuki
parents: 167
diff changeset
491
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
492 public void editMatrixMessage(String _board, String _uuid, final String _author, final String _message, final String _editKey) {
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
493 requestCounter.incrementAndGet();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
494 final long timestamp = System.currentTimeMillis();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
495 final ByteBuffer tBuffer = ByteBuffer.allocate(16);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
496 tBuffer.putLong(timestamp);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
497 JungleTree tree = jungle.getTreeByName(_board);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
498 Either<Error, JungleTreeEditor> either = null;
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
499 do {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
500 DefaultNodePath path = new DefaultNodePath();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
501 path = path.add(Integer.parseInt(_uuid));
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
502
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
503 JungleTreeEditor editor = tree.getTreeEditor();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
504 NodeEditor e = new NodeEditor() {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
505 public <T extends EditableNode<T>> Either<Error, T> edit(T _e) {
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
506 _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
507 _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
508 _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
509 _e = _e.getAttributes().put("timestamp", tBuffer).b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
510 return DefaultEither.newB(_e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
511 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
512 };
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
513 either = editor.edit(path, e);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
514 if (either.isA()) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
515 throw new IllegalStateException();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
516 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
517 editor = either.b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
518 either = editor.success();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
519 } while (either.isA());
150
eef85b5faa15 Removed renew atribute
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 149
diff changeset
520 renewTime = timestamp;
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
521 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
522
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
523 public Iterable<BoardMessage> getMessages(String _boardName) {
143
7a7bac51a3cc Added RequestNumCheckServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
524 requestCounter.incrementAndGet();
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
525 JungleTree tree = jungle.getTreeByName(_boardName);
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
526 Node node = tree.getRootNode();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
527 Children<Node> chs = node.getChildren();
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
528 final AtomicInteger counter = new AtomicInteger(0);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
529 IterableConverter.Converter<BoardMessage, Node> converter = new IterableConverter.Converter<BoardMessage, Node>() {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
530 public BoardMessage conv(Node _b) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
531 String uuid = Integer.toString(counter.get());
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
532 String author = new String(_b.getAttributes().get("author") .array());
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
533 String message = new String(_b.getAttributes().get("mes").array());
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
534 counter.incrementAndGet();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
535 return new BoardMessageImpl(author, message, uuid);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
536 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
537 };
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
538 return new IterableConverter<BoardMessage, Node>(chs, converter);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
539 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
540
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
541 public Iterable<BoardMessage> getFolder(String _boardName, String _nodeNum) {
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
542
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
543 DefaultNodePath path = new DefaultNodePath();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
544 try {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
545 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
546 if (!_nodeNum.substring(count, count + 1).equals("/"))
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
547 path = path.add(Integer.parseInt(_nodeNum.substring(count,count + 1)));
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
548 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
549 } catch (Exception _e) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
550 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
551 requestCounter.incrementAndGet();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
552 JungleTree tree = jungle.getTreeByName(_boardName);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
553 Node node = tree.getRootNode();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
554
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
555 DefaultTraverser traverser = new DefaultTraverser();
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
556 TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>(node);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
557 DefaultEvaluator evaluator = new DefaultEvaluator(path);
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
558 Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser.traverse(traversable, evaluator);
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
559 if (ret.isA()) {
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
560 Assert.fail();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
561 }
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
562
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
563 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
564 TraversableNodeWrapper<Node> target = traversal.destination();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
565 Children<Node> chs = target.getWrapped().getChildren();
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
566
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
567 final AtomicInteger counter = new AtomicInteger(0);
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
568 IterableConverter.Converter<BoardMessage, Node> converter = new IterableConverter.Converter<BoardMessage, Node>() {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
569 public BoardMessage conv(Node _b) {
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
570 String uuid = Integer.toString(counter.get());
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
571 String message = new String(_b.getAttributes().get("mes").array());
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
572 counter.incrementAndGet();
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
573 return new BoardMessageImpl(null, message, uuid);
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
574 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
575 };
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
576 return new IterableConverter<BoardMessage, Node>(chs, converter);
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
577 }
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
578
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
579
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
580 public getAttributeImp getAttribute(String _boardName, String _nodeNum) {
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
581
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
582 DefaultNodePath path = new DefaultNodePath();
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
583 try {
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
584 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
585 if (!_nodeNum.substring(count, count + 1).equals("/"))
167
91f6dd655a01 refactoring
tatsuki
parents: 166
diff changeset
586 path = path.add(Integer.parseInt(_nodeNum.substring(count,count + 1)));
166
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
587 }
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
588 } catch (Exception _e) {
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
589 }
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
590 requestCounter.incrementAndGet();
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
591 JungleTree tree = jungle.getTreeByName(_boardName);
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
592 Node node = tree.getRootNode();
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
593
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
594 DefaultTraverser traverser = new DefaultTraverser();
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
595 TraversableNodeWrapper<Node> traversable = new TraversableNodeWrapper<Node>(node);
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
596 DefaultEvaluator evaluator = new DefaultEvaluator(path);
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
597 Either<Error, Traversal<TraversableNodeWrapper<Node>>> ret = traverser.traverse(traversable, evaluator);
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
598 if (ret.isA()) {
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
599 Assert.fail();
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
600 }
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
601
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
602 Traversal<TraversableNodeWrapper<Node>> traversal = ret.b();
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
603 TraversableNodeWrapper<Node> target = traversal.destination();
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
604 return new getAttributeImp(target.getWrapped());
564f683b7aef Matrix Date type insert ok
tatsuki
parents: 165
diff changeset
605 }
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
606
143
7a7bac51a3cc Added RequestNumCheckServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
607 public int getRequestNum() {
7a7bac51a3cc Added RequestNumCheckServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
608 return requestCounter.get();
7a7bac51a3cc Added RequestNumCheckServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
609 }
146
29734d7d6521 Added ShowMessageWithTimeStampServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 143
diff changeset
610
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
611 private static class BoardMessageImpl implements BoardMessage {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
612 private final String author;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
613 private final String message;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
614 private final String uuid;
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
615
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
616 public BoardMessageImpl(String _author, String _message, String _uuid) {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
617 author = _author;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
618 message = _message;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
619 uuid = _uuid;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
620 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
621
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
622 public String getAuthor() {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
623 return author;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
624 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
625
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
626 public String getMessage() {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
627 return message;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
628 }
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
629
165
b3d5fbe95b9a Create Folder Method
tatsuki
parents: 150
diff changeset
630 public String getUUID() {
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
631 return uuid;
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
632 }
143
7a7bac51a3cc Added RequestNumCheckServlet
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 139
diff changeset
633
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
634 }
175
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
635
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
636 public String sanitize( String str ) {
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
637 if(str==null) {
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
638 return str;
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
639 }
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
640 str = str.replaceAll("&" , "&amp;" );
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
641 str = str.replaceAll("<" , "&lt;" );
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
642 str = str.replaceAll(">" , "&gt;" );
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
643 str = str.replaceAll("\"", "&quot;");
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
644 str = str.replaceAll("'" , "&#39;" );
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
645 return str;
ac7d1070f449 sanitizing
tatsuki
parents: 173
diff changeset
646 }
124
dacfa7eba841 To select persistent mode "-persistent"
one
parents: 123
diff changeset
647
170
df063cf6f3b5 add Delete Node Method
tatsuki
parents: 169
diff changeset
648
38
d8ee57a1c2c6 add pom.xml and bbs
one
parents:
diff changeset
649 }