public static class ExtendedMetadata.Impl extends OnContextRefreshedEventListener implements ExtendedMetadata
ExtendedMetadata possible.ExtendedMetadata.Immutables, ExtendedMetadata.Impl, ExtendedMetadata.Locks, ExtendedMetadata.Relationship| Constructor and Description |
|---|
Impl() |
| Modifier and Type | Method and Description |
|---|---|
Map<String,Long> |
countLocks(org.hibernate.Session session,
Long id,
String[][] checks,
String clause)
Takes the lock checks returned by
ExtendedMetadata.getLockChecks(Class) and
performs the actual check returning a map from class to total number
of locks. |
Set<Class<IAnnotated>> |
getAnnotatableTypes()
Returns all the classes which implement
IAnnotated |
Set<Class<Annotation>> |
getAnnotationTypes()
Returns all the classes which subclass
Annotation |
Set<String> |
getClasses() |
String |
getCountQuery(String field)
Returns the query for obtaining the number of collection items to a
particular instance.
|
Class<IObject> |
getHibernateClass(String table)
Given the name of a database table or alternatively the simple class name
(non-fully qualified) of an IObject, this method returns the class which
Hibernate will map that table to.
|
String[] |
getImmutableFields(Class<? extends IObject> klass) |
String[][] |
getLockCandidateChecks(Class<? extends IObject> k,
boolean onlyWithGroups)
Rather than iterating over an
IObject like
ExtendedMetadata.getLockCandidates(IObject) this method returns type/field name
pairs (like ExtendedMetadata.getLockChecks(Class)) to allow performing the
queries manually. |
IObject[] |
getLockCandidates(IObject iObject)
|
String[][] |
getLockChecks(Class<? extends IObject> klass)
returns all class/field name pairs which may possibly link to an object
of type
klass. |
Set<String> |
getMapProperties(String className)
Get the names of any String→RString map properties this class has, otherwise an empty set if none.
|
String |
getRelationship(String from,
String to)
Walks the data on what locks what
for "from" argument to see if there is any direct relationship to the
"to" argument.
|
String |
getSQLJoin(String fromType,
String fromAlias,
String toType,
String toAlias)
Note: this implementation does not yet take into account the mapping
of joined subclasses like Job->UpdateJob.
|
Class<IObject> |
getTargetType(String field)
Returns the
IObject type which a given field points to. |
void |
handleContextRefreshedEvent(ContextRefreshedEvent cre)
Listener method which waits for a
ContextRefreshedEvent and then
extracts the SessionFactory from the ApplicationContext
and pases it to setSessionFactory(SessionFactory). |
boolean |
mayHaveMapProperties(Class<? extends IObject> iObjectClass)
Check if an object of this class may have map properties.
|
void |
setSessionFactory(org.hibernate.SessionFactory sessionFactory)
Initializes the metadata needed by this instance.
|
onApplicationEvent, setApplicationContextpublic void handleContextRefreshedEvent(ContextRefreshedEvent cre)
ContextRefreshedEvent and then
extracts the SessionFactory from the ApplicationContext
and pases it to setSessionFactory(SessionFactory).handleContextRefreshedEvent in class OnContextRefreshedEventListenerpublic void setSessionFactory(org.hibernate.SessionFactory sessionFactory)
sessionFactory - the Hibernate session factorySessionFactory.getAllClassMetadata()public Set<String> getClasses()
getClasses in interface ExtendedMetadatapublic Class<IObject> getHibernateClass(String table)
ExtendedMetadatagetHibernateClass in interface ExtendedMetadatatable - a database table name, or simple class name of a model objectpublic String getRelationship(String from, String to)
getRelationship in interface ExtendedMetadatapublic String getSQLJoin(String fromType, String fromAlias, String toType, String toAlias)
getSQLJoin in interface ExtendedMetadatapublic Set<Class<IAnnotated>> getAnnotatableTypes()
ExtendedMetadataIAnnotatedgetAnnotatableTypes in interface ExtendedMetadatapublic Set<Class<Annotation>> getAnnotationTypes()
ExtendedMetadataAnnotationgetAnnotationTypes in interface ExtendedMetadatapublic IObject[] getLockCandidates(IObject iObject)
IObject argument non-recursively and gathers
all IObject instances which will be linked to by the
creation or updating of the argument. (Previously this was called "locking"
since a flag was set on the object to mark it as linked, but this was
removed in 4.2)getLockCandidates in interface ExtendedMetadataiObject - A newly created or updated IObject instance which
might possibly lock other IObjects. A null
argument will return an empty array to be checked.IObjects which will be linked to.public String[][] getLockCandidateChecks(Class<? extends IObject> k, boolean onlyWithGroups)
ExtendedMetadataIObject like
ExtendedMetadata.getLockCandidates(IObject) this method returns type/field name
pairs (like ExtendedMetadata.getLockChecks(Class)) to allow performing the
queries manually.
If onlyWithGroups is true, then only checks which point to non-IGlobal
objects will be returned.getLockCandidateChecks in interface ExtendedMetadatak - Not null.onlyWithGroups - if should omit checks that point to IGlobalspublic String[][] getLockChecks(Class<? extends IObject> klass)
klass.getLockChecks in interface ExtendedMetadataklass - Non-null subclass of IObjectString queries which can be used to
determine if an IObject instance can be unlocked.public Map<String,Long> countLocks(org.hibernate.Session session, Long id, String[][] checks, String clause)
ExtendedMetadataExtendedMetadata.getLockChecks(Class) and
performs the actual check returning a map from class to total number
of locks. The key "*" contains the total value.
If the id argument is null, then checks will be against all rows rather
than individual objects, e.g.
select count(x) from Linker x, Linked y where x.$FIELD.id = y.id $CLAUSE;otherwise
select count(x) from Linker x where x.$FIELD.id = :id $CLAUSE'If the clause argument is null or empty it will be omitted.
countLocks in interface ExtendedMetadatapublic String getCountQuery(String field) throws ApiUsageException
getCountQuery in interface ExtendedMetadatafield - Field name as specified in the class.ApiUsageException - if return value would be null.public Class<IObject> getTargetType(String field) throws ApiUsageException
IObject type which a given field points to. E.g.
getTargetType(ImageAnnotation.IMAGE) returns Image.class.ApiUsageExceptionpublic boolean mayHaveMapProperties(Class<? extends IObject> iObjectClass)
ExtendedMetadatamayHaveMapProperties in interface ExtendedMetadataiObjectClass - a classpublic Set<String> getMapProperties(String className)
ExtendedMetadatagetMapProperties in interface ExtendedMetadataclassName - the name of a class, as from Class.getName()
Version: 5.2.1-ice35-b15
Copyright © 2015 The University of Dundee & Open Microscopy Environment. All Rights Reserved.