Class SimpleSchemaField
- All Implemented Interfaces:
DiffGenerating<SimpleSchemaField>,Cloneable
- Direct Known Subclasses:
AbstractEnumSchemaField,ReferenceSchemaField
SchemaObjectType.-
Field Summary
FieldsFields inherited from class io.permazen.schema.SchemaItem
NAME_PATTERNFields inherited from class io.permazen.util.AbstractXMLStreaming
log -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionclone()Deep-clone this instance.Detect the differences of this instance when compared to the given instance.booleanGet theEncodingIdthat identifies how this field's values are encoded.Get the full name of this field.Get theItemTypecorresponding to this instance.Get theSchemaObjectTypeof which this field is a member.Get the parent field if this is a sub-field of aComplexSchemaField.final SchemaIdGenerate a uniqueSchemaIdcorresponding to the type and encoding structure of this schema item.booleanDetermine if this field has a fixed encoding.inthashCode()booleanDetermine if this field is always indexed.booleanGet whether this field is indexed.final booleanisLockedDown(boolean includingStorageIds) Determine whether this instance is locked down.voidsetEncodingId(EncodingId encodingId) Set theEncodingIdthat identifies how this field's values are encoded.voidsetIndexed(boolean indexed) Set whether this field is indexed.final voidsetObjectType(SchemaObjectType objectType) Set theSchemaObjectTypeof which this field is a member.final voidsetParent(ComplexSchemaField parent) Set the parent complex field.toString()<R> Rvisit(SchemaFieldSwitch<R> target) Apply visitor pattern.final <T extends SchemaItem>
voidvisitSchemaItems(Class<T> nodeType, Consumer<? super T> visitor) Visit this schema item and all of its descendents matching the given type with the given visitor.voidvisitSchemaItems(Consumer<? super SchemaItem> visitor) Visit allSchemaItemdescendents of this instance with the given visitor.Methods inherited from class io.permazen.schema.SchemaItem
differencesFrom, getName, getStorageId, setName, setStorageIdMethods inherited from class io.permazen.util.AbstractXMLStreaming
expect, expectClose, getAttr, getAttr, getBooleanAttr, getBooleanAttr, getIntAttr, getIntAttr, getLongAttr, newInvalidAttributeException, newInvalidInputException, newInvalidInputException, next, skip, writeAttr, writeCData, writeCharacters, writeElement, writeEmptyElement, writeStartElement
-
Field Details
-
ITEM_TYPE
TheItemTypethat this class represents.
-
-
Constructor Details
-
SimpleSchemaField
public SimpleSchemaField()
-
-
Method Details
-
getFullName
Get the full name of this field.If the field is a sub-field of a complex field, the full name is the field's name qualified by the parent field name, e.g.,
"mymap.key". Otherwise, the full is is the same as the name.- Returns:
- this field's full name
-
getParent
Get the parent field if this is a sub-field of aComplexSchemaField.- Returns:
- parent field, or null if this is not a sub-field
-
setParent
Set the parent complex field.Note: this field is considered derived information, and will be set automatically when a containing
SchemaObjectTypeorComplexSchemaFieldis locked down.- Parameters:
parent- complex field parent of this field, or null if this field is not a sub-field- Throws:
UnsupportedOperationException- if this instance is locked down
-
getEncodingId
Get theEncodingIdthat identifies how this field's values are encoded.- Returns:
- field encoding ID
-
setEncodingId
Set theEncodingIdthat identifies how this field's values are encoded.- Parameters:
encodingId- field encoding ID- Throws:
UnsupportedOperationException- if this instance is locked down
-
isIndexed
public boolean isIndexed()Get whether this field is indexed.- Returns:
- true if this field is indexed
-
setIndexed
public void setIndexed(boolean indexed) Set whether this field is indexed.- Parameters:
indexed- true if this field is indexed, otherwise false- Throws:
UnsupportedOperationException- if this instance is locked down
-
hasFixedEncoding
public boolean hasFixedEncoding()Determine if this field has a fixed encoding.- Returns:
- true if this is a
ReferenceSchemaFieldorAbstractEnumSchemaField, otherwise false
-
isAlwaysIndexed
public boolean isAlwaysIndexed()Determine if this field is always indexed.- Returns:
- true if this is a
ReferenceSchemaField, otherwise false
-
visit
Description copied from class:SchemaFieldApply visitor pattern.- Specified by:
visitin classSchemaField- Type Parameters:
R- visitor return type- Parameters:
target- target to invoke- Returns:
- value from the method of
targetcorresponding to this instance's type
-
getItemType
Get theItemTypecorresponding to this instance.- Returns:
- schema item type
-
differencesFrom
Description copied from interface:DiffGeneratingDetect the differences of this instance when compared to the given instance.- Specified by:
differencesFromin interfaceDiffGenerating<SimpleSchemaField>- Parameters:
that- other instance- Returns:
- differences; will be empty if there are none detected
-
toString
- Overrides:
toStringin classSchemaField
-
equals
- Overrides:
equalsin classSchemaItem
-
hashCode
public int hashCode()- Overrides:
hashCodein classSchemaItem
-
clone
Deep-clone this instance.The returned instance will not be locked down even if this one is.
- Overrides:
clonein classSchemaField
-
getObjectType
Get theSchemaObjectTypeof which this field is a member.- Returns:
- containing object type
-
setObjectType
Set theSchemaObjectTypeof which this field is a member.Note: this field is considered derived information, and will be set automatically when a referrring
SchemaObjectTypeis locked down.- Parameters:
objectType- containing object type- Throws:
UnsupportedOperationException- if this instance is locked down
-
visitSchemaItems
Visit allSchemaItemdescendents of this instance with the given visitor.If this instance is also a
SchemaItem, then also visit this instance.The traversal is depth first, pre-order.
- Parameters:
visitor- visitor for schema items- Throws:
IllegalArgumentException- ifvisitoris null
-
visitSchemaItems
public final <T extends SchemaItem> void visitSchemaItems(Class<T> nodeType, Consumer<? super T> visitor) Visit this schema item and all of its descendents matching the given type with the given visitor.The traversal is depth first, post-order.
- Parameters:
nodeType- node type to includevisitor- visitor for schema items- Throws:
IllegalArgumentException- if either parameter is null
-
isLockedDown
public final boolean isLockedDown(boolean includingStorageIds) Determine whether this instance is locked down.- Parameters:
includingStorageIds- false to test all but storage ID's, true to require storage ID's to be locked down as well- Returns:
- true if instance is locked down, otherwise false
-
getSchemaId
Generate a uniqueSchemaIdcorresponding to the type and encoding structure of this schema item.The
SchemaIddoes not depend on the storage ID.This instance must be locked down except for storage ID's. Repeated invocations of this method will be very fast, just returning the cached previous result.
- Returns:
- schema ID
- Throws:
IllegalStateException- if this instance is not locked down- See Also:
-