summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-08-21 01:59:09 (EDT)
committerEike Stepper2007-08-21 01:59:09 (EDT)
commite9d2a37c209c8df489759155e9f3165cbb567681 (patch)
treeb70f396df0f4697f6c07471b47c92ef0a76801ac
parentcde808f091c7b57dd8aa4ca6b38677619b1fbc27 (diff)
downloadcdo-e9d2a37c209c8df489759155e9f3165cbb567681.zip
cdo-e9d2a37c209c8df489759155e9f3165cbb567681.tar.gz
cdo-e9d2a37c209c8df489759155e9f3165cbb567681.tar.bz2
*** empty log message ***
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/HorizontalMappingStrategy.java95
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/StandardMappingStrategy.java112
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/mapping/VerticalMappingStrategy.java70
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 03e150f..ddcc465 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 f6704f8..48d4d48 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 7f6c365..61807d5 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");
}
}