public class VariableImpl extends NamedObjectImpl implements Variable, ValidationManager, AttributeHints, JboReservedVarNames, java.io.Serializable, DefPersistable, ResourceBundleOwner, DiffMergeable, ComponentOperationsManager
AttributeDef.AttributeStorageEnum
AttributeHints.ControlType
mFullName, mObjName, mParent, mProperties, RES_ID_SUFFIX, RESID_SUFFIX
VAR_KIND_VIEW_CRITERIA_IN_MEM_CLAUSE_PARAM, VAR_KIND_VIEW_CRITERIA_PARAM, VAR_KIND_WHERE_CLAUSE_PARAM, VAR_KIND_WHERE_OR_CRIT_PARAM
ATTR_ASSOCIATED_ROW, ATTR_ASSOCIATED_ROWITERATOR, ATTR_DYNAMIC, ATTR_ENTITY_DERIVED, ATTR_HIDDEN, ATTR_PERSISTENT, ATTR_ROWSET, ATTR_SQL_DERIVED, ATTR_TRANSIENT, ATTR_VARIABLE, READONLY, UPDATEABLE, UPDATEABLE_WHILE_NEW
ATTRIBUTE_AUTOSUBMIT, ATTRIBUTE_BINDEDITOR_LABEL, ATTRIBUTE_CTL_CATEGORY, ATTRIBUTE_CTL_DISPLAYHEIGHT, ATTRIBUTE_CTL_DISPLAYWIDTH, ATTRIBUTE_CTL_FIELD_ORDER, ATTRIBUTE_CTL_FORMTYPE, ATTRIBUTE_CTL_TYPE, ATTRIBUTE_DEFINITION_STATE, ATTRIBUTE_DISPLAY_HINT, ATTRIBUTE_DISPLAY_HINT_DISPLAY, ATTRIBUTE_DISPLAY_HINT_HIDE, ATTRIBUTE_FORM_TYPE_DETAIL, ATTRIBUTE_FORM_TYPE_SHORT, ATTRIBUTE_LABEL, ATTRIBUTE_LABEL_PLURAL, ATTRIBUTE_LOVNAME, ATTRIBUTE_PAYLOAD_HINT, ATTRIBUTE_PAYLOAD_HINT_HIDE, ATTRIBUTE_PAYLOAD_HINT_SHOW, ATTRIBUTE_REQUIRED_HINT, ATTRIBUTE_REQUIRED_HINT_OPTIONAL, ATTRIBUTE_REQUIRED_HINT_REQUIRED, ATTRIBUTE_REQUIRED_HINT_SELECTIVELY_REQUIRED, ATTRIBUTE_TIMEZONE_ID, ATTRIBUTE_TOOLTIP, CTL_CHECK_BOX, CTL_CHOICE_LIST, CTL_COMBO_BOX, CTL_COMBO_BOX_LOV, CTL_DATE, CTL_DEFAULT, CTL_DELIMITEDIDS_CHOICE, CTL_EDIT, CTL_IMAGE, CTL_INPUT_TEXT_LOV, CTL_LIST_BOX, CTL_NUMBER_EDIT, CTL_RADIO_GROUP, CTLTYPE_CHECKBOX, CTLTYPE_COMBO, CTLTYPE_COMBOLOV, CTLTYPE_DATE, CTLTYPE_DEFAULT, CTLTYPE_DELIMITEDIDS_CHOICE, CTLTYPE_EDIT, CTLTYPE_IMAGE, CTLTYPE_LIST, CTLTYPE_LISTBOX, CTLTYPE_LOV, CTLTYPE_NUMEDIT, CTLTYPE_RADIOGRP, CTLTYPE_TOGGLE, FMT_FORMAT, FMT_FORMATTER, HINT_NAME_AUTOSUBMIT, HINT_NAME_CATEGORY, HINT_NAME_CTL_TYPE, HINT_NAME_DESCRIPTION, HINT_NAME_DISPLAY_HEIGHT, HINT_NAME_DISPLAY_HINT, HINT_NAME_DISPLAY_WIDTH, HINT_NAME_FIELD_ORDER, HINT_NAME_FORMAT, HINT_NAME_LABEL, HINT_NAME_LABEL_PLURAL, HINT_NAME_LOVNAME, HINT_NAME_MANDATORY, HINT_NAME_MAX_LENGTH, HINT_NAME_MAX_VALUE, HINT_NAME_MIN_LENGTH, HINT_NAME_MIN_VALUE, HINT_NAME_PAYLOAD_HINT, HINT_NAME_SECRET, HINT_NAME_TIMEZONEID, HINT_NAME_TOOLTIP, HINT_NAME_UPDATEABLE, HINT_NAME_WATERMARK, PNAME_Button, PNAME_ButtonGroup, PNAME_ComboBox, PNAME_ComboBoxLovEdit, PNAME_ENSURE_KEY_ATTR, PNAME_EnumList, PNAME_LovButton, PNAME_ROWNUMATTR, PNAME_SOURCENAME_ACCESSOR, PNAME_SOURCENAME_ATTR, PNAME_TextField
DEFINITION_STATE_ACTIVE, DEFINITION_STATE_DEPRECATED, PROPERTY_DEFINITION_STATE, PROPERTY_LABEL, PROPERTY_LABEL_PLURAL, PROPERTY_TOOLTIP
RESERVED_VAR_AGG_AVG, RESERVED_VAR_AGG_COUNT, RESERVED_VAR_AGG_MAX, RESERVED_VAR_AGG_MIN, RESERVED_VAR_AGG_SUM, RESERVED_VAR_AGGVAL_PREFIX, RESERVED_VAR_STRUCTURE_DEF
RESERVED_VAR_VALUE
XML_STATEMENT
Constructor and Description |
---|
VariableImpl()
Default constructor for this class.
|
VariableImpl(java.lang.String name) |
VariableImpl(java.lang.String name,
java.lang.Class javaType) |
VariableImpl(java.lang.String name,
java.lang.Object defaultValue,
byte updateable,
boolean notNull,
java.lang.Class javaType) |
VariableImpl(VariableImpl var) |
Modifier and Type | Method and Description |
---|---|
java.util.Map |
_getDomainContext() |
void |
addValidator(JboValidatorInterface listener)
Add a
JboValidatorInterface to the listener list. |
void |
applyDiffChildren(DifferDetails dif,
DiffResolver resolver)
Applies changes to children defs.
|
void |
applyDiffContents(DifferDetails dif,
DiffResolver resolver)
When diff/merge operation is requested, we have the following
three def objects:
|
DifferDetails |
beginDiffObjects(DiffMergeable docDef,
DiffMergeable orgDef,
DifferDetails difDetails)
This method is the entry point call when the diffing process
begins on the document-level def.
|
java.lang.Object |
clone() |
java.lang.Object |
convertToJava(java.lang.Object data)
Converts a value from the database type to its corresponding Java type
and returns the result.
|
protected VariableImpl |
createClone() |
protected ExpressionDef |
createExpressionDef(java.lang.String expr) |
DifferDetails |
diffChildren(DiffMergeable docDef,
DiffMergeable orgDef,
DifferDetails difDetails)
Performs diff of children defs.
|
DifferDetails |
diffContents(DiffMergeable docDef,
DiffMergeable orgDef,
DifferDetails difDetails)
Performs diff of scalar values.
|
DifferDetails |
diffObjects(DiffMergeable docDef,
DiffMergeable orgDef,
DifferDetails difDetails)
The work-horse method performing diff between two defs of this
def type.
|
boolean |
displayInShortForm(LocaleContext locale)
Returns true if the attribute is to displayed in the short(summary) form.
|
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.
|
DifferDetails |
ensureDifferDetails(DifferDetails difDetails)
Ensures that we have a valid
DifferDetails . |
java.lang.Object |
evaluateTransientExpression(VariableManagerOwnerBase owner) |
ViewObject |
getAccessorVO(ViewObject originVO)
For an accessor attribute, this method creates a View Object that
works for the View Link definition.
|
byte |
getAttributeKind()
Gets the attribute value.
|
AttributeDef.AttributeStorageEnum |
getAttributeStorage() |
java.lang.String |
getCategory(LocaleContext locale)
Returns the category that this attribute belongs to
|
java.lang.String |
getColumnName()
Overridden to return null in Variable implementations.
|
java.lang.String |
getColumnNameForQuery()
Overridden to return null in Variable implementations.
|
java.lang.String |
getColumnType()
This method is used if the variable is of array type to get to the
type name created in the database to store the array values.
|
java.lang.String[][] |
getCompOpers(LocaleContext locale)
Returns a Map of operators for this attribute.
|
int |
getControlType(LocaleContext locale)
Returns the preferred control type for this attribute
|
java.lang.Object |
getDefaultValue()
Returns the default value of the attribute.
|
java.lang.String |
getDefinitionState(LocaleContext locale)
Retrives the definition state string that indicates if this object is deprecated.
|
java.lang.String |
getDefTypeName()
Returns the XML def type name of this defintion object, e.g.,
"PDefEntityObject".
|
java.lang.String |
getDefXMLElementTag() |
java.lang.String |
getDefXMLNameSpace() |
int |
getDisplayHeight(LocaleContext locale)
Returns the display width for this attribute
|
java.lang.String |
getDisplayHint(LocaleContext locale)
Retrieves the displya hint that dictates whether this
attributr should be visible or not.
|
int |
getDisplayWidth(LocaleContext locale)
Returns the display width for this attribute
|
int |
getElemSQLType()
Overridden to return -1.
|
java.lang.Class |
getElemType()
Returns the class type for the elements if this variable
stores array types.
|
ExprEval |
getExprEval() |
java.lang.Object |
getExtendedData() |
double |
getFieldOrder(LocaleContext locale)
Returns the field order for this attribute
|
java.lang.String |
getFormat(LocaleContext locale)
returns the format string stored in the ui hints
|
java.lang.String |
getFormattedAttribute(AttributeList attrList,
LocaleContext locale)
Returns the formatted value for the attribute.
|
Formatter |
getFormatter(LocaleContext locale)
returns the formatter object stored in the ui hints
|
java.lang.String |
getFormatterClassName(LocaleContext locale)
returns the formatter object stored in the ui hints
|
java.lang.String |
getHint(LocaleContext locale,
java.lang.String sHintName)
Return defaulted hint value
|
java.lang.String |
getHintValue(LocaleContext locale,
java.lang.String sHintName)
Return non-defaulted hint value
|
int |
getIndex()
Overridden to return -1 for index.
|
java.lang.Class |
getJavaType()
Returns the Java type of the attribute.
|
java.lang.String |
getJavaTypeName()
Returns the name of the Java type of the attribute, mainly for design time.
|
java.lang.String |
getLabel(LocaleContext locale)
Retrieves the label to be used in any attribute prompts
|
java.lang.String |
getLabelPlural(LocaleContext locale)
Retrives the label plural text to be used for this attribute
|
ListBindingDef |
getListBindingDef() |
java.lang.String |
getLocaleName(LocaleContext locale,
java.lang.String sName)
function for retrieving the locale name of a hint
|
java.lang.String |
getLOVName()
Gets the name of the LOV (list of values) associated with this
attribute definition.
|
java.lang.String |
getMergeableFullName()
Returns the fully qualified name of the diff-mergeable definition object.
|
java.lang.String |
getMergeableName()
Returns the diff-mergeable definition's name (short form).
|
OperationDefinitions |
getOperationDefinitions()
Return the operation definitions.
|
java.util.Map |
getOperators(LocaleContext locale) |
DefPersistable |
getOrigObject() |
java.lang.String |
getPayloadHint(LocaleContext locale)
Retrieves the payload hint that dictates whether this
attribute should be included in service payload or not.
|
int |
getPrecision()
Gets the attribute's precision.
|
ResourceBundleDef |
getResourceBundleDef() |
java.lang.String |
getResourcePrefix() |
OperationDefinitions |
getRowOperationDefinitions()
Return the row operation definitions.
|
int |
getScale()
Gets the attribute's scale value: the number of digits to the right or left of
the decimal point, depending on whether the scale value is positive or negative.
|
java.lang.String |
getSerializerClassName()
Gets the name of the custom value serializer class.
|
static Session |
getSession(VariableManagerOwnerBase owner) |
int |
getSQLType()
Overridden to return -1;
|
static StructureDef |
getStructureDef(VariableManagerOwnerBase owner) |
java.lang.String |
getTooltip(LocaleContext locale)
Retrives the tooltip text to be used for this attribute
|
java.lang.String |
getTransientExpression() |
ExpressionDef |
getTransientExpressionDef() |
AttributeHints |
getUIHelper()
return the AttributeHints interface implemented by this class
|
byte |
getUpdateableFlag()
Returns whether the attribute is updateable.
|
java.util.ArrayList |
getValidators()
Get the list of JboValidatorInterface objects registered with this attribute
|
ValueSerializer |
getValueSerializer()
Gets an instance of the custom value serializer class.
|
java.lang.String |
getVariableKind() |
VariableManager |
getVariableManager() |
java.lang.Object |
getXMLContentValue(org.w3c.dom.Element varElem)
Converts an XML element to an instance of this variable's Java type.
|
java.lang.String |
getXMLElementTag()
Returns a piece of static info for the type of object this is invoked
upon.
|
boolean |
hasFormatInformation(LocaleContext locale)
Return true if any format hints have been defined for this
attribute.
|
void |
initDefaultValueNoConversion(java.lang.String val)
*** For internal framework use only ***
only for testing purposes
|
void |
initFromXML(DefElement xmlElement)
*** For internal framework use only ***
|
void |
initFromXML(DefElement xmlElement,
boolean bDesignTime)
*** For internal framework use only ***
|
protected void |
initialize(VariableImpl fromVar) |
static java.lang.Object |
internalGetExprVarVal(java.lang.String varName,
VariableManagerOwnerBase owner,
java.lang.Object propertyBase) |
boolean |
isAutoSubmit(LocaleContext locale)
Returns the autoSubmit value for this attribute
|
boolean |
isDefinedDefaultValue()
Passivation uses this to tell if the current value is not the definition default.
|
boolean |
isDirty()
This method returns if an Object is modified from last save/load
|
boolean |
isDiscrColumn()
Tests if an attribute is a discriminator.
|
boolean |
isMandatory()
Returns whether the attribute is not null.
|
boolean |
isNew()
This method returns if this object is previously persisted.
|
boolean |
isPassivationNeeded()
The framework calls this api when building the sparse list of variables
that need passivation.
|
boolean |
isPrimaryKey()
Overridden to return false;
|
boolean |
isQueriable()
Returns true for Variables that are bound as where-clause parameters
|
boolean |
isSelected() |
protected void |
loadCustomProperties(DefElement xmlElement,
java.util.Map givenMap) |
protected ExpressionDef |
loadExpressionDef(DefElement xmlElement) |
protected void |
loadProperties(DefElement xmlElement) |
protected void |
loadSchemaProperties(DefElement xmlElement,
java.util.Map givenMap) |
ExprDef |
lookupExprDef(OwnerType type,
java.lang.String path)
Search for an ExprDef in the ComponentOperationsManager's namespace.
|
void |
mergePropertyMap(java.util.Map m) |
java.lang.Object |
parseFormattedAttribute(java.lang.String sValue,
LocaleContext locale)
Strips off the formatting from a string and constructs an
instance of the attribute's domain using the 'clean' string as
a parameter of the contructor.
|
void |
removeProperty(java.lang.String hintName,
LocaleContext locale) |
void |
removeValidator(JboValidatorInterface listener)
Removes a
JboValidatorInterface from the listener list. |
protected boolean |
requiresNamePrefixedResId() |
void |
setColumnType(java.lang.String columnType)
This method is used to set the name of the table
created in the database to store the array values.
|
void |
setDefaultValue(java.lang.Object val) |
void |
setDirty(boolean b)
This method marks the Object dirty
|
void |
setElemType(java.lang.String elementTypeName)
Sets the class type for the elements if this variable
stores array types.
|
void |
setExtendedData(java.lang.Object data) |
void |
setJavaType(java.lang.Class cls) |
void |
setJavaTypeName(java.lang.String typeName)
*** For internal framework use only ***
|
void |
setMandatory(boolean b) |
void |
setName(java.lang.String name)
Name this object.
|
void |
setNew(boolean b)
This method marks the as previously persisted.
|
void |
setOrigObject(DefPersistable oldObj) |
protected void |
setPassivationNeeded(boolean flag)
*** For internal framework use only ***
|
void |
setPrecisionScale(int prec,
int scale)
Sets the attribute's precision and scale.
|
void |
setProperty(java.lang.String hintName,
java.lang.Object hintValue,
LocaleContext locale) |
protected void |
setPropertyExpression(java.lang.String name,
java.lang.String expr) |
void |
setPropertyMap(java.util.Map m)
Replaces all properties.
|
void |
setSerializerClassName(java.lang.String className)
Sets the name of the custom value serializer class.
|
void |
setTransientExpression(java.lang.String expr) |
void |
setTransientExpressionDef(ExpressionDef exprDef)
Add an expression to the variable.
|
void |
setUpdateableFlag(byte updateable) |
void |
setVariableKind(java.lang.String kind) |
void |
setVariableManager(VariableManager manager) |
void |
writeChildren(DefWriter jos)
Writes the Object's children to the Persistent storage
|
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
|
allocatePropertyMap, getAllProperties, getFullName, getName, getParent, getProperties, getPropertiesAsStrings, getPropertiesMap, getProperty, getProperty, getPropertyExpressionDef, getPropertyExpressionsMap, getPropertyMap, getPropertyNamesSet, getRawPropertyValue, getResourcesFromBundle, getStringFromMessageBundle, isPropertyExpression, refreshProperty, removeProperty, resolveObjectProperty, resolvePropertyRaw, setFullName, setParent, setPropertiesMap, setPropertiesMap2, setProperty
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getName
getProperties, getProperty, getProperty, refreshProperty
getFullName, getName
getFullName
getFullName
public VariableImpl()
public VariableImpl(java.lang.String name)
public VariableImpl(java.lang.String name, java.lang.Class javaType)
public VariableImpl(java.lang.String name, java.lang.Object defaultValue, byte updateable, boolean notNull, java.lang.Class javaType)
public VariableImpl(VariableImpl var)
protected VariableImpl createClone()
protected ExpressionDef createExpressionDef(java.lang.String expr)
protected ExpressionDef loadExpressionDef(DefElement xmlElement)
public java.lang.Object clone()
public void setName(java.lang.String name)
NamedObjectImpl
setName
in interface Variable
setName
in class NamedObjectImpl
name
- the name to be given to this object.public java.lang.String getMergeableName()
DiffMergeable
getMergeableName
in interface DiffMergeable
public java.lang.String getMergeableFullName()
DiffMergeable
getMergeableFullName
in interface DiffMergeable
public VariableManager getVariableManager()
getVariableManager
in interface Variable
public void setVariableManager(VariableManager manager)
setVariableManager
in interface Variable
public java.lang.String getVariableKind()
getVariableKind
in interface Variable
public void setVariableKind(java.lang.String kind)
setVariableKind
in interface Variable
public java.lang.Object getExtendedData()
getExtendedData
in interface Variable
public void setExtendedData(java.lang.Object data)
setExtendedData
in interface Variable
public byte getUpdateableFlag()
getUpdateableFlag
in interface AttributeDef
public void setUpdateableFlag(byte updateable)
setUpdateableFlag
in interface Variable
public boolean isMandatory()
isMandatory
in interface AttributeDef
public void setMandatory(boolean b)
setMandatory
in interface Variable
public int getPrecision()
For strings, precision is maximum allowed length. For numeric values, precision is the number of significant digits.
getPrecision
in interface AttributeDef
public int getScale()
Scale value is meaningful only for numeric attributes.
getScale
in interface AttributeDef
public void setPrecisionScale(int prec, int scale)
For strings, precision is maximum allowed length. For numeric values, precision is the number of significant digits.
Scale is the number of digits to the right or left of the decimal point, depending on whether the scale value is positive or negative. Scale is meaning only for numeric attributes.
setPrecisionScale
in interface Variable
prec
- the precision value, or 0 if unspecified.scale
- the scale value. The default is -127.public java.lang.Class getJavaType()
For example, if the attribute is of type String, this method returns java.lang.String; if it is of type Number, it returns oracle.jbo.domain.Number.
Subclasses should override this method because Entities without accessors should also be able to get their types from attribute descriptors and beans.
getJavaType
in interface AttributeDef
public void setJavaType(java.lang.Class cls)
setJavaType
in interface Variable
public java.lang.String getJavaTypeName()
For example, if the attribute is of type String, this method returns java.lang.String; if it is of type Number, it returns oracle.jbo.domain.Number.
getJavaTypeName
in interface Variable
public void setJavaTypeName(java.lang.String typeName)
public java.lang.Object getDefaultValue()
The default value for an attribute is expressed in terms of the Java type system, rather than the storage type system.
getDefaultValue
in interface Variable
public void setDefaultValue(java.lang.Object val)
setDefaultValue
in interface Variable
public void initDefaultValueNoConversion(java.lang.String val)
public java.lang.Object convertToJava(java.lang.Object data)
This method uses AttributeDefImpl() metadata to convert a database value to the corresponding Java value.
convertToJava
in interface Variable
data
- a storage value to be converted.public void addValidator(JboValidatorInterface listener)
JboValidatorInterface
to the listener list.addValidator
in interface ValidationManager
listener
- The Validator to be addedpublic java.util.ArrayList getValidators()
getValidators
in interface ValidationManager
public void removeValidator(JboValidatorInterface listener)
JboValidatorInterface
from the listener list.listener
- The Validator to be removed@Concealed protected void initialize(VariableImpl fromVar)
public void initFromXML(DefElement xmlElement)
public void initFromXML(DefElement xmlElement, boolean bDesignTime)
public DifferDetails ensureDifferDetails(DifferDetails difDetails)
DiffMergeable
DifferDetails
.
This method is to create a DifferDetails
object to
be used for diffing if necessary. The difDetails
may come in
as null
. By calling this method, we can ensure that
a non-null difDetails
is there. So, instead of
writing:
if (difDetails == null) { difDetails = new DifferDetails(..); } difDetails.addDiffDetail(..);we can write
(difDetails = diffMergeable.ensureDifferDetails(difDetails)).addDiffDetail(..);
ensureDifferDetails
in interface DiffMergeable
difDetails
- the incoming DifferDetails
. It may
be null
.difDetails
if it wasn't
null
coming in, or a new DifferDetails
if
the incoming difDetails
was null
public 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
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 DifferDetails diffChildren(DiffMergeable docDef, DiffMergeable orgDef, DifferDetails difDetails)
DiffMergeable
difDetails
and
return it at the end.
For example, if this def has Child1 and Child2, its implementation should look something like:
public DifferDetails diffChildren(DiffMergeable docDef, DiffMergeable orgDef, DifferDetails difDetails) { difDetails = diffChildrenChild1(docDef, orgDef, difDetails); difDetails = diffChildrenChild1(docDef, orgDef, difDetails); return difDetails; }
where diffChildrenChild1()
uses DifferChildren
's
helper method diffChildrenList
to diff the child defs.
diffChildren
in interface DiffMergeable
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 DifferDetails beginDiffObjects(DiffMergeable docDef, DiffMergeable orgDef, DifferDetails difDetails)
DiffMergeable
DiffMergeable
's. 'this'
object is the
changed definition.
beginDiffObjects
in interface DiffMergeable
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 DifferDetails diffObjects(DiffMergeable docDef, DiffMergeable orgDef, DifferDetails difDetails)
DiffMergeable
diffContents
to diff scalar values and diffChildren
to diff
children objects. The children objects themselves are expected
to be DiffMergeable
. 'this'
object is the
changed definition.
diffObjects
in interface DiffMergeable
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 void applyDiffContents(DifferDetails dif, DiffResolver resolver)
DiffMergeable
orgDef - original def object (from the branch point)
editDef - def object into which changes are to be merge
toMergeDef - def object to be merged (source of changes)
For sandbox refresh operation, orgDef
comes from the branch
point, editDef
from the sandbox, toMergeDef
from the
mainline of the repos. With these three defs, we first diff editDef
against orgDef
, producing editDifDetails
.
Similarly, toMergeDef
is diffed against orgDef
,
producing toMergeDifDetails
. The diff engine then
walks through these two sets of diffs and identifies conflicts.
After the conflicts are all resolved, we apply appropriate
changes to editDef
.
applyDiffContents
is called to apply changes to
scalar values. dif
contains the changed values to
be applied to 'this'
object. Use sample code like
the following:
public void applyDiffContents(DifferDetails dif, DiffResolver resolver) { DifferChangeMap detailMap = dif.getDetailMap(); Object[] updValues; // DIFF_STRING_ELEMS from the above example code for (int j = 0; j < DIFF_STRING_ELEMS.length; j++) { if ((updValues = (Object[]) detailMap.getValue(DIFF_STRING_ELEMS[j])) != null) { switch(j) { case 0: setMyStringVal1((String) updValues[0]); break; case 1: setMyStringVal2((String) updValues[0]); break; } } } for (int j = 0; j < DIFF_INT_ELEMS.length; j++) { if ((updValues = (Object[]) detailMap.getValue(DIFF_INT_ELEMS[j])) != null) { switch(j) { case 0: setMyIntVal((Integer) updValues[0]); break; } } } }
Notice that the index specified in the case
statement is the array index of the attr in the String, int,
or boolean array.
applyDiffContents
in interface DiffMergeable
dif
- changes to be applied to 'this'
defresolver
- the diff resolver used in diff/merge operationpublic void applyDiffChildren(DifferDetails dif, DiffResolver resolver)
DiffMergeable
dif
contains the
changes to be applied to the children. For each child def, this method
should first retrieve the diff details for the child, which is of type
DifferChildren
. Then, it should call
DifferChildren.applyDiffChanges(oracle.jbo.mom.DiffChildrenMerge, oracle.jbo.mom.DiffResolver)
to perform
the change operation.
applyChanges()
requires a
DiffChildrenMerge
object, which has the insert,
update, and remove methods. 'this'
def object must
provide implmementation of these operations.
Here is a sample:
public void applyDiffChildren(DifferDetails dif, DiffResolver resolver) { DifferChangeMap detailMap = dif.getDetailMap(); if (detailMap != null) { DifferChildren difChild1 = (DifferChildren) detailMap.getValue(); if (difVCs != null) { DiffChildrenMerge dm = new DiffChildrenMerge() { public void insertChild(Object id, Object value) { .. perform insert op for Child1 .. } public void updateChild(Object id, Object value, Object oldValue) { .. perform update op for Child1 .. } public void removeChild(Object id) { .. perform remove op for Child1 .. } }; difChild1.applyDiffChanges(dm, resolver); } // Similarly for Child2 } }
applyDiffChildren
in interface DiffMergeable
protected void setPassivationNeeded(boolean flag)
public boolean isPassivationNeeded()
isPassivationNeeded
in interface Variable
public boolean isDefinedDefaultValue()
isDefinedDefaultValue
in interface Variable
public void removeProperty(java.lang.String hintName, LocaleContext locale)
removeProperty
in class NamedObjectImpl
public void setProperty(java.lang.String hintName, java.lang.Object hintValue, LocaleContext locale)
setProperty
in class NamedObjectImpl
public void setPropertyMap(java.util.Map m)
NamedObjectImpl
All existing properties are lost.
setPropertyMap
in class NamedObjectImpl
protected void setPropertyExpression(java.lang.String name, java.lang.String expr)
setPropertyExpression
in class NamedObjectImpl
public void mergePropertyMap(java.util.Map m)
mergePropertyMap
in class NamedObjectImpl
protected void loadProperties(DefElement xmlElement)
xmlElement
- The XML element to load from.protected void loadCustomProperties(DefElement xmlElement, java.util.Map givenMap)
protected void loadSchemaProperties(DefElement xmlElement, java.util.Map givenMap)
public AttributeHints getUIHelper()
getUIHelper
in interface AttributeDef
AttributeHints
public java.lang.String getLocaleName(LocaleContext locale, java.lang.String sName)
AttributeHints
getLocaleName
in interface AttributeHints
public ResourceBundleDef getResourceBundleDef()
getResourceBundleDef
in interface ResourceBundleOwner
getResourceBundleDef
in interface ValidationManager
public java.lang.String getResourcePrefix()
getResourcePrefix
in interface ResourceBundleOwner
public java.lang.String[][] getCompOpers(LocaleContext locale)
AttributeHints
getCompOpers
in interface AttributeHints
protected boolean requiresNamePrefixedResId()
requiresNamePrefixedResId
in class NamedObjectImpl
public final java.lang.String getLabel(LocaleContext locale)
getLabel
in interface GenericHints
public java.util.Map getOperators(LocaleContext locale)
public final java.lang.String getTooltip(LocaleContext locale)
getTooltip
in interface GenericHints
public final java.lang.String getLabelPlural(LocaleContext locale)
getLabelPlural
in interface GenericHints
public java.lang.String getDefinitionState(LocaleContext locale)
getDefinitionState
in interface GenericHints
public final java.lang.String getDisplayHint(LocaleContext locale)
getDisplayHint
in interface AttributeHints
public java.lang.String getPayloadHint(LocaleContext locale)
getPayloadHint
in interface AttributeHints
public final int getControlType(LocaleContext locale)
getControlType
in interface AttributeHints
public final int getDisplayWidth(LocaleContext locale)
getDisplayWidth
in interface AttributeHints
public final int getDisplayHeight(LocaleContext locale)
getDisplayHeight
in interface AttributeHints
public final boolean isAutoSubmit(LocaleContext locale)
isAutoSubmit
in interface AttributeHints
public final double getFieldOrder(LocaleContext locale)
getFieldOrder
in interface AttributeHints
public final java.lang.String getCategory(LocaleContext locale)
getCategory
in interface AttributeHints
public java.lang.String getHint(LocaleContext locale, java.lang.String sHintName)
getHint
in interface AttributeHints
public java.lang.String getHintValue(LocaleContext locale, java.lang.String sHintName)
getHintValue
in interface GenericHints
public final java.lang.String getFormat(LocaleContext locale)
AttributeHints
getFormat
in interface AttributeHints
public final Formatter getFormatter(LocaleContext locale)
AttributeHints
getFormatter
in interface AttributeHints
public final boolean hasFormatInformation(LocaleContext locale)
AttributeHints
hasFormatInformation
in interface AttributeHints
public final java.lang.String getFormattedAttribute(AttributeList attrList, LocaleContext locale)
AttributeHints
getFormattedAttribute
in interface AttributeHints
public final java.lang.Object parseFormattedAttribute(java.lang.String sValue, LocaleContext locale)
AttributeHints
parseFormattedAttribute
in interface AttributeHints
public final boolean displayInShortForm(LocaleContext locale)
AttributeHints
displayInShortForm
in interface AttributeHints
public final java.lang.String getFormatterClassName(LocaleContext locale)
getFormatterClassName
in interface AttributeHints
public byte getAttributeKind()
AttributeDef
getAttributeKind
in interface AttributeDef
getAttributeKind
in interface Variable
public AttributeDef.AttributeStorageEnum getAttributeStorage()
getAttributeStorage
in interface AttributeDef
public java.lang.String getColumnName()
getColumnName
in interface AttributeDef
getColumnName
in interface Variable
public java.lang.String getColumnNameForQuery()
getColumnNameForQuery
in interface AttributeDef
getColumnNameForQuery
in interface Variable
public int getSQLType()
getSQLType
in interface AttributeDef
getSQLType
in interface Variable
Types
public boolean isPrimaryKey()
isPrimaryKey
in interface AttributeDef
isPrimaryKey
in interface Variable
true
if this is either a Primary Key attribute or
part of the attributes that constitute the Primary Key for a given row.public int getElemSQLType()
getElemSQLType
in interface AttributeDef
getElemSQLType
in interface Variable
public int getIndex()
getIndex
in interface AttributeDef
public java.lang.String getColumnType()
where ATTR.COLUMNNAME in (select column_value from table(cast(:VAR.NAME as VAR.COLUMNTYPE)))
getColumnType
in interface Variable
public void setColumnType(java.lang.String columnType)
where ATTR.COLUMNNAME in (select column_value from table(cast(:VAR.NAME as VAR.COLUMNTYPE)))
setColumnType
in interface Variable
columnType
- The table name created in the database to store array valuespublic java.lang.Class getElemType()
getElemType
in interface AttributeDef
public void setElemType(java.lang.String elementTypeName)
elementTypeName
- The Class whose instances become the elements of the arraypublic boolean isDiscrColumn()
AttributeDef
isDiscrColumn
in interface AttributeDef
public boolean isSelected()
isSelected
in interface AttributeDef
public boolean isQueriable()
isQueriable
in interface AttributeDef
true
if this attribute is queriable.public ViewObject getAccessorVO(ViewObject originVO)
AttributeDef
getAccessorVO
in interface AttributeDef
originVO
- the View Object that owns the accessorViewObject
instance.public static final StructureDef getStructureDef(VariableManagerOwnerBase owner)
public static final Session getSession(VariableManagerOwnerBase owner)
public java.lang.String getTransientExpression()
getTransientExpression
in interface Variable
public ExpressionDef getTransientExpressionDef()
getTransientExpressionDef
in interface Variable
public void setTransientExpression(java.lang.String expr)
setTransientExpression
in interface Variable
public void setTransientExpressionDef(ExpressionDef exprDef)
Variable
setTransientExpressionDef
in interface Variable
public ExprEval getExprEval()
public java.lang.Object evaluateTransientExpression(VariableManagerOwnerBase owner)
evaluateTransientExpression
in interface Variable
public java.lang.String getLOVName()
AttributeDef
getLOVName
in interface AttributeDef
getLOVName
in interface AttributeHints
public ListBindingDef getListBindingDef()
getListBindingDef
in interface AttributeDef
public void setSerializerClassName(java.lang.String className)
Variable
ValueSerializer
interface.setSerializerClassName
in interface Variable
className
- name of the custom value serializer classpublic java.lang.String getSerializerClassName()
Variable
getSerializerClassName
in interface Variable
null
if it is not defined.public ValueSerializer getValueSerializer()
Variable
getValueSerializer
in interface Variable
null
if it is not defined.VariableValueManager.writeVarsToXML(Document, Element, boolean)
public java.lang.Object getXMLContentValue(org.w3c.dom.Element varElem)
Variable
getXMLContentValue
in interface Variable
varElem
- an XML element containing the serialized variable valueVariableValueManager.readVarsFromXML(Element)
public static java.lang.Object internalGetExprVarVal(java.lang.String varName, VariableManagerOwnerBase owner, java.lang.Object propertyBase)
public boolean isDirty()
DefPersistable
isDirty
in interface DefPersistable
public void setDirty(boolean b)
DefPersistable
setDirty
in interface DefPersistable
b
- If true the Object is marked Dirty.public boolean isNew()
DefPersistable
isNew
in interface DefPersistable
public void setNew(boolean b)
DefPersistable
setNew
in interface DefPersistable
b
- If true the Object is marked as new object.public DefPersistable getOrigObject()
getOrigObject
in interface DefPersistable
public void setOrigObject(DefPersistable oldObj)
setOrigObject
in interface DefPersistable
public java.lang.String getDefXMLElementTag()
getDefXMLElementTag
in interface PersistentDefinition
public java.lang.String getDefTypeName()
DiffMergeable
getDefTypeName
in interface DiffMergeable
public java.lang.String getXMLElementTag()
PersistentDefinition
getXMLElementTag
in interface PersistentDefinition
public java.lang.String getDefXMLNameSpace()
getDefXMLNameSpace
in interface PersistentDefinition
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
jos
- the Output storage for persistencepublic void writeChildren(DefWriter jos)
PersistentDefinition
writeChildren
in interface PersistentDefinition
jos
- the Output storage for persistencepublic java.util.Map _getDomainContext()
_getDomainContext
in interface Variable
public OperationDefinitions getOperationDefinitions()
OperationContainer
getOperationDefinitions
in interface OperationContainer
public OperationDefinitions getRowOperationDefinitions()
OperationContainer
getRowOperationDefinitions
in interface OperationContainer
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 expression