|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface GraphSpec
Specification of a delete operation. These instances are defined in
ome/services/delete/spec.xml as non-singletons, i.e each time a request is
made for a new GraphSpecFactory
one of each GraphSpec
is
initialized and gathered into the factory. A single thread, then, can
repeatedly call #initialize(long, Map)
on the GraphSpec
instances.
IGraph
Method Summary | |
---|---|
void |
close()
|
List<GraphEntry> |
entries()
Returns a copy of the list of GraphEntry instances contained in
this GraphSpec |
CurrentDetails |
getCurrentDetails()
|
Class<ome.model.IObject> |
getHibernateClass(String table)
Return the Hibernate type (ome.model.*) for the given table. |
String |
getName()
The name of this specification. |
String |
getSuperSpec()
Specification of where this GraphSpec is attached under another
. |
int |
initialize(long id,
String supersec,
Map<String,String> options)
Called as each delete command is started. |
boolean |
overrideKeep()
For some GraphSpec type/option combinations, a "KEEP" setting
may need to be overridden. |
void |
postProcess(org.springframework.beans.factory.ListableBeanFactory factory)
Gives all specs a chance to reference subspecs. |
long[][] |
queryBackupIds(org.hibernate.Session session,
int step,
GraphEntry subpath,
QueryBuilder and)
If a given path is deleted before its sub-path, this points to a one-to-one relationship. |
void |
runTopLevel(org.hibernate.Session session,
List<Long> ids)
Workaround for the removal of GraphSpec#delete when refactoring to GraphState . |
Iterator<GraphSpec> |
walk()
Returns an iterator over all subspecs and their subspecs, depth-first. |
Method Detail |
---|
String getName()
String getSuperSpec()
GraphSpec
is attached under another
. The reverse of
GraphEntry.getSubSpec()
.
void postProcess(org.springframework.beans.factory.ListableBeanFactory factory)
int initialize(long id, String supersec, Map<String,String> options) throws GraphException
#delete(Session, int)
can take clean up actions.
id
- identifier of the root object which defines the graph to be
deleted.supersec
- points to the relationship between the root object and the
current graph. In many cases, this value will be null so that
the current object is taken to be the root, but if this is a
subspec, or a non-standard naming is being used, then the
supersec will be used.options
- possibly null or empty map of options which can override the
operations provided in the definition of the specification.
For example, if the spec "/Image" defines "/Image/Annotation"
as "HARD" (the default), then the options map could contain
{"/Image/Annotation":"ORPHAN"}to modify that setting.
GraphException
long[][] queryBackupIds(org.hibernate.Session session, int step, GraphEntry subpath, QueryBuilder and) throws GraphException
#initialize(long, Map)
so that foreign key
constraints which require a higher level object to be deleted first, can
be removed.
For example,
/Channel /Channel/StatsInforequires the Channel to be deleted first, but without the Channel, there's no way to detect which StatsInfo should be removed. Therefore,
#backupIds
in this case would contain:
[ null, # Nothing for Channel. [1,2,3], # The ids of all StatsInfo object which should be removed. ]
paths
- Non-null, non-modifiable list of all paths for the current
delete graph. This is used to detect if a path in some subspec
is going to detach a later graph which needs then to have its
ids loaded.
GraphException
void runTopLevel(org.hibernate.Session session, List<Long> ids) throws GraphException
GraphState
. If more logic is needed by subclasses, then
queryBackupIds(Session, int, GraphEntry, QueryBuilder)
should no longer return list of ids, but rather a "Action" class
so that it can inject its own logic as needed, though it would be necessary
to give that method its place in the graph to detect "top-ness".
GraphException
Iterator<GraphSpec> walk()
boolean overrideKeep()
GraphSpec
type/option combinations, a "KEEP" setting
may need to be overridden. This method allows implementors to say that
KEEPing must be performed on a per GraphEntry
basis as opposed
to for the whole subspec
.
List<GraphEntry> entries()
GraphEntry
instances contained in
this GraphSpec
Class<ome.model.IObject> getHibernateClass(String table)
CurrentDetails getCurrentDetails()
void close()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Version: 4.3.4-dbcbce5a-b4
Copyright © 2009 The University of Dundee. All Rights Reserved.