view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java @ 79:b4f145174970

change log
author one
date Sun, 31 Aug 2014 02:10:14 +0900
parents 540a27dde42f
children 715a9fbf02fc
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;

public class LoggingNodeHook implements NodeEditor
{
	private OperationLog log;
	private final NodeEditor editor;
	
	public LoggingNodeHook(NodeEditor _editor)
	{
		log = null;
		editor = _editor;
	}

	@Override
	public <T extends TreeNode<T>> Either<Error,T> edit(T _e)
	{
		//LoggingNode<T> loggingNode = new LoggingNode<T>(_e);
		Either<Error,T> either = editor.edit(_e);
		if(either.isA()){
			return DefaultEither.newA(either.a());
		}
		log = editor.getLog();
		T newLoggingNode = either.b();
		//T newNode = newLoggingNode.getWrap();
		//log = newLoggingNode.getOperationLog();
		
		return DefaultEither.newB(newLoggingNode);
	}
	
	public OperationLog getLog()
	{
		return log;
	}
}