public abstract class JboAbstractValidator extends AbstractValidator implements JboValidatorHints, ComponentOperationsManager
This class implements the basic functionality of storing the value
of either an attribute to be validated, or the entity or application module
reference on which validation is to be invoked.
Subclasses must provide validateValue
, which performs the actual
validation test.
ValidatorConstants.MessageFlavor
Modifier and Type | Field and Description |
---|---|
protected AttributeDef |
mValidatingAttr |
mbInverse, mDescription, mErrorMessageClass, mMsgId, mMsgIds, mResourceBundleId, mTriggeringAttributeNames, mTriggeringAttributes, mValidatingAttrName
mFullName, mObjName, mParent, mProperties, RES_ID_SUFFIX, RESID_SUFFIX
ATTR, ATTR_STR, BETWEEN, EO, EO_STR, EQUALTO, EXPR, EXPR_STR, GREATERTHAN, GREATERTHANEQUALTO, JBO, JBO_STR, LESSTHAN, LESSTHANEQUALTO, LITERAL, LITERAL_STR, MANDATORY_STR, mCompOperTypeVals, mRhsTypeVals, mSeverityVals, NOTEQUALTO, PNAME_CompareLength, PNAME_CompareType, PNAME_CompareValue, PNAME_DataType, PNAME_Description, PNAME_ErrorMessageExpressions, PNAME_ErrorMessageId, PNAME_ErrorMessageIds, PNAME_Exposed, PNAME_ExprValueSupplier, PNAME_ForPersonalization, PNAME_Inverse, PNAME_MessageFlavor, PNAME_Name, PNAME_OnAttribute, PNAME_OnAttributes, PNAME_OnCondition, PNAME_OperandType, PNAME_Severity, PNAME_Subtype, PNAME_TransactionLevel, PNAME_TransientExpression, PNAME_Trigger, PNAME_ValidationBeanClass, PNAME_ValName, PNAME_xmlns, PRECISION_SCALE_STR, SEVERITY_ERROR, SEVERITY_RECOVERABLE_ERROR_INDEX, SEVERITY_VETOABLE_WARNING, SEVERITY_WARNING, SQL, SQL_STR, TRIGGER_SUBTYPE_PREFIX, VALIDATION_XMLNS, VALIDATOR_MSG_ID_PREFIX, VO, VO_STR, VO_USAGE, VO_USAGE_STR
XML_STATEMENT
Constructor and Description |
---|
JboAbstractValidator() |
Modifier and Type | Method and Description |
---|---|
JboValidatorHints |
applyValidatorPersonalization(JboValidatorHints orgVal) |
java.lang.Object |
clone() |
void |
closeObject() |
ValidationException |
createException(java.lang.Exception e,
JboValidatorContext evObj,
java.lang.String msgId,
AttributeDef attrDef,
java.lang.Object value,
java.lang.String methodName,
int severity) |
DifferDetails |
diffContents(DiffMergeable docDef,
DiffMergeable orgDef,
DifferDetails difDetails)
Performs diff of scalar values.
|
ExprCodeSource |
editCodeSource(ExprCodeSource codeSource)
Notify that ComponentOperationsManager that the client expects to
edit the CodeSource.
|
ExprCodeSource |
ensureCodeSource(ExprDef exprDef)
Ensure a named code source in the operations manager.
|
java.lang.String |
getDefXMLNameSpace() |
java.lang.String |
getErrorMsgId() |
protected AttributeDef |
getErrorReportAttrDef(JboValidatorContext evObj) |
java.lang.String |
getFullName()
Gets this object's fully-qualified name.
|
java.lang.String |
getImageLoc(boolean bOpen) |
ValidatorConstants.MessageFlavor |
getMessageFlavor() |
java.lang.String |
getName()
Get the name of this object.
|
OperationDefinitions |
getOperationDefinitions()
Return the operation definitions.
|
DefPersistable |
getOrigObject() |
OperationDefinitions |
getRowOperationDefinitions()
Return the row operation definitions.
|
AttributeDef[] |
getTriggeringAttributeDefs()
Returns an array of attribute defs for those attributes whose change in value,
should trigger this validation rule to execute.
|
java.lang.String |
getValidatingAttributeName() |
java.lang.String |
getValidatorType() |
protected java.lang.Object |
getValueToValidate(JboValidatorContext evObj) |
java.lang.String |
getXMLElementTag()
Returns a piece of static info for the type of object this is invoked
upon.
|
protected void |
initialize(JboValidatorContext evObj) |
boolean |
isForPersonalization() |
boolean |
isReadOnly() |
void |
loadXMLContents(DefElement elem) |
ExprDef |
lookupExprDef(OwnerType type,
java.lang.String path)
Search for an ExprDef in the ComponentOperationsManager's namespace.
|
void |
raiseException(java.lang.Exception e,
JboValidatorContext evObj,
java.lang.String msgId,
int severity) |
void |
resolve(ValidationManager owner,
StructureDef structDef,
PersistableDefObject defObj) |
void |
setForPersonalization(boolean b) |
protected void |
setInitialized() |
void |
setMessageFlavor(ValidatorConstants.MessageFlavor mFlavor) |
void |
setName(java.lang.String name)
Name this object.
|
protected void |
setNewValue(java.lang.Object newValue)
When the newValue is an Entity, get the attribute's value
by using the getAttribute method on the entity.
|
void |
setOrigObject(DefPersistable oldObj) |
void |
setValidatingAttribute(AttributeDef attr)
Sets the validating attribute.
|
void |
setValidatingAttribute(StructureDef beanInfo,
java.lang.String str)
Sets the validating attribute by name.
|
void |
validate(JboValidatorContext evObj)
Tests the validity of the object/value as described in the validator context.
|
void |
validateMany(java.util.ArrayList valCtxs) |
abstract boolean |
validateValue(java.lang.Object value)
Validates a value.
|
boolean |
validateValueWithContext(JboValidatorContext evObj,
java.lang.Object value)
Called internally by the framework with validation OnCondition is true or
there is no validation OnCondition.
|
void |
writeContents(DefWriter jos)
Objects should write their persistence output in this method
|
void |
writeObject(DefWriter jos)
Objects should write their persistence output in this method
|
applyDiffChildren, applyDiffContents, applyValidatorPersonalization, beginDiffObjects, convertToJava, copyErrorMsgInfo, createAttributeException, createExprValueSupplier, createRowException, diffChildren, diffObjects, ensureDifferDetails, ensureVariableManager, getDefTypeName, getDefXMLElementTag, getDescription, getErrorMessageClass, getErrorMsgExpressionDefs, getErrorMsgExpressions, getErrorMsgIds, getExprIdentifier, getExprValueSupplierType, getInverse, getMergeableFullName, getMergeableName, getMessageBundleClass, getOnCondition, getOnConditionDef, getOwner, getResourceBundleDef, getResourceBundleId, getSeverity, getTriggeringAttributeNames, getTriggerType, getValidatorSubType, getVariableManager, hasErrorMsg, hasValidationCondition, hasVariables, initErrMsgParms, initTriggeringAttributeDefs, initValidatorProperties, isDirty, isMovedToAttrLevel, isNew, isTransactionLevel, isTransactionLevel, isValidatable, loadVariables, lookupMessageDef, parseSeverityStr, prepareException, raiseException, readStringArrayList, readTransientExpression, readTransientExpression, readUserObject, readUserObject, readUserObjectTrim, readUserObjectTrim, readUserStringElementsMap, setDefaultDescription, setDescription, setDirty, setErrorMessageClass, setErrorMsgExpressionDefs, setErrorMsgExpressions, setErrorMsgId, setErrorMsgIds, setExprValueSupplierType, setInverse, setNew, setOnCondition, setResourceBundleDef, setResourceBundleId, setSeverity, setTransactionLevel, setTriggeringAttributeNames, setTriggerTypeString, setValidatingAttributeName, setValidatorSubType, writeChildren
allocatePropertyMap, getAllProperties, getParent, getProperties, getPropertiesAsStrings, getPropertiesMap, getProperty, getProperty, getPropertyExpressionDef, getPropertyExpressionsMap, getPropertyMap, getPropertyNamesSet, getRawPropertyValue, getResourcesFromBundle, getStringFromMessageBundle, isPropertyExpression, mergePropertyMap, refreshProperty, removeProperty, removeProperty, requiresNamePrefixedResId, resolveObjectProperty, resolvePropertyRaw, setFullName, setParent, setPropertiesMap, setPropertiesMap2, setProperty, setProperty, setPropertyExpression, setPropertyMap
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getTriggeringAttributeNames, initValidatorProperties, isTransactionLevel
getDescription, setDescription
isDirty, isNew, setDirty, setNew
getDefXMLElementTag, writeChildren
protected AttributeDef mValidatingAttr
public java.lang.Object clone()
clone
in class AbstractValidator
public java.lang.String getName()
NamedObjectImpl
getName
in interface JboValidatorHints
getName
in interface VariableManagerOwner
getName
in class AbstractValidator
public void setName(java.lang.String name)
NamedObjectImpl
setName
in interface JboValidatorHints
setName
in class NamedObjectImpl
name
- the name to be given to this object.public java.lang.String getFullName()
NamedObjectImpl
getFullName
in interface ComponentOperationsManager
getFullName
in interface DefPersistable
getFullName
in class AbstractValidator
public OperationDefinitions getOperationDefinitions()
OperationContainer
getOperationDefinitions
in interface OperationContainer
public OperationDefinitions getRowOperationDefinitions()
OperationContainer
getRowOperationDefinitions
in interface OperationContainer
@Concealed public ExprCodeSource ensureCodeSource(ExprDef exprDef)
ComponentOperationsManager
#updateCodeSource
to update the component
operations manager with any updates that are made to this CodeSource.ensureCodeSource
in interface ComponentOperationsManager
exprDef
- a null exprDef may be used to indicate the a
built-in code source.public ExprCodeSource editCodeSource(ExprCodeSource codeSource)
ComponentOperationsManager
editCodeSource
in interface ComponentOperationsManager
public ExprDef lookupExprDef(OwnerType type, java.lang.String path)
ComponentOperationsManager
lookupExprDef
in interface ComponentOperationsManager
type
- the {@link oracle.jbo.common.OwnerType) of the expressionpath
- the (@link ExprDef#getPath} of the expressionpublic boolean isReadOnly()
public void closeObject()
public java.lang.String getImageLoc(boolean bOpen)
public boolean isForPersonalization()
isForPersonalization
in interface JboValidatorHints
public void setForPersonalization(boolean b)
setForPersonalization
in interface JboValidatorHints
public ValidatorConstants.MessageFlavor getMessageFlavor()
public void setMessageFlavor(ValidatorConstants.MessageFlavor mFlavor)
protected void setInitialized()
protected void initialize(JboValidatorContext evObj)
public AttributeDef[] getTriggeringAttributeDefs()
JboValidatorHints
getTriggeringAttributeDefs
in interface JboValidatorHints
getTriggeringAttributeDefs
in class AbstractValidator
public java.lang.String getErrorMsgId()
getErrorMsgId
in class AbstractValidator
public abstract boolean validateValue(java.lang.Object value)
Subclasses must implement this method.
value
- the object to be validated.true
if the object is valid.java.lang.Exception
- if validation cannot be performed.public boolean validateValueWithContext(JboValidatorContext evObj, java.lang.Object value)
public void validate(JboValidatorContext evObj)
JboValidatorInterface
validate
in interface JboValidatorInterface
evObj
- the validator contextpublic void validateMany(java.util.ArrayList valCtxs)
protected AttributeDef getErrorReportAttrDef(JboValidatorContext evObj)
public void raiseException(java.lang.Exception e, JboValidatorContext evObj, java.lang.String msgId, int severity)
raiseException
in class AbstractValidator
public ValidationException createException(java.lang.Exception e, JboValidatorContext evObj, java.lang.String msgId, AttributeDef attrDef, java.lang.Object value, java.lang.String methodName, int severity)
createException
in class AbstractValidator
protected void setNewValue(java.lang.Object newValue) throws java.lang.Exception
newValue
- either the attribute's value or a value to use to compare
in the validator.java.lang.Exception
protected java.lang.Object getValueToValidate(JboValidatorContext evObj)
public void setValidatingAttribute(AttributeDef attr)
attr
- an attribute.public void setValidatingAttribute(StructureDef beanInfo, java.lang.String str)
This variant is used when the validator is attached to an entity, rather than to an attribute.
beanInfo
- the entity containing the attribute.str
- an attribute name as a string.public java.lang.String getValidatingAttributeName()
getValidatingAttributeName
in class AbstractValidator
public void loadXMLContents(DefElement elem)
loadXMLContents
in class AbstractValidator
public void resolve(ValidationManager owner, StructureDef structDef, PersistableDefObject defObj)
resolve
in interface JboValidatorHints
resolve
in class AbstractValidator
public DefPersistable getOrigObject()
getOrigObject
in interface DefPersistable
public void setOrigObject(DefPersistable oldObj)
setOrigObject
in interface DefPersistable
public void writeObject(DefWriter jos)
PersistentDefinition
writeObject
in interface PersistentDefinition
jos
- the Output storage for persistencepublic void writeContents(DefWriter jos)
PersistentDefinition
writeContents
in interface PersistentDefinition
writeContents
in class AbstractValidator
jos
- the Output storage for persistencepublic DifferDetails diffContents(DiffMergeable docDef, DiffMergeable orgDef, DifferDetails difDetails)
DiffMergeable
orgDef
. Then, help
methods on DifferBase
can be used to diff the attr values
and accumulate the details of diff in difDetails
.
Here is example code snippet:
private static final String DIFF_STRING_ELEMS[] = { "MyStringVal1", "MyStringVal2" }; private static final String DIFF_INT_ELEMS[] = { "MyIntVal", } public DifferDetails diffContents(DiffMergeable docDef, DiffMergeable orgDef, DifferDetails difDetails) {orgDefImpl = ( ) orgDef; final String editStringValues[] = { this.getMyStringVal1(), this.getMyStringVal2() }; String orgStringValues[] = null; if (orgDef != null) { String orgV[] = { orgDefImpl.getMyStringVal1(), orgDefImpl.getMyStringVal2() }; orgStringValues = orgV; } final int editIntValues[] = { this.getMyIntVal(), }; int orgIntValues[] = null; if (orgDef != null) { int orgV[] = { orgDefImpl.getMyIntVal() }; orgIntValues = orgV; } difDetails = DifferBase.diffStringArray(this, DIFF_STRING_ELEMS, editStringValues, orgStringValues, difDetails); difDetails = DifferBase.diffIntArray(this, DIFF_INT_ELEMS, editIntValues, orgIntValues, difDetails); return difDetails; }
diffContents
in interface DiffMergeable
diffContents
in class AbstractValidator
docDef
- the document-level definitionorgDef
- the original definition. It could be
null
if the definition did not exist originallydifDetails
- the DifferDetails
that accumulate
the details of diff from the document-level (top-level) defDifferDetails
that has all the details
of diffpublic java.lang.String getXMLElementTag()
PersistentDefinition
getXMLElementTag
in interface PersistentDefinition
public java.lang.String getDefXMLNameSpace()
getDefXMLNameSpace
in interface PersistentDefinition
public java.lang.String getValidatorType()
public JboValidatorHints applyValidatorPersonalization(JboValidatorHints orgVal)
applyValidatorPersonalization
in interface JboValidatorHints