// // Copyright (c)1998-2011 Pearson Education, Inc. or its affiliate(s). // All rights reserved. // package openadk.library.tools.xpath; import openadk.library.*; import openadk.library.impl.surrogates.RenderSurrogate; import org.apache.commons.jxpath.ri.model.NodePointer; /** * Represents a NodePointer for a SimpleField * * @author Andrew Elmhorst * @version ADK 2.0 */ class SimpleFieldPointer extends ADKElementPointer { /** * */ private static final long serialVersionUID = 3881828686990309752L; /** * Creates an instance of SimpleFieldPointer * * @param pointerParent * The parent SIFElement pointer * @param field * the field this pointer represents */ private SimpleFieldPointer(SIFElementPointer pointerParent, SimpleField field) { this(pointerParent, field, pointerParent.getVersion()); } public static NodePointer create( SIFElementPointer pointerParent, SimpleField field ){ if( pointerParent.isLegacyVersion() ){ ElementDef fieldDef = field.getElementDef(); RenderSurrogate rs = fieldDef.getVersionInfo( pointerParent.getVersion() ).getSurrogate(); if( rs != null ){ return rs.createNodePointer( pointerParent, field, pointerParent.getVersion() ); } } return new SimpleFieldPointer( pointerParent, field ); } public static NodePointer create( SIFExtendedElementPointer pointerParent, SimpleField field ){ if( pointerParent.isLegacyVersion() ){ ElementDef fieldDef = field.getElementDef(); RenderSurrogate rs = fieldDef.getVersionInfo( pointerParent.getVersion() ).getSurrogate(); if( rs != null ){ return rs.createNodePointer( pointerParent, field, pointerParent.getVersion() ); } } return new SimpleFieldPointer( pointerParent, field ); } private SimpleFieldPointer( SIFExtendedElementPointer pointerParent, SimpleField field ) { super( pointerParent, field, pointerParent.getVersion() ); } /** * Creates an instance of SimpleFieldPointer * * @param pointerParent * The parent SIFElement pointer * @param field * The field this pointer represents * @param version * The SIFVersion in effect */ public SimpleFieldPointer(SIFElementPointer pointerParent, SimpleField field, SIFVersion version) { super(pointerParent, field, version); } /* * (non-Javadoc) * * @see org.apache.commons.jxpath.ri.model.NodePointer#isLeaf() */ @Override public boolean isLeaf() { return true; } /* * (non-Javadoc) * * @see org.apache.commons.jxpath.ri.model.NodePointer#isCollection() */ @Override public boolean isCollection() { return false; } /* * (non-Javadoc) * * @see org.apache.commons.jxpath.ri.model.NodePointer#getLength() */ @Override public int getLength() { return 0; } /* * (non-Javadoc) * * @see org.apache.commons.jxpath.Pointer#setValue(java.lang.Object) */ @Override public void setValue(Object rawValue) { SIFElementPointer immediateParent = (SIFElementPointer) getImmediateParentPointer(); SIFElement parentElement = immediateParent.fSIFElement; SIFSimpleType sst = getSIFSimpleTypeValue( fElementDef, rawValue ); parentElement.setField(fElementDef, sst); } }