view src/jungle/test/codesegment/persistence/AliceJournal.java @ 56:ccfe9b5e8f11

bug LogUpdateCodeSegment
author one
date Sun, 14 Jul 2013 21:26:49 +0900
parents f47a02368099
children
line wrap: on
line source

package jungle.test.codesegment.persistence;

import java.nio.ByteBuffer;

import alice.jungle.datasegment.store.operations.DefaultNodeOperationContainer;
import alice.jungle.datasegment.store.operations.DefaultTreeOperationContainer;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;

public class AliceJournal implements Journal {
	
	private static final AliceChangeListWriter ALICE_WRITER = new AliceChangeListWriter();
	private static final AliceChangeListReader ALICE_READER = new AliceChangeListReader();
	@Override
	public ChangeListReader getReader() {
		return ALICE_READER;
	}
	@Override
	public ChangeListWriter getWriter() {
		return ALICE_WRITER;
	}
	
	private static class AliceChangeListWriter implements ChangeListWriter
	{
		@Override
		public Result write(ChangeList _operations)
		{
			for(TreeOperation op : _operations){
				NodePath p = op.getNodePath();
				NodeOperation nodeOp = op.getNodeOperation();
				Command c = nodeOp.getCommand();
				String args = "";
				switch(c){
					case PUT_ATTRIBUTE:
						String key = nodeOp.getKey();
						ByteBuffer value = nodeOp.getValue();
						if(value.limit() < 100){
							args = String.format("key:%s,value:%s",key,new String(value.array()));
						}else{
							args = String.format("key:%s,value:%d",key,value.limit());
						}
						break;
					case DELETE_ATTRIBUTE:
						args = String.format("key:%s",nodeOp.getKey());
						break;
					case APPEND_CHILD:
						args = String.format("pos:%d",nodeOp.getPosition());
						break;
					case DELETE_CHILD:
						args = String.format("pos:%d",nodeOp.getPosition());
						break;
				}
				System.out.println(String.format("[%s:%s:%s]",c,p,args));
			}
			return Result.SUCCESS;
		}
	}
	
	private static class AliceChangeListReader implements ChangeListReader
	{
		@Override
		public ChangeListReader newReader()
		{
			return this;
		}

		@Override
		public ChangeList read()
		{
			return null;
		}
	}
	
	
}