Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java23
1 files changed, 16 insertions, 7 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
index ae68e0dd13..39b3f55e5a 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/horizontal/AbstractHorizontalClassMapping.java
@@ -8,15 +8,17 @@
* Contributors:
* Eike Stepper - initial API and implementation
* Stefan Winkler - 271444: [DB] Multiple refactorings https://bugs.eclipse.org/bugs/show_bug.cgi?id=271444
+ * Stefan Winkler - 249610: [DB] Support external references (Implementation)
*/
package org.eclipse.emf.cdo.server.internal.db.mapping.horizontal;
import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.id.CDOIDUtil;
import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.eresource.EresourcePackage;
+import org.eclipse.emf.cdo.server.db.CDODBUtil;
import org.eclipse.emf.cdo.server.db.IDBStoreAccessor;
+import org.eclipse.emf.cdo.server.db.IExternalReferenceManager;
import org.eclipse.emf.cdo.server.db.IMetaDataManager;
import org.eclipse.emf.cdo.server.db.mapping.IClassMapping;
import org.eclipse.emf.cdo.server.db.mapping.IListMapping;
@@ -143,9 +145,11 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
* @return <code>true</code> if the revision has been read successfully.<br>
* <code>false</code> if the revision does not exist in the DB.
*/
- protected final boolean readValuesFromStatement(PreparedStatement pstmt, InternalCDORevision revision)
+ protected final boolean readValuesFromStatement(PreparedStatement pstmt, InternalCDORevision revision,
+ IDBStoreAccessor accessor)
{
ResultSet resultSet = null;
+
try
{
if (TRACER.isEnabled())
@@ -160,7 +164,7 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
{
if (TRACER.isEnabled())
{
- TRACER.format("Resultset was empty."); //$NON-NLS-1$
+ TRACER.format("Resultset was empty"); //$NON-NLS-1$
}
return false;
@@ -170,10 +174,10 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
revision.setVersion(resultSet.getInt(i++));
revision.setCreated(resultSet.getLong(i++));
revision.setRevised(resultSet.getLong(i++));
- revision.setResourceID(CDOIDUtil.createLong(resultSet.getLong(i++)));
-
- // TODO add mapping for external container CDOIDs here ->
- revision.setContainerID(CDOIDUtil.createLong(resultSet.getLong(i++)));
+ revision.setResourceID(CDODBUtil.convertLongToCDOID(getExternalReferenceManager(), accessor, resultSet
+ .getLong(i++)));
+ revision.setContainerID(CDODBUtil.convertLongToCDOID(getExternalReferenceManager(), accessor, resultSet
+ .getLong(i++)));
revision.setContainingFeatureID(resultSet.getInt(i++));
for (ITypeMapping mapping : valueMappings)
@@ -228,6 +232,11 @@ public abstract class AbstractHorizontalClassMapping implements IClassMapping
return getMappingStrategy().getStore().getMetaDataManager();
}
+ protected final IExternalReferenceManager getExternalReferenceManager()
+ {
+ return mappingStrategy.getStore().getExternalReferenceManager();
+ }
+
protected final IMappingStrategy getMappingStrategy()
{
return mappingStrategy;

Back to the top