package org.skyscreamer.yoga.model;
import org.dom4j.Element;
import org.skyscreamer.yoga.exceptions.YogaRuntimeException;
public class XmlHierarchyModelImpl implements MapHierarchicalModel<Element>, ListHierarchicalModel<Element>
{
protected Element element;
protected String defaultName;
public XmlHierarchyModelImpl( Element element )
{
this.element = element;
}
public XmlHierarchyModelImpl(Element element, String defaultName)
{
super();
this.element = element;
this.defaultName = defaultName;
}
@Override
public void addProperty( String name, Object result )
{
if ( name.equals( "href" ) )
{
element.addAttribute( name, result.toString() );
}
else
{
element.addElement( name ).setText( result.toString() );
}
}
@Override
public MapHierarchicalModel<Element> createChildMap( String name )
{
return new XmlHierarchyModelImpl( element.addElement( name ) );
}
@Override
public MapHierarchicalModel<Element> createChildMap()
{
if (defaultName != null)
{
return new XmlHierarchyModelImpl( element.addElement( defaultName ) );
}
else
{
return this;
}
}
@Override
public ListHierarchicalModel<Element> createChildList( String name )
{
return new XmlHierarchyModelImpl( element, name );
}
@Override
public void addValue( Object instance )
{
if (defaultName != null)
{
addProperty( defaultName, instance );
}
else
{
throw new YogaRuntimeException( "You must call createSimple first" );
}
}
@Override
public Element getUnderlyingModel()
{
return element;
}
public void finished()
{
}
}