|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ObjectAbstractLazyAttributeTypeImpl
AbstractLazyComplexTypeImpl
public abstract class AbstractLazyComplexTypeImpl
A replacement for ComplexTypeImpl
with lazy evaluation of descriptors, to support
cyclically-defined types. Note that type equality is defined by name, so do not allow different
types with the same name to be put in any Collection.
Inspired by ComplexTypeImpl
.
ComplexTypeImpl
Constructor Summary | |
---|---|
AbstractLazyComplexTypeImpl(Name name,
boolean identified,
boolean isAbstract,
List<Filter> restrictions,
InternationalString description)
Constructor arguments have the same meaning as in ComplexTypeImpl . |
Method Summary | |
---|---|
abstract Collection<PropertyDescriptor> |
buildDescriptors()
Subclasses must override this method to return the list of descriptors that define the properties of this type. |
Class<Collection<Property>> |
getBinding()
The java class that values of properties of the property type are bound to. |
PropertyDescriptor |
getDescriptor(Name name)
Describe a single property by name. |
PropertyDescriptor |
getDescriptor(String name)
Deprecated. Any code that uses this method instead of getDescriptor(Name) is
inherently unsafe. |
Collection<PropertyDescriptor> |
getDescriptors()
The property descriptor which compose the complex type. |
boolean |
isInline()
Indicates ability of XPath to notice this attribute. |
String |
toString()
|
Methods inherited from class AbstractLazyAttributeTypeImpl |
---|
buildSuper, equals, getDescription, getName, getRestrictions, getSuper, getUserData, hashCode, isAbstract, isIdentified |
Methods inherited from class Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface AttributeType |
---|
getSuper, isIdentified |
Methods inherited from interface PropertyType |
---|
equals, getDescription, getName, getRestrictions, getUserData, hashCode, isAbstract |
Constructor Detail |
---|
public AbstractLazyComplexTypeImpl(Name name, boolean identified, boolean isAbstract, List<Filter> restrictions, InternationalString description)
ComplexTypeImpl
.
name
- identified
- isAbstract
- restrictions
- description
- Method Detail |
---|
public abstract Collection<PropertyDescriptor> buildDescriptors()
If the type has no properties, return either an empty collection or null.
public Class<Collection<Property>> getBinding()
PropertyType
This value is never null
.
getBinding
in interface ComplexType
getBinding
in interface PropertyType
getBinding
in class AbstractLazyAttributeTypeImpl
AbstractLazyAttributeTypeImpl.getBinding()
public Collection<PropertyDescriptor> getDescriptors()
ComplexType
A complex type can be composed of attributes and associations which means
this collection returns instances of AttributeDescriptor
and
AssociationDescriptor
.
getDescriptors
in interface ComplexType
ComplexType.getDescriptors()
public PropertyDescriptor getDescriptor(Name name)
ComplexType
This method returns null
if no such property is found.
getDescriptor
in interface ComplexType
name
- The name of the property to get.
null
.ComplexType.getDescriptor(org.opengis.feature.type.Name)
@Deprecated public PropertyDescriptor getDescriptor(String name)
getDescriptor(Name)
is
inherently unsafe.
getDescriptor(Name)
. Note that we honour the same
permissive algorithm as ComplexTypeImpl
: (1) try no-namespace, (2) try
container-namespace, (2) search for match ignoring namespace. *Shudder*
getDescriptor
in interface ComplexType
name
- The name of the property to get.
null
.ComplexType.getDescriptor(java.lang.String)
public boolean isInline()
ComplexType
This facility is used to "hide" an attribute from XPath searches, while the compelx contents will still be navigated no additional nesting will be considered. It will be as if the content were "folded" inline resulting in a flatter nesting structure.
Construct described using Java Interfaces:
interface TestSample {
String name;
List measurement;
}
interface Measurement {
long timestamp;
Point point;
long reading;
}
The above is can hold the following information:
[ name="survey1",
measurements=(
[timestamp=3,point=(2,3), reading=4200],
[timestamp=9,point=(2,4), reading=445600],
)
]
Out of the box this is represented to XPath as the following tree:
root/name: survey1
root/measurement[0]/timestamp:3
root/measurement[0]/point: (2,3)
root/measurement[0]/reading: 4200
root/measurement[1]/timestamp:9
root/measurement[2]/point: (2,4)
root/measurement[3]/reading: 445600
By inlining Measurement we can achive the following:
root/name: survey1
root/timestamp[0]:3
root/point[0]: (2,3)
root/reading[0]: 4200
root/timestamp[1]:9
root/point[1]: (2,4)
root/reading[1] 445600
isInline
in interface ComplexType
ComplexType.isInline()
public String toString()
toString
in class AbstractLazyAttributeTypeImpl
AbstractLazyAttributeTypeImpl.toString()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |