|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectome.services.delete.BaseDeleteSpec
public class BaseDeleteSpec
DeleteSpec
which takes the id of some id as the root of deletion.
IDelete
Nested Class Summary | |
---|---|
static class |
BaseDeleteSpec.SubSpecIterator
Iterator which walks returns all DeleteSpec s which are
reachable from the given spec, depth first including the spec itself. |
Field Summary | |
---|---|
protected List<DeleteEntry> |
entries
The paths which make up this delete specification. |
protected long |
id
The id of the root type which will be deleted. |
protected Map<String,String> |
options
Options passed to the #initialize(long, Map) method, which may be
used during #delete(Session, int) to alter behavior. |
protected String |
superspec
Path of the superspec. |
Constructor Summary | |
---|---|
BaseDeleteSpec(List<String> entries)
|
|
BaseDeleteSpec(String name,
String... entries)
Simplified constructor, primarily used for testing. |
Method Summary | |
---|---|
void |
close()
|
List<DeleteEntry> |
entries()
Returns a copy of the list of DeleteEntry instances contained in
this DeleteSpec |
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 DeleteSpec is attached under another
. |
int |
initialize(long id,
String superspec,
Map<String,String> options)
Called as each delete command is started. |
protected void |
join(QueryBuilder qb,
String from,
String fromAlias,
String to,
String toAlias)
Used to generate a join statement on the QueryBuilder making use
of {@link ExtendedMetadata#getRelationship(String, String). |
boolean |
overrideKeep()
Always returns false. |
void |
postProcess(org.springframework.beans.factory.ListableBeanFactory factory)
Gives all specs a chance to reference subspecs. |
long[][] |
queryBackupIds(org.hibernate.Session session,
int step,
DeleteEntry 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 DeleteSpec#delete when refactoring to DeleteState . |
void |
setBeanName(String beanName)
|
void |
setCurrentDetails(CurrentDetails details)
|
void |
setExtendedMetadata(ExtendedMetadata em)
|
String |
toString()
|
Iterator<DeleteSpec> |
walk()
Returns an iterator over all subspecs and their subspecs, depth-first. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected final List<DeleteEntry> entries
#delete(Session, int)
protected long id
protected String superspec
protected Map<String,String> options
#initialize(long, Map)
method, which may be
used during #delete(Session, int)
to alter behavior.
Constructor Detail |
---|
public BaseDeleteSpec(String name, String... entries)
public BaseDeleteSpec(List<String> entries)
Method Detail |
---|
public void setBeanName(String beanName)
setBeanName
in interface org.springframework.beans.factory.BeanNameAware
public void setExtendedMetadata(ExtendedMetadata em)
public void setCurrentDetails(CurrentDetails details)
public CurrentDetails getCurrentDetails()
getCurrentDetails
in interface DeleteSpec
public String getName()
DeleteSpec
getName
in interface DeleteSpec
public String getSuperSpec()
DeleteSpec
DeleteSpec
is attached under another
. The reverse of
DeleteEntry.getSubSpec()
.
getSuperSpec
in interface DeleteSpec
public Class<ome.model.IObject> getHibernateClass(String table)
DeleteSpec
getHibernateClass
in interface DeleteSpec
public void postProcess(org.springframework.beans.factory.ListableBeanFactory factory)
DeleteSpec
postProcess
in interface DeleteSpec
public int initialize(long id, String superspec, Map<String,String> options) throws DeleteException
DeleteSpec
#delete(Session, int)
can take clean up actions.
initialize
in interface DeleteSpec
id
- identifier of the root object which defines the graph to be
deleted.superspec
- 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.
DeleteException
public Iterator<DeleteSpec> walk()
DeleteSpec
walk
in interface DeleteSpec
public List<DeleteEntry> entries()
DeleteSpec
DeleteEntry
instances contained in
this DeleteSpec
entries
in interface DeleteSpec
public void close()
close
in interface DeleteSpec
public boolean overrideKeep()
overrideKeep
in interface DeleteSpec
public long[][] queryBackupIds(org.hibernate.Session session, int step, DeleteEntry subpath, QueryBuilder and) throws DeleteException
DeleteSpec
#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. ]
queryBackupIds
in interface DeleteSpec
DeleteException
public void runTopLevel(org.hibernate.Session session, List<Long> ids)
DeleteSpec
DeleteState
. If more logic is needed by subclasses, then
DeleteSpec.queryBackupIds(Session, int, DeleteEntry, 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".
runTopLevel
in interface DeleteSpec
protected void join(QueryBuilder qb, String from, String fromAlias, String to, String toAlias) throws DeleteException
QueryBuilder
making use
of ExtendedMetadata#getRelationship(String, String). If the value
returned by that value is null, a {@link DeleteException} will be thrown.
Otherwise something of the form:
join FROM.rel as TOwill be added to the {@link QueryBuilder}
DeleteException
public String toString()
toString
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Version: Beta4.2.1-r8614-Beta4.2-b41
Copyright © 2009 The University of Dundee. All Rights Reserved.