Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java92
1 files changed, 25 insertions, 67 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
index fe6b0c33f8..959e077ec1 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java
@@ -13,7 +13,7 @@ package org.eclipse.emf.cdo.server.internal.hibernate;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.id.CDOID.Type;
+import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.model.CDOClassRef;
import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.model.CDOPackage;
@@ -27,13 +27,11 @@ import org.eclipse.emf.cdo.server.IQueryContext;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.ITransaction;
-import org.eclipse.emf.cdo.server.StoreUtil;
import org.eclipse.emf.cdo.server.hibernate.IHibernateStoreAccessor;
import org.eclipse.emf.cdo.server.hibernate.id.CDOIDHibernate;
import org.eclipse.emf.cdo.server.hibernate.internal.id.CDOIDHibernateFactoryImpl;
import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM;
import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.PersistableListHolder;
-import org.eclipse.emf.cdo.spi.common.AbstractCDOIDLong;
import org.eclipse.emf.cdo.spi.common.InternalCDORevision;
import org.eclipse.net4j.util.ObjectUtil;
@@ -218,43 +216,6 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
return getStore().getPackageHandler().getCDOPackageInfos();
}
- public CDOID readResourceID(CDOID folderID, String name, long timeStamp)
- {
- IStoreAccessor.QueryResourcesContext.ExactMatch context = StoreUtil.createExactMatchContext(folderID, name,
- timeStamp);
- queryResources(context);
- return context.getResourceID();
-
- // if (timeStamp != CDOProtocolView.UNSPECIFIED_DATE)
- // {
- // throw new UnsupportedOperationException();
- // }
- //
- // if (TRACER.isEnabled())
- // {
- // TRACER.trace("Finding resourceid using path " + path);
- // }
- //
- // Session session = getHibernateSession();
- // Criteria criteria = session.createCriteria(CDOResourceClass.NAME);
- // criteria.add(Expression.eq("path", path));
- // List<?> result = criteria.list();
- // if (result.size() == 0)
- // {
- // if (TRACER.isEnabled())
- // {
- // TRACER.trace("Resource not found");
- // }
- //
- // // TODO: throw exception?
- // return null;
- // }
- //
- // // TODO: throw exception if list.size() > 1?
- // CDORevision cdoRevision = (CDORevision)result.get(0);
- // return cdoRevision.getID();
- }
-
public CDORevision readRevision(CDOID id, int referenceChunk)
{
return HibernateUtil.getInstance().getCDORevision(id);
@@ -286,35 +247,21 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
*/
public void queryResources(QueryResourcesContext context)
{
- // logic description
- CDOID folderID = context.getFolderID();
+ CDOIDHibernate folderID = getHibernateID(context.getFolderID());
String name = context.getName();
boolean exactMatch = context.exactMatch();
- CDOIDHibernate cdoID = null;
- if (folderID.getType().equals(Type.NULL))
- {
- cdoID = null;
- }
- else if (folderID instanceof CDOIDHibernate)
- {
- cdoID = (CDOIDHibernate)folderID;
- }
- else if (folderID != null)
- {
- final long l = ((AbstractCDOIDLong)folderID).getLongValue();
- cdoID = CDOIDHibernateFactoryImpl.getInstance().createCDOID(l, CDOResourceNodeClass.NAME);
- }
final Session session = getHibernateSession();
final Criteria criteria = session.createCriteria(CDOResourceNodeClass.NAME);
- if (cdoID == null)
+ if (folderID == null)
{
criteria.add(Expression.isNull("containerID"));
}
else
{
- criteria.add(Expression.eq("containerID", cdoID));
+ criteria.add(Expression.eq("containerID", folderID));
}
+
List<?> result = criteria.list();
for (Object o : result)
{
@@ -329,14 +276,25 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
break;
}
}
- //
- // final Criteria c2 = session.createCriteria(CDOResourceNodeClass.NAME);
- // for (Object o : c2.list())
- // {
- // final CDORevision cr = (CDORevision)o;
- // System.err.println(cr.getData().get(getResourceNameFeature(), 0));
- // System.err.println(cr.getData().getContainerID());
- // }
+ }
+
+ private CDOIDHibernate getHibernateID(CDOID id)
+ {
+ CDOIDHibernate folderID = null;
+ if (!CDOIDUtil.isNull(id))
+ {
+ if (id instanceof CDOIDHibernate)
+ {
+ folderID = (CDOIDHibernate)id;
+ }
+ else
+ {
+ // TODO Can this happen? When?
+ final long longID = CDOIDUtil.getLong(id);
+ folderID = CDOIDHibernateFactoryImpl.getInstance().createCDOID(longID, CDOResourceNodeClass.NAME);
+ }
+ }
+ return folderID;
}
private CDOFeature getResourceNameFeature()
@@ -395,7 +353,7 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
if (cdoRevision instanceof InternalCDORevision)
{
final CDOID containerID = (CDOID)((InternalCDORevision)cdoRevision).getContainerID();
- if (!containerID.isNull() && containerID instanceof CDOIDTemp)
+ if (containerID instanceof CDOIDTemp && !containerID.isNull())
{
repairContainerIDs.add((InternalCDORevision)cdoRevision);
}

Back to the top