|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface PropertyDefinition
A property definition. Used in node type definitions.
Method Summary | |
---|---|
java.lang.String[] |
getAvailableQueryOperators()
Returns the set of query comparison operators supported by this property. |
Value[] |
getDefaultValues()
Gets the default value(s) of the property. |
int |
getRequiredType()
Gets the required type of the property. |
java.lang.String[] |
getValueConstraints()
Gets the array of constraint strings. |
boolean |
isFullTextSearchable()
Returns true if this property is full-text searchable,
meaning that its value is accessible through the full-text search
function within a query. |
boolean |
isMultiple()
Reports whether this property can have multiple values. |
boolean |
isQueryOrderable()
Returns true if this property is query-orderable, meaning
that query results may be ordered by this property using the order-by
clause of a query. |
Methods inherited from interface javax.jcr.nodetype.ItemDefinition |
---|
getDeclaringNodeType, getName, getOnParentVersion, isAutoCreated, isMandatory, isProtected |
Method Detail |
---|
int getRequiredType()
PropertyType.STRING
PropertyType.DATE
PropertyType.BINARY
PropertyType.DOUBLE
PropertyType.DECIMAL
PropertyType.LONG
PropertyType.BOOLEAN
PropertyType.NAME
PropertyType.PATH
PropertyType.URI
PropertyType.REFERENCE
PropertyType.WEAKREFERENCE
PropertyType.UNDEFINED
PropertyType.UNDEFINED
is returned if this property may be
of any type.
In implementations that support node type registration, if this
PropertyDefinition
object is actually a newly-created empty
PropertyDefinitionTemplate
, then this method will return
PropertyType.STRING
.
int
constant member of PropertyType
.java.lang.String[] getValueConstraints()
["constraint1", "constraint2", "constraint3"]
has the
interpretation: "the value of this property must meet at least one of
constraint1
, constraint2
or
constraint3
".
Reporting of value constraints is optional. An implementation may return
null
, indicating that value constraint information is
unavailable (though a constraint may still exist).
Returning an empty array, on the other hand, indicates that value constraint information is available and that no constraints are placed on this value.
In the case of multi-value properties, the constraint string array returned applies to all the values of the property.
The constraint strings themselves having differing formats and interpretations depending on the type of the property in question. The following describes the value constraint syntax for each property type:
STRING
and URI
: The constraint string
is a regular expression pattern. For example the regular expression
".*
" means "any string, including the empty string". Whereas
a simple literal string (without any RE-specific meta-characters) like
"banana
" matches only the string "banana
".
PATH
: The constraint string is a JCR path
with an optional "*
" character after the last
"/
" character. For example, possible constraint strings for
a property of type PATH
include: /myapp:products/myapp:televisions
" /myapp:products/myapp:televisions/
" /myapp:products/*
" myapp:products/myapp:televisions
"
../myapp:televisions
" ../myapp:televisions/*
" /a/*
does not
match /a/../c
. The constraint must match the normalized
path. /
" has no effect (hence, 1
and
2
, above, are equivalent). *
" character means that the value of the PATH
property is restricted to the indicated subgraph (in other words any
additional relative path can replace the "*
"). For example,
3, above would allow /myapp:products/myapp:radios
,
/myapp:products/myapp:microwaves/X900
, and so forth. *
" means that the
PATH
property is restricted to that precise path. For
example, 1
, above, would allow only the value
/myapp:products/myapp:televisions
. /
" character. 1
and 4
, above for example, are distinct. Session
(i.e., the current state of the namespace registry
overlaid with any session-specific mappings). Constraint strings for
PATH
properties should be stored in fully-qualified form
(using the actual URI instead of the prefix) and then be converted to
prefix form according to the current mapping upon the
PropertyDefinition.getValueConstraints
call. NAME
: The constraint string is a JCR name
in prefix form. For example "myapp:products
". No wildcards
or other pattern matching are supported. As with PATH
properties, the string returned must reflect the namespace mapping in the
current Session
. Constraint strings for NAME
properties should be stored in fully-qualified form (using the actual URI
instead of the prefix) and then be converted to prefix form according to
the current mapping. REFERENCE
and
WEAKREFERENCE
: The constraint string is a JCR name in
prefix form. This name is interpreted as a node type name and the
REFERENCE
or WEAKREFERENCE
property is
restricted to referring only to nodes that have at least the indicated
node type. For example, a constraint of "mytype:document
"
would indicate that the property in question can only refer to nodes that
have at least the node type mytype:document
(assuming this
was the only constraint returned in the array, recall that the array of
constraints are to be ORed together). No wildcards or other pattern
matching are supported. As with PATH
properties, the string
returned must reflect the namespace mapping in the current
Session
. Constraint strings for REFERENCE
and
WEAKREFERENCE
properties should be stored by the
implementation in fully-qualified form (using the actual URI instead of
the prefix) and then be converted to prefix form according to the current
mapping. BOOLEAN
: A constraint string can be
either "true" or "false". In most cases getValueConstraints
will return an empty array since placing a constraint on a
BOOLEAN
value does not usually make sense. [min, max]
", "(min,
max)
", "(min, max]
" or "[min, max)
".
Where "[
" and "]
" indicate "inclusive", while
"(
" and ")
" indicate "exclusive". A missing
min
or max
value indicates no bound in that
direction. For example [,5] means no minimum but a maximum of 5
(inclusive) while [,] means simply that any value will suffice, The
meaning of the min
and max
values themselves
differ between types as follows: BINARY
:
min
and max
specify the allowed size range of
the binary value in bytes. DATE
: min
and max
are dates specifying the allowed date range. The
date strings must be in the ISO8601-compliant format:
YYYY-MM-DDThh:mm:ss.sssTZD
. LONG
,
DOUBLE
: min and max are numbers. DATE
, LONG
or DOUBLE
is
constrained to be equal to some disjunctive set of constants, a string
consisting of just the constant itself, "c" may be used as a shorthand
for the standard constraint notation of "[c, c]", where c is the
constant. For example, to indicate that particular LONG property is
constrained to be one of the values 2, 4, or 8, the constraint string
array {"2", "4", "8"} can be used instead of the standard notation,
{"[2,2]", "[4,4]", "[8,8]"}. However, even if this shorthand is used on
registration, the value returned by PropertyDefinition.getValueConstraints()
will always use the standard notation.
Because constraints are returned as an array of disjunctive constraints, in many cases the elements of the array can serve directly as a "choice list". This may, for example, be used by an application to display options to the end user indicating the set of permitted values.
In implementations that support node type registration, if this
PropertyDefinition
object is actually a newly-created empty
PropertyDefinitionTemplate
, then this method will return
null
.
String
array.Value[] getDefaultValues()
ItemDefinition.isAutoCreated()
returns
true
).
This method returns an array of Value
objects. If the
property is multi-valued, then this array represents the full set of
values that the property will be assigned upon being auto-created. Note
that this could be the empty array. If the property is single-valued,
then the array returned will be of size 1.
If null
is returned, then the property has no fixed default
value. This does not exclude the possibility that the property still
assumes some value automatically, but that value may be parametrized (for
example, "the current date") and hence not expressible as a single fixed
value. In particular, this must be the case if
isAutoCreated
returns true
and this method
returns null
.
Note that to indicate a null
value for this attribute in a
node type definition that is stored in content, the
jcr:defaultValues
property is simply removed (since
null
values for properties are not allowed.
In implementations that support node type registration, if this
PropertyDefinition
object is actually a newly-created empty
PropertyDefinitionTemplate
, then this method will return
null
.
Value
objects.boolean isMultiple()
isMultiple
flag is special in that a given node type may
have two property definitions that are identical in every respect except
for the their isMultiple
status. For example, a node type
can specify two string properties both called X
, one of
which is multi-valued and the other not. An example of such a node type
is nt:unstructured
.
In implementations that support node type registration, if this
PropertyDefinition
object is actually a newly-created empty
PropertyDefinitionTemplate
, then this method will return
false
.
boolean
java.lang.String[] getAvailableQueryOperators()
This attribute only takes effect if the node type holding the property
definition has a queryable setting of true
.
JCR defines the following comparison operators:
QueryObjectModelConstants.JCR_OPERATOR_EQUAL_TO
,QueryObjectModelConstants.JCR_OPERATOR_NOT_EQUAL_TO
,QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN
,QueryObjectModelConstants.JCR_OPERATOR_LESS_THAN_OR_EQUAL_TO
,QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN
,QueryObjectModelConstants.JCR_OPERATOR_GREATER_THAN_OR_EQUAL_TO
,
orQueryObjectModelConstants.JCR_OPERATOR_LIKE
Note that the set of operators that can appear in this attribute may be
limited by implementation-specific constraints that differ across
property types. For example, some implementations may permit property
definitions to provide JCR_OPERATOR_EQUAL_TO
and
JCR_OPERATOR_NOT_EQUAL_TO
as available operators for
BINARY
properties while others may not.
However, in all cases where a JCR-defined operator is potentially available for a given property type, its behavior must conform to the comparison semantics defined in the specification document (see 3.6.5 Comparison of Values).
In implementations that support node type registration, if this
NodeTypeDefinition
object is actually a newly-created empty
NodeTypeTemplate
, then this method will return an impementation-
determined default set of operator constants.
String
array.boolean isFullTextSearchable()
true
if this property is full-text searchable,
meaning that its value is accessible through the full-text search
function within a query.
This attribute only takes effect if the node type holding the property
definition has a queryable setting of true
.
In implementations that support node type registration, if this
NodeTypeDefinition
object is actually a newly-created empty
NodeTypeTemplate
, then this method will return an impementation-
determined default value.
boolean
boolean isQueryOrderable()
true
if this property is query-orderable, meaning
that query results may be ordered by this property using the order-by
clause of a query.
This attribute only takes effect if the node type holding the property
definition has a queryable setting of true
.
In implementations that support node type registration, if this
NodeTypeDefinition
object is actually a newly-created empty
NodeTypeTemplate
, then this method will return an impementation-
determined default value.
boolean
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |