view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java @ 41:ed6737db637a

added tests
author Shoshi TAMAKI
date Tue, 29 Jan 2013 23:42:54 +0900
parents 35e327577b58
children 0a3bff2d9c89
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.ClonableAttributes;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.ClonableChildren;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.ClonableNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableAttributes;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableChildren;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;

public class LoggingNode<T extends ClonableNode<T>>
	implements ClonableNode<LoggingNode<T>>
{
	public LoggingNode(T _wrap)
	{
		this(_wrap,new DefaultLogger());
	}
	
	public LoggingNode(T _wrap,Logger _log)
	{
		wrap = _wrap;
		log = _log;
	}
	
	private final T wrap;
	private final Logger log;
	
	@Override
	public ClonableAttributes<LoggingNode<T>> getAttributes()
	{
		return new LoggingAttributes<T>(wrap.getAttributes(),log);
	}

	@Override
	public ClonableChildren<LoggingNode<T>> getChildren()
	{
		return new LoggingChildren<T>(wrap.getChildren(),log);
	}
	
	@Override
	public LoggingNode<T> createNewNode()
	{
		T newWrap = wrap.createNewNode();
		return new LoggingNode<T>(newWrap,log);
	}
	
	public Logger getLogger()
	{
		return log;
	}
	
	public T getWrapper()
	{
		return wrap;
	}
}