package com.mtools.core.plugin.db;
import java.util.Map;
import com.mtools.core.plugin.helper.Auxs;
import com.thoughtworks.xstream.io.ExtendedHierarchicalStreamWriter;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
@SuppressWarnings("rawtypes")
public class KVMFilterWriter implements ExtendedHierarchicalStreamWriter
{
public KVMFilterWriter(HierarchicalStreamWriter underhsw,Map<String,String> fixedNV)
{
underlyingWriter=underhsw;
fixedNameValue=fixedNV;
}
public void startNode(String name, Class clazz)
{
if(Auxs.isSimpleClz(clazz)) lastNode=name; else lastNode="#@";
if(underlyingWriter instanceof ExtendedHierarchicalStreamWriter)
((ExtendedHierarchicalStreamWriter) underlyingWriter).startNode(name, clazz);
else
underlyingWriter.startNode(name);
}
public void startNode(String name)
{
lastNode=name;
underlyingWriter.startNode(name);
}
public void addAttribute(String name, String value)
{
String fn=null;
if(fixedNameValue!=null) fn=fixedNameValue.get(name);
if(Auxs.empty(fn)) underlyingWriter.addAttribute(name, value);
else underlyingWriter.addAttribute(name, fn);
}
public void setValue(String text)
{
String fn=null;
if(fixedNameValue!=null) fn=fixedNameValue.get(lastNode);
if(Auxs.empty(fn)) underlyingWriter.setValue(text);
else underlyingWriter.setValue(fn);
}
public void endNode()
{
underlyingWriter.endNode();
}
public void flush()
{
underlyingWriter.flush();
}
public void close()
{
underlyingWriter.close();
}
public HierarchicalStreamWriter underlyingWriter()
{
return underlyingWriter;
}
private Map<String,String> fixedNameValue;
private String lastNode;
private HierarchicalStreamWriter underlyingWriter;
}