package org.skyscreamer.yoga.model;
import org.dom4j.Element;
import org.skyscreamer.yoga.exceptions.YogaRuntimeException;
public class XhtmlHierarchyModelImpl implements MapHierarchicalModel<Element>, ListHierarchicalModel<Element>
{
Element element;
String childName = null;
Element a = null;
public XhtmlHierarchyModelImpl( Element element )
{
this.element = element;
}
@Override
public void addProperty( String name, Object result )
{
String elementName = childName == null ? name : childName;
if ( elementName.equals( "href" ) )
{
a = element.addElement( "a" );
a.addAttribute( "href", result.toString() );
}
else if ( a != null )
{
a.setText( result.toString() );
}
else
{
element.addElement( "span" ).addAttribute( "class", elementName )
.setText( result.toString() );
}
}
@Override
public MapHierarchicalModel<Element> createChildMap( String property )
{
return new XhtmlHierarchyModelImpl( element.addElement( "div" )
.addAttribute( "class", property ) );
}
@Override
public MapHierarchicalModel<Element> createChildMap()
{
return new XhtmlHierarchyModelImpl( element.addElement( "div" ) );
}
@Override
public ListHierarchicalModel<Element> createChildList( String property )
{
Element div = element.addElement( "div" ).addAttribute( "class", property );
return new XhtmlHierarchyModelImpl( div );
}
@Override
public void addValue( Object instance )
{
if ( childName != null )
element.addElement( childName ).setText( instance.toString() );
else
throw new YogaRuntimeException( "childName was never set" );
}
@Override
public Element getUnderlyingModel()
{
return this.element;
}
public void finished()
{
}
}