diff options
3 files changed, 116 insertions, 161 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalMappingStrategy.java index 03e150f7fb..ddcc465fe1 100644 --- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalMappingStrategy.java +++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalMappingStrategy.java @@ -10,31 +10,19 @@ **************************************************************************/ package org.eclipse.emf.cdo.server.internal.db.mapping; -import org.eclipse.emf.cdo.internal.protocol.model.CDOClassImpl; -import org.eclipse.emf.cdo.internal.protocol.model.CDOFeatureImpl; -import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl; -import org.eclipse.emf.cdo.protocol.CDOID; -import org.eclipse.emf.cdo.protocol.model.CDOClassRef; -import org.eclipse.emf.cdo.protocol.revision.CDORevision; -import org.eclipse.emf.cdo.server.internal.db.bundle.OM; -import org.eclipse.emf.cdo.server.internal.db.info.ServerInfo; +import org.eclipse.emf.cdo.protocol.model.CDOClass; +import org.eclipse.emf.cdo.protocol.model.CDOFeature; -import org.eclipse.net4j.db.DBUtil; +import org.eclipse.net4j.db.IDBField; import org.eclipse.net4j.db.IDBTable; -import org.eclipse.net4j.internal.util.om.trace.ContextTracer; -import java.sql.Connection; -import java.sql.Date; -import java.util.Map; -import java.util.Map.Entry; +import java.util.Set; /** * @author Eike Stepper */ public class HorizontalMappingStrategy extends StandardMappingStrategy { - private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, HorizontalMappingStrategy.class); - public HorizontalMappingStrategy() { } @@ -44,68 +32,41 @@ public class HorizontalMappingStrategy extends StandardMappingStrategy return "horizontal"; } - public void writeRevision(Connection connection, CDORevisionImpl revision) + @Override + protected IDBField mapFeature(CDOClass cdoClass, CDOFeature cdoFeature, Set<IDBTable> affectedTables) { - if (TRACER.isEnabled()) + if (cdoClass.isAbstract()) { - TRACER.format("Inserting revision: {0}", revision); + return null; } - CDOClassImpl cdoClass = revision.getCDOClass(); - ClassMapping classMapping = getClassMapping(cdoClass); - Map<IDBTable, FeatureMapping[]> tables = classMapping.getTables(); - Entry<IDBTable, FeatureMapping[]> entry = tables.entrySet().iterator().next(); - IDBTable table = entry.getKey(); - - int i = 0; - Object[] values = new Object[table.getFieldCount()]; - values[i++] = revision.getID().getValue(); - values[i++] = ServerInfo.getDBID(revision.getCDOClass()); - values[i++] = revision.getVersion(); - values[i++] = new Date(revision.getCreated()); - values[i++] = new Date(revision.getRevised()); - values[i++] = revision.getResourceID().getValue(); - values[i++] = revision.getContainerID().getValue(); - values[i++] = revision.getContainingFeatureID(); - - for (CDOFeatureImpl feature : cdoClass.getAllFeatures()) + if (cdoFeature.isReference()) { - Object value = revision.getValue(feature); - if (value instanceof CDOID) + if (cdoFeature.isMany()) { - values[i++] = ((CDOID)value).getValue(); + return mapReference(cdoClass, cdoFeature, getToMany()); } else { - values[i++] = value; + switch (getToOne()) + { + case LIKE_ATTRIBUTES: + return mapAttribute(cdoClass, cdoFeature); + case LIKE_TO_MANY_REFERENCES: + return mapReference(cdoClass, cdoFeature, getToMany()); + default: + throw new IllegalArgumentException("Invalid mapping: " + getToOne()); + } } } + else + { + if (cdoFeature.isMany()) + { + throw new UnsupportedOperationException(); + } - DBUtil.insertRow(connection, table, values); - } - - public CDORevision readRevision(Connection connection, CDOID id) - { - return null; - } - - public CDORevision readRevision(Connection connection, CDOID id, long timeStamp) - { - return null; - } - - public CDOID readResourceID(Connection connection, String path) - { - return null; - } - - public String readResourcePath(Connection connection, CDOID id) - { - return null; - } - - public CDOClassRef readObjectType(Connection connection, CDOID id) - { - return null; + return mapAttribute(cdoClass, cdoFeature); + } } } diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/StandardMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/StandardMappingStrategy.java index f6704f8f32..48d4d48cc4 100644 --- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/StandardMappingStrategy.java +++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/StandardMappingStrategy.java @@ -10,21 +10,31 @@ **************************************************************************/ package org.eclipse.emf.cdo.server.internal.db.mapping; +import org.eclipse.emf.cdo.internal.protocol.model.CDOClassImpl; +import org.eclipse.emf.cdo.internal.protocol.model.CDOFeatureImpl; import org.eclipse.emf.cdo.internal.protocol.model.CDOPackageImpl; +import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl; +import org.eclipse.emf.cdo.protocol.CDOID; import org.eclipse.emf.cdo.protocol.model.CDOClass; +import org.eclipse.emf.cdo.protocol.model.CDOClassRef; import org.eclipse.emf.cdo.protocol.model.CDOFeature; import org.eclipse.emf.cdo.protocol.model.CDOPackage; +import org.eclipse.emf.cdo.protocol.revision.CDORevision; import org.eclipse.emf.cdo.server.IRepository; import org.eclipse.emf.cdo.server.internal.db.bundle.OM; import org.eclipse.emf.cdo.server.internal.db.info.ClassServerInfo; import org.eclipse.emf.cdo.server.internal.db.info.FeatureServerInfo; import org.eclipse.emf.cdo.server.internal.db.info.PackageServerInfo; +import org.eclipse.emf.cdo.server.internal.db.info.ServerInfo; +import org.eclipse.net4j.db.DBUtil; import org.eclipse.net4j.db.IDBField; import org.eclipse.net4j.db.IDBTable; import org.eclipse.net4j.internal.util.om.trace.ContextTracer; import org.eclipse.net4j.util.ObjectUtil; +import java.sql.Connection; +import java.sql.Date; import java.text.MessageFormat; import java.util.Arrays; import java.util.HashMap; @@ -133,42 +143,7 @@ public abstract class StandardMappingStrategy extends MappingStrategy * tables. There is no need to add the table of the returned field to * this set of affected tables. The caller takes care of that. */ - protected IDBField mapFeature(CDOClass cdoClass, CDOFeature cdoFeature, Set<IDBTable> affectedTables) - { - if (cdoClass.isAbstract()) - { - return null; - } - - if (cdoFeature.isReference()) - { - if (cdoFeature.isMany()) - { - return mapReference(cdoClass, cdoFeature, getToMany()); - } - else - { - switch (getToOne()) - { - case LIKE_ATTRIBUTES: - return mapAttribute(cdoClass, cdoFeature); - case LIKE_TO_MANY_REFERENCES: - return mapReference(cdoClass, cdoFeature, getToMany()); - default: - throw new IllegalArgumentException("Invalid mapping: " + getToOne()); - } - } - } - else - { - if (cdoFeature.isMany()) - { - throw new UnsupportedOperationException(); - } - - return mapAttribute(cdoClass, cdoFeature); - } - } + protected abstract IDBField mapFeature(CDOClass cdoClass, CDOFeature cdoFeature, Set<IDBTable> affectedTables); protected IDBField mapAttribute(CDOClass cdoClass, CDOFeature cdoFeature) { @@ -245,6 +220,71 @@ public abstract class StandardMappingStrategy extends MappingStrategy return classMapping; } + public void writeRevision(Connection connection, CDORevisionImpl revision) + { + if (TRACER.isEnabled()) + { + TRACER.format("Inserting revision: {0}", revision); + } + + CDOClassImpl cdoClass = revision.getCDOClass(); + ClassMapping classMapping = getClassMapping(cdoClass); + Map<IDBTable, FeatureMapping[]> tables = classMapping.getTables(); + Entry<IDBTable, FeatureMapping[]> entry = tables.entrySet().iterator().next(); + IDBTable table = entry.getKey(); + + int i = 0; + Object[] values = new Object[table.getFieldCount()]; + values[i++] = revision.getID().getValue(); + values[i++] = ServerInfo.getDBID(revision.getCDOClass()); + values[i++] = revision.getVersion(); + values[i++] = new Date(revision.getCreated()); + values[i++] = new Date(revision.getRevised()); + values[i++] = revision.getResourceID().getValue(); + values[i++] = revision.getContainerID().getValue(); + values[i++] = revision.getContainingFeatureID(); + + for (CDOFeatureImpl feature : cdoClass.getAllFeatures()) + { + Object value = revision.getValue(feature); + if (value instanceof CDOID) + { + values[i++] = ((CDOID)value).getValue(); + } + else + { + values[i++] = value; + } + } + + DBUtil.insertRow(connection, table, values); + } + + public CDORevision readRevision(Connection connection, CDOID id) + { + return null; + } + + public CDORevision readRevision(Connection connection, CDOID id, long timeStamp) + { + return null; + } + + public CDOID readResourceID(Connection connection, String path) + { + return null; + } + + public String readResourcePath(Connection connection, CDOID id) + { + return null; + } + + public CDOClassRef readObjectType(Connection connection, CDOID id) + { + return null; + } + /** * @author Eike Stepper */ diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalMappingStrategy.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalMappingStrategy.java index 7f6c36583d..61807d5cd9 100644 --- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalMappingStrategy.java +++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalMappingStrategy.java @@ -10,15 +10,14 @@ **************************************************************************/ package org.eclipse.emf.cdo.server.internal.db.mapping; -import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl; -import org.eclipse.emf.cdo.protocol.CDOID; -import org.eclipse.emf.cdo.protocol.model.CDOClassRef; -import org.eclipse.emf.cdo.protocol.revision.CDORevision; +import org.eclipse.emf.cdo.protocol.model.CDOClass; +import org.eclipse.emf.cdo.protocol.model.CDOFeature; +import org.eclipse.net4j.db.IDBField; import org.eclipse.net4j.db.IDBSchema; import org.eclipse.net4j.db.IDBTable; -import java.sql.Connection; +import java.util.Set; /** * @author Eike Stepper @@ -44,60 +43,15 @@ public class VerticalMappingStrategy extends StandardMappingStrategy return schema; } - // @Override - // protected IDBTable mapClass(CDOClass cdoClass, Set<IDBTable> - // affectedTables) - // { - // if (cdoClass.isRoot()) - // { - // return null; - // } - // - // IDBTable table = addTable(cdoClass); - // initTable(table, false); - // return table; - // } - - // @Override - // protected IDBField mapFeature(CDOClass cdoClass, CDOFeature cdoFeature, - // Set<IDBTable> affectedTables) - // { - // if (cdoFeature.getContainingClass() != cdoClass) - // { - // return null; - // } - // - // DBClassInfo classInfo = (DBClassInfo)cdoClass.getServerInfo(); - // IDBTable table = classInfo.getTable(); - // return addField(cdoFeature, table); - // } - - public void writeRevision(Connection connection, CDORevisionImpl revision) - { - } - - public CDORevision readRevision(Connection connection, CDOID id) - { - return null; - } - - public CDORevision readRevision(Connection connection, CDOID id, long timeStamp) - { - return null; - } - - public CDOID readResourceID(Connection connection, String path) - { - return null; - } - - public String readResourcePath(Connection connection, CDOID id) + @Override + protected IDBField mapFeature(CDOClass cdoClass, CDOFeature cdoFeature, Set<IDBTable> affectedTables) { - return null; - } + if (cdoFeature.getContainingClass() != cdoClass) + { + return null; + } - public CDOClassRef readObjectType(Connection connection, CDOID id) - { - return null; + // TODO Implement method enclosing_type.enclosing_method() + throw new UnsupportedOperationException("Not yet implemented"); } } |