# HG changeset patch # User tatsuki # Date 1414111552 -32400 # Node ID b036c87f1e5c9c1bbe61195ec8639a52f2d6ae5d # Parent faedeec9760547c52589cebc78dd61f1df2dad20 app diff -r faedeec97605 -r b036c87f1e5c build.gradle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build.gradle Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,36 @@ +apply plugin: "java" +apply plugin: "eclipse" + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 +[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' +version = '1.0' + +repositories { + mavenCentral() +} + +dependencies { + compile "org.eclipse.jetty:jetty-server:9.1.1.v20140108" + compile "org.eclipse.jetty:jetty-servlet:9.1.1.v20140108" + compile "org.eclipse.jetty:jetty-servlets:9.1.1.v20140108" + testCompile "junit:junit:4.7" +} + + +jar { + manifest { + attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version + } + from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } + archiveName = 'jungle-core.jar' +} + +uploadArchives { + repositories { + flatDir { + dirs '.' + } + } +} + diff -r faedeec97605 -r b036c87f1e5c src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/ReadXmlHandler.java --- a/src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/ReadXmlHandler.java Fri Oct 24 07:29:40 2014 +0900 +++ b/src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/ReadXmlHandler.java Fri Oct 24 09:45:52 2014 +0900 @@ -17,7 +17,7 @@ import fj.test.reflect.Name; -class ReadXmlHandler extends DefaultHandler { +public class ReadXmlHandler extends DefaultHandler { private JungleTree tree; private JungleTreeEditor editor; private NodePath path; diff -r faedeec97605 -r b036c87f1e5c src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/SaxSample.java --- a/src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/SaxSample.java Fri Oct 24 07:29:40 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -package ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader; - -import java.io.*; - -import javax.xml.parsers.*; - -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; - -class SaxSample { - public static void main(String args[]) { - try { - /* - * パーサのFactoryを作成 名前からしてFactoryパターンで,Singletonだと思う. - */ - SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); - /* パーサを取得 */ - SAXParser saxParser = saxParserFactory.newSAXParser(); - Jungle jungle = new DefaultJungle(null, "hoge",new DefaultTreeEditor(new DefaultTraverser())); - JungleTree tree = jungle.createNewTree("XMLTEST"); - /* イベントハンドラを作成 */ - ReadXmlHandler readXmlHandler = new ReadXmlHandler(tree); - saxParser.parse(new FileInputStream("/Users/e115731/workspace/aaa/xml/Person.xml"), readXmlHandler); - } catch (Exception e) { - e.printStackTrace(); - } - } -} \ No newline at end of file diff -r faedeec97605 -r b036c87f1e5c src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/xmlReader.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/xmlReader.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,26 @@ +package ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader; + +import java.io.*; + +import javax.xml.parsers.*; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; + +class xmlReader { + public static void main(String args[]) { + try { + SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); + SAXParser saxParser = saxParserFactory.newSAXParser(); + Jungle jungle = new DefaultJungle(null, "hoge",new DefaultTreeEditor(new DefaultTraverser())); + JungleTree tree = jungle.createNewTree("XMLTEST"); + ReadXmlHandler readXmlHandler = new ReadXmlHandler(tree); + saxParser.parse(new FileInputStream("/Users/e115731/workspace/aaa/xml/Person.xml"), readXmlHandler); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/CreateNode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/CreateNode.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,37 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class CreateNode extends HttpServlet { + private final XmlBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_BOARD_AUTHOR = "author"; + private static final String PARAM_NODE_NAME = "name"; + private static final String PARAM_BOARD_EDITKEY = "key"; + private static final String PARAM_BOARD_PATH = "path"; + private static final long serialVersionUID = 1L; + + public CreateNode(XmlBulletinBoard _bbs) { + bbs = _bbs; + } + + public void doPost(HttpServletRequest _req, HttpServletResponse _res) { + String boardName = (_req.getParameter(PARAM_BOARD_NAME)); + String author = (_req.getParameter(PARAM_BOARD_AUTHOR));//not use + String nodeName = (_req.getParameter(PARAM_NODE_NAME)); + String key = (_req.getParameter(PARAM_BOARD_EDITKEY));//not use + String nodeNum = (_req.getParameter(PARAM_BOARD_PATH)); + + try { + bbs.createFolder(boardName, author, nodeName, key, nodeNum); + PrintWriter pw = _res.getWriter(); + pw.write("successfully written"); + } catch (Exception _e) { + _res.setStatus(500); + } + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/EditAttributeServlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/EditAttributeServlet.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,65 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +public class EditAttributeServlet extends HttpServlet +{ + private final XmlBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_NODE_PATH = "path"; + private static final String PARAM_BOARD_MESSAGE= "msg"; + //private static final String PARAM_BOARD_EDITKEY = "key"; + private static final String PARAM_NODE_ID = "id"; + private static final long serialVersionUID = 1L; + + public EditAttributeServlet(XmlBulletinBoard _bbs) + { + bbs = _bbs; + } + + public void doGet(HttpServletRequest _req,HttpServletResponse _res) + { + String bname = (_req.getParameter(PARAM_BOARD_NAME)); + String path = (_req.getParameter(PARAM_NODE_PATH)); + String id = (_req.getParameter(PARAM_NODE_ID)); + + + try{ + _res.setCharacterEncoding("UTF-8"); + PrintWriter pw = _res.getWriter(); + pw.write("

edit message

"); + pw.write("
" + + "" + + "\n"); + pw.write("

Message

\n"); + pw.write("

\n"); + pw.write(""); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } + + public void doPost(HttpServletRequest _req,HttpServletResponse _res) + { + String boardName = (_req.getParameter(PARAM_BOARD_NAME)); + String msg = (_req.getParameter(PARAM_BOARD_MESSAGE)); + String path = (_req.getParameter(PARAM_NODE_PATH)); + String id = (_req.getParameter(PARAM_NODE_ID)); + + try{ + bbs.editAttribute(boardName, path,id, msg); + PrintWriter pw = _res.getWriter(); + pw.write("successfully written"); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/EditNodeName.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/EditNodeName.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,66 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; + +public class EditNodeName extends HttpServlet +{ + private final XmlBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_NODE_PATH = "path"; + private static final String PARAM_BOARD_AUTHOR = "author"; + private static final String PARAM_BOARD_MESSAGE= "msg"; + private static final String PARAM_BOARD_EDITKEY = "key"; + + private static final long serialVersionUID = 1L; + + public EditNodeName(XmlBulletinBoard _bbs) + { + bbs = _bbs; + } + + public void doGet(HttpServletRequest _req,HttpServletResponse _res) + { + String bname = (_req.getParameter(PARAM_BOARD_NAME)); + String path = (_req.getParameter(PARAM_NODE_PATH)); + + + try{ + _res.setCharacterEncoding("UTF-8"); + PrintWriter pw = _res.getWriter(); + pw.write("

edit message

"); + pw.write("" + + "" + + "\n"); + pw.write("

Message

\n"); + pw.write("

\n"); + pw.write(""); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } + + public void doPost(HttpServletRequest _req,HttpServletResponse _res) + { + String boardName = (_req.getParameter(PARAM_BOARD_NAME)); + String author = (_req.getParameter(PARAM_BOARD_AUTHOR)); + String msg = (_req.getParameter(PARAM_BOARD_MESSAGE)); + String key = (_req.getParameter(PARAM_BOARD_EDITKEY)); + String path = (_req.getParameter(PARAM_NODE_PATH)); + + try{ + bbs.editMessage(boardName, path, author, msg, key); + PrintWriter pw = _res.getWriter(); + pw.write("successfully written"); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JungleBulletinBoard.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JungleBulletinBoard.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,610 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Iterator; +import java.util.concurrent.atomic.AtomicInteger; + +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.ReadXmlHandler; +import fj.data.List; +import fj.data.TreeMap; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; +import junit.framework.Assert; + +public class JungleBulletinBoard implements XmlBulletinBoard { + + private final Jungle jungle; + + + public JungleBulletinBoard() { + jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); + jungle.createNewTree("boards"); + } + + + + public Iterable getBoards() { + JungleTree tree = jungle.getTreeByName("boards"); + TreeNode node = tree.getRootNode(); + Children chs = node.getChildren(); + + IterableConverter.Converter converter = new IterableConverter.Converter() { + public String conv(TreeNode _b) { + ByteBuffer e = _b.getAttributes().get("name"); + System.out.println(new String(e.array())); + return new String(e.array()); + } + }; + + return new IterableConverter(chs, converter); + } + + + public void createBoards(final String _name) { + if (null == jungle.createNewTree(_name)) { + throw new IllegalStateException(); + } + + JungleTree tree = jungle.getTreeByName("boards"); + JungleTreeEditor editor = tree.getTreeEditor(); + DefaultNodePath root = new DefaultNodePath(); + Either either = editor.addNewChildAt(root, 0); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + + either = editor.putAttribute(root.add(0), "name",ByteBuffer.wrap(_name.getBytes())); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = either.b().success(); + if (either.isA()) { + throw new IllegalStateException(); + } + + } + + public void createFolder(final String _board, final String _author, final String _message, final String _editKey, String _nodeNum) { + JungleTree tree = jungle.getTreeByName(_board); + if (tree == null) { + throw new IllegalStateException(); + } + + DefaultNodePath path = new DefaultNodePath(); + try { + for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { + if (!_nodeNum.substring(count, count + 1).equals("/")) + path = path.add(Integer.parseInt(_nodeNum.substring(count, + count + 1))); + } + } catch (Exception _e) { + } + Either either; + final long timestamp = System.currentTimeMillis(); + final ByteBuffer tBuffer = ByteBuffer.allocate(16); + tBuffer.putLong(timestamp); + + do { + TreeNode node = tree.getRootNode(); + DefaultTraverser traverser = new DefaultTraverser(); + // TraversableNodeWrapper traversable = new + // TraversableNodeWrapper(node); + DefaultEvaluator evaluator = new DefaultEvaluator(path); + Either ret = traverser.traverse(node, + evaluator); + if (ret.isA()) { + Assert.fail(); + } + + Traversal traversal = ret.b(); + TreeNode target = traversal.destination(); + int size = target.getChildren().size(); + JungleTreeEditor editor = tree.getTreeEditor(); + either = editor.addNewChildAt(path, size); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + + NodeEditor e = new NodeEditor() { + + public Either edit(TreeNode node) { + LoggingNode logNode = wrap(node , new DefaultOperationLog()); + logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); + logNode = logNode.getAttributes().put("timestamp", tBuffer).b(); + return DefaultEither.newB(logNode); + } + + @Override + public LoggingNode wrap(TreeNode node, OperationLog op) { + return new LoggingNode(node, op); + } + }; + path = path.add(size); + either = editor.edit(path, e); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); + + } + + public void createBoardMessage(final String _board, final String _author, final String _message, final String _editKey) { + JungleTree tree = jungle.getTreeByName(_board); + if (tree == null) { + throw new IllegalStateException(); + } + + Either either; + final long timestamp = System.currentTimeMillis(); + final ByteBuffer tBuffer = ByteBuffer.allocate(16); + tBuffer.putLong(timestamp); + do { + + TreeNode node = tree.getRootNode(); + int size = node.getChildren().size(); + DefaultNodePath path = new DefaultNodePath(); + + JungleTreeEditor editor = tree.getTreeEditor(); + either = editor.addNewChildAt(path, size); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + + NodeEditor e = new NodeEditor() { + public Either edit(TreeNode node) { + LoggingNode logNode = wrap(node , new DefaultOperationLog()); + logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); + logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); + logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); + logNode = logNode.getAttributes().put("timestamp", tBuffer).b(); + return DefaultEither.newB(logNode); + } + + @Override + public LoggingNode wrap(TreeNode node, OperationLog op) { + return new LoggingNode(node, op); + } + + }; + path = path.add(size); + either = editor.edit(path, e); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); + + } + + public void editMessage(String _board, String _nodeNum,final String _author, final String _message, final String _editKey) { + final long timestamp = System.currentTimeMillis(); + final ByteBuffer tBuffer = ByteBuffer.allocate(16); + tBuffer.putLong(timestamp); + JungleTree tree = jungle.getTreeByName(_board); + Either either = null; + + do { + DefaultNodePath path = new DefaultNodePath(); + try { + for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { + if (!_nodeNum.substring(count, count + 1).equals("/")) + path = path.add(Integer.parseInt(_nodeNum.substring(count, count + 1))); + } + } catch (Exception _e) { + } + JungleTreeEditor editor = tree.getTreeEditor(); + NodeEditor e = new NodeEditor() { + public Either edit(TreeNode node) { + LoggingNode logNode = wrap(node , new DefaultOperationLog()); + System.out.println(new String(node.getAttributes().get("mes").array())); + logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); + logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); + logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); + logNode = logNode.getAttributes().put("timestamp", tBuffer).b(); + System.out.println(new String(node.getAttributes().get("mes").array())); + return DefaultEither.newB(logNode); + } + + @Override + public LoggingNode wrap(TreeNode node, OperationLog op) { + return new LoggingNode(node, op); + } + + }; + either = editor.edit(path, e); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); + } + + public void createAttribute(String _board, String _uuid, final String _author, final String _message, final String _editKey) { + final long timestamp = System.currentTimeMillis(); + final ByteBuffer tBuffer = ByteBuffer.allocate(16); + tBuffer.putLong(timestamp); + JungleTree tree = jungle.getTreeByName(_board); + Either either = null; + DefaultNodePath path = new DefaultNodePath(); + do { + try { + for (int count = 0; _uuid.substring(count, count + 1) != null; count++) { + if (!_uuid.substring(count, count + 1).equals("/")) + path = path.add(Integer.parseInt(_uuid.substring(count, + count + 1))); + } + } catch (Exception _e) { + } + + JungleTreeEditor editor = tree.getTreeEditor(); + NodeEditor e = new NodeEditor() { + String str; + + public Either edit(TreeNode node) { + LoggingNode logNode = wrap(node , new DefaultOperationLog()); + str = "0"; + int count = 0; + for (; logNode.getAttributes().get("mes" + String.valueOf(count)) != null; count++) { + } + str = String.valueOf(count); + logNode = logNode.getAttributes().put("mes" + str,ByteBuffer.wrap(_message.getBytes())).b(); + logNode = logNode.getAttributes().put("timestamp" + str, tBuffer).b(); + return DefaultEither.newB(logNode); + } + + @Override + public LoggingNode wrap(TreeNode node, OperationLog op) { + return new LoggingNode(node, op); + } + }; + either = editor.edit(path, e); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); + } + + public void editAttribute(String boardName, String _path, final String id, final String _message) { + final long timestamp = System.currentTimeMillis(); + final ByteBuffer tBuffer = ByteBuffer.allocate(16); + tBuffer.putLong(timestamp); + JungleTree tree = jungle.getTreeByName(boardName); + Either either = null; + DefaultNodePath path = new DefaultNodePath(); + do { + try { + for (int count = 0; _path.substring(count, count + 1) != null; count++) { + if (!_path.substring(count, count + 1).equals("/")) + path = path.add(Integer.parseInt(_path.substring(count, + count + 1))); + } + } catch (Exception _e) { + } + + JungleTreeEditor editor = tree.getTreeEditor(); + NodeEditor e = new NodeEditor() { + public Either edit(TreeNode node) { + LoggingNode logNode = wrap(node , new DefaultOperationLog()); + // EnableNodeWrapper node = _e.getWrap(); + logNode = logNode.getAttributes().put("mes" + id,ByteBuffer.wrap(_message.getBytes())).b(); + logNode = logNode.getAttributes().put("timestamp" + id, tBuffer).b(); + return DefaultEither.newB(logNode); + } + + @Override + public LoggingNode wrap(TreeNode node, OperationLog op) { + return new LoggingNode(node, op); + } + + }; + either = editor.edit(path, e); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); + } + + public void deleteNode(String _board, String _path, String _id) { + int id = Integer.parseInt(_id); + final long timestamp = System.currentTimeMillis(); + final ByteBuffer tBuffer = ByteBuffer.allocate(16); + tBuffer.putLong(timestamp); + JungleTree tree = jungle.getTreeByName(_board); + Either either = null; + DefaultNodePath path = new DefaultNodePath(); + do { + try { + for (int count = 0; _path.substring(count, count + 1) != null; count++) { + if (!_path.substring(count, count + 1).equals("/")) + path = path.add(Integer.parseInt(_path.substring(count,count + 1))); + } + } catch (Exception _e) { + } + + JungleTreeEditor editor = tree.getTreeEditor(); + + either = editor.deleteChildAt(path, id); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); + + } + + public void deleteAttribute(String _board, String _path, final String id) { + final long timestamp = System.currentTimeMillis(); + final ByteBuffer tBuffer = ByteBuffer.allocate(16); + tBuffer.putLong(timestamp); + JungleTree tree = jungle.getTreeByName(_board); + Either either = null; + DefaultNodePath path = new DefaultNodePath(); + do { + try { + for (int count = 0; _path.substring(count, count + 1) != null; count++) { + if (!_path.substring(count, count + 1).equals("/")) + path = path.add(Integer.parseInt(_path.substring(count, + count + 1))); + } + } catch (Exception _e) { + System.out.println("屑"); + } + + JungleTreeEditor editor = tree.getTreeEditor(); + NodeEditor e = new NodeEditor() { + public Either edit(TreeNode node) { + LoggingNode logNode = wrap(node , new DefaultOperationLog()); + logNode = logNode.getAttributes().delete("mes" + id).b(); + logNode = logNode.getAttributes().delete("timestamp" + id).b(); + int count = Integer.parseInt(id); + for (; logNode.getAttributes().get("mes" + String.valueOf(count + 1)) != null;) { + logNode = logNode.getAttributes().put("mes" + count,node.getAttributes().get("mes"+ String.valueOf(count + 1))).b(); + logNode = logNode.getAttributes().put("timestamp" + count, tBuffer).b(); + count++; + } + if (count != Integer.parseInt(id)) { + logNode = logNode.getAttributes().delete("timestamp" + count).b(); + logNode = logNode.getAttributes().delete("mes" + count).b(); + } + + return DefaultEither.newB(logNode); + } + + @Override + public LoggingNode wrap(TreeNode node, OperationLog op) { + return new LoggingNode(node, op); + } + }; + either = editor.edit(path, e); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); + } + + public void editMatrixMessage(String _board, String _uuid, + final String _author, final String _message, final String _editKey) { + final long timestamp = System.currentTimeMillis(); + final ByteBuffer tBuffer = ByteBuffer.allocate(16); + tBuffer.putLong(timestamp); + JungleTree tree = jungle.getTreeByName(_board); + Either either = null; + do { + DefaultNodePath path = new DefaultNodePath(); + path = path.add(Integer.parseInt(_uuid)); + + JungleTreeEditor editor = tree.getTreeEditor(); + NodeEditor e = new NodeEditor() { + public Either edit(TreeNode node) { + LoggingNode logNode = wrap(node , new DefaultOperationLog()); + logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); + logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); + logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); + logNode = logNode.getAttributes().put("timestamp", tBuffer).b(); + return DefaultEither.newB(logNode); + } + + @Override + public LoggingNode wrap(TreeNode node, OperationLog op) { + return new LoggingNode(node, op); + } + + + }; + either = editor.edit(path, e); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); + } + + public Iterable getMessages(String _boardName) { + JungleTree tree = jungle.getTreeByName(_boardName); + TreeNode node = tree.getRootNode(); + Children chs = node.getChildren(); + final AtomicInteger counter = new AtomicInteger(0); + IterableConverter.Converter converter = new IterableConverter.Converter() { + public BoardMessage conv(TreeNode _b) { + String uuid = Integer.toString(counter.get()); + String author = new String(_b.getAttributes().get("author").array()); + String message = new String(_b.getAttributes().get("mes").array()); + counter.incrementAndGet(); + return new BoardMessageImpl(author, message, uuid); + } + }; + return new IterableConverter(chs, converter); + } + + public Iterable getFolder(String _boardName, String _nodeNum) { + + DefaultNodePath path = new DefaultNodePath(); + try { + for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { + if (!_nodeNum.substring(count, count + 1).equals("/")) + path = path.add(Integer.parseInt(_nodeNum.substring(count,count + 1))); + } + } catch (Exception _e) { + } + JungleTree tree = jungle.getTreeByName(_boardName); + TreeNode node = tree.getRootNode(); + + DefaultTraverser traverser = new DefaultTraverser(); + DefaultEvaluator evaluator = new DefaultEvaluator(path); + Either ret = traverser.traverse(node,evaluator); + if (ret.isA()) { + Assert.fail(); + } + + Traversal traversal = ret.b(); + TreeNode target = traversal.destination(); + Children chs = target.getChildren(); + + final AtomicInteger counter = new AtomicInteger(0); + IterableConverter.Converter converter = new IterableConverter.Converter() { + public BoardMessage conv(TreeNode _b) { + String uuid = Integer.toString(counter.get()); + String message = new String(_b.getAttributes().get("element").array()); + counter.incrementAndGet(); + return new BoardMessageImpl(null, message, uuid); + } + }; + return new IterableConverter(chs, converter); + } + + public getAttributeImp getAttribute(String _boardName, String _nodeNum) { + + DefaultNodePath path = new DefaultNodePath(); + try { + for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { + if (!_nodeNum.substring(count, count + 1).equals("/")) + path = path.add(Integer.parseInt(_nodeNum.substring(count, + count + 1))); + } + } catch (Exception _e) { + } + JungleTree tree = jungle.getTreeByName(_boardName); + TreeNode node = tree.getRootNode(); + + DefaultTraverser traverser = new DefaultTraverser(); + DefaultEvaluator evaluator = new DefaultEvaluator(path); + Either ret = traverser.traverse(node,evaluator); + if (ret.isA()) { + Assert.fail(); + } + + Traversal traversal = ret.b(); + TreeNode target = traversal.destination(); + return new getAttributeImp(target); + } + + + + private static class BoardMessageImpl implements BoardMessage { + private final String author; + private final String message; + private final String uuid; + + public BoardMessageImpl(String _author, String _message, String _uuid) { + author = _author; + message = _message; + uuid = _uuid; + } + + public String getAuthor() { + return author; + } + + public String getMessage() { + return message; + } + + public String getUUID() { + return uuid; + } + + } + + public void readXml(String xmlPath){ + try { + SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); + SAXParser saxParser = saxParserFactory.newSAXParser(); + createBoards("XMLTEST"); + JungleTree tree = jungle.getTreeByName("XMLTEST"); + ReadXmlHandler readXmlHandler = new ReadXmlHandler(tree); + saxParser.parse(new FileInputStream("/Users/e115731/workspace/aaa/xml/Person.xml"), readXmlHandler); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public String sanitize(String str) { + if (str == null) { + return str; + } + str = str.replaceAll("&", "&"); + str = str.replaceAll("<", "<"); + str = str.replaceAll(">", ">"); + str = str.replaceAll("\"", """); + str = str.replaceAll("'", "'"); + return str; + } + + + + @Override + public void createBoards(String _name, String _author, String _initMessage, + String _editKey) { + // TODO Auto-generated method stub + + } + +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/MatrixApp.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/MatrixApp.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,82 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import javax.servlet.Servlet; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.CreateBoardMessageServlet; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.CreateBoardServlet; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.EditMessageServlet; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.EditMessageUseGetServlet; + +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ServletHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.util.thread.ThreadPool; + + + + + + +public class MatrixApp{ + + + public static void main(String args[]) { + XmlBulletinBoard BBS = new JungleBulletinBoard(); + + /* Jetty registration */ + String createBoardMessagePath = "/createBoardMessage"; + String createFolderPath = "/createFolder"; + String createBoardPath = "/createBoard"; + String editMessagePath = "/editMessage"; + String showBoardMessagePath = "/showBoardMessage"; + String showMatrixPath = "/showMatrix"; + String createAttributePath = "/createAttribute"; + String editAttributePath = "/editAttribute"; + String deleteAttributePath = "/deleteAttribute"; + String deleteNodePath = "/deleteNode"; + String editNodePath = "/editNode"; + Server serv = new Server(8080); + ThreadPool thp = serv.getThreadPool(); + Servlet createBoardMessage = new CreateBoardMessageServlet(BBS); + Servlet createFolder = new CreateNode(BBS); + Servlet createBoard = new ReadXml(BBS); + Servlet editNode = new EditNodeName(BBS); + Servlet createAttribute = new createAttributeMatrix(BBS); + Servlet editAttribute = new EditAttributeServlet(BBS); + Servlet deleteAttribute = new deleteAttributeServlet(BBS); + Servlet deleteNode = new deleteNodeServlet(BBS); + Servlet editBoardMessage = new EditMessageServlet(BBS); + Servlet index = new ShowBoardsServletMatrix(BBS,createBoardPath,showMatrixPath); + // Servlet board = new ShowBoardMessageServlet(BBS,createBoardMessagePath,editMessagePath); + Servlet board = new ShowMessageWithTimeStampServletMatrix(BBS,createBoardMessagePath,editMessagePath,showMatrixPath); + Servlet matrix = new ShowMatrix(BBS,createFolderPath,editNodePath, showMatrixPath, createAttributePath, editAttributePath,deleteAttributePath,deleteNodePath,thp); + ServletHandler context = new ServletHandler(); + context.addServletWithMapping(new ServletHolder(editBoardMessage),editMessagePath); + + context.addServletWithMapping(new ServletHolder(createBoardMessage),createBoardMessagePath); + context.addServletWithMapping(new ServletHolder(createFolder),createFolderPath); + context.addServletWithMapping(new ServletHolder(createBoard),createBoardPath); + context.addServletWithMapping(new ServletHolder(editNode),editNodePath); + context.addServletWithMapping(new ServletHolder(createAttribute),createAttributePath); + context.addServletWithMapping(new ServletHolder(index),"/"); + context.addServletWithMapping(new ServletHolder(deleteAttribute),deleteAttributePath); + context.addServletWithMapping(new ServletHolder(deleteNode),deleteNodePath); + context.addServletWithMapping(new ServletHolder(editAttribute),editAttributePath); + context.addServletWithMapping(new ServletHolder(board),showBoardMessagePath); + context.addServletWithMapping(new ServletHolder(matrix),showMatrixPath); + /* + * For write benchmark + */ + String editMessageUseGetPath = "/editMessageUseGet"; + Servlet editMessageUseGet = new EditMessageUseGetServlet(BBS); + context.addServletWithMapping(new ServletHolder(editMessageUseGet), editMessageUseGetPath); + + serv.setHandler(context); + try { + serv.start(); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/ReadXml.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/ReadXml.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,34 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +public class ReadXml extends HttpServlet +{ + private final XmlBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "xmlPath"; + + private static final long serialVersionUID = 1L; + + public ReadXml(XmlBulletinBoard _bbs) + { + bbs = _bbs; + } + + public void doPost(HttpServletRequest _req,HttpServletResponse _res) + { + String xmlPath = _req.getParameter(PARAM_BOARD_NAME); + + try{ + bbs.readXml(xmlPath); + PrintWriter pw = _res.getWriter(); + pw.write("successfully writtena"); + }catch(Exception _e){ + _res.setStatus(500); + } + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/ShowBoardsServletMatrix.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/ShowBoardsServletMatrix.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,56 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; + +public class ShowBoardsServletMatrix extends HttpServlet +{ + /** + * + */ + private static final long serialVersionUID = 1L; + private final XmlBulletinBoard bbs; + private final String createBoardPath; + private final String showBoardMessagePath; + + public ShowBoardsServletMatrix(XmlBulletinBoard _bbs, String _createBoardPath,String _showBoardMessagePath) + { + bbs = _bbs; + createBoardPath = _createBoardPath; + showBoardMessagePath = _showBoardMessagePath; + } + + public void doGet(HttpServletRequest _req,HttpServletResponse _res) + { + try{ + _res.setCharacterEncoding("UTF-8"); + printBoard(_res.getWriter()); + }catch(Exception _e){ + _res.setStatus(500); + } + + } + + private void printBoard(PrintWriter _pw) throws Exception + { + _pw.write("\n"); + _pw.write("

BBS

\n"); + _pw.write("Create new board.

"); + _pw.write("

XmlPath :

\n"); + _pw.write("


\n"); + + _pw.write("

list of boards

"); + for(String board : bbs.getBoards()){ + _pw.write("

"+ bbs.sanitize(board) + "

"); + } + + _pw.write(""); + _pw.flush(); + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/ShowMatrix.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/ShowMatrix.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,115 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.eclipse.jetty.util.thread.ThreadPool; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; + +public class ShowMatrix extends HttpServlet { + /** + * edit Node Path is rename editNodePath + **/ + private static final long serialVersionUID = 1L; + private final XmlBulletinBoard bbs; + private final String createBoardMessagePath; + private final String editNodePath; + private final String showMatrixPath; + private final String createAttributePath; + private final String editAttributePath; + private final String deleteAttributePath; + private final String deleteNodePath; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_NODE_PATH = "uuid"; + private static final String PARAM_NODE_NAME = "nodeName"; + + public ShowMatrix(XmlBulletinBoard _bbs, + String _createBoardMessagePath, String _editNodePath, + String _showMatrixPath, String _createAttributePath, + String _editAttributePath, String _deleteAttributePath, + String _deleteNodePath, ThreadPool thp) { + bbs = _bbs; + deleteAttributePath = _deleteAttributePath; + deleteNodePath = _deleteNodePath; + createAttributePath = _createAttributePath; + editAttributePath = _editAttributePath; + showMatrixPath = _showMatrixPath; + createBoardMessagePath = _createBoardMessagePath; + editNodePath = _editNodePath; + } + + public void doGet(HttpServletRequest _req, HttpServletResponse _res) { + + final String bname = _req.getParameter(PARAM_BOARD_NAME); + String path = _req.getParameter(PARAM_NODE_PATH); + String nodeName = _req.getParameter(PARAM_NODE_NAME); + try { + _res.setCharacterEncoding("UTF-8"); + printBoard(bname, path, nodeName, _res.getWriter()); + } catch (Exception _e) { + _res.setStatus(500); + } + } + + private void printBoard(String _bname, String path, String nodeName, + PrintWriter _pw) throws Exception { + _pw.write("\n"); + + if (nodeName == null) + nodeName = "rootNode"; + if (path == null) + path = "0"; + + _pw.write("

" + bbs.sanitize(nodeName) + " Path = " + path + "

\n"); + + _pw.write("\n"); + _pw.write("

\n"); + _pw.write("

Folder Name

\n"); + _pw.write(""); + _pw.write("

\n"); + _pw.write(""); + + _pw.write("


add Attribute

"); + _pw.write("
\n"); + _pw.write("

attributeName

\n"); + _pw.write(""); + _pw.write("

\n"); + _pw.write("
"); + _pw.write("
"); + _pw.write("

Folder

"); + + for (BoardMessage msg : bbs.getFolder(_bname, path)) { + _pw.write("" + bbs.sanitize(msg.getMessage()) + + ""); + _pw.write(" "); + _pw.write("edit"); + _pw.write(" "); + _pw.write("delete

"); + } + + _pw.write("

Value

"); + getAttributeImp attribute = (bbs.getAttribute(_bname, path)); + + _pw.write("" + + bbs.sanitize(attribute.getMessage()) + ""); + _pw.write("" + " delete" + + "

"); + + _pw.write(""); + _pw.flush(); + } +} \ No newline at end of file diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/ShowMessageWithTimeStampServletMatrix.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/ShowMessageWithTimeStampServletMatrix.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,68 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + + + + + + + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; + +public class ShowMessageWithTimeStampServletMatrix extends HttpServlet { + /** + * + */ + private static final long serialVersionUID = 1L; + private final XmlBulletinBoard bbs; + private final String createBoardMessagePath; + private final String editMessagePath; + private final String showMatrixPath; + + private static final String PARAM_BOARD_NAME = "bname"; + + public ShowMessageWithTimeStampServletMatrix(XmlBulletinBoard _bbs, + String _createBoardMessagePath, String _editMessagePath, String _showMatrixPath) { + bbs = _bbs; + showMatrixPath = _showMatrixPath; + createBoardMessagePath = _createBoardMessagePath; + editMessagePath = _editMessagePath; + } + + public void doGet(HttpServletRequest _req, HttpServletResponse _res) { + final String bname = (_req.getParameter(PARAM_BOARD_NAME)); + try { + _res.setCharacterEncoding("UTF-8"); + printBoard(bname, _res.getWriter()); + } catch (Exception _e) { + _res.setStatus(500); + } + } + + private void printBoard(String _bname, PrintWriter _pw) throws Exception { + _pw.write("\n"); + _pw.write("

" + bbs.sanitize(_bname) + "

\n"); + + _pw.write("
Author : EditKey :

\n"); + _pw.write("

Message

\n"); + _pw.write("

\n"); + _pw.write("MatrixMode"+"
"); + + for (BoardMessage msg : bbs.getMessages(_bname)) {//フォルダの表示 + _pw.write("
"); + _pw.write("

Author " + bbs.sanitize(msg.getAuthor()) + "

"); + _pw.write(""+ bbs.sanitize(msg.getMessage()) +"
"); + } + + _pw.write(""); + _pw.flush(); + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/XmlBulletinBoard.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/XmlBulletinBoard.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,18 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; + + +public interface XmlBulletinBoard extends BulletinBoard { + public Iterable getFolder(String _boardName, String nodeNum); + public void createFolder(String boardName, String author, String msg,String key, String _nodeNum); + public void createAttribute(String boardName, String uuid, String author, String msg, String key); + public getAttributeImp getAttribute(String _bname, String nodeNum); + public void editAttribute(String boardName, String path, String id, String message); + public void deleteAttribute(String _board, String _path , String id); + public void deleteNode(String _board, String _path, String id); + public void editMatrixMessage(String boardName, String path, String author,String msg, String key); + public void readXml(String xmlPath); +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/createAttributeMatrix.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/createAttributeMatrix.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,45 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; + +public class createAttributeMatrix extends HttpServlet +{ + private final XmlBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_NODE_PATH = "path"; + private static final String PARAM_BOARD_AUTHOR = "author"; + private static final String PARAM_BOARD_MESSAGE= "msg"; + private static final String PARAM_BOARD_EDITKEY = "key"; + + private static final long serialVersionUID = 1L; + + public createAttributeMatrix(XmlBulletinBoard _bbs) + { + bbs = _bbs; + } + + + + public void doPost(HttpServletRequest _req,HttpServletResponse _res) + { + String boardName = (_req.getParameter(PARAM_BOARD_NAME)); + String author = (_req.getParameter(PARAM_BOARD_AUTHOR));//not use + String msg = (_req.getParameter(PARAM_BOARD_MESSAGE)); + String key = (_req.getParameter(PARAM_BOARD_EDITKEY)); // not use + String uuid = (_req.getParameter(PARAM_NODE_PATH)); + try{ + bbs.createAttribute(boardName, uuid, author, msg, key); + PrintWriter pw = _res.getWriter(); + pw.write("successfully written"); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/deleteAttributeServlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/deleteAttributeServlet.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,63 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +public class deleteAttributeServlet extends HttpServlet +{ + private final XmlBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_NODE_PATH = "path"; + //private static final String PARAM_BOARD_MESSAGE= "msg"; + //private static final String PARAM_BOARD_EDITKEY = "key"; + private static final String PARAM_NODE_ID = "id"; + private static final long serialVersionUID = 1L; + + public deleteAttributeServlet(XmlBulletinBoard _bbs) + { + bbs = _bbs; + } + + public void doGet(HttpServletRequest _req,HttpServletResponse _res) + { + String bname = (_req.getParameter(PARAM_BOARD_NAME)); + String path = (_req.getParameter(PARAM_NODE_PATH)); + String id = (_req.getParameter(PARAM_NODE_ID)); + + + try{ + _res.setCharacterEncoding("UTF-8"); + PrintWriter pw = _res.getWriter(); + pw.write("

delete Attribute ?

"); + pw.write("" + + "" + + "\n"); + pw.write("

\n"); + pw.write(""); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } + + public void doPost(HttpServletRequest _req,HttpServletResponse _res) + { + String boardName = (_req.getParameter(PARAM_BOARD_NAME)); + String path = (_req.getParameter(PARAM_NODE_PATH)); + String id = (_req.getParameter(PARAM_NODE_ID)); + + try{ + bbs.deleteAttribute(boardName, path,id); + PrintWriter pw = _res.getWriter(); + pw.write("successfully written"); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/deleteNodeServlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/deleteNodeServlet.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,58 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class deleteNodeServlet extends HttpServlet +{ + private final XmlBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_BOARD_PATH = "path"; + private static final String PARAM_NODE_ID = "id"; + + private static final long serialVersionUID = 1L; + + public deleteNodeServlet(XmlBulletinBoard _bbs) + { + bbs = _bbs; + } + + public void doGet(HttpServletRequest _req,HttpServletResponse _res) + { + String bname = (_req.getParameter(PARAM_BOARD_NAME)); + String path = (_req.getParameter(PARAM_BOARD_PATH )); + String id = (_req.getParameter(PARAM_NODE_ID)); + + try{ + _res.setCharacterEncoding("UTF-8"); + PrintWriter pw = _res.getWriter(); + pw.write("

delete message ?

"); + pw.write("" + + "" + + "\n"); + pw.write("

\n"); + pw.write(""); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } + + public void doPost(HttpServletRequest _req,HttpServletResponse _res) + { + String boardName = (_req.getParameter(PARAM_BOARD_NAME)); + String path = (_req.getParameter(PARAM_BOARD_PATH)); + String id = (_req.getParameter(PARAM_NODE_ID)); + try{ + bbs.deleteNode(boardName, path, id); + PrintWriter pw = _res.getWriter(); + pw.write("successfully written"); + pw.flush(); + }catch(Exception _e){ + _res.setStatus(500); + } + } +} diff -r faedeec97605 -r b036c87f1e5c src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/getAttributeImp.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/getAttributeImp.java Fri Oct 24 09:45:52 2014 +0900 @@ -0,0 +1,28 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; + + + + +public class getAttributeImp +{ + private final TreeNode node; + + public getAttributeImp(TreeNode _node) + { + node = _node; + } + + public String getUUID(int num) { + // TODO Auto-generated method stub + return String.valueOf(num); + } + + public String getMessage() { + // TODO Auto-generated method stub + return node.getAttributes().getString("text"); + } + +} +