Modifier and Type | Class and Description |
---|---|
static class |
DBUtil.IDQuery
When querying for reference IDs of an object this enum is used to define
whether to query for different kinds of reference.
|
Modifier | Constructor and Description |
---|---|
protected |
DBUtil() |
Modifier and Type | Method and Description |
---|---|
static boolean |
areEqual(java.lang.Object obj1,
java.lang.Object obj2)
Tests whether the two objects are equal to one another using
ModelUtil.areEqual except for when both are an Object[] then
the comparison is done using Arrays.equals . |
static boolean |
areEqualIgnoreNullValues(java.util.Map map1,
java.util.Map map2)
Compares the given maps following the rule that the following entries are
considered equal:
a missing key
a key with null value
a key with a value that is an empty Collection
|
static boolean |
areNamesAndTypesEqual(DBObject obj1,
DBObject obj2)
Convinience method to check whether the names and types of two objects
are the same.
|
static void |
cascadeInternalRename(SystemObject sysObj,
DBObject child,
java.lang.String oldName,
java.lang.String newName,
DBObjectProvider pro)
Cascades the rename of a child object internally to its top level
parent.
|
static void |
clearCachedTimestamp(DBObjectProvider pro,
SystemObject obj)
If the given provider has its timestamp checking suspended then this
method clears any cached timestamp information for the given object.
|
int |
compare(DBObject o1,
DBObject o2)
Compares the two objects, if they are both DBObjects.
|
static <T> T |
copyPropertyValue(T value,
DBObject orig,
DBObject copy,
IDPolicy idPolicy)
Copies a property value from an original DBObject so that it can be set
on a copy of that object.
|
static java.lang.String |
createUUID()
Creates a new UUID for use in an IdentifierBasedID or as any other unique
identifier.
|
static java.lang.Class<?> |
decodeArrayClass(java.lang.Class<?> clz)
Checks whether the given class is an array class, and if it is returns
the component type of that array.
|
static void |
ensureDerivedPropertiesBuilt(DBObject object,
DBObjectProvider pro)
INTERNAL ONLY - this is not a finished API yet.
|
static void |
ensureDerivedPropertiesBuilt(DBObject object,
DBObjectProvider pro,
java.util.Collection<? extends SystemObject> extras)
INTERNAL ONLY - this is not a finished API yet.
|
static void |
ensureObjectBuilt(DBObject object,
java.lang.String... props)
Ensures that the given object is loaded from its DBObjectProvider.
|
boolean |
equals(java.lang.Object obj) |
static java.lang.String[] |
filterObjectTypes(java.lang.String[] objectTypes,
java.lang.Class<? extends DBObject> clz)
Filters the given array of types so that it only contains types whose
DBObject implementations are subclasses of the given class.
|
static java.lang.String[] |
filterSchemaObjectTypes(java.lang.String[] objectTypes)
Filters the given array of types so that it only contains types that
are SchemaObjects.
|
static DBObject |
findChildByName(DBObject parent,
java.lang.String property,
java.lang.String childName,
DBObjectProvider pro)
Finds a child object, owned by the given parent object, whose name
matches the given childName.
|
static <T extends DBObject> |
findChildInCopy(DBObject orig,
DBObject copy,
T origChild)
Given a child of an original object, finds the matching child of the copy
using the TemporaryObjectIDs in the copy.
|
static <T extends DBObject> |
findChildren(DBObject obj,
java.lang.Class<T> clz)
Finds owned objects of the given class under the given object.
|
static java.lang.Class |
findCommonSuperclass(java.lang.Class clz1,
java.lang.Class clz2)
Finds a common superclass of both classes (i.e.
|
static DBObject |
findOwnedObjectInHierarchy(DBObject top,
DBObjectID find)
Searches for an object in the whole hierarchy underneath top that has
the given id.
|
static <T extends DBObject> |
findParentOfType(DBObject child,
java.lang.Class<T> clz)
Search the parent heirachy of the given object (including the given object)
and if an object is found that is of the given type, it is returned.
|
static java.util.Collection<DBObject> |
findUsagesIn(DBObject used,
DBObject searchRoot)
Looks for usages of the given "used" object within the owned object
heirachy of the given search object.
|
static void |
forceObjectReset(SystemObject obj,
DBObjectProvider pro)
Forces the provider to reset the given object so that its properties
will all be rebuilt from the underlying provider.
|
static void |
forceObjectUpdate(DBObjectProvider pro,
SystemObject orig,
java.lang.Runnable runnable)
Runs the Runnable (which is expected to apply changes to the SystemObject)
as a compound change.
|
static void |
forceObjectUpdate(DBObjectProvider pro,
SystemObject orig,
SystemObject upd)
Deprecated.
deprecated in favour of
forceObjectUpdate(DBObjectProvider,SystemObject,Runnable) |
static SQLFragment |
getColumnExpressionFragment(java.lang.String expression,
Relation rel,
DBObjectProvider pro,
boolean quoteColumns)
Construct a SQLFragment for the given Column Expression
|
static DBObject |
getDBObjectFromParent(Difference cmr,
java.lang.String contributor)
Search back through the parents of the Difference to find a DBObject.
|
static java.lang.String |
getDBObjectName(DBObjectID id)
Gets the name of a DBObject from the DBObjectID, or the empty string
if the DBObjectID can't be resolved.
|
static java.util.Collection<DBObject> |
getExistingOwnedObjects(DBObject obj)
Gets the existing owned objects (children) of the given object, without
lazily loading (or deriving) any extra child objects.
|
static java.util.Map<java.lang.String,java.lang.Object> |
getFrozenProperties(DBObject obj)
Gets the properties map for a given object frozen in its current state.
|
static java.lang.String |
getFullPropertyPath(Difference diff)
Search back through the parents of the Difference to build
a String representing the full property path.
|
static java.lang.String |
getFullyQualifiedName(DBObject obj)
Returns the fully qualified name of the given object by prepending the
parent's name (if one exists) followed by a dot.
|
static java.lang.String |
getFullyQualifiedName(DBObject obj,
boolean incSchema)
Returns the fully qualified name of the given object, optionally with the
schema prepended.
|
static java.lang.String |
getFullyQualifiedName(DBObjectID id)
Returns the fully qualified object name of the id by prepending the
parent's name (if one exists) followed by a dot.
|
static java.lang.String |
getFullyQualifiedName(DBObjectID id,
boolean incSchema)
Returns the fully qualified object name of the given id, optionally
with the schema prepended.
|
static java.util.Comparator<DBObject> |
getNameComparator()
Returns a Comparator that will compare DBObjects by name first, and then
by type.
|
static DBObjectID |
getOriginalID(DBObject dbo)
Returns the original DBObjectID of a copied DBObject.
|
static java.lang.String |
getParentProperty(DBObject object)
Gets the property on the parent object that this child is set on.
|
static java.lang.String |
getPropertyPath(DBObject parent,
DBObject child)
Gets the property path that links the two objects in their hierarchy.
|
static DBObject |
getProviderDefinition(ReferenceID refID,
DBObjectProvider pro)
|
static <T extends DBObject> |
getProviderDefinition(T obj,
DBObjectProvider pro)
Gets the definition for the given object from the provider by querying
name, schema and type.
|
static <T extends DBObject> |
getProviderDefinition(T obj,
DBObjectProvider pro,
java.lang.String schemaName)
Gets the definition for the given object from the provider by querying
name and type in the given schema on the top (schema) level parent and then recursing
the heirachy to find a match by name and type of the object given.
|
static <T extends SystemObject> |
getProviderDefinitions(T[] objs,
DBObjectProvider pro)
Gets the definitions for the given objects from the database by querying
name, schema and type.
|
static java.util.Collection<DBObjectID> |
getReferenceIDs(DBObject obj,
boolean recurse,
DBUtil.IDQuery query,
java.lang.String... types)
Collects all the reference ID properties for the given object and its
children and returns them after filtering as required.
|
static java.util.Collection<Pair<DBObjectID,DBObject>> |
getReferenceIDsAndReferers(DBObject obj,
boolean recurse,
DBUtil.IDQuery query,
java.lang.String... types)
Collects all the reference ID properties for the given object and its
children and returns them after filtering as required.
|
static FKConstraint[] |
getReferences(Constraint ucon,
DBObjectProvider prov)
Get the Foreign Keys which reference a unique constraint.
|
static Schema |
getSchema(DBObject obj)
Recurses up the tree of parents for this DBObject until it finds a
SchemaObject and if found returns that SchemaObject's Schema.
|
static java.lang.String |
getSchemaName(DBObject obj)
Recurses up the tree of parents for this DBObject until it finds a
SchemaObject, and returns that SchemaObject's Schema's name.
|
static java.lang.String |
getSchemaName(DBObjectID dbObjectID)
Returns the name of the schema from a DBObjectID, or the empty string
if the DBObjectID can't be resolved.
|
static SchemaObject |
getSchemaObject(DBObject obj)
Recurses up the tree of parents for this DBObject, and if the top object
in the chain is a SchemaObject, it is returned.
|
static SchemaObject |
getSynonymReference(Synonym synonym)
Find the object that is referenced by the given synonym.
|
static java.util.List<SchemaObject> |
getSynonymReferenceChain(Synonym synonym)
Finds the chain of objects from the given Synonym to the first non-Synonym SchemaObject.
|
static SystemObject |
getSystemObject(DBObject obj)
Recurses up the tree of parents for this DBObject, and if the top object
in the chain is a SystemObject, it is returned.
|
static SystemObject |
getSystemObjectFromParent(Difference cmr,
java.lang.String contributor)
Search back through the parents of the Difference to find a
SystemObject.
|
static java.util.Map<DBObjectID,DBObjectID> |
getTemporaryIDMap(DBObject... objs)
Gets a Map of all the TemopraryObjectIDs in the given object(s)
hierarchy.
|
static java.util.Comparator<DBObject> |
getTypeComparator()
Returns a Comparator that will compare DBObjects by type first, and then
by name.
|
static java.lang.String |
getUniqueName(java.util.Collection<java.lang.String> existing,
java.lang.String base)
Returns a unique name given the Collection of existing names from the base
name given.
|
static java.lang.String |
getUniqueName(java.util.Collection<java.lang.String> existing,
java.lang.String base,
boolean increment)
Returns a unique name given the Collection of existing names from the base
name given.
|
static java.lang.String |
getUniqueName(java.util.Collection<java.lang.String> existing,
java.lang.String base,
boolean increment,
int maxLen)
Returns a unique name given the Collection of existing names from the base
name given.
|
static DBObject |
getUppermostParent(DBObject obj)
Gets the top most object in the parent chain for the given object.
|
static DBObjectID |
getUppermostParent(DBObjectID id)
Gets the top most object in the parent chain for the given id.
|
int |
hashCode() |
static DBObjectChange |
invokeCompoundChange(DBObject obj,
java.lang.Runnable runnable,
boolean fireEvents)
Invokes the given Runnable, and if any property changes are made to obj
by the Runnable the changes are consolidated in to one change event.
|
static boolean |
isCompoundName(java.lang.String name,
java.lang.String quote)
Return true if the name contains an unquoted '.'
|
static boolean |
isDangling(DBObjectID refID)
Returns true if it is passed a dangling reference.
|
static boolean |
isDatabaseLink(DBObjectID id)
Returns true if the ID is from an object obtained over a
database link
|
static boolean |
isDeprecated(java.lang.Enum val)
Test if an enum value is deprecated (with @Deprecated annotation)
|
static boolean |
isInternalRef(DBObjectID ref,
DBObject obj)
Returns true if the given DBObjectID is referencing an object that is under
the same parent heirachy as the given DBObject.
|
static boolean |
isSameOrChildOf(DBObjectID id1,
DBObjectID id2,
boolean strict)
Tests whether the IDs are the same, or whether id2 is a parent of id1.
|
static java.lang.String |
isViaDatabaseLink(SystemObject dso)
Tests whether the given object has been retrieved over a database link
rather than being directly from the provider it was listed from.
|
static java.util.Collection<java.lang.String> |
listSupportedTypes(DBObjectProvider pro,
java.lang.Class<? extends SystemObject>... objClasses)
Gets a collection of the types that are supported in the given provider
that are implementations of the given classes.
|
static <D extends DBObject> |
makeClonedCopy(D object)
Makes a clone of the original object.
|
static <D extends DBObject> |
makeTemporaryCopy(D object)
Makes a copy of the original object, with temporary reference ids.
|
static boolean |
needsBuilding(DBObject obj)
Tests whether the given object needs building - i.e.
|
static boolean |
needsBuilding(DBObject obj,
java.lang.String property)
Tests whether the given object property needs building - i.e.
|
static boolean |
needsDerivedPropertiesBuilding(DBObjectProvider pro,
DBObject obj)
INTERNAL ONLY - this is not a finished API yet.
|
static boolean |
replaceAllIDs(DBObject obj,
java.util.Map<? extends DBObjectID,? extends DBObjectID> idMap)
Replaces the all IDs in the given object and all child objects
with the given key/value mapping.
|
static boolean |
replaceReferenceIDs(DBObject obj,
java.util.Map<? extends DBObjectID,? extends DBObjectID> idMap)
Replaces the referencing IDs in the given object and all child objects
with the given key/value mapping.
|
static DBObject |
resolveInOtherProvider(BaseObjectID id,
DBObjectProvider pro)
Attempts to resolve the given ID in a provider that is not the id's own.
|
static void |
resumeTimestampChecking(DBObjectProvider pro,
java.lang.String timestampKey)
Indicates to the given provider that the timestamp suspension for the given
key has finished.
|
static java.util.Map<Schema,java.util.Collection<SystemObject>> |
sortIntoSchemas(java.util.Collection<? extends SystemObject> objs)
Sorts the given list of objects into a map of Schema to objects.
|
static java.util.Map<Schema,java.util.Collection<SystemObject>> |
sortIntoSchemas(SystemObject... objs)
Sorts the given list of objects into a map of Schema to objects.
|
static Pair<java.lang.String,java.lang.Integer> |
splitBaseName(java.lang.String name)
Takes a String of the form TABLE1 and splits it returning a Pair with
the TABLE and 1 parts separated.
|
static <T> T[] |
stripNulls(T[] objs)
Returns an array containing all the non-null elements from the given array.
|
static void |
suspendTimestampChecking(DBObjectProvider pro,
java.lang.String timestampKey)
Usage must be proceeded immediatly by a try block, for which the finally
contains a call to resumeTimestamps.
|
static void |
updateObjectAndIDs(DBObject oldVersion,
DBObject newVersion)
Copys the newVersion to the old version and updates the oldVersion with
the IDs from the newVersion.
|
public int compare(DBObject o1, DBObject o2)
compare
in interface java.util.Comparator<DBObject>
getNameComparator()
,
getTypeComparator()
public boolean equals(java.lang.Object obj)
equals
in interface java.util.Comparator<DBObject>
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public static java.util.Comparator<DBObject> getTypeComparator()
public static java.util.Comparator<DBObject> getNameComparator()
public static java.util.Map<DBObjectID,DBObjectID> getTemporaryIDMap(DBObject... objs)
No properties will be built or derived by this method call, it only maps the current state of the object.
objs
- the objects to get the id mappings forpublic static <D extends DBObject> D makeTemporaryCopy(D object)
object
- The original DBObjectDBObject.copyTo(DBObject,boolean)
public static <D extends DBObject> D makeClonedCopy(D object)
object
- The original DBObjectpublic static <T> T copyPropertyValue(T value, DBObject orig, DBObject copy, IDPolicy idPolicy)
value
- the property valueorig
- the original object the value is fromcopy
- the copy of the original object the value is foridPolicy
- the policy to use for copying DBObjectID valuespublic static java.util.Map<java.lang.String,java.lang.Object> getFrozenProperties(DBObject obj)
public static java.util.Collection<DBObject> getExistingOwnedObjects(DBObject obj)
obj
- the object to get the owned object fromgetFrozenProperties(DBObject)
public static boolean needsBuilding(DBObject obj)
ensureObjectBuilt(oracle.javatools.db.DBObject, java.lang.String...)
to build objects that need it and process any errors.public static boolean needsBuilding(DBObject obj, java.lang.String property)
ensureObjectBuilt(oracle.javatools.db.DBObject, java.lang.String...)
to build objects that need it and process
any errors.public static void ensureObjectBuilt(DBObject object, java.lang.String... props) throws DBException
object
- the object to buildDBException
- thrown if an error is encountered building the object.public static boolean needsDerivedPropertiesBuilding(DBObjectProvider pro, DBObject obj)
public static void ensureDerivedPropertiesBuilt(DBObject object, DBObjectProvider pro) throws DBException
Performs a "declarative build" which fills in any derived properties on the given object. Certain objects have a secondary build which builds derived information not directly associated with the dictionary (or persistence). For example this will attempt to build a View's SQLQuery (which will result in the building of any referenced Tables).
object
- the object to ensure that all the derived properties are
built on.pro
- the containing providerDBException
- if there is any error performing the build.public static void ensureDerivedPropertiesBuilt(DBObject object, DBObjectProvider pro, java.util.Collection<? extends SystemObject> extras) throws DBException
Performs a "declarative build" which fills in any derived properties on the given object. Certain objects have a secondary build which builds derived information not directly associated with the dictionary (or persistence). For example this will attempt to build a View's SQLQuery (which will result in the building of any referenced Tables).
object
- the object to ensure that all the derived properties are
built on.pro
- the containing providerextras
- extra objects to consider before those in the provider.DBException
- if there is any error performing the build.public static java.util.Collection<DBObjectID> getReferenceIDs(DBObject obj, boolean recurse, DBUtil.IDQuery query, java.lang.String... types)
obj
- the object to queryrecurse
- whether to recurse to any child (owned) objectsquery
- the kind of reference to includetypes
- the types of object being referenced reqired (is used to
filter by checking each id's type).public static java.util.Collection<Pair<DBObjectID,DBObject>> getReferenceIDsAndReferers(DBObject obj, boolean recurse, DBUtil.IDQuery query, java.lang.String... types)
obj
- the object to queryrecurse
- whether to recurse to any child (owned) objectsquery
- the kind of reference to includetypes
- the types of object being referenced reqired (is used to
filter by checking each id's type).public static boolean isInternalRef(DBObjectID ref, DBObject obj)
ref
- the reference to checkobj
- the object to inspect the parent heirachy ofgetUppermostParent(DBObject)
,
getUppermostParent(DBObjectID)
public static boolean replaceReferenceIDs(DBObject obj, java.util.Map<? extends DBObjectID,? extends DBObjectID> idMap)
If the object has not been built, or been partially built, only build properties will be replaced.
obj
- the object whose reference IDs (and children) are to be
processedidMap
- the mappings of old to new IDs.public static boolean replaceAllIDs(DBObject obj, java.util.Map<? extends DBObjectID,? extends DBObjectID> idMap)
If the object has not been built, or been partially built, only build properties will be replaced.
obj
- the object whose IDs (and children) are to be processedidMap
- the mappings of old to new IDs.public static void updateObjectAndIDs(DBObject oldVersion, DBObject newVersion)
Note this is relatively crude. To properly preserve child lists you should diff the objects and use a DifferenceApplier to apply the changes.
public static DBObject findOwnedObjectInHierarchy(DBObject top, DBObjectID find)
top
- the object to search underneath (top itself is included)find
- the id to findpublic static <T extends DBObject> java.util.Collection<T> findChildren(DBObject obj, java.lang.Class<T> clz)
T
- the object type(s) that we're looking forobj
- the object to look under for objects of the given type
(including obj itself)clz
- the class of object to findpublic static <T extends DBObject> T findChildInCopy(DBObject orig, DBObject copy, T origChild)
orig
- The original object containing the childcopy
- The copy of the parentorigChild
- The child of the originaljava.lang.IllegalArgumentException
- if any argument is null, or if
origChild is not in the owned object hierarchy of orig.public static java.lang.String getParentProperty(DBObject object)
Calling this does not build the properties of the given object, or its parent. The relationship must already exist.
object
- the child object to get the parent property forpublic static java.lang.String getPropertyPath(DBObject parent, DBObject child)
parent
- the parent object that the path will be from.child
- the child (could be grandchild etc) that the path will be
to.public static java.lang.String getUniqueName(java.util.Collection<java.lang.String> existing, java.lang.String base)
existing
- Collection of existing names that cannot be used. If null,
then base
gets returned.base
- String on which to base the unique name -- this gets
incremented if the name is not unique. Must not be null.public static java.lang.String getUniqueName(java.util.Collection<java.lang.String> existing, java.lang.String base, boolean increment)
existing
- Collection of existing names that cannot be used. If null,
then base
gets returned.base
- String on which to base the unique name -- this gets
incremented if the name is not unique. Must not be null.increment
- whether to increment any numbers at the end of base, or
keep them as part of the name.
i.e.
if NAME1 exists and increment is true - base NAME1 -> NAME2
if NAME1 exists and increment is false - base NAME1 -> NAME1_1
public static Pair<java.lang.String,java.lang.Integer> splitBaseName(java.lang.String name)
name
- the base name to split.public static java.lang.String getUniqueName(java.util.Collection<java.lang.String> existing, java.lang.String base, boolean increment, int maxLen)
existing
- Collection of existing names that cannot be used. If null,
then base
gets returned.base
- String on which to base the unique name -- this gets
incremented if the name is not unique. Must not be null.increment
- whether to increment any numbers at the end of base, or
keep them as part of the name.
i.e.
if NAME1 exists and increment is true - base NAME1 -> NAME2
if NAME1 exists and increment is false - base NAME1 -> NAME1_1
maxLen
- restricts the length of the returned string (any value
less than 1 means no restriction). If the returned name gets modified by
being too long, the increment
parameter is ignored.maxLength
is small enough and existing
is
large enough).public static java.lang.String getFullyQualifiedName(DBObjectID id)
public static java.lang.String getFullyQualifiedName(DBObjectID id, boolean incSchema)
public static java.lang.String getFullyQualifiedName(DBObject obj)
public static java.lang.String getFullyQualifiedName(DBObject obj, boolean incSchema)
public static Schema getSchema(DBObject obj)
public static java.lang.String getSchemaName(DBObject obj)
obj
- the object to find the schema forpublic static <T extends DBObject> T findParentOfType(DBObject child, java.lang.Class<T> clz)
child
- the object to start searching the parent heirachy fromclz
- the type of object to search forpublic static SchemaObject getSchemaObject(DBObject obj)
public static SystemObject getSystemObject(DBObject obj)
public static DBObject getUppermostParent(DBObject obj)
obj
- the object to querypublic static DBObjectID getUppermostParent(DBObjectID id)
id
- the DBObjectID to querypublic static boolean isSameOrChildOf(DBObjectID id1, DBObjectID id2, boolean strict)
public static java.util.Map<Schema,java.util.Collection<SystemObject>> sortIntoSchemas(SystemObject... objs)
public static java.util.Map<Schema,java.util.Collection<SystemObject>> sortIntoSchemas(java.util.Collection<? extends SystemObject> objs)
public static <T extends DBObject> T getProviderDefinition(T obj, DBObjectProvider pro) throws DBException
obj
- the object to query in the provider by type, schema and name.pro
- the provider to get the definition fromDBException
public static <T extends DBObject> T getProviderDefinition(T obj, DBObjectProvider pro, java.lang.String schemaName) throws DBException
obj
- the object to find in the providerpro
- the provider to get the definition fromschemaName
- the schema to searchDBException
public static <T extends SystemObject> T[] getProviderDefinitions(T[] objs, DBObjectProvider pro) throws DBException
objs
- the objects whose definitions are to be retrieved from the
providerpro
- the provider to get the definitions fromDBException
@Deprecated public static DBObject getProviderDefinition(ReferenceID refID, DBObjectProvider pro) throws DBException
resolveInOtherProvider(oracle.javatools.db.BaseObjectID, oracle.javatools.db.DBObjectProvider)
DBException
public static <T> T[] stripNulls(T[] objs)
public static boolean isCompoundName(java.lang.String name, java.lang.String quote)
name
- public static boolean isDangling(DBObjectID refID)
refID
- public static boolean isDatabaseLink(DBObjectID id)
id
- the object ID (if null, this method returns false)public static DBObjectID getOriginalID(DBObject dbo)
dbo
- a DBObjectpublic static java.util.Collection<DBObject> findUsagesIn(DBObject used, DBObject searchRoot)
used
- the object to look for usages ofsearchRoot
- the object to search withinpublic static FKConstraint[] getReferences(Constraint ucon, DBObjectProvider prov) throws CancelledException
Given a contraint and a provider, this method uses the cascade manager registered with the provider to build an array of the foreign keys which reference this constraint.
For a database connection this is less useful as it only returns those already cached.
CancelledException
public static java.lang.String getDBObjectName(DBObjectID id)
id
- the ID to inspect/resolvepublic static java.lang.String getSchemaName(DBObjectID dbObjectID)
dbObjectID
- the ID to inspect/resolvepublic static DBObject resolveInOtherProvider(BaseObjectID id, DBObjectProvider pro) throws DBException
Importantly this attempts to resolve the ID and that can be long running (especially for a ReferenceID).
id
- the id to attempt to resolvepro
- the provider (other than the id's own provider) to try and find
a matching object inDBException
public static boolean areNamesAndTypesEqual(DBObject obj1, DBObject obj2)
obj1
- the first objectobj2
- the second objectpublic static boolean areEqualIgnoreNullValues(java.util.Map map1, java.util.Map map2)
public static boolean areEqual(java.lang.Object obj1, java.lang.Object obj2)
ModelUtil.areEqual
except for when both are an Object[] then
the comparison is done using Arrays.equals
.public static void suspendTimestampChecking(DBObjectProvider pro, java.lang.String timestampKey)
e.g.
final String key = "MyTimeConsumingOperation" + System.nanoTime(); try { DBUtil.suspendTimestamps( pro, key ); // perform my time consuming operation } finally { DBUtil.resumeTimestamps( pro, key ); }
pro
- the provider to suspend timestamping fortimestampKey
- the key to suspect timestamping with (MUST be unique,
and preferably meaningful).public static void resumeTimestampChecking(DBObjectProvider pro, java.lang.String timestampKey)
pro
- the provider timestamping was originally suspended ontimestampKey
- the key for the suspension that is now oversuspendTimestampChecking(oracle.javatools.db.DBObjectProvider, java.lang.String)
public static void clearCachedTimestamp(DBObjectProvider pro, SystemObject obj)
pro
- the provider containing the objectobj
- the object to clear the timstamp forpublic static java.lang.String createUUID()
public static SQLFragment getColumnExpressionFragment(java.lang.String expression, Relation rel, DBObjectProvider pro, boolean quoteColumns)
expression
- A sql expression typically containing 1 or more column names from the given relationrel
- The owning relationpro
- The DBObjectProviderquoteColumns
- If true, each column usage will be marked, so that it always appears in double quotes
when SQLFragment#getSQLTxt is called.public static java.lang.String[] filterSchemaObjectTypes(java.lang.String[] objectTypes)
public static java.lang.String[] filterObjectTypes(java.lang.String[] objectTypes, java.lang.Class<? extends DBObject> clz)
public static void forceObjectReset(SystemObject obj, DBObjectProvider pro) throws DBException
Care must be taken using this method. Any changes to the memory model from the underlying provider will be lost.
pro
- the containing providerobj
- the object to resetDBException
public static void forceObjectUpdate(DBObjectProvider pro, SystemObject orig, java.lang.Runnable runnable)
This method is used rather than DBObjectProvider.updateObjects only if the changes should NOT be written through to the underlying store, eg DDL being generated for an online database.
Care must be taken using this method.
pro
- the containing providerorig
- the original version of the objectrunnable
- A Runnable which applies the change to origpublic static void forceObjectUpdate(DBObjectProvider pro, SystemObject orig, SystemObject upd)
forceObjectUpdate(DBObjectProvider,SystemObject,Runnable)
pro
- the containing providerorig
- the original version of the objectupd
- a temporary copy of orig on which the required changes have been madepublic static java.lang.Class findCommonSuperclass(java.lang.Class clz1, java.lang.Class clz2)
public static DBObject findChildByName(DBObject parent, java.lang.String property, java.lang.String childName, DBObjectProvider pro)
parent
- the parent objectproperty
- the required child property on the parent (should be
a child list - e.g. columns, constraints etc.)childName
- the internal name of the child to findpro
- the provider whose name case policy will be used when
comparing the names of the children.public static SystemObject getSystemObjectFromParent(Difference cmr, java.lang.String contributor)
public static java.lang.String getFullPropertyPath(Difference diff)
diff
- the difference to get the property path forpublic static DBObject getDBObjectFromParent(Difference cmr, java.lang.String contributor)
public static java.lang.Class<?> decodeArrayClass(java.lang.Class<?> clz)
clz
- the class to decodepublic static boolean isDeprecated(java.lang.Enum val)
public static java.lang.String isViaDatabaseLink(SystemObject dso)
public static java.util.List<SchemaObject> getSynonymReferenceChain(Synonym synonym)
synonym
- the synonym to find the reference chain forpublic static SchemaObject getSynonymReference(Synonym synonym)
synonym
- the synonym to find a reference forpublic static DBObjectChange invokeCompoundChange(DBObject obj, java.lang.Runnable runnable, boolean fireEvents)
It is intended to be used internally to perform updates to derived properties together with the source property. In the future the derived property mechanism might do this implicitly, and this method will then be removed.
obj
- the object to silently updaterunnable
- the runnable to invokefireEvents
- whether to fire change events on the object for any
changes madepublic static java.util.Collection<java.lang.String> listSupportedTypes(DBObjectProvider pro, java.lang.Class<? extends SystemObject>... objClasses)
Example: Listing all Relations in a given provider and schema:
Collection<SystemObject> objects; final Collectiontypes = DBUtil.listSupportsTypes( pro, Relation.class ); if ( !types.isEmpty() ) { final DBObjectCriteria criteria = DBObjectCriteria.createTypeCriteria( types ); criteria.setSchema( schema ); objects = pro.listObjects( criteria ); }
pro
- the provider to testobjClasses
- the object classes to list all implementations ofpublic static void cascadeInternalRename(SystemObject sysObj, DBObject child, java.lang.String oldName, java.lang.String newName, DBObjectProvider pro)
sysObj
- the top level parent objectchild
- the child that has been renamedoldName
- the old name for the childnewName
- the new name for the childpro
- the containing provider