# HG changeset patch # User one # Date 1421713876 -32400 # Node ID ca85609658bdb040aa61697babae312f799d1297 # Parent ae86706cab666da2c38a0a1f6b6f2b8f16fcc08e bug fix diff -r ae86706cab66 -r ca85609658bd .classpath --- a/.classpath Thu Jan 15 10:00:24 2015 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,168 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r ae86706cab66 -r ca85609658bd build.gradle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build.gradle Tue Jan 20 09:31:16 2015 +0900 @@ -0,0 +1,29 @@ +apply plugin: 'java' +apply plugin: 'maven' + +group = 'jp.ac.u_ryukyu.ie.cr.shoshi.jungle' +version = '0.0.1-SNAPSHOT' + +description = """bulletinboard""" + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + + + +repositories { + maven { url "http://eaio.com/maven2" } + maven { url "http://repo.maven.apache.org/maven2" } +} + +dependencies { + compile fileTree(dir: 'lib', include: '*.jar') + compile group: 'org.eclipse.jetty', name: 'jetty-server', version:'9.1.1.v20140108' + compile group: 'org.hectorclient', name: 'hector-core', version:'1.1-2' + compile(group: 'org.apache.cassandra', name: 'cassandra-all', version:'1.2.1') { +exclude(module: 'slf4j-log4j12') +exclude(module: 'log4j') + } + compile group: 'com.eaio.uuid', name: 'uuid', version:'3.3' + compile "junit:junit:4.7" +} diff -r ae86706cab66 -r ca85609658bd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/BulletinBoard.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/BulletinBoard.java Thu Jan 15 10:00:24 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/BulletinBoard.java Tue Jan 20 09:31:16 2015 +0900 @@ -1,5 +1,7 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; + public interface BulletinBoard { public Iterable getBoards(); @@ -7,5 +9,5 @@ public void createBoardMessage(String _board,String _author,String _message,String _editKey); public void editMessage(String _board,String _uuid,String _author,String _message,String _editKey); public String sanitize(String str); - public Iterable getMessages(String _boardName); + GetAttributeImp getAttribute(String _bname, String _nodeNum, String revisionStr); } diff -r ae86706cab66 -r ca85609658bd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/CassandraBulletinBoard.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/CassandraBulletinBoard.java Thu Jan 15 10:00:24 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/CassandraBulletinBoard.java Tue Jan 20 09:31:16 2015 +0900 @@ -217,4 +217,8 @@ return str; } + public GetAttributeImp getAttribute(String _bname, String _nodeNum, String revisionStr) { + return null; // 未実装 使うときに実装する + } + } diff -r ae86706cab66 -r ca85609658bd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/GetAttributeImp.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/GetAttributeImp.java Tue Jan 20 09:31:16 2015 +0900 @@ -0,0 +1,22 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs; + + +import fj.data.List; +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 getMessage(String key) { + return node.getAttributes().getString(key); + } + + public List getKeys() { + return node.getAttributes().getKeys(); + } + +} diff -r ae86706cab66 -r ca85609658bd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/JungleBulletinBoard.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/JungleBulletinBoard.java Thu Jan 15 10:00:24 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/JungleBulletinBoard.java Tue Jan 20 09:31:16 2015 +0900 @@ -11,10 +11,13 @@ 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.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.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 JungleBulletinBoard implements BulletinBoard { @@ -246,4 +249,33 @@ str = str.replaceAll("'", "'"); return str; } + + public GetAttributeImp getAttribute(String _bname, String _nodeNum, String revisionStr) { + + 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(_bname); + System.out.println(tree.revision()); + Long revision = Long.parseLong(revisionStr); + JungleTree oldTree = tree.getOldTree(revision).b(); + System.out.println(oldTree.revision()); + TreeNode node = oldTree.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); + } } diff -r ae86706cab66 -r ca85609658bd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/ShowBoardMessageServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/ShowBoardMessageServlet.java Thu Jan 15 10:00:24 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/bbs/ShowBoardMessageServlet.java Tue Jan 20 09:31:16 2015 +0900 @@ -6,6 +6,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import fj.data.List; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; + public class ShowBoardMessageServlet extends HttpServlet { /** @@ -46,12 +49,12 @@ _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("edit"); + GetAttributeImp attribute = bbs.getAttribute(_bname, "[-1]","0"); + List keys = attribute.getKeys(); + + for(String key : keys){ + String mesage = attribute.getMessage(key); + _pw.write("

" + key + " = " + mesage + "

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