public abstract class Difference extends java.lang.Object implements Copyable
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.lang.Object |
getProperty(java.lang.String key) |
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.
|
protected Difference |
getSourceDifference()
If the property represented by this Difference is derived, this should
return the Difference for the source property that the values are
derived from.
|
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 |
isDerived()
Tests whether the property this Difference represents is derived.
|
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 on FINEST.
|
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 |
setProperty(java.lang.String key,
java.lang.Object value) |
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()
public boolean isDerived()
isLoaded()
to avoid deriving unnecessary
property information.protected Difference getSourceDifference()
This is used in filtering to ensure that filtering the Difference for a source property also filters any Differences derived from that property.
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.lang.Object getProperty(java.lang.String key)
public final void setProperty(java.lang.String key, java.lang.Object value)
protected 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)