# HG changeset patch # User tatsuki # Date 1406524194 -32400 # Node ID b3d5fbe95b9a5b263f9ff8703b5e11ff6363b074 # Parent cef31516e2e573ed5be9fa0d69941302c374c6cf Create Folder Method diff -r cef31516e2e5 -r b3d5fbe95b9a src/main/java/app/bbs/NetworkBulletinBoard.java --- a/src/main/java/app/bbs/NetworkBulletinBoard.java Tue Jul 15 18:07:36 2014 +0900 +++ b/src/main/java/app/bbs/NetworkBulletinBoard.java Mon Jul 28 14:09:54 2014 +0900 @@ -1,5 +1,6 @@ package app.bbs; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; @@ -7,5 +8,7 @@ public void init(); public int getRequestNum(); public long getRenewTime(String boardName); - + 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); } diff -r cef31516e2e5 -r b3d5fbe95b9a src/main/java/app/bbs/NetworkJungleBulletinBoard.java --- a/src/main/java/app/bbs/NetworkJungleBulletinBoard.java Tue Jul 15 18:07:36 2014 +0900 +++ b/src/main/java/app/bbs/NetworkJungleBulletinBoard.java Mon Jul 28 14:09:54 2014 +0900 @@ -20,49 +20,51 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader; 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.TraversableNodeWrapper; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode; 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.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 junit.framework.Assert; -public class NetworkJungleBulletinBoard implements NetworkBulletinBoard -{ +public class NetworkJungleBulletinBoard implements NetworkBulletinBoard { private final Jungle jungle; private final NetworkJournal journal; private final String LOG_DIR; private Boolean persistentFlag; - private AtomicInteger requestCounter; + private AtomicInteger requestCounter; private long renewTime; - - private NetworkJungleBulletinBoard(String _uuid, NetworkJournal _journal) - { + + private NetworkJungleBulletinBoard(String _uuid, NetworkJournal _journal) { journal = _journal; - jungle = new NetworkDefaultJungle(journal, _uuid,new DefaultTreeEditor(new DefaultTraverser())); + jungle = new NetworkDefaultJungle(journal, _uuid, + new DefaultTreeEditor(new DefaultTraverser())); BulletinBoardJungleManager.setJungle(jungle); persistentFlag = false; requestCounter = BulletinBoardJungleManager.getRequestCounter(); LOG_DIR = "./log"; renewTime = 0; } - - public NetworkJungleBulletinBoard(String _uuid) - { + + public NetworkJungleBulletinBoard(String _uuid) { this(_uuid, new AliceJournal()); jungle.createNewTree("boards"); } - - public static NetworkBulletinBoard NewPersistentJungle(String _uuid) - { - NetworkJungleBulletinBoard board = new NetworkJungleBulletinBoard(_uuid, new PersistentJournal()); + + public static NetworkBulletinBoard NewPersistentJungle(String _uuid) { + NetworkJungleBulletinBoard board = new NetworkJungleBulletinBoard( + _uuid, new PersistentJournal()); board.persistentFlag = true; return board; } - + public void init() { - if(!persistentFlag) { + if (!persistentFlag) { return; } checkAndCreateLogDirectory(); @@ -72,10 +74,10 @@ e.printStackTrace(); } } - + public void checkAndCreateLogDirectory() { File logFile = new File(LOG_DIR); - if(!logFile.exists()) { + if (!logFile.exists()) { logFile.mkdir(); return; } @@ -84,14 +86,14 @@ logFile.mkdir(); } } - + public void commitLogRecover() throws IOException { - File[] logFiles = new File(LOG_DIR).listFiles(); - for(File logFile : logFiles) { + File[] logFiles = new File(LOG_DIR).listFiles(); + for (File logFile : logFiles) { commitLogRecover(logFile); logFile.delete(); } - if(jungle.getTreeByName("boards") == null) { + if (jungle.getTreeByName("boards") == null) { jungle.createNewTree("boards"); } } @@ -99,153 +101,224 @@ private void commitLogRecover(File logFile) throws IOException { journal.setInputFile(logFile); ChangeListReader reader = journal.getReader(); - if (reader == null) return; + if (reader == null) + return; for (ChangeList chList : reader) { String treeName = chList.getTreeName(); JungleTree tree = jungle.getTreeByName(treeName); - if(tree == null) { + if (tree == null) { tree = jungle.createNewTree(treeName); } JungleTreeEditor editor = tree.getLocalTreeEditor(); - Either either = JungleUpdater.edit(editor, chList); + Either either = JungleUpdater.edit(editor, + chList); editor = either.b(); - if(either.isA()) { + if (either.isA()) { throw new IOException("Failed commit log recovery"); } editor.success(); } } - public Iterable getBoards() - { + public Iterable getBoards() { JungleTree tree = jungle.getTreeByName("boards"); Node node = tree.getRootNode(); Children chs = node.getChildren(); - - IterableConverter.Converter converter = new IterableConverter.Converter(){ + + IterableConverter.Converter converter = new IterableConverter.Converter() { public String conv(Node _b) { ByteBuffer e = _b.getAttributes().get("name"); return new String(e.array()); } }; - - return new IterableConverter(chs,converter); + + return new IterableConverter(chs, converter); } - + public long getRenewTime(String _boardName) { return renewTime; } - - public void createBoards(final String _name,final String _author,final String _initMessage,final String _editKey) - { + public void createBoards(final String _name, final String _author, + final String _initMessage, final String _editKey) { requestCounter.incrementAndGet(); - if(null == jungle.createNewTree(_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()){ + 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()){ + + either = editor.putAttribute(root.add(0), "name", + ByteBuffer.wrap(_name.getBytes())); + if (either.isA()) { throw new IllegalStateException(); } editor = either.b(); final long timestamp = System.currentTimeMillis(); ByteBuffer tBuffer = ByteBuffer.allocate(16); tBuffer.putLong(timestamp); - either = editor.putAttribute(root.add(0),"timestamp", tBuffer); - if(either.isA()){ + either = editor.putAttribute(root.add(0), "timestamp", tBuffer); + if (either.isA()) { throw new IllegalStateException(); } either = either.b().success(); - if(either.isA()){ + if (either.isA()) { throw new IllegalStateException(); } - - + tree = jungle.getTreeByName(_name); editor = tree.getTreeEditor(); - either = editor.addNewChildAt(root,0); - if(either.isA()){ + either = editor.addNewChildAt(root, 0); + if (either.isA()) { throw new IllegalStateException(); } editor = either.b(); - - NodeEditor e = new NodeEditor(){ - public > Either edit(T _e){ - _e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b(); - _e = _e.getAttributes().put("mes",ByteBuffer.wrap(_initMessage.getBytes())).b(); - _e = _e.getAttributes().put("key",ByteBuffer.wrap(_editKey.getBytes())).b(); + + NodeEditor e = new NodeEditor() { + public > Either edit(T _e) { + _e = _e.getAttributes() + .put("author", ByteBuffer.wrap(_author.getBytes())).b(); + _e = _e.getAttributes() + .put("mes", ByteBuffer.wrap(_initMessage.getBytes())) + .b(); + _e = _e.getAttributes() + .put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); ByteBuffer tBuffer2 = ByteBuffer.allocate(16); tBuffer2.putLong(timestamp); - _e = _e.getAttributes().put("timestamp",tBuffer2).b(); + _e = _e.getAttributes().put("timestamp", tBuffer2).b(); return DefaultEither.newB(_e); } }; - - either = editor.edit(root.add(0),e); - if(either.isA()){ + + either = editor.edit(root.add(0), e); + if (either.isA()) { throw new IllegalStateException(); } either.b().success(); } - public void createBoardMessage(final String _board,final String _author,final String _message,final String _editKey) - { - requestCounter.incrementAndGet(); + 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){ + 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) { + } + requestCounter.incrementAndGet(); Either either; final long timestamp = System.currentTimeMillis(); final ByteBuffer tBuffer = ByteBuffer.allocate(16); tBuffer.putLong(timestamp); - do{ + do { Node node = tree.getRootNode(); - int size = node.getChildren().size(); - DefaultNodePath path = new DefaultNodePath(); - + + + DefaultTraverser traverser = new DefaultTraverser(); + TraversableNodeWrapper traversable = new TraversableNodeWrapper(node); + DefaultEvaluator evaluator = new DefaultEvaluator(path); + Either>> ret = traverser.traverse(traversable, evaluator); + if (ret.isA()) { + Assert.fail(); + } + + Traversal> traversal = ret.b(); + TraversableNodeWrapper target = traversal.destination(); + int size = target.getWrapped().getChildren().size() ; JungleTreeEditor editor = tree.getTreeEditor(); - either = editor.addNewChildAt(path,size); - if(either.isA()){ + either = editor.addNewChildAt(path, size); + if (either.isA()) { throw new IllegalStateException(); } editor = either.b(); - NodeEditor e = new NodeEditor(){ - public > Either edit(T _e){ - _e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b(); - _e = _e.getAttributes().put("mes",ByteBuffer.wrap(_message.getBytes())).b(); - _e = _e.getAttributes().put("key",ByteBuffer.wrap(_editKey.getBytes())).b(); - _e = _e.getAttributes().put("timestamp",tBuffer).b(); + NodeEditor e = new NodeEditor() { + public > Either edit(T _e) { + _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); + _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); + _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); + _e = _e.getAttributes().put("timestamp", tBuffer).b(); return DefaultEither.newB(_e); } }; path = path.add(size); - either = editor.edit(path,e); - if(either.isA()){ + either = editor.edit(path, e); + if (either.isA()) { throw new IllegalStateException(); } editor = either.b(); either = editor.success(); - }while(either.isA()); + } while (either.isA()); - } - public void editMessage(String _board,String _uuid,final String _author,final String _message,final String _editKey) - { + public void createBoardMessage(final String _board, final String _author, + final String _message, final String _editKey) { + requestCounter.incrementAndGet(); + 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 { + Node 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(T _e) { + _e = _e.getAttributes() + .put("author", ByteBuffer.wrap(_author.getBytes())) + .b(); + _e = _e.getAttributes() + .put("mes", ByteBuffer.wrap(_message.getBytes())) + .b(); + _e = _e.getAttributes() + .put("key", ByteBuffer.wrap(_editKey.getBytes())) + .b(); + _e = _e.getAttributes().put("timestamp", tBuffer).b(); + return DefaultEither.newB(_e); + } + }; + 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 _uuid, final String _author, + final String _message, final String _editKey) { requestCounter.incrementAndGet(); final long timestamp = System.currentTimeMillis(); final ByteBuffer tBuffer = ByteBuffer.allocate(16); @@ -257,74 +330,195 @@ path = path.add(Integer.parseInt(_uuid)); JungleTreeEditor editor = tree.getTreeEditor(); - NodeEditor e = new NodeEditor(){ - public > Either edit(T _e){ - _e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b(); - _e = _e.getAttributes().put("mes",ByteBuffer.wrap(_message.getBytes())).b(); - _e = _e.getAttributes().put("key",ByteBuffer.wrap(_editKey.getBytes())).b(); - _e = _e.getAttributes().put("timestamp",tBuffer).b(); - return DefaultEither.newB(_e); + NodeEditor e = new NodeEditor() { + public > Either edit(T _e) { + _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); + _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); + _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); + _e = _e.getAttributes().put("timestamp", tBuffer).b(); + return DefaultEither.newB(_e); } }; - either = editor.edit(path,e); - if(either.isA()){ + either = editor.edit(path, e); + if (either.isA()) { throw new IllegalStateException(); } editor = either.b(); either = editor.success(); - }while(either.isA()); + } while (either.isA()); + renewTime = timestamp; + } + + public void createAttribute(String _board, String _uuid, final String _author, + final String _message, final String _editKey) { + requestCounter.incrementAndGet(); + 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) { + } + Node node = tree.getRootNode(); + + + DefaultTraverser traverser = new DefaultTraverser(); + TraversableNodeWrapper traversable = new TraversableNodeWrapper(node); + DefaultEvaluator evaluator = new DefaultEvaluator(path); + Either>> ret = traverser.traverse(traversable, evaluator); + if (ret.isA()) { + Assert.fail(); + } + + Traversal> traversal = ret.b(); + TraversableNodeWrapper target = traversal.destination(); + final Node cheakNode = target.getWrapped(); + System.out.println(cheakNode.getAttributes().get("attribute")); + + + JungleTreeEditor editor = tree.getTreeEditor(); + NodeEditor e = new NodeEditor() { + public > Either edit(T _e) { + // EnableNodeWrapper node = _e.getWrap(); + _e = _e.getAttributes().put("author" , ByteBuffer.wrap(_author.getBytes())).b(); + _e = _e.getAttributes().put("mes" , ByteBuffer.wrap(_message.getBytes())).b(); + _e = _e.getAttributes().put("key" , ByteBuffer.wrap(_editKey.getBytes())).b(); + _e = _e.getAttributes().put("timestamp", tBuffer).b(); + + return DefaultEither.newB(_e); + } + }; + 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) { + requestCounter.incrementAndGet(); + 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(T _e) { + _e = _e.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); + _e = _e.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); + _e = _e.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); + _e = _e.getAttributes().put("timestamp", tBuffer).b(); + return DefaultEither.newB(_e); + } + }; + either = editor.edit(path, e); + if (either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); + either = editor.success(); + } while (either.isA()); renewTime = timestamp; } - public Iterable getMessages(String _boardName) - { + public Iterable getMessages(String _boardName) { requestCounter.incrementAndGet(); JungleTree tree = jungle.getTreeByName(_boardName); Node node = tree.getRootNode(); Children chs = node.getChildren(); final AtomicInteger counter = new AtomicInteger(0); - IterableConverter.Converter converter = new IterableConverter.Converter(){ + IterableConverter.Converter converter = new IterableConverter.Converter() { + public BoardMessage conv(Node _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) { + } + requestCounter.incrementAndGet(); + JungleTree tree = jungle.getTreeByName(_boardName); + Node node = tree.getRootNode(); + + DefaultTraverser traverser = new DefaultTraverser(); + TraversableNodeWrapper traversable = new TraversableNodeWrapper(node); + DefaultEvaluator evaluator = new DefaultEvaluator(path); + Either>> ret = traverser.traverse(traversable, evaluator); + if (ret.isA()) { + Assert.fail(); + } + + Traversal> traversal = ret.b(); + TraversableNodeWrapper target = traversal.destination(); + Children chs = target.getWrapped().getChildren(); + + final AtomicInteger counter = new AtomicInteger(0); + IterableConverter.Converter converter = new IterableConverter.Converter() { public BoardMessage conv(Node _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 BoardMessageImpl(author, message, uuid); } }; - return new IterableConverter(chs,converter); + return new IterableConverter(chs, converter); } - + public int getRequestNum() { return requestCounter.get(); } - - private static class BoardMessageImpl implements BoardMessage - { + 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) - { + + public BoardMessageImpl(String _author, String _message, String _uuid) { author = _author; message = _message; uuid = _uuid; } - public String getAuthor() - { + public String getAuthor() { return author; } - public String getMessage() - { + public String getMessage() { return message; } - public String getUUID() - { + public String getUUID() { return uuid; } diff -r cef31516e2e5 -r b3d5fbe95b9a src/main/java/app/bbs/ShowMessageWithTimeStampServlet.java --- a/src/main/java/app/bbs/ShowMessageWithTimeStampServlet.java Tue Jul 15 18:07:36 2014 +0900 +++ b/src/main/java/app/bbs/ShowMessageWithTimeStampServlet.java Mon Jul 28 14:09:54 2014 +0900 @@ -11,57 +11,64 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; public class ShowMessageWithTimeStampServlet extends HttpServlet { - /** + /** * */ - private static final long serialVersionUID = 1L; - private final NetworkBulletinBoard bbs; - private final String createBoardMessagePath; - private final String editMessagePath; + private static final long serialVersionUID = 1L; + private final NetworkBulletinBoard bbs; + private final String createBoardMessagePath; + private final String editMessagePath; + private final String showMatrixPath; - private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_BOARD_NAME = "bname"; - public ShowMessageWithTimeStampServlet(NetworkBulletinBoard _bbs, - String _createBoardMessagePath, String _editMessagePath, - ThreadPool thp) { - bbs = _bbs; - createBoardMessagePath = _createBoardMessagePath; - editMessagePath = _editMessagePath; - } + public ShowMessageWithTimeStampServlet(NetworkBulletinBoard _bbs, + String _createBoardMessagePath, String _editMessagePath, String _showMatrixPath, + ThreadPool thp) { + bbs = _bbs; + showMatrixPath = _showMatrixPath; + createBoardMessagePath = _createBoardMessagePath; + editMessagePath = _editMessagePath; + } - public void doGet(HttpServletRequest _req, HttpServletResponse _res) { - final String bname = _req.getParameter(PARAM_BOARD_NAME); - try { - printBoard(bname, _res.getWriter()); - } catch (Exception _e) { - _res.setStatus(500); - } - } + public void doGet(HttpServletRequest _req, HttpServletResponse _res) { + final String bname = _req.getParameter(PARAM_BOARD_NAME); + final String name = _req.getParameter("key"); + try { + printBoard(bname, _res.getWriter()); + } catch (Exception _e) { + _res.setStatus(500); + } + } - private void printBoard(String _bname, PrintWriter _pw) throws Exception { - _pw.write("\n"); - _pw.write("

" + _bname + "

\n"); - _pw.write("

Latest renew time : " + bbs.getRenewTime(_bname) - + "

\n"); - ; + private void printBoard(String _bname, PrintWriter _pw) throws Exception { + _pw.write("\n"); + _pw.write("

" + _bname + "

\n"); + _pw.write("

Latest renew time : " + bbs.getRenewTime(_bname) + + "

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

\n"); + _pw.write("

Message

\n"); + _pw.write("

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

\n"); - _pw.write("

Message

\n"); - _pw.write("

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

" + msg.getAuthor() + "

"); + _pw.write("

" + msg.getMessage() + "

"); + _pw.write(""+msg.getMessage()+"(show matrix)"+"
"); + _pw.write("edit"); + } - for (BoardMessage msg : bbs.getMessages(_bname)) { - _pw.write("
"); - _pw.write("

" + msg.getAuthor() + "

"); - _pw.write("

" + msg.getMessage() + "

"); - _pw.write("edit"); - } - - _pw.write(""); - _pw.flush(); - } + //forコメントの表示 + _pw.write(""); + _pw.flush(); + } } diff -r cef31516e2e5 -r b3d5fbe95b9a src/main/java/app/bbs/codesegment/StartBBSCodeSegment.java --- a/src/main/java/app/bbs/codesegment/StartBBSCodeSegment.java Tue Jul 15 18:07:36 2014 +0900 +++ b/src/main/java/app/bbs/codesegment/StartBBSCodeSegment.java Mon Jul 28 14:09:54 2014 +0900 @@ -25,6 +25,9 @@ import app.bbs.NetworkJungleBulletinBoard; import app.bbs.RequestNumCheckServlet; import app.bbs.ShowMessageWithTimeStampServlet; +import app.bbs.thinks.CreateFolderMatrix; +import app.bbs.thinks.ShowMatrix; +import app.bbs.thinks.createAttributeMatrix; public class StartBBSCodeSegment extends CodeSegment { @@ -70,26 +73,33 @@ System.out.println("name : "+ name); /* Jetty registration */ String createBoardMessagePath = "/createBoardMessage"; + String createFolderPath = "/createFolder"; String createBoardPath = "/createBoard"; String editMessagePath = "/editMessage"; String showBoardMessagePath = "/showBoardMessage"; - - + String showMatrixPath = "/showMatrix"; + String createAttributePath = "/createAttribute"; Server serv = new Server(bbsPort); ThreadPool thp = serv.getThreadPool(); Servlet createBoardMessage = new CreateBoardMessageServlet(cassaBBS); + Servlet createFolder = new CreateFolderMatrix(cassaBBS); Servlet createBoard = new CreateBoardServlet(cassaBBS); Servlet editBoardMessage = new EditMessageServlet(cassaBBS); + Servlet createAttribute = new createAttributeMatrix(cassaBBS); Servlet index = new ShowBoardsServlet(cassaBBS,createBoardPath,showBoardMessagePath); // Servlet board = new ShowBoardMessageServlet(cassaBBS,createBoardMessagePath,editMessagePath); - Servlet board = new ShowMessageWithTimeStampServlet(cassaBBS,createBoardMessagePath,editMessagePath,thp); - + Servlet board = new ShowMessageWithTimeStampServlet(cassaBBS,createBoardMessagePath,editMessagePath,showMatrixPath, thp); + Servlet matrix = new ShowMatrix(cassaBBS,createFolderPath,editMessagePath, showMatrixPath, createAttributePath,thp); + ServletHandler context = new ServletHandler(); context.addServletWithMapping(new ServletHolder(createBoardMessage),createBoardMessagePath); + context.addServletWithMapping(new ServletHolder(createFolder),createFolderPath); context.addServletWithMapping(new ServletHolder(createBoard),createBoardPath); context.addServletWithMapping(new ServletHolder(editBoardMessage),editMessagePath); + context.addServletWithMapping(new ServletHolder(createAttribute),createAttributePath); context.addServletWithMapping(new ServletHolder(index),"/"); context.addServletWithMapping(new ServletHolder(board),showBoardMessagePath); + context.addServletWithMapping(new ServletHolder(matrix),showMatrixPath); /* * For write benchmark */ diff -r cef31516e2e5 -r b3d5fbe95b9a src/main/java/app/bbs/thinks/CreateFolderMatrix.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/app/bbs/thinks/CreateFolderMatrix.java Mon Jul 28 14:09:54 2014 +0900 @@ -0,0 +1,39 @@ +package app.bbs.thinks; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import app.bbs.NetworkBulletinBoard; + +public class CreateFolderMatrix extends HttpServlet { + private final NetworkBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_BOARD_AUTHOR = "author"; + private static final String PARAM_BOARD_INITMESSAGE = "msg"; + private static final String PARAM_BOARD_EDITKEY = "key"; + + private static final long serialVersionUID = 1L; + + public CreateFolderMatrix(NetworkBulletinBoard _bbs) { + bbs = _bbs; + } + + 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_INITMESSAGE); + String key = _req.getParameter(PARAM_BOARD_EDITKEY); + String nodeNum = _req.getParameter("uuid"); + + try { + bbs.createFolder(boardName, author, msg, key, nodeNum); + PrintWriter pw = _res.getWriter(); + pw.write("successfully written"); + } catch (Exception _e) { + _res.setStatus(500); + } + } +} diff -r cef31516e2e5 -r b3d5fbe95b9a src/main/java/app/bbs/thinks/ShowMatrix.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/app/bbs/thinks/ShowMatrix.java Mon Jul 28 14:09:54 2014 +0900 @@ -0,0 +1,86 @@ +package app.bbs.thinks; + +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 app.bbs.NetworkBulletinBoard; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; + +public class ShowMatrix extends HttpServlet { + /** + * + */ + private static final long serialVersionUID = 1L; + private final NetworkBulletinBoard bbs; + private final String createBoardMessagePath; + private final String editMessagePath; + private final String showMatrixPath; + private final String createAttributePath ; + private static final String PARAM_BOARD_NAME = "bname"; + + public ShowMatrix(NetworkBulletinBoard _bbs, + String _createBoardMessagePath, String _editMessagePath, String _showMatrixPath, String _createAttributePath, + ThreadPool thp) { + bbs = _bbs; + createAttributePath = _createAttributePath; + showMatrixPath = _showMatrixPath; + createBoardMessagePath = _createBoardMessagePath; + editMessagePath = _editMessagePath; + } + + public void doGet(HttpServletRequest _req, HttpServletResponse _res) { + final String bname = _req.getParameter(PARAM_BOARD_NAME); + String nodeNum = _req.getParameter("uuid"); + try { + printBoard(bname, nodeNum, _res.getWriter()); + } catch (Exception _e) { + _res.setStatus(500); + } + } + + private void printBoard(String _bname, String nodeNum, PrintWriter _pw) throws Exception { + _pw.write("\n"); + _pw.write("

" + " This Borad is Test Board " + "

\n"); + _pw.write("

Latest renew time : " + bbs.getRenewTime(_bname) + + "

\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("
AUTHOR : "+ " KEY :

\n"); + _pw.write("

attributeName

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

\n"); + _pw.write("
"); +//やることはgetChildren(Folderを持ってくる)とgetMessage(中身の表示) + for (BoardMessage msg : bbs.getFolder(_bname, nodeNum)) { + _pw.write("
"); + _pw.write(""+msg.getMessage()+"(folder)"+"
"); + _pw.write("edit(not s)"); + } + /* for (BoardMessage msg : bbs.getMessages(_bname)) { + _pw.write("
"); + _pw.write("

" + "Author : " + msg.getAuthor() + "

"); + _pw.write("edit"); + }*/ + + _pw.write(""); + _pw.flush(); + } +} \ No newline at end of file diff -r cef31516e2e5 -r b3d5fbe95b9a src/main/java/app/bbs/thinks/createAttributeMatrix.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/app/bbs/thinks/createAttributeMatrix.java Mon Jul 28 14:09:54 2014 +0900 @@ -0,0 +1,45 @@ +package app.bbs.thinks; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import app.bbs.NetworkBulletinBoard; + +public class createAttributeMatrix extends HttpServlet +{ + private final NetworkBulletinBoard bbs; + private static final String PARAM_BOARD_NAME = "bname"; + private static final String PARAM_BOARD_MSGID = "uuid"; + 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(NetworkBulletinBoard _bbs) + { + bbs = _bbs; + } + + + + 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 uuid = _req.getParameter(PARAM_BOARD_MSGID); + 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 cef31516e2e5 -r b3d5fbe95b9a src/test/java/alice/jungle/showMessageTest.java --- a/src/test/java/alice/jungle/showMessageTest.java Tue Jul 15 18:07:36 2014 +0900 +++ b/src/test/java/alice/jungle/showMessageTest.java Mon Jul 28 14:09:54 2014 +0900 @@ -1,39 +1,50 @@ package alice.jungle; - import java.io.*; import java.net.*; +import alice.jungle.remote.RemoteConfig; +import app.bbs.codesegment.StartBBSCodeSegment; + public class showMessageTest { - public static void main(String args[]) { + public static void main(String args[]) throws Exception { String host = "localhost"; int port = 8080; String path = "/showBoardMessage?bname=" + args[0]; - String url = "http://" + host + ":" + port + path; - String str; - System.out.println(url); - try { - Socket socket = new Socket(host, port); - BufferedReader readSocket = new BufferedReader(new InputStreamReader(socket.getInputStream())); - BufferedWriter writeSocket = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); + String url = "http://" + host + ":" + port + path; + String str; + System.out.println(url); + RemoteConfig conf = new RemoteConfig(args); + StartBBSCodeSegment cs1 = new StartBBSCodeSegment(args, conf.bbsPort); + cs1.ods.put("host", "node0"); + BufferedReader input = new BufferedReader(new InputStreamReader( + System.in)); + Thread.sleep(1000); - writeSocket.write("GET " + url +" HTTP/1.1\r\n"); - writeSocket.write("Host: " + host + "\n"); - writeSocket.write("\n"); - writeSocket.flush(); + do{ + try { + Socket socket = new Socket(host, port); + BufferedReader readSocket = new BufferedReader( + new InputStreamReader(socket.getInputStream())); + BufferedWriter writeSocket = new BufferedWriter( + new OutputStreamWriter(socket.getOutputStream())); - while ((str = readSocket.readLine()) != null) { - System.out.println(str); - } + writeSocket.write("GET " + url + " HTTP/1.1\r\n"); + writeSocket.write("Host: " + host + "\n"); + writeSocket.write("\n"); + writeSocket.flush(); + while ((str = readSocket.readLine()) != null) { + System.out.println(str); + } + writeSocket.close(); + readSocket.close(); + socket.close(); + System.out.println("please input connection tree name or quit"); - writeSocket.close(); - readSocket.close(); - socket.close(); - - } catch (Exception ex) { - ex.printStackTrace(); - } + } catch (Exception ex) { + ex.printStackTrace(); + } + }while(input.readLine() != "quit"); } - }