diff options
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.java | 23 |
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; |