import java.util.Collection;
-import eu.etaxonomy.cdm.api.service.IService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
public interface ICdmEntitySessionManager {
- public abstract ICdmEntitySession getActiveSession();
+ public abstract ICdmEntitySession newSession(ICdmEntitySessionEnabled sessionOwner, boolean setAsActive);
- public abstract ICdmEntitySession getSession(
- ISessionEventListener sessionOwner);
+ /**
+ * @param sessionOwner
+ * @return
+ */
+ public ICdmEntitySession bindNullSession();
- public abstract void bind(ISessionEventListener sessionOwner);
- public abstract <T extends Object> T load(
- ISessionEventListener sessionOwner, T obj);
+ public abstract void bind(ICdmEntitySessionEnabled sessionOwner);
- public abstract <T extends Object> T load(T obj);
- public abstract <T extends CdmBase> T load(
- ISessionEventListener sessionOwner, T cdmBase);
+ public abstract <T extends Object> T load(T obj, boolean update);
- public abstract <T extends CdmBase> T load(T cdmBase);
- public abstract <T extends CdmBase> Collection<T> load(
- ISessionEventListener sessionOwner, Collection<T> cdmBaseList);
+ public abstract <T extends CdmBase> T load(T cdmBase, boolean update);
- public abstract <T extends CdmBase> Collection<T> load(
- Collection<T> cdmBaseList);
- public abstract void dispose(ISessionEventListener owner);
-
- //FIXME:Remoting would be nice to have these methods working,
- // but they can only be useful if we can 'intelligently'
- // get from a model class to the correspoding service class
-
-// @SuppressWarnings("unchecked")
-// public abstract <T extends CdmBase> void addRootEntity(T cdmBase);
-//
-// @SuppressWarnings("unchecked")
-// public abstract <T extends Object> void addRootEntities(
-// Collection<T> cdmBaseList);
+ public abstract UpdateResult load(UpdateResult updateResult, boolean update);
-// public abstract void commit();
-//
-// public abstract void commit(ISessionEventListener sessionOwner);
-//
-// public abstract void commit(IService service, CdmBase cdmBase);
+ public abstract MergeResult load(MergeResult mergeResult, boolean update);
+ public abstract <T extends CdmBase> Collection<T> load(Collection<T> cdmBaseList, boolean update);
-}
\ No newline at end of file
+
+ /**
+ * @return
+ */
+ public ICdmEntitySession getActiveSession();
+
+ public Collection<ICdmEntitySession> getSessions();
+
+ public void addSessionObserver(ICdmEntitySessionManagerObserver sessionObserver);
+
+
+
+
+ public boolean isRemoting();
+
+ /**
+ * @param owner
+ */
+ public void dispose(ICdmEntitySessionEnabled owner);
+
+ /**
+ *
+ */
+ public void disposeAll();
+
+
+ /**
+ *
+ */
+ public <T extends CdmBase> void update();
+
+ /**
+ * @param sessionOwner
+ * @return
+ */
+ public boolean contains(ICdmEntitySessionEnabled sessionOwner);
+
+ /**
+ * @return
+ */
+ public ICdmEntitySession getNullSession();
+
+
+}