public abstract class Difference extends java.lang.Object implements Copyable, DynamicPropertySet
A Difference has a number of contributors, each with a value for the
object. In general one contributor will represent the "original" value
and one contributor will represent the "updated" value. If the values are
considered to be the same then isSame()
will return true.
Differences can be filtered
if necessary
to refine results when some changes should be ignored.
To obtain a Difference for two objects, use a DiffEngine
.
Constructor and Description |
---|
Difference() |
Modifier and Type | Method and Description |
---|---|
protected void |
copyToImpl(Difference other)
Subclasses should call this as part of the Copyable implementation.
|
Difference |
getChildDifference(java.lang.String propName)
Gets a child Difference that has the given property name.
|
Difference |
getChildDifference(java.lang.String propName,
boolean ignoreSame)
Gets a child Difference that has the given property name.
|
abstract java.util.Collection<? extends Difference> |
getChildren()
Gets all the children of this Difference.
|
protected java.util.Collection<? extends Difference> |
getChildrenForLog()
Called by the print code to get the child Differences that should be
included in the log.
|
abstract java.lang.Class<?> |
getDifferenceClass()
Gets the Class of the object this Difference is for.
|
Difference |
getFilteredDifference(DifferenceFilter... filters)
Filters this Difference using the given filter and returns a new
filtered Difference.
|
abstract int |
getIndexOf(java.lang.String contributor)
Get the index of the contributor in a list.
|
int |
getIndexOfOriginalObject()
Get the index of the original object.
|
int |
getIndexOfUpdatedObject()
Get the index of the updated object.
|
abstract java.lang.Object |
getObject(java.lang.String contributor)
Gets the object in this Difference for the given contributor.
|
abstract java.lang.String |
getOriginalContributor()
Gets the name of the contributor which
describes the original object.
|
java.lang.Object |
getOriginalObject()
Get the original object.
|
protected java.lang.String |
getOriginalObjectForLog()
Called by the print code to get the original object value as a String
to include in a print.
|
Difference |
getParent()
Gets the parent of this Difference, if one exists.
|
java.util.Map |
getProperties()
Retrieves a map holding the property-value pairs.
|
java.lang.Object |
getProperty(java.lang.String key)
Retrieves the value associated with a property.
|
java.lang.Object |
getProperty(java.lang.String key,
java.lang.Object defaultValue)
Retrieves the value associated with a property.
|
protected PropertyInfo |
getPropertyInfo()
If this Difference represents a property, this returns the info object
that describes that property.
|
abstract java.lang.String |
getPropertyName()
Get the property name of this difference.
|
java.lang.String |
getPropertyPath()
Get the property path of this difference.
|
protected java.lang.String |
getSameTextForLog()
Called by the print code to get a String representation of the isSame
for this Difference.
|
abstract java.lang.String |
getUpdateContributor()
Gets the name of the contributor which
describes the changes the user wishes to apply.
|
java.lang.Object |
getUpdatedObject()
Get the updated object.
|
protected java.lang.String |
getUpdatedObjectForLog()
Called by the print code to get the updated object value as a String
to include in a print.
|
boolean |
isFiltered()
Tests whether this Difference has been filtered - i.e.
|
abstract boolean |
isLeaf()
Tests whether this Difference is a leaf - i.e.
|
abstract boolean |
isList()
Tests whether this Difference is a list - i.e.
|
boolean |
isLoaded()
Tests whether all the data relating to this Difference has been loaded.
|
abstract boolean |
isMap()
Tests whether this Difference is a map - i.e.
|
abstract boolean |
isModified()
Tests whether contributors are non-null and are not the same.
|
boolean |
isSame()
Tests whether all contributors agree that this object is the same.
|
void |
print()
For Diagnostic purposes, print the difference to the this class's Logger
at the tracing log level.
|
void |
print(java.util.logging.Logger logger,
java.util.logging.Level level)
Prints this different to the given Logger and Level.
|
void |
print(java.io.PrintStream stream)
Prints this Difference to the given PrintStream.
|
abstract void |
setObject(java.lang.String contributor,
java.lang.Object object)
Sets the object for this Difference for the given contributor.
|
protected void |
setParent(Difference parent)
Sets the parent of the Difference
|
void |
setProperties(java.util.Map properties)
Sets the map holding the property-value pairs.
|
void |
setProperty(java.lang.String key,
java.lang.Object value)
Sets the value for a property.
|
void |
setSame(boolean same)
Overrides whether this Difference is the same (i.e.
|
abstract void |
setUpdateContributor(java.lang.String contributor)
Sets the name of the contributor which
describes the changes the user wishes to apply.
|
java.lang.String |
toString() |
protected void |
toString(java.lang.StringBuilder buff) |
public boolean isLoaded()
isSame getObject
etc) are potentially time
consuming.
When using a DiffEngine, if a fully loaded Difference tree is required
use DiffContext.setIsTreeRequired(boolean)
.
public Difference getParent()
protected void setParent(Difference parent)
parent
- the Difference for the parent object or property of this
Difference.public abstract java.lang.String getPropertyName()
protected PropertyInfo getPropertyInfo()
getPropertyName()
public java.lang.String getPropertyPath()
getPropertyName()
public abstract boolean isModified()
public boolean isSame()
public final boolean isFiltered()
public void setSame(boolean same)
public abstract boolean isLeaf()
public abstract boolean isMap()
getChildren()
,
getChildDifference(String)
,
getChildDifference(String,boolean)
public abstract boolean isList()
getChildren()
public abstract java.lang.Object getObject(java.lang.String contributor)
contributor
- a contributor in this differencepublic abstract void setObject(java.lang.String contributor, java.lang.Object object)
contributor
- a contributor in this differenceobject
- the value for the given contributorpublic abstract int getIndexOf(java.lang.String contributor)
contributor
- a contributor in this differencepublic abstract void setUpdateContributor(java.lang.String contributor)
contributor
- a contributor in this differencepublic abstract java.lang.String getOriginalContributor()
public abstract java.lang.String getUpdateContributor()
public abstract java.util.Collection<? extends Difference> getChildren()
public Difference getChildDifference(java.lang.String propName)
propName
- the property to search for a Difference ofpropName
, or null if one cannot be
found.getChildDifference(java.lang.String,boolean)
,
PropertyHelper.getChildDifference(oracle.javatools.db.diff.Difference, java.lang.String)
public Difference getChildDifference(java.lang.String propName, boolean ignoreSame)
propName
- the property to search for a Difference ofignoreSame
- do not return a Difference if it is "same" (i.e.
the property has not changed).propName
, or null if one cannot be
found or the Difference result was "same".isSame()
public abstract java.lang.Class<?> getDifferenceClass()
public final java.lang.Object getOriginalObject()
public final java.lang.Object getUpdatedObject()
public final int getIndexOfOriginalObject()
public final int getIndexOfUpdatedObject()
public Difference getFilteredDifference(DifferenceFilter... filters)
filter
- public final java.util.Map getProperties()
DynamicPropertySet
getProperties
in interface DynamicPropertySet
public final java.lang.Object getProperty(java.lang.String key)
DynamicPropertySet
getProperty
in interface DynamicPropertySet
key
- the property key for which a value is desired.
exists.null
value
if the property does not exist or is not set.public final java.lang.Object getProperty(java.lang.String key, java.lang.Object defaultValue)
DynamicPropertySet
getProperty
in interface DynamicPropertySet
key
- the property key for which a value is desired.defaultValue
- the value to return if no value currently
exists.public final void setProperties(java.util.Map properties)
DynamicPropertySet
setProperties
in interface DynamicPropertySet
public final void setProperty(java.lang.String key, java.lang.Object value)
DynamicPropertySet
null
removes that property.setProperty
in interface DynamicPropertySet
key
- the property key to setvalue
- the value to setprotected void copyToImpl(Difference other)
public final void print()
public final void print(java.util.logging.Logger logger, java.util.logging.Level level)
logger
- the logger to print tolevel
- the level to print atpublic final void print(java.io.PrintStream stream)
stream
- the print stream to print toprotected java.lang.String getOriginalObjectForLog()
getOriginalObject()
,
print(Logger,Level)
protected java.lang.String getUpdatedObjectForLog()
getUpdatedObject()
,
print(Logger,Level)
protected java.lang.String getSameTextForLog()
isSame()
,
print(Logger,Level)
protected java.util.Collection<? extends Difference> getChildrenForLog()
getChildren()
,
print(Logger,Level)
public final java.lang.String toString()
toString
in class java.lang.Object
protected void toString(java.lang.StringBuilder buff)