# HG changeset patch # User tatsuki # Date 1467065170 -32400 # Node ID 725a0176a8732b61ca774bc1ce33eb1c4541dc3e # Parent 5d033ad129b276fbdd1551919064e94a45cd3418 remove delete file diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/App.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/App.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import me.prettyprint.hector.api.HConsistencyLevel; -import org.mortbay.jetty.Connector; -import org.mortbay.jetty.Server; -import org.mortbay.jetty.nio.SelectChannelConnector; -import org.mortbay.jetty.servlet.ServletHandler; -import org.mortbay.jetty.servlet.ServletHolder; -import org.mortbay.thread.QueuedThreadPool; - -import javax.servlet.Servlet; - - -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) throws Exception - { - BulletinBoard cassaBBS = null; - if(args.length == 0){ - cassaBBS = new JungleBulletinBoard(); - }else{ - HConsistencyLevel cLevel = HConsistencyLevel.QUORUM; - int rep_factor = 1; - int i=0; - while(i getBoards(); - public void createBoards(String _name, String _author, String _initMessage, String _editKey); - 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); - GetAttributeImp getAttribute(String _bname, String _nodeNum, String revisionStr); -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/CassandraBulletinBoard.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/CassandraBulletinBoard.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,219 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import me.prettyprint.cassandra.model.ConfigurableConsistencyLevel; -import me.prettyprint.cassandra.serializers.StringSerializer; -import me.prettyprint.cassandra.serializers.UUIDSerializer; -import me.prettyprint.cassandra.service.template.SuperCfResult; -import me.prettyprint.cassandra.service.template.SuperCfUpdater; -import me.prettyprint.cassandra.service.template.ThriftSuperCfTemplate; -import me.prettyprint.cassandra.utils.TimeUUIDUtils; -import me.prettyprint.hector.api.Cluster; -import me.prettyprint.hector.api.HConsistencyLevel; -import me.prettyprint.hector.api.Keyspace; -import me.prettyprint.hector.api.beans.HSuperColumn; -import me.prettyprint.hector.api.beans.OrderedSuperRows; -import me.prettyprint.hector.api.beans.SuperRow; -import me.prettyprint.hector.api.beans.SuperSlice; -import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition; -import me.prettyprint.hector.api.ddl.ColumnType; -import me.prettyprint.hector.api.ddl.ComparatorType; -import me.prettyprint.hector.api.ddl.KeyspaceDefinition; -import me.prettyprint.hector.api.factory.HFactory; -import me.prettyprint.hector.api.query.QueryResult; -import me.prettyprint.hector.api.query.RangeSuperSlicesQuery; -import me.prettyprint.hector.api.query.SuperSliceQuery; -import org.apache.cassandra.locator.SimpleStrategy; - -import java.util.*; - -public class CassandraBulletinBoard implements BulletinBoard -{ - private final String address; - private final String clusterName; - private final Cluster cluster; - private final String keyspace; - private final ConfigurableConsistencyLevel configurableConsistencyLevel = new ConfigurableConsistencyLevel(); - - private static final String COLUMN_FAMILY_BOARD = "boards"; - private final int REP_FACTOR; - - public CassandraBulletinBoard(String _clusterName,String _address,String _keyspaceName, HConsistencyLevel cLevel,int rep_factor ) - { - address = _address; - clusterName = _clusterName; - keyspace = _keyspaceName; - cluster = HFactory.getOrCreateCluster(clusterName,address); - Map clmap = new HashMap(); - clmap.put(COLUMN_FAMILY_BOARD, cLevel); - configurableConsistencyLevel.setReadCfConsistencyLevels(clmap); - configurableConsistencyLevel.setWriteCfConsistencyLevels(clmap); - REP_FACTOR = rep_factor; - initialize(); - } - - public CassandraBulletinBoard(String _clusterName,String _address,String _keyspaceName, HConsistencyLevel cLevel) - { - this(_clusterName, _address, _keyspaceName, cLevel, 1); - } - - - - private void initialize() - { - if(cluster.describeKeyspace(keyspace) == null){ - KeyspaceDefinition keyspaceDefinition = HFactory.createKeyspaceDefinition(keyspace, - SimpleStrategy.class.getName(),REP_FACTOR,Collections. emptyList()); - cluster.addKeyspace(keyspaceDefinition,false); - ColumnFamilyDefinition columnFamilyDefinition = HFactory.createColumnFamilyDefinition(keyspace,COLUMN_FAMILY_BOARD,ComparatorType.UUIDTYPE); - columnFamilyDefinition.setColumnType(ColumnType.SUPER); - cluster.addColumnFamily(columnFamilyDefinition); - } - } - - public Iterable getBoards() - { - Keyspace ksp = HFactory.createKeyspace(keyspace, cluster, configurableConsistencyLevel); - RangeSuperSlicesQuery query = HFactory.createRangeSuperSlicesQuery(ksp,StringSerializer.get(), - UUIDSerializer.get(),StringSerializer.get(),StringSerializer.get()); - query.setColumnFamily(COLUMN_FAMILY_BOARD).setKeys(null,null).setRange(null,null,false,0); - - QueryResult> result = query.execute(); - OrderedSuperRows rows = result.get(); - List> list = rows.getList(); - - IterableConverter.Converter> converter - = new IterableConverter.Converter>(){ - public String conv(SuperRow _b) { - return _b.getKey(); - } - }; - - return new IterableConverter>(list,converter); - } - - private static final String COLUMN_MESSAGE_AUTHOR = "author"; - private static final String COLUMN_MESSAGE_BODY = "message"; - private static final String COLUMN_MESSAGE_EDIT_KEY = "edit"; - - public void createBoardMessage(UUID _time,String _name,String _author,String _message,String _editKey) - { - Keyspace ksp = HFactory.createKeyspace(keyspace, cluster, configurableConsistencyLevel); - ThriftSuperCfTemplate template = - new ThriftSuperCfTemplate(ksp,COLUMN_FAMILY_BOARD,StringSerializer.get(), - UUIDSerializer.get(),StringSerializer.get()); - - SuperCfUpdater updater = template.createUpdater(_name,_time); - updater.setString(COLUMN_MESSAGE_AUTHOR,_author); - updater.setString(COLUMN_MESSAGE_BODY,_message); - updater.setString(COLUMN_MESSAGE_EDIT_KEY,_editKey); - - template.update(updater); - } - - public void createBoards(String _name,String _author,String _initMessage,String _editKey) - { - UUID time = TimeUUIDUtils.getTimeUUID(0); - createBoardMessage(time,_name,_author,_initMessage,_editKey); - } - - public Iterable getMessages(String _boardName) - { - Keyspace ksp = HFactory.createKeyspace(keyspace, cluster, configurableConsistencyLevel); - SuperSliceQuery query = HFactory.createSuperSliceQuery(ksp, StringSerializer.get(), UUIDSerializer.get(), StringSerializer.get(), StringSerializer.get()); - - UUID start = TimeUUIDUtils.getTimeUUID(0); - query.setKey(_boardName).setColumnFamily(COLUMN_FAMILY_BOARD).setRange(start,null,false,100); - - QueryResult> result = query.execute(); - SuperSlice ss = result.get(); - List> list = ss.getSuperColumns(); - - IterableConverter.Converter> converter = - new IterableConverter.Converter>(){ - public BoardMessage conv(HSuperColumn _b){ - UUID uuid = _b.getName(); - String author = _b.getSubColumnByName(COLUMN_MESSAGE_AUTHOR).getValue(); - String message = _b.getSubColumnByName(COLUMN_MESSAGE_BODY).getValue(); - BoardMessageImpl bm = new BoardMessageImpl(author,message,uuid.toString()); - return bm; - } - }; - - - return new IterableConverter>(list,converter); - } - - 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 createBoardMessage(String _board, String _author, String _message,String _editKey) - { - UUID time = TimeUUIDUtils.getUniqueTimeUUIDinMillis(); - createBoardMessage(time,_board,_author,_message,_editKey); - } - - public void editMessage(String _board,String _uuid,String _author,String _message,String _editKey) - { - Keyspace ksp = HFactory.createKeyspace(keyspace, cluster, configurableConsistencyLevel); - UUID time = UUID.fromString(_uuid); - ThriftSuperCfTemplate template = - new ThriftSuperCfTemplate(ksp,COLUMN_FAMILY_BOARD,StringSerializer.get(), - UUIDSerializer.get(),StringSerializer.get()); - - SuperCfResult result = template.querySuperColumn(_board,time); - String editKey = result.getString(COLUMN_MESSAGE_EDIT_KEY); - if(!editKey.equals(editKey)){ - return; - } - - SuperCfUpdater updater = template.createUpdater(_board,time); - updater.setString(COLUMN_MESSAGE_AUTHOR,_author); - updater.setString(COLUMN_MESSAGE_BODY,_message); - updater.setString(COLUMN_MESSAGE_EDIT_KEY,_editKey); - - template.update(updater); - } - - 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; - } - - public GetAttributeImp getAttribute(String _bname, String _nodeNum, String revisionStr) { - return null; // 未実装 使うときに実装する - } - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/CreateBoardMessageServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/CreateBoardMessageServlet.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; - -public class CreateBoardMessageServlet extends HttpServlet -{ - private final BulletinBoard bbs; - private static final String PARAM_BOARD_NAME = "bname"; - 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 CreateBoardMessageServlet(BulletinBoard _bbs) - { - bbs = _bbs; - } - - @Override - 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); - - try{ - bbs.createBoardMessage(boardName,author,msg,key); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/CreateBoardServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/CreateBoardServlet.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import org.apache.commons.lang.StringEscapeUtils; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; - -public class CreateBoardServlet extends HttpServlet -{ - private final BulletinBoard 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 CreateBoardServlet(BulletinBoard _bbs) - { - bbs = _bbs; - } - - public void doPost(HttpServletRequest _req,HttpServletResponse _res) - { - String boardName = StringEscapeUtils.unescapeHtml(_req.getParameter(PARAM_BOARD_NAME)); - String author = StringEscapeUtils.unescapeHtml(_req.getParameter(PARAM_BOARD_AUTHOR)); - String msg = StringEscapeUtils.unescapeHtml(_req.getParameter(PARAM_BOARD_INITMESSAGE)); - String key = StringEscapeUtils.unescapeHtml(_req.getParameter(PARAM_BOARD_EDITKEY)); - - try{ - bbs.createBoards(boardName,author,msg,key); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/EditMessageServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/EditMessageServlet.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; - -public class EditMessageServlet extends HttpServlet -{ - private final BulletinBoard 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 EditMessageServlet(BulletinBoard _bbs) - { - bbs = _bbs; - } - - public void doGet(HttpServletRequest _req,HttpServletResponse _res) - { - String bname = _req.getParameter(PARAM_BOARD_NAME); - String uuid = _req.getParameter(PARAM_BOARD_MSGID); - System.out.println("write"); - - try{ - PrintWriter pw = _res.getWriter(); - pw.write("

edit message

"); - pw.write("
Author : " + - "" + - "\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 uuid = _req.getParameter(PARAM_BOARD_MSGID); - - try{ - bbs.editMessage(boardName, uuid, author, msg, key); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/EditMessageUseGetServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/EditMessageUseGetServlet.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; - -public class EditMessageUseGetServlet extends HttpServlet{ - private final BulletinBoard 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 EditMessageUseGetServlet(BulletinBoard _bbs) - { - bbs = _bbs; - } - - public void doGet(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.editMessage(boardName, uuid, author, msg, key); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/GetAttributeImp.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/GetAttributeImp.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - - -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; - -import java.util.Iterator; - -public class GetAttributeImp { - private final TreeNode node; - - public GetAttributeImp(TreeNode _node) { - node = _node; - } - - public String getMessage(String key) { - return node.getAttributes().getString(key); - } - - public Iterator getKeys() { - return node.getAttributes().getKeys(); - } - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/HectorSample.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/HectorSample.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import me.prettyprint.cassandra.serializers.StringSerializer; -import me.prettyprint.cassandra.serializers.UUIDSerializer; -import me.prettyprint.cassandra.service.template.SuperCfUpdater; -import me.prettyprint.cassandra.service.template.ThriftSuperCfTemplate; -import me.prettyprint.cassandra.utils.TimeUUIDUtils; -import me.prettyprint.hector.api.*; -import me.prettyprint.hector.api.beans.*; -import me.prettyprint.hector.api.factory.HFactory; -import me.prettyprint.hector.api.query.QueryResult; -import me.prettyprint.hector.api.query.RangeSuperSlicesQuery; -import me.prettyprint.hector.api.query.SuperSliceQuery; - -import java.util.List; -import java.util.UUID; - -public class HectorSample -{ - public static void main(String _args[]) - { - Cluster myCluster = HFactory.getOrCreateCluster("test-cluster","localhost:9160"); - - Keyspace ksp = HFactory.createKeyspace("cassaBBS",myCluster); - - ThriftSuperCfTemplate template = - new ThriftSuperCfTemplate(ksp,"boards",StringSerializer.get(), - UUIDSerializer.get(),StringSerializer.get()); - UUID time = TimeUUIDUtils.getUniqueTimeUUIDinMillis(); - SuperCfUpdater updater = template.createUpdater("board1",TimeUUIDUtils.getTimeUUID(0)); - updater.setString("name","peter"); - updater.setString("message",time.toString()); - - template.update(updater); - - UUID start = TimeUUIDUtils.getTimeUUID(0); - - SuperSliceQuery sq = HFactory.createSuperSliceQuery(ksp, StringSerializer.get(), UUIDSerializer.get(), StringSerializer.get(), StringSerializer.get()); - sq.setKey("board1").setColumnFamily("ccc").setRange(start,null,false,100); - - QueryResult> results = sq.execute(); - - SuperSlice ss = results.get(); - List> list = ss.getSuperColumns(); - for(HSuperColumn sc : list){ - HColumn sub = sc.getSubColumnByName("name"); - System.out.println(sub.getValue()); - sub = sc.getSubColumnByName("message"); - System.out.println(sub.getValue()); - } - - RangeSuperSlicesQuery rsq = HFactory.createRangeSuperSlicesQuery(ksp,StringSerializer.get(), - UUIDSerializer.get(),StringSerializer.get(),StringSerializer.get()); - rsq.setKeys(null,null).setRange(null,null,false,0).setColumnFamily("ccc"); - - QueryResult> rsqResult = rsq.execute(); - OrderedSuperRows rows = rsqResult.get(); - for(SuperRow row : rows.getList()){ - System.out.println(row.getKey()); - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/IterableConverter.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/IterableConverter.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import java.util.Iterator; - -public class IterableConverter implements Iterable -{ - private final Iterable iterable; - private final Converter converter; - - public IterableConverter(Iterable _iterable,Converter _converter) - { - iterable = _iterable; - converter = _converter; - } - - public Iterator iterator() - { - return new IteratorConverter(iterable.iterator(),converter); - } - - private static final class IteratorConverter implements Iterator - { - private final Iterator iterator; - private final Converter converter; - - public IteratorConverter(Iterator _iterator,Converter _converter) - { - iterator = _iterator; - converter = _converter; - } - - public boolean hasNext() - { - return iterator.hasNext(); - } - - public A next() - { - return converter.conv(iterator.next()); - } - - public void remove() - { - iterator.remove(); - } - } - - public static interface Converter - { - public A conv(B _b); - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/JungleBulletinBoard.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/JungleBulletinBoard.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,219 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - - -import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle; -import jp.ac.u_ryukyu.ie.cr.jungle.Jungle; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.core.Children; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultEvaluator; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traversal; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; -import junit.framework.Assert; - -import java.nio.ByteBuffer; -import java.util.concurrent.atomic.AtomicInteger; - -public class JungleBulletinBoard implements - BulletinBoard { - 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"); - return new String(e.array()); - } - }; - - return new IterableConverter(chs, converter); - } - - public void createBoards(final String _name, final String _author, - final String _initMessage, final String _editKey) { - 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 result = editor.success(); - if (result.isA()) { - throw new IllegalStateException(); - } - - tree = jungle.getTreeByName(_name); - editor = tree.getTreeEditor(); - editor = editor.putAttribute(root,"author", ByteBuffer.wrap(_author.getBytes())).b(); - editor = editor.putAttribute(root,"key", ByteBuffer.wrap(_editKey.getBytes())).b(); - either = editor.putAttribute(root,"mes", ByteBuffer.wrap(_initMessage.getBytes())); - - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - editor.success(); - } - - 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(); - } - - JungleTreeEditor editor; - do { - TreeNode node = tree.getRootNode(); - int size = node.getChildren().size(); - DefaultNodePath path = new DefaultNodePath(); - - editor = tree.getTreeEditor(); - Either either = editor.addNewChildAt(path, - size); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - editor = editor.putAttribute(path.add(size),"author", ByteBuffer.wrap(_author.getBytes())).b(); - editor = editor.putAttribute(path.add(size),"key", ByteBuffer.wrap(_editKey.getBytes())).b(); - either = editor.putAttribute(path.add(size),"mes", ByteBuffer.wrap(_message.getBytes())); - - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - }while (editor.success().isA()); - } - - public void editMessage(String _board, String _uuid, final String _author, - final String _message, final String _editKey) { - JungleTreeEditor editor = null; - do { - DefaultNodePath path = new DefaultNodePath(); - path = path.add(Integer.parseInt(_uuid)); - - JungleTree tree = jungle.getTreeByName(_board); - editor = tree.getTreeEditor(); - - editor = editor.putAttribute(path,"author", ByteBuffer.wrap(_author.getBytes())).b(); - editor = editor.putAttribute(path,"key", ByteBuffer.wrap(_editKey.getBytes())).b(); - Either either = editor.putAttribute(path,"mes", ByteBuffer.wrap(_message.getBytes())); - - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - }while (editor.success().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); - } - - 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 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; - } - - 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 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/ShowBoardMessageServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/ShowBoardMessageServlet.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; -import java.util.Iterator; - -public class ShowBoardMessageServlet extends HttpServlet { - /** - * - */ - private static final long serialVersionUID = 1L; - private final BulletinBoard bbs; - private final String createBoardMessagePath; - - private static final String PARAM_BOARD_NAME = "bname"; - - public ShowBoardMessageServlet(BulletinBoard _bbs, String _createBoardMessagePath, String _editMessagePath) { - bbs = _bbs; - createBoardMessagePath = _createBoardMessagePath; - } - - public void doGet(HttpServletRequest _req, HttpServletResponse _res) { - String bname = _req.getParameter(PARAM_BOARD_NAME); - - 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("

" + bbs.sanitize(_bname) + "

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

\n"); - _pw.write("

Message

\n"); - _pw.write("

\n"); - GetAttributeImp attribute = bbs.getAttribute(_bname, "[-1]", "1"); - Iterator keys = attribute.getKeys(); - - do { - String key = keys.next(); - String mesage = attribute.getMessage(key); - _pw.write("

" + key + " = " + mesage + "

\n"); - }while(keys.hasNext()); - - _pw.write(""); - _pw.flush(); - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/ShowBoardsServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/bbs/ShowBoardsServlet.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.bbs; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; - -public class ShowBoardsServlet extends HttpServlet -{ - /** - * - */ - private static final long serialVersionUID = 1L; - private final BulletinBoard bbs; - private final String createBoardPath; - private final String showBoardMessagePath; - - public ShowBoardsServlet(BulletinBoard _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("

BoardName :

\n"); - _pw.write("

Author : EditKey :

\n"); - _pw.write("

Message

\n"); - _pw.write("


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

list of boards

"); - for(String board : bbs.getBoards()){ - _pw.write("
"); - } - - _pw.write(""); - _pw.flush(); - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/core/AttributesContainer.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/core/AttributesContainer.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -//package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core; -// -//public interface AttributesContainer -//{ -// public Attributes getAttributes(); -//} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/error/BasicErrors.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/error/BasicErrors.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.error; - -import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; -import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultError; - -public class BasicErrors -{ - public static final jp.ac.u_ryukyu.ie.cr.jungle.util.Error NULL_VALUE_NOT_ALLOWED = new DefaultError(); - public static final Error INDEX_OUT_OF_BOUNDS = new DefaultError(); -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/Constants.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/Constants.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.store; - -public class Constants -{ - public static final String DEFAULT_OWNER = "default"; - public static final long DEFAULT_REVISION_START_NUMBER = 0; -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/Transaction.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/Transaction.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.store; - -import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; - -public interface Transaction -{ - public Either success(); -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/impl/IndexTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/impl/IndexTreeEditor.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.store.impl; - - -import jp.ac.u_ryukyu.ie.cr.jungle.store.NodePath; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultEvaluator; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Direction; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traversal; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traverser; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; -import jp.ac.u_ryukyu.ie.cr.jungle.data.list.List; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.logger.LoggingNode; -import jp.ac.u_ryukyu.ie.cr.jungle.store.trasnformer.NodeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; - -public class IndexTreeEditor { - - private final Traverser traverser; - - - public IndexTreeEditor(Traverser traverser) - { - this.traverser = traverser; - } - - - public Either edit(TreeNode root,NodePath path,NodeEditor editor) - { - DefaultEvaluator e = new DefaultEvaluator(path); - Either either = traverser.traverse(root,e); - - if(either.isA()){ - return DefaultEither.newA(either.a()); - } - - Traversal t = either.b(); - Either ret = clone(t,editor); - - return ret; - } - - private Either clone(Traversal t,NodeEditor editor) - { - // copying nodes from bottom to root - List> path = new List(); - for (Direction direction : t) { - path = path.addLast(direction); - } - - // target - Direction targetDirection = path.head(); - TreeNode target = targetDirection.getTarget(); - - Either either = editor.edit(target); - if (either.isA()) { - return DefaultEither.newA(either.a()); - } - - LoggingNode newWrap = either.b(); - - // top - int pos = targetDirection.getPosition(); - TreeNode child = newWrap.getWrap(); - - for (Direction parentDirection : path.deleteLast()) { - TreeNode updateTargetNode = parentDirection.getTarget(); - TreeNodeChildren chs = updateTargetNode.getChildren(); - - - - Either ret = chs.replaceNode(pos, child); - if (ret.isA()) { - return DefaultEither.newA(ret.a()); - } - - TreeNode newParent = ret.b(); - - child = newParent; - pos = parentDirection.getPosition(); - } - - TreeNode newRoot = child; - LoggingNode logNode = editor.wrap(newRoot, newWrap.getOperationLog()); - - - return DefaultEither.newB(logNode); - } - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/AbstractTreeMapThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/AbstractTreeMapThread.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - -public abstract class AbstractTreeMapThread extends Thread{ - public abstract void set(boolean flag); - public abstract long getFindCount(); -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/DataBaseBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/DataBaseBenchMark.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,156 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - - -import com.mongodb.MongoClient; -import com.mongodb.WriteConcern; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; -import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle; -import jp.ac.u_ryukyu.ie.cr.jungle.Jungle; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.store.NodePath; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; -import org.bson.Document; -import org.xml.sax.SAXException; - -import javax.xml.parsers.ParserConfigurationException; -import java.io.*; -import java.nio.ByteBuffer; - -public class DataBaseBenchMark { - public static void main(String[] args) throws InterruptedException, IOException, ParserConfigurationException, SAXException { - - if (args.length < 2) { - System.out.println("args[0] = jungle or mongo, args[1] = read or write" ); - System.exit(0); - } - - Runtime rt = Runtime.getRuntime(); - int cpuNum = rt.availableProcessors(); - - if (args[0].equals("jungle")) - jungleBench(args, cpuNum); - else if (args[0].equals("mongo")) - mongoBench(args, cpuNum); - } - - private static void mongoBench(String[] args, int cpuNum) throws IOException, InterruptedException { - MongoClient client = new MongoClient("localhost", 27017); - client.setWriteConcern(WriteConcern.JOURNALED); - client.dropDatabase("mydb"); - MongoDatabase database = client.getDatabase("mydb"); - MongoCollection coll = database.getCollection("mycoll"); - for (int i = 0; i < 10000; i++) { - if (i % 100 == 0) - System.out.println(i / 100); - coll.insertOne(new Document("key",String.valueOf(i))); - } - coll.createIndex(new Document("key", 1)); - for (final Document index : coll.listIndexes()) { - System.out.println(index.toJson()); - } - File file = new File("./time/" + args[0] + args[1] + "Time"); - PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); - DataBaseBenchMarkThread readThread[]; - for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) { - readThread = new DataBaseBenchMarkThread[THREAD_COUNT]; - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count] = new findMongoAttributeThread(coll); - } - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count].start(); - } - System.out.println("StartThread"); - Thread.sleep(1000); - long readCount = 0; - for (int count = 0; THREAD_COUNT > count; count++) { - readCount = readCount + readThread[count].getFindCount(); - readThread[count].set(false); - readThread[count] = null; - } - pw.println(THREAD_COUNT + " " + readCount); - System.out.println(THREAD_COUNT + "readCount = " + readCount); - System.gc(); - System.out.println("-------------GC--------------"); - Thread.sleep(1000); - } - client.close(); - pw.close(); - } - - private static void jungleBench(String[] args, int cpuNum) throws IOException, InterruptedException { - JungleTree tree = createJungleTree(); - File file = new File("./time/" + args[0] + args[0] + "Time"); - PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); - DataBaseBenchMarkThread readThread[]; - - for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) { - readThread = new DataBaseBenchMarkThread[THREAD_COUNT]; - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count] = new findTreeAttributeThread(tree); - } - JungleWriteThread writeThread = null; - if (args[1].equals("write")) { - writeThread = new JungleWriteThread(tree); - writeThread.start(); - } - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count].start(); - } - System.out.println("StartThread"); - Thread.sleep(1000); - if (writeThread != null) { - writeThread.set(false); - writeThread.get(); - } - long readCount = 0; - for (int count = 0; THREAD_COUNT > count; count++) { - readCount = readCount + readThread[count].getFindCount(); - readThread[count].set(false); - readThread[count] = null; - } - pw.println(THREAD_COUNT + " " + readCount); - System.out.println(THREAD_COUNT + "readCount = " + readCount); - System.gc(); - System.out.println("-------------GC--------------"); - Thread.sleep(1000); - } - pw.close(); - } - - private static JungleTree createJungleTree() { - Jungle jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); - JungleTree tree = jungle.createNewTree("tree"); - JungleTreeEditor editor = tree.getTreeEditor(); - editor = editor.putAttribute(new DefaultNodePath(), "key", ByteBuffer.wrap(String.valueOf(0).getBytes())).b(); - JungleTreeEditor newEditor = createTree(0, new DefaultNodePath(), editor); - if (newEditor.success().isA()) { - System.out.println("success faild"); - System.exit(1); - } - return tree; - } - - static Integer nodeNum = 1; - - public static JungleTreeEditor createTree(int deep, NodePath path, JungleTreeEditor editor) { - - String value1 = String.valueOf(nodeNum); - nodeNum++; - String value2 = String.valueOf(nodeNum); - nodeNum++; - editor = editor.addNewChildAt(path, 0).b(); - editor = editor.putAttribute(path.add(0), "key", ByteBuffer.wrap(value1.getBytes())).b(); - editor = editor.addNewChildAt(path, 1).b(); - editor = editor.putAttribute(path.add(1), "key", ByteBuffer.wrap(value2.getBytes())).b(); - deep++; - if (deep < 10) { - editor = createTree(deep, path.add(0), editor); - editor = createTree(deep, path.add(1), editor); - } - return editor; - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/DataBaseBenchMarkThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/DataBaseBenchMarkThread.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - - -public abstract class DataBaseBenchMarkThread extends Thread{ - public abstract long getFindCount(); - public abstract void set(boolean flag); -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/JungleWriteThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/JungleWriteThread.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath; - -import java.nio.ByteBuffer; - - -public class JungleWriteThread extends Thread { - - JungleTree tree; - boolean loop = true; - private int writeCount; - - public JungleWriteThread(JungleTree tree) { - this.tree = tree; - } - - public void set(boolean flag) { - loop = flag; - } - - public void get() { - System.out.println("writeCount = " + writeCount); - } - - @Override - public void run() { - while (loop) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); - } - JungleTreeEditor editor = tree.getTreeEditor(); - editor = editor.putAttribute(new DefaultNodePath(), "key", ByteBuffer.wrap(String.valueOf(0).getBytes())).b(); - if (editor.success().isA()) - System.out.println("faild"); - else - writeCount++; - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/TatsukiTreeMapGetThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/TatsukiTreeMapGetThread.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - -import jp.ac.u_ryukyu.ie.cr.jungle.data.treemap.TreeMap; - -import java.util.Optional; - - -public class TatsukiTreeMapGetThread extends AbstractTreeMapThread { - TreeMap map; - private long findCount; - boolean loop = true; - - public TatsukiTreeMapGetThread(TreeMap map) { - this.map = map; - } - - @Override - public long getFindCount() { - System.out.println("thread count = " + findCount); - return findCount; - } - - @Override - public void set(boolean loop) { - this.loop = loop; - } - - @Override - public void run() { - while (loop) { - for (long count = 0 ; count < 1000; count++) { - Optional value = map.get(count); - if (!value.isPresent()) - System.out.println("error"); - } - findCount++; - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/TreeMapBenchMark.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/TreeMapBenchMark.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - -import jp.ac.u_ryukyu.ie.cr.jungle.data.treemap.TreeMap; - -import java.io.*; - -/** - * Created by e115731 on 15/03/17. - */ -public class TreeMapBenchMark { - public static void main(String[] args) throws InterruptedException, IOException { - - if (args.length == 0) { - System.out.println("args get or getLoop or list"); - System.exit(0); - } - - Runtime rt = Runtime.getRuntime(); - int cpuNum = rt.availableProcessors(); - - File file = new File("./time/" + args[0] + "Time"); - - PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); - - AbstractTreeMapThread readThread[]; - - for (int THREAD_COUNT = 1; THREAD_COUNT <= cpuNum; THREAD_COUNT++) { - - readThread = new AbstractTreeMapThread[THREAD_COUNT]; - - switch (args[0]) { - case "util": { - java.util.TreeMap map = new java.util.TreeMap<>(); - for (long count = 0; count < 1000; count++) { - map.put(count, String.valueOf(count)); - } - - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count] = new UtilTreeMapGetThread(map); - } - break; - } - case "data": { - TreeMap map = new TreeMap<>(); - for (long count = 0; count < 1000; count++) { - map = map.put(count, String.valueOf(count)); - } - - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count] = new TatsukiTreeMapGetThread(map); - } - break; - } - default: - System.out.println("not allow args"); - System.exit(0); - } - - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count].start(); - } - - System.out.println("StartThread"); - - Thread.sleep(1000); - long readCount = 0; - - for (int count = 0; THREAD_COUNT > count; count++) { - readThread[count].set(false); - readCount = readCount + readThread[count].getFindCount(); - readThread[count].stop(); - } - - pw.println(THREAD_COUNT + " " + readCount); - System.out.println(THREAD_COUNT + "readCount = " + readCount); - Thread.sleep(1000); - } - - pw.close(); - } - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/UtilTreeMapGetThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/UtilTreeMapGetThread.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - -import java.util.TreeMap; - - -public class UtilTreeMapGetThread extends AbstractTreeMapThread { - TreeMap map; - private long findCount; - boolean loop = true; - - public UtilTreeMapGetThread(TreeMap map) { - this.map = map; - } - - @Override - public long getFindCount() { - System.out.println("thread count = " + findCount); - return findCount; - } - - @Override - public void set(boolean loop) { - this.loop = loop; - } - - @Override - public void run() { - while (loop) { - for (long count = 0; count < 1000; count++) { - String value = map.get(count); - if (value == null) - System.out.println("error"); - } - findCount++; - } - } -} \ No newline at end of file diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/findMongoAttributeThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/findMongoAttributeThread.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - -import com.mongodb.client.FindIterable; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoCursor; -import org.bson.Document; - - -public class findMongoAttributeThread extends DataBaseBenchMarkThread { - private long findCount; - boolean loop = true; - MongoCollection coll; - - public findMongoAttributeThread( MongoCollection coll) { - this.coll = coll; - this.findCount = 0; - } - - @Override - public long getFindCount() { - System.out.println("thread count = " + findCount); - return findCount; - } - - public void set(boolean loop) { - this.loop = loop; - } - - @Override - public void run() { - while (loop) { - FindIterable searchResultList = coll.find(new Document("key","1")); - MongoCursor iterator = searchResultList.iterator(); - if (iterator.hasNext()) { - findCount++; - } - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/findTreeAttributeThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/findTreeAttributeThread.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.InterfaceTraverser; -import java.util.Iterator; - - -public class findTreeAttributeThread extends DataBaseBenchMarkThread { - - JungleTree tree; - private long findCount; - - boolean loop = true; - - public findTreeAttributeThread(JungleTree tree) { - this.tree = tree; - this.findCount = 0; - } - - @Override - public long getFindCount() { - System.out.println("thread count = " + findCount); - return findCount; - } - - public void set(boolean loop) { - this.loop = loop; - } - - @Override - public void run() { - while (loop) { - InterfaceTraverser traverser = tree.getTraverser(true); - Iterator it = traverser.find(null, "key", "0"); - if (it.hasNext()) { - findCount++; - } - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/readTreeAttributeThread.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/test/readTreeAttributeThread.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.test; - -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; - -/** - * Created by e115731 on 15/03/17. - */ -public class readTreeAttributeThread extends DataBaseBenchMarkThread { - - JungleTree tree; - private long findCount; - - boolean loop = true; - - public readTreeAttributeThread(JungleTree tree) { - this.tree = tree; - this.findCount = 0; - } - - @Override - public long getFindCount() { - System.out.println("thread couny = " + findCount); - return findCount; - } - - public void set(boolean loop) { - this.loop = loop; - } - - @Override - public void run() { - while (loop) { - TreeNode root = tree.getRootNode(); - if (root != null) { - String attribute = root.getAttributes().getString("key"); - if (attribute.equals("0")) - findCount++; - else - System.out.println("faild"); - } - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/util/Triple.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/util/Triple.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungle.util; - -public class Triple -{ - private A a; - private B b; - private C c; - - public Triple(A _a,B _b,C _c) - { - a = _a; - b = _b; - c = _c; - } - - public A getA() - { - return a; - } - - public B getB() - { - return b; - } - - public C getC() - { - return c; - } - - public void setA(A _a) - { - a = _a; - } - - public void setB(B _b) - { - b = _b; - } - - public void setC(C _c) - { - c = _c; - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/BoardRenewTime.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/BoardRenewTime.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs; - -public interface BoardRenewTime { - - public String getboardName(); - public Long getRenewTime(); - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/BulletinBoardJungleManager.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/BulletinBoardJungleManager.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs; - - -import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle; -import jp.ac.u_ryukyu.ie.cr.jungle.Jungle; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkTreeOperationLog; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.transaction.JungleUpdater; - -import java.nio.ByteBuffer; -import java.util.concurrent.atomic.AtomicInteger; - -public class BulletinBoardJungleManager { - private static BulletinBoardJungleManager instance = new BulletinBoardJungleManager(); - private Jungle jungle; - private static AtomicInteger requestCounter = new AtomicInteger(0); - - private BulletinBoardJungleManager() { - jungle = new DefaultJungle(null,"default",new DefaultTreeEditor(new DefaultTraverser())); - } - - public static int requestGetAndIncrement() { - return requestCounter.getAndIncrement(); - } - - public static int requestIncrementAndGet() { - return requestCounter.incrementAndGet(); - } - - public static BulletinBoardJungleManager getInstantce() { - return instance; - } - - public static void setJungle(Jungle _j) { - instance.jungle = _j; - } - public static AtomicInteger getRequestCounter() { - return requestCounter; - } - - public static Jungle getJungle() { - return instance.jungle; - } - - public static JungleTree createNewTree(String name) { - return instance.jungle.createNewTree(name); - } - - public static Either update(NetworkTreeOperationLog netLog) { - String treeName = netLog.getTreeName(); - Jungle jungle = BulletinBoardJungleManager.getJungle(); - if (jungle.getTreeByName(treeName) == null) { - if(null == jungle.createNewTree(treeName)){ - throw new IllegalStateException(); - } - } - Either either = null; - JungleTree tree = jungle.getTreeByName(treeName); - - long timestamp = System.currentTimeMillis(); - ByteBuffer tBuffer = ByteBuffer.allocate(16); - DefaultNodePath root = new DefaultNodePath(); - tBuffer.putLong(timestamp); - do { - JungleTreeEditor editor = tree.getLocalTreeEditor(); - /* - * Merge. - */ - int pos = calculatePosition(tree.getRootNode(), netLog.getTimeStamp()); - either = JungleUpdater.edit(editor, netLog, pos); - if(either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.putAttribute(root, "renewtime", tBuffer); - if(either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - }while(either.isA()); - requestIncrementAndGet(); - return either; - } - - private static int calculatePosition(TreeNode node, long newNodeTimeStamp) { - int count = 0; - long childTimeStamp = 0; - for(TreeNode n : node.getChildren()) { - ByteBuffer timestamp = n.getAttributes().get("timestamp"); - if(timestamp == null) { - return count; - } - childTimeStamp = timestamp.getLong(0); - if (newNodeTimeStamp < childTimeStamp) { - break; - } - count++; - } - return count; - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/DistributeApp.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/DistributeApp.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs; - -import alice.topology.node.TopologyNode; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.codesegment.StartBBSCodeSegment; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.remote.RemoteConfig; - -public class DistributeApp { - public static void main(String[] args) throws Exception { - RemoteConfig conf = new RemoteConfig(args); - System.out.println("test"); - if (conf.getManagerHostName() == null) { - // String localHostName ="localhost"; - // HostMessage host = new HostMessage(localHostName, conf.localPort); - StartBBSCodeSegment cs1 = new StartBBSCodeSegment(args, conf.bbsPort); - cs1.ods.put("host", "node0"); - } else { - new TopologyNode(conf, new StartBBSCodeSegment(args, conf.bbsPort)); - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/NetworkBulletinBoard.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/NetworkBulletinBoard.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs; - - -import jp.ac.u_ryukyu.ie.cr.jungle.bbs.BulletinBoard; - -public interface NetworkBulletinBoard extends BulletinBoard { - public void init(); - public int getRequestNum(); - public long getRenewTime(String boardName); - 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 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); - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/NetworkJungleBulletinBoard.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/NetworkJungleBulletinBoard.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,689 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs; - - -import jp.ac.u_ryukyu.ie.cr.jungle.Jungle; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.bbs.BoardMessage; -import jp.ac.u_ryukyu.ie.cr.jungle.bbs.GetAttributeImp; -import jp.ac.u_ryukyu.ie.cr.jungle.bbs.IterableConverter; -import jp.ac.u_ryukyu.ie.cr.jungle.core.Children; -import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeList; -import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListReader; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.logger.DefaultOperationLog; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.logger.LoggingNode; -import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.logger.OperationLog; -import jp.ac.u_ryukyu.ie.cr.jungle.store.trasnformer.NodeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultEvaluator; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; -import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traversal; -import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.core.NetworkDefaultJungle; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.AliceJournal; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.NetworkJournal; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJournal; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.transaction.JungleUpdater; -import junit.framework.Assert; - -import java.io.File; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.concurrent.atomic.AtomicInteger; - -public class NetworkJungleBulletinBoard implements NetworkBulletinBoard { - protected final Jungle jungle; - private final NetworkJournal journal; - private final String LOG_DIR; - private Boolean persistentFlag; - private AtomicInteger requestCounter; - private long renewTime; - - private NetworkJungleBulletinBoard(String _uuid, NetworkJournal _journal) { - journal = _journal; - 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) { - this(_uuid, new AliceJournal()); - jungle.createNewTree("boards"); - } - - public static NetworkBulletinBoard NewPersistentJungle(String _uuid) { - NetworkJungleBulletinBoard board = new NetworkJungleBulletinBoard(_uuid, new PersistentJournal()); - board.persistentFlag = true; - return board; - } - - public void init() { - if (!persistentFlag) { - return; - } - checkAndCreateLogDirectory(); - try { - commitLogRecover(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void checkAndCreateLogDirectory() { - File logFile = new File(LOG_DIR); - if (!logFile.exists()) { - logFile.mkdir(); - return; - } - if (logFile.isFile()) { - logFile.delete(); - logFile.mkdir(); - } - } - - public void commitLogRecover() throws IOException { - File[] logFiles = new File(LOG_DIR).listFiles(); - for (File logFile : logFiles) { - commitLogRecover(logFile); - logFile.delete(); - } - if (jungle.getTreeByName("boards") == null) { - jungle.createNewTree("boards"); - } - } - - private void commitLogRecover(File logFile) throws IOException { - journal.setInputFile(logFile); - ChangeListReader reader = journal.getReader(); - if (reader == null) - return; - for (ChangeList chList : reader) { - String treeName = chList.getTreeName(); - JungleTree tree = jungle.getTreeByName(treeName); - if (tree == null) { - tree = jungle.createNewTree(treeName); - } - JungleTreeEditor editor = tree.getLocalTreeEditor(); - Either either = JungleUpdater.edit(editor, chList); - editor = either.b(); - if (either.isA()) { - throw new IOException("Failed commit log recovery"); - } - editor.success(); - } - } - - 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 long getRenewTime(String _boardName) { - return renewTime; - } - - public void createBoards(final String _name, final String _author, final String _initMessage, final String _editKey) { - requestCounter.incrementAndGet(); - 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(); - final long timestamp = System.currentTimeMillis(); - ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - either = editor.putAttribute(root.add(0), "timestamp", tBuffer); - if (either.isA()) { - throw new IllegalStateException(); - } - either = either.b().success(); - if (either.isA()) { - throw new IllegalStateException(); - } - - tree = jungle.getTreeByName(_name); - editor = tree.getTreeEditor(); - either = editor.addNewChildAt(root, 0); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - - NodeEditor e = new NodeEditor() { - ByteBuffer tBuffer2 = ByteBuffer.allocate(16); - - 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(_initMessage.getBytes())).b(); - logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); - tBuffer2.putLong(timestamp); - logNode = logNode.getAttributes().put("timestamp", tBuffer2).b(); - return DefaultEither.newB(logNode); - } - - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - }; - - either = editor.edit(root.add(0), e); - if (either.isA()) { - throw new IllegalStateException(); - } - either.b().success(); - - } - - public void createFolder(final String _board, final String _author, final String _message, final String _editKey, - String _path) { - JungleTree tree = jungle.getTreeByName(_board); - if (tree == null) { - throw new IllegalStateException(); - } - - DefaultNodePath path = new DefaultNodePath(); - String[] nums = _path.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - - requestCounter.incrementAndGet(); - 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(); - 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) { - 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 { - - 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 _path, 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(); - String[] nums = _path.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - do { - - 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()); - renewTime = timestamp; - } - - public void createAttribute(String _board, String _path, 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(); - String[] nums = _path.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - - do { - 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 _bname, String _path, final String id, final String _message) { - requestCounter.incrementAndGet(); - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - JungleTree tree = jungle.getTreeByName(_bname); - Either either = null; - DefaultNodePath path = new DefaultNodePath(); - String[] nums = _path.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - - do { - JungleTreeEditor editor = tree.getTreeEditor(); - NodeEditor e = new NodeEditor() { - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node, new DefaultOperationLog()); - 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) { - requestCounter.incrementAndGet(); - 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(); - String[] nums = _path.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - - do { - 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) { - 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(); - String[] nums = _path.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - - do { - 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) { - 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(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()); - renewTime = timestamp; - } - - public Iterable getFolder(String _boardName, String _nodeNum) { - DefaultNodePath path = new DefaultNodePath(); - System.out.println(_nodeNum.substring(0, 1)); - String[] nums = _nodeNum.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - JungleTree tree = jungle.getTreeByName(_boardName); - TreeNode node = tree.getRootNode(); - requestCounter.incrementAndGet(); - - 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("mes").array()); - counter.incrementAndGet(); - return new BoardMessageImpl(null, message, uuid); - } - }; - return new IterableConverter(chs, converter); - } - - public boolean compare(TreeNode compareNode, String compareAttribute) { - String labName = compareNode.getAttributes().getString("mes"); - if (labName.equals(compareAttribute)) - return true; - - for (int loopCount = 0; compareNode.getAttributes().getString("mes" + loopCount) != null; loopCount++) { - labName = compareNode.getAttributes().getString("mes" + loopCount); - if (labName.equals(compareAttribute)) - return true; - } - - return false; - } - - public int getRequestNum() { - return requestCounter.get(); - } - - 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 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 GetAttributeImp getAttribute(String _bname, String _path, String revisionStr) { - DefaultNodePath path = new DefaultNodePath(); - String[] nums = _path.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - - JungleTree tree = jungle.getTreeByName(_bname); - TreeNode node; - if (revisionStr.equals("-1")) { - node = tree.getRootNode(); - } else { - Long revision = Long.parseLong(revisionStr); - JungleTree oldTree = tree.getOldTree(revision).b(); - 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 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/RequestNumCheckServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/RequestNumCheckServlet.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; - - -public class RequestNumCheckServlet extends HttpServlet -{ - private final NetworkBulletinBoard bbs; - private static final long serialVersionUID = 1L; - - public RequestNumCheckServlet(NetworkBulletinBoard _bbs) - { - bbs = _bbs; - } - - public void doGet(HttpServletRequest _req,HttpServletResponse _res) - { - int num = bbs.getRequestNum(); - - try{ - PrintWriter pw = _res.getWriter(); - pw.write(Integer.toString(num)); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - - - } - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/ShowMessageWithTimeStampServlet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/ShowMessageWithTimeStampServlet.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs; - -import jp.ac.u_ryukyu.ie.cr.jungle.bbs.GetAttributeImp; -import org.eclipse.jetty.util.thread.ThreadPool; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; -import java.util.Iterator; - -public class ShowMessageWithTimeStampServlet extends HttpServlet { - /** - * - */ - private static final long serialVersionUID = 1L; - private final NetworkBulletinBoard bbs; - private final String createBoardMessagePath; - - private static final String PARAM_BOARD_NAME = "bname"; - private final String editMessagePath; - - public ShowMessageWithTimeStampServlet(NetworkBulletinBoard _bbs, - String _createBoardMessagePath, String _editMessagePath, ThreadPool thp) { - bbs = _bbs; - 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("

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

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

\n"); - _pw.write("

Message

\n"); - _pw.write("

\n"); - - GetAttributeImp attribute = bbs.getAttribute(_bname, "[-1]", "0"); - Iterator keys = attribute.getKeys(); - - while (keys.hasNext()) { - String key = keys.next(); - String mesage = attribute.getMessage(key); - _pw.write("

" + key + " = " + mesage + "

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

edit" + "

"); - _pw.write(""); - _pw.flush(); - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/codesegment/LogPutCodeSegment.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/codesegment/LogPutCodeSegment.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.codesegment; - -import alice.codesegment.CodeSegment; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkTreeOperationLog; - - -public class LogPutCodeSegment extends CodeSegment{ - - NetworkTreeOperationLog log; - - public LogPutCodeSegment(NetworkTreeOperationLog _log) { - log = _log; - } - - @Override - public void run() { - ods.put("log", log); - } - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/codesegment/LogUpdateCodeSegment.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/codesegment/LogUpdateCodeSegment.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.codesegment; - -import alice.codesegment.CodeSegment; -import alice.datasegment.CommandType; -import alice.datasegment.Receiver; -import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; -import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.BulletinBoardJungleManager; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkTreeOperationLog; - -import java.util.List; - -public class LogUpdateCodeSegment extends CodeSegment { - - Receiver log = ids.create(CommandType.TAKE); - Receiver clist = ids.create(CommandType.PEEK); - - public LogUpdateCodeSegment() { - log.setKey("log"); - clist.setKey("_CLIST");; - } - - public LogUpdateCodeSegment(int index) { - log.setKey("log", index); - clist.setKey("_CLIST");; - } - - public void run() { - int index = log.index; - new LogUpdateCodeSegment(); - NetworkTreeOperationLog netLog = log.asClass(NetworkTreeOperationLog.class); - @SuppressWarnings("unchecked") - List list = clist.asClass(List.class); - for (String node : list) { - if (!node.equals(log.from)) { - ods.put(node, log.key, log.getVal()); - } - } - if (!log.from.equals("local")) { - Either either = BulletinBoardJungleManager.update(netLog); - if(either.isA()) { - new LogUpdateCodeSegment(index); - throw new IllegalStateException(); - } - } - } -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/codesegment/StartBBSCodeSegment.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/codesegment/StartBBSCodeSegment.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.codesegment; - -import alice.codesegment.CodeSegment; -import alice.datasegment.CommandType; -import alice.datasegment.Receiver; -import jp.ac.u_ryukyu.ie.cr.jungle.bbs.*; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.NetworkBulletinBoard; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.NetworkJungleBulletinBoard; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.RequestNumCheckServlet; -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; - -import javax.servlet.Servlet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class StartBBSCodeSegment extends CodeSegment { - - int bbsPort = 8080; - Receiver host = ids.create(CommandType.PEEK); - private Pattern pattern = Pattern.compile("^(node|cli)([0-9]+)$"); - private String[] args; - boolean persistentFlag = false; - - public StartBBSCodeSegment(String[] _args, int p) { - args = _args; - bbsPort = p; - host.setKey("host"); - } - - public StartBBSCodeSegment() { - args = null; - host.setKey("host"); - } - - @Override - public void run() { - String name = host.asString(); - Matcher matcher = pattern.matcher(name); - matcher.find(); - // String type = matcher.group(1); - for(String arg: args) { - if(arg.equals("-persistent")){ - persistentFlag = true; - } - } - NetworkBulletinBoard cassaBBS = null; - if(persistentFlag) { - System.out.println("log loading..."); - cassaBBS = NetworkJungleBulletinBoard.NewPersistentJungle(name); - cassaBBS.init(); - } else { - cassaBBS = new NetworkJungleBulletinBoard(name); - cassaBBS.init(); - } - - System.out.println("StartBBSCodeSegment"); - System.out.println("name : "+ name); - /* Jetty registration */ - String createBoardMessagePath = "/createBoardMessage"; - String createBoardPath = "/createBoard"; - String editMessagePath = "/editMessage"; - String showBoardMessagePath = "/showBoardMessage"; - - - Server serv = new Server(bbsPort); - ThreadPool thp = serv.getThreadPool(); - Servlet createBoardMessage = new CreateBoardMessageServlet(cassaBBS); - Servlet createBoard = new CreateBoardServlet(cassaBBS); - Servlet editBoardMessage = new EditMessageServlet(cassaBBS); - Servlet index = new ShowBoardsServlet(cassaBBS,createBoardPath,showBoardMessagePath); - Servlet board = new ShowBoardMessageServlet(cassaBBS,createBoardMessagePath,editMessagePath); - //Servlet board = new ShowMessageWithTimeStampServlet(cassaBBS,createBoardMessagePath,thp); - - ServletHandler context = new ServletHandler(); - context.addServletWithMapping(new ServletHolder(createBoardMessage),createBoardMessagePath); - context.addServletWithMapping(new ServletHolder(createBoard),createBoardPath); - context.addServletWithMapping(new ServletHolder(editBoardMessage),editMessagePath); - context.addServletWithMapping(new ServletHolder(index),"/"); - context.addServletWithMapping(new ServletHolder(board),showBoardMessagePath); - /* - * For write benchmark - */ - String editMessageUseGetPath = "/editMessageUseGet"; - Servlet editMessageUseGet = new EditMessageUseGetServlet(cassaBBS); - context.addServletWithMapping(new ServletHolder(editMessageUseGet), editMessageUseGetPath); - String requestNumCheckPath = "/requestNum"; - Servlet requestNumCheckServlet = new RequestNumCheckServlet(cassaBBS); - context.addServletWithMapping(new ServletHolder(requestNumCheckServlet), requestNumCheckPath); - - serv.setHandler(context); - try { - serv.start(); - } catch (Exception e) { } - new LogUpdateCodeSegment(); - } - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/io/NullOutputStream.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/bbs/io/NullOutputStream.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.io; - -import java.io.IOException; -import java.io.OutputStream; - -public class NullOutputStream extends OutputStream { - - public NullOutputStream() { - } - - @Override - public void write(int arg0) throws IOException { - } - -} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/codesegment/LogPutCodeSegment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/codesegment/LogPutCodeSegment.java Tue Jun 28 07:06:10 2016 +0900 @@ -0,0 +1,20 @@ +package jp.ac.u_ryukyu.ie.cr.jungleNetwork.codesegment; + +import alice.codesegment.CodeSegment; +import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkTreeOperationLog; + + +public class LogPutCodeSegment extends CodeSegment{ + + NetworkTreeOperationLog log; + + public LogPutCodeSegment(NetworkTreeOperationLog _log) { + log = _log; + } + + @Override + public void run() { + ods.put("log", log); + } + +} diff -r 5d033ad129b2 -r 725a0176a873 src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/transaction/NetworkDefaultJungleTreeEditor.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/transaction/NetworkDefaultJungleTreeEditor.java Sun Feb 21 18:28:01 2016 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/transaction/NetworkDefaultJungleTreeEditor.java Tue Jun 28 07:06:10 2016 +0900 @@ -19,7 +19,7 @@ import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; import jp.ac.u_ryukyu.ie.cr.jungle.util.IterableConverter; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.codesegment.LogPutCodeSegment; +import jp.ac.u_ryukyu.ie.cr.jungleNetwork.codesegment.LogPutCodeSegment; import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkTreeOperationLog; import java.io.IOException; diff -r 5d033ad129b2 -r 725a0176a873 src/test/java/jp/ac/u_ryukyu/ie/cr/junglenetwork/showMessageTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/junglenetwork/showMessageTest.java Sun Feb 21 18:28:01 2016 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -package jp.ac.u_ryukyu.ie.cr.junglenetwork; - -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.bbs.codesegment.StartBBSCodeSegment; -import jp.ac.u_ryukyu.ie.cr.jungleNetwork.remote.RemoteConfig; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.net.Socket; - - -public class showMessageTest { - - 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); - 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); - - do{ - try { - Socket socket = new Socket(host, port); - BufferedReader readSocket = new BufferedReader( - new InputStreamReader(socket.getInputStream())); - BufferedWriter writeSocket = new BufferedWriter( - new OutputStreamWriter(socket.getOutputStream())); - - 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"); - - } catch (Exception ex) { - ex.printStackTrace(); - } - }while(input.readLine() != "quit"); - } -}

"+ bbs.sanitize(board) + "