Class ModelAwareRepeaterEntry
java.lang.Object
org.ametys.plugins.repository.data.holder.group.impl.AbstractComposite
org.ametys.plugins.repository.data.holder.group.impl.AbstractRepeaterEntry
org.ametys.plugins.repository.data.holder.group.impl.ModelAwareRepeaterEntry
- All Implemented Interfaces:
DataHolder
,Composite
,RepeaterEntry
,ModelAwareDataHolder
- Direct Known Subclasses:
ModifiableModelAwareRepeaterEntry
Class for model aware repeater entries
-
Field Summary
Modifier and TypeFieldDescriptionprotected ModelAwareDataHolder
the default implementation of aModelAwareDataHolder
to useprotected ModelItemGroup
the definition of this repeater entryprotected ModelAwareRepeater
the repeater containing this entryFields inherited from class org.ametys.plugins.repository.data.holder.group.impl.AbstractRepeaterEntry
_modifiableRepositoryData
Fields inherited from class org.ametys.plugins.repository.data.holder.group.impl.AbstractComposite
_repositoryData
Fields inherited from interface org.ametys.plugins.repository.data.holder.ModelAwareDataHolder
ALTERNATIVE_SUFFIX, COMMENTS_SUFFIX, STATUS_SUFFIX
-
Constructor Summary
ConstructorDescriptionModelAwareRepeaterEntry
(RepositoryData repositoryData, ModelAwareRepeater repeater, ModelItemGroup definition) Creates a model aware repeater entry -
Method Summary
Modifier and TypeMethodDescriptionvoid
dataToSAX
(ContentHandler contentHandler, String dataPath, DataContext context) Generates SAX events for the data at the given data path in the currentDataHolder
Do not generate any event if there is no values at the given pathgetComments
(String dataName) Retrieve the comments of the data with the given namegetComposite
(String compositePath) Retrieves the composite at the given pathprotected ModelAwareDataHolder
Retrieves the default implementation of aDataHolder
to usegetDefinition
(String path) Retrieves the definition of the data at the given pathgetExternalComposite
(String compositePath) Retrieves the external composite at the given pathgetExternalRepeater
(String repeaterPath) Retrieves the external repeater at the given path<T> T
getExternalValue
(String dataPath) Retrieves the external value of the data at the given pathgetLocalComposite
(String compositePath) Retrieves the local composite at the given pathgetLocalRepeater
(String repeaterPath) Retrieves the local repeater at the given path<T> T
getLocalValue
(String dataPath) Retrieves the local value of the data at the given pathCollection<? extends ModelItemContainer>
getModel()
Retrieves the data holder's modelOptional<? extends ModelAwareDataHolder>
Retrieves the optional parent of the currentDataHolder
There can be no parent if the currentDataHolder
is the rootgetRepeater
(String repeaterPath) Retrieves the repeater at the given pathRetrieves theDataHolder
that is the root of the current oneRetrieves the status of the externalizable data at the given path<T> T
Retrieves the value of the data at the given path<T> T
Retrieves the value of the data at the given path, or the default value The returned value is one of those ones, in the order: The value of the data if exists and is not empty The default value from the model if useDefaultFromModel istrue
and there is a default value defined by the model The given default valueboolean
hasComments
(String dataName) Checks if there is are comments on the data with the given nameboolean
hasDefinition
(String path) Checks if there is a definition at the given pathboolean
hasExternalValue
(String dataPath) Checks if there is an external value for the data at the given pathboolean
hasLocalValue
(String dataPath) Checks if there is a local value for the data at the given pathboolean
hasNonEmptyExternalValue
(String dataPath) Checks if there is a non empty external value for the data at the given pathboolean
hasNonEmptyLocalValue
(String dataPath) Checks if there is a non empty local value for the data at the given pathMethods inherited from class org.ametys.plugins.repository.data.holder.group.impl.AbstractRepeaterEntry
getPosition, setPosition
Methods inherited from class org.ametys.plugins.repository.data.holder.group.impl.AbstractComposite
copyTo, dataToSAX, getDataNames, getRepositoryData, hasNonEmptyValue, hasValue
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.ametys.plugins.repository.data.holder.DataHolder
copyTo, dataToSAX, getRepositoryData
Methods inherited from interface org.ametys.plugins.repository.data.holder.ModelAwareDataHolder
commentsToSAX, dataToMap, dataToMap, dataToMap, dataToMap, dataToSAX, dataToSAX, dataToSAX, dataToSAX, dataToSAXForEdition, getDataNames, getType, getValue, hasNonEmptyValue, hasValue, isMultiple
-
Field Details
-
_defaultDataHolder
the default implementation of aModelAwareDataHolder
to use -
_repeater
the repeater containing this entry -
_definition
the definition of this repeater entry
-
-
Constructor Details
-
ModelAwareRepeaterEntry
public ModelAwareRepeaterEntry(RepositoryData repositoryData, ModelAwareRepeater repeater, ModelItemGroup definition) Creates a model aware repeater entry- Parameters:
repositoryData
- the repository data of the repeater entryrepeater
- the repeater containing this entrydefinition
- the definition of the repeater
-
-
Method Details
-
getComposite
public ModelAwareComposite getComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the composite at the given path- Specified by:
getComposite
in interfaceDataHolder
- Specified by:
getComposite
in interfaceModelAwareDataHolder
- Parameters:
compositePath
- path of the composite to retrieve- Returns:
- the composite or
null
if not exists or is empty - Throws:
IllegalArgumentException
- if the given composite path is null or emptyUndefinedItemPathException
- if the given composite path is not defined by the modelBadItemTypeException
- if the stored value at the given path is not a compositeBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getLocalComposite
public ModelAwareComposite getLocalComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the local composite at the given path- Specified by:
getLocalComposite
in interfaceModelAwareDataHolder
- Parameters:
compositePath
- path of the externalizable composite to retrieve- Returns:
- the composite or
null
if not exists or is empty - Throws:
IllegalArgumentException
- if the given composite path is null or emptyUndefinedItemPathException
- if the given composite path is not defined by the modelBadItemTypeException
- if the stored value at the given path is not a compositeBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getExternalComposite
public ModelAwareComposite getExternalComposite(String compositePath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the external composite at the given path- Specified by:
getExternalComposite
in interfaceModelAwareDataHolder
- Parameters:
compositePath
- path of the externalizable composite to retrieve- Returns:
- the composite or
null
if not exists or is empty - Throws:
IllegalArgumentException
- if the given composite path is null or emptyUndefinedItemPathException
- if the given composite path is not defined by the modelBadItemTypeException
- if the stored value at the given path is not a compositeBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getRepeater
public ModelAwareRepeater getRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the repeater at the given path- Specified by:
getRepeater
in interfaceModelAwareDataHolder
- Parameters:
repeaterPath
- path of the repeater to retrieve- Returns:
- the repeater or
null
if not exists or is empty - Throws:
IllegalArgumentException
- if the given repeater path is null or emptyUndefinedItemPathException
- if the given repeater path is not defined by the modelBadItemTypeException
- if the stored value at the given path is not a repeaterBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getLocalRepeater
public ModelAwareRepeater getLocalRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the local repeater at the given path- Specified by:
getLocalRepeater
in interfaceModelAwareDataHolder
- Parameters:
repeaterPath
- path of the externalizable repeater to retrieve- Returns:
- the repeater or
null
if not exists or is empty - Throws:
IllegalArgumentException
- if the given repeater path is null or emptyUndefinedItemPathException
- if the given repeater path is not defined by the modelBadItemTypeException
- if the stored value at the given path is not a repeaterBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getExternalRepeater
public ModelAwareRepeater getExternalRepeater(String repeaterPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the external repeater at the given path- Specified by:
getExternalRepeater
in interfaceModelAwareDataHolder
- Parameters:
repeaterPath
- path of the externalizable repeater to retrieve- Returns:
- the repeater or
null
if not exists or is empty - Throws:
IllegalArgumentException
- if the given repeater path is null or emptyUndefinedItemPathException
- if the given repeater path is not defined by the modelBadItemTypeException
- if the stored value at the given path is not a repeaterBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getValue
public <T> T getValue(String dataPath, boolean allowMultiValuedPathSegments) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the value of the data at the given path- Specified by:
getValue
in interfaceModelAwareDataHolder
- Type Parameters:
T
- type of the value to retrieve- Parameters:
dataPath
- path of the dataallowMultiValuedPathSegments
-true
to allow multi-valued segments in the path (not necessarily at the last segment),false
otherwise. Iftrue
, if there is no indicated entry for a repeater, the values of all the entries are retrieved Iftrue
and if there are multiple values, all data are retrieved in one array- Returns:
- the value of the data or
null
if allowMultiValuedPathSegments isfalse
and there is no non empty value. The object returned may be of a generic class defined by the storage (if the model is unknown). For example, an url may be returned as a String. - Throws:
IllegalArgumentException
- if the given data path is null or emptyUndefinedItemPathException
- if the given data path is not defined by the modelBadItemTypeException
- if the type defined by the model doesn't match the type of the stored valueBadDataPathCardinalityException
- if the managesMultiples boolean isfalse
and the definition of a part of the data path is multiple. Only the last part can be multiple
-
getValue
public <T> T getValue(String dataPath, boolean useDefaultFromModel, T defaultValue) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the value of the data at the given path, or the default value The returned value is one of those ones, in the order:- The value of the data if exists and is not empty
- The default value from the model if useDefaultFromModel is
true
and there is a default value defined by the model - The given default value
- Specified by:
getValue
in interfaceModelAwareDataHolder
- Type Parameters:
T
- type of the value to retrieve- Parameters:
dataPath
- path of the datauseDefaultFromModel
- true to use the default value from the model, false to use the given default valuedefaultValue
- default value used if value is null and useDefaultFromModel is false, or if there is no default value on model- Returns:
- the value of the data at the given path
- Throws:
IllegalArgumentException
- if the given data path is null or emptyUndefinedItemPathException
- if the given data path is not defined by the modelBadItemTypeException
- if the type defined by the model doesn't match the type of the stored valueBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getLocalValue
public <T> T getLocalValue(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the local value of the data at the given path- Specified by:
getLocalValue
in interfaceModelAwareDataHolder
- Type Parameters:
T
- type of the value to retrieve- Parameters:
dataPath
- path of the externalizable data- Returns:
- the local value of the data or
null
if not exists or is empty. The object returned may be of a generic class defined by the storage (if the model is unknown). For example, an url may be returned as a String. - Throws:
IllegalArgumentException
- if the given data path is null or emptyUndefinedItemPathException
- if the given data path is not defined by the modelBadItemTypeException
- if the type defined by the model doesn't match the type of the stored valueBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getExternalValue
public <T> T getExternalValue(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, BadItemTypeException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the external value of the data at the given path- Specified by:
getExternalValue
in interfaceModelAwareDataHolder
- Type Parameters:
T
- type of the value to retrieve- Parameters:
dataPath
- path of the externalizable data- Returns:
- the external value of the data or
null
if not exists or is empty. The object returned may be of a generic class defined by the storage (if the model is unknown). For example, an url may be returned as a String. - Throws:
IllegalArgumentException
- if the given data path is null or emptyUndefinedItemPathException
- if the given data path is not defined by the modelBadItemTypeException
- if the type defined by the model doesn't match the type of the stored valueBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getStatus
public ExternalizableDataProvider.ExternalizableDataStatus getStatus(String dataPath) throws IllegalArgumentException, UndefinedItemPathException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Retrieves the status of the externalizable data at the given path- Specified by:
getStatus
in interfaceModelAwareDataHolder
- Parameters:
dataPath
- path of the externalizable data- Returns:
- the status of the externalizable data at the given path
- Throws:
IllegalArgumentException
- if the given data path is null or emptyUndefinedItemPathException
- if the given data path is not defined by the modelBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
getComments
public List<DataComment> getComments(String dataName) throws IllegalArgumentException, UndefinedItemPathException Description copied from interface:ModelAwareDataHolder
Retrieve the comments of the data with the given name- Specified by:
getComments
in interfaceModelAwareDataHolder
- Parameters:
dataName
- name of the data- Returns:
- the comments of the data
- Throws:
IllegalArgumentException
- if the given data name is null or emptyUndefinedItemPathException
- if the given data name is not defined by the model
-
hasLocalValue
public boolean hasLocalValue(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Checks if there is a local value for the data at the given path- Specified by:
hasLocalValue
in interfaceModelAwareDataHolder
- Parameters:
dataPath
- path of the externalizable data- Returns:
true
if the data at the given path is defined by the model, if there is a local value for the data (even empty) and if the type of this value matches the type of the definition.false
otherwise- Throws:
IllegalArgumentException
- if the given data path is null or emptyBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
hasExternalValue
public boolean hasExternalValue(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Checks if there is an external value for the data at the given path- Specified by:
hasExternalValue
in interfaceModelAwareDataHolder
- Parameters:
dataPath
- path of the externalizable data- Returns:
true
if the data at the given path is defined by the model, if there is an external value for the data (even empty) and if the type of this value matches the type of the definition.false
otherwise- Throws:
IllegalArgumentException
- if the given data path is null or emptyBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
hasNonEmptyLocalValue
public boolean hasNonEmptyLocalValue(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Checks if there is a non empty local value for the data at the given path- Specified by:
hasNonEmptyLocalValue
in interfaceModelAwareDataHolder
- Parameters:
dataPath
- path of the externalizable data- Returns:
true
if the data at the given path is defined by the model, if there is a non empty local value for the data and if the type of this value matches the type of the definition.false
otherwise- Throws:
IllegalArgumentException
- if the given data path is null or emptyBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
hasNonEmptyExternalValue
public boolean hasNonEmptyExternalValue(String dataPath) throws IllegalArgumentException, BadDataPathCardinalityException Description copied from interface:ModelAwareDataHolder
Checks if there is a non empty external value for the data at the given path- Specified by:
hasNonEmptyExternalValue
in interfaceModelAwareDataHolder
- Parameters:
dataPath
- path of the externalizable data- Returns:
true
if the data at the given path is defined by the model, if there is a non empty external value for the data and if the type of this value matches the type of the definition.false
otherwise- Throws:
IllegalArgumentException
- if the given data path is null or emptyBadDataPathCardinalityException
- if the definition of a part of the data path is multiple. Only the last part can be multiple
-
hasComments
public boolean hasComments(String dataName) throws IllegalArgumentException, UndefinedItemPathException Description copied from interface:ModelAwareDataHolder
Checks if there is are comments on the data with the given name- Specified by:
hasComments
in interfaceModelAwareDataHolder
- Parameters:
dataName
- name of the data- Returns:
true
if there are comments on the data,false
otherwise- Throws:
IllegalArgumentException
- if the given data name is null or emptyUndefinedItemPathException
- if the given data name is not defined by the model
-
getModel
Description copied from interface:ModelAwareDataHolder
Retrieves the data holder's model- Specified by:
getModel
in interfaceModelAwareDataHolder
- Returns:
- the data holder's model
-
getDefinition
public ModelItem getDefinition(String path) throws IllegalArgumentException, UndefinedItemPathException Description copied from interface:ModelAwareDataHolder
Retrieves the definition of the data at the given path- Specified by:
getDefinition
in interfaceModelAwareDataHolder
- Parameters:
path
- path of the data. No matter if it is a definition or data path (with repeater entry positions)- Returns:
- the definition of the data
- Throws:
IllegalArgumentException
- if the given path is null or emptyUndefinedItemPathException
- if the given path is not defined by the model
-
hasDefinition
Description copied from interface:ModelAwareDataHolder
Checks if there is a definition at the given path- Specified by:
hasDefinition
in interfaceModelAwareDataHolder
- Parameters:
path
- path of the data. No matter if it is a definition or data path (with repeater entry positions)- Returns:
true
if there is definition at the given path,false
otherwise- Throws:
IllegalArgumentException
- if the given path is null or empty
-
dataToSAX
public void dataToSAX(ContentHandler contentHandler, String dataPath, DataContext context) throws SAXException, IOException Description copied from interface:DataHolder
Generates SAX events for the data at the given data path in the currentDataHolder
Do not generate any event if there is no values at the given path- Specified by:
dataToSAX
in interfaceDataHolder
- Parameters:
contentHandler
- theContentHandler
that will receive the SAX eventsdataPath
- the path of the data to SAXcontext
- The context of the data to SAX- Throws:
SAXException
- if an error occurs during the SAX events generationIOException
- if an error occurs while reading a value using the I/O API
-
getParentDataHolder
Description copied from interface:DataHolder
Retrieves the optional parent of the currentDataHolder
There can be no parent if the currentDataHolder
is the root- Specified by:
getParentDataHolder
in interfaceDataHolder
- Specified by:
getParentDataHolder
in interfaceModelAwareDataHolder
- Returns:
- the parent of the current
DataHolder
-
getRootDataHolder
Description copied from interface:DataHolder
Retrieves theDataHolder
that is the root of the current one- Specified by:
getRootDataHolder
in interfaceDataHolder
- Specified by:
getRootDataHolder
in interfaceModelAwareDataHolder
- Returns:
- the root
DataHolder
-
getDefaultDataHolder
Description copied from class:AbstractComposite
Retrieves the default implementation of aDataHolder
to use- Specified by:
getDefaultDataHolder
in classAbstractComposite
- Returns:
- the
DataHolder
-