package openadk.library.impl.surrogates;
import javax.xml.stream.XMLStreamReader;
import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.jxpath.ri.model.NodePointer;
import openadk.library.*;
import openadk.library.common.CommonDTD;
import openadk.util.XMLWriter;
public class ProportionSurrogate extends AbstractRenderSurrogate implements RenderSurrogate {
public ProportionSurrogate( ElementDef def )
{
super( def );
}
public void renderRaw(XMLWriter writer, SIFVersion version, Element o,
SIFFormatter formatter) throws SIFException {
String xmlValue = o.getSIFValue().toString( formatter ) + "%";
writeSimpleElement(writer, "Proportion", xmlValue);
}
public boolean readRaw(XMLStreamReader reader, SIFVersion version,
SIFElement parent, SIFFormatter formatter) throws ADKParsingException {
if( !reader.getLocalName().equals( "Proportion" ) ){
return false;
}
String value = consumeElementTextValue( reader, version );
if( value != null && value.length() > 0 ){
// Strip off the trailing percentage
if( value.endsWith( "%" ) ){
value = value.substring( 0, value.length() - 1 );
}
ElementDef proportionDef = CommonDTD.RACE_PROPORTION;
SIFSimpleType proportionValue = null;
proportionValue = proportionDef.getTypeConverter().parse( formatter, value );
parent.setField( proportionDef, proportionValue );
}
return true;
}
public NodePointer createChild(NodePointer parentPointer, SIFFormatter formatter, SIFVersion version, JXPathContext context ) {
// TODO Auto-generated method stub
return null;
}
public NodePointer createNodePointer(NodePointer parent, Element element, SIFVersion version) {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see openadk.library.impl.surrogates.RenderSurrogate#getPath()
*/
public String getPath() {
return "Proportion";
}
}