Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2008-10-29 08:03:24 +0000
committerEike Stepper2008-10-29 08:03:24 +0000
commit11373f0a4fd47dad69cbd1c9501a29925964ade1 (patch)
tree7e9ae2ccdd4394091a2b274635e8ffd2a5b5f3f9
parentcb8b43f5d8471781e3d81ee9fd176cbab2760652 (diff)
downloadcdo-11373f0a4fd47dad69cbd1c9501a29925964ade1.tar.gz
cdo-11373f0a4fd47dad69cbd1c9501a29925964ade1.tar.xz
cdo-11373f0a4fd47dad69cbd1c9501a29925964ade1.zip
[252311] [POLISH] Consolidate IStoreAccessor, IStoreReader and IStoreWriter APIs
https://bugs.eclipse.org/bugs/show_bug.cgi?id=252311
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java191
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java28
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java99
4 files changed, 158 insertions, 162 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
index bf199ddc2c..ba6d4d9ad8 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
@@ -395,114 +395,113 @@ public class DBStoreAccessor extends StoreAccessor implements IDBStoreAccessor
}
@Override
- protected void writePackages(CDOPackage... cdoPackages)
+ protected void writePackages(CDOPackage[] cdoPackages)
{
- super.writePackages(cdoPackages);
- Set<IDBTable> affectedTables = mapPackages(cdoPackages);
- getStore().getDBAdapter().createTables(affectedTables, getConnection());
- }
-
- @Override
- protected void writePackage(CDOPackage cdoPackage)
- {
- int id = getStore().getNextPackageID();
- PackageServerInfo.setDBID(cdoPackage, id);
- if (TRACER.isEnabled())
+ new PackageWriter(cdoPackages)
{
- TRACER.format("Writing package: {0} --> {1}", cdoPackage, id);
- }
+ @Override
+ protected void writePackage(InternalCDOPackage cdoPackage)
+ {
+ int id = getStore().getNextPackageID();
+ PackageServerInfo.setDBID(cdoPackage, id);
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Writing package: {0} --> {1}", cdoPackage, id);
+ }
- String packageURI = cdoPackage.getPackageURI();
- String name = cdoPackage.getName();
- String ecore = cdoPackage.getEcore();
- boolean dynamic = cdoPackage.isDynamic();
- CDOIDMetaRange metaIDRange = cdoPackage.getMetaIDRange();
- long lowerBound = metaIDRange == null ? 0L : ((CDOIDMeta)metaIDRange.getLowerBound()).getLongValue();
- long upperBound = metaIDRange == null ? 0L : ((CDOIDMeta)metaIDRange.getUpperBound()).getLongValue();
- String parentURI = cdoPackage.getParentURI();
+ String packageURI = cdoPackage.getPackageURI();
+ String name = cdoPackage.getName();
+ String ecore = cdoPackage.getEcore();
+ boolean dynamic = cdoPackage.isDynamic();
+ CDOIDMetaRange metaIDRange = cdoPackage.getMetaIDRange();
+ long lowerBound = metaIDRange == null ? 0L : ((CDOIDMeta)metaIDRange.getLowerBound()).getLongValue();
+ long upperBound = metaIDRange == null ? 0L : ((CDOIDMeta)metaIDRange.getUpperBound()).getLongValue();
+ String parentURI = cdoPackage.getParentURI();
- String sql = "INSERT INTO " + CDODBSchema.PACKAGES + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
- DBUtil.trace(sql);
- PreparedStatement pstmt = null;
+ String sql = "INSERT INTO " + CDODBSchema.PACKAGES + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
+ DBUtil.trace(sql);
+ PreparedStatement pstmt = null;
- try
- {
- pstmt = getConnection().prepareStatement(sql);
- pstmt.setInt(1, id);
- pstmt.setString(2, packageURI);
- pstmt.setString(3, name);
- pstmt.setString(4, ecore);
- pstmt.setBoolean(5, dynamic);
- pstmt.setLong(6, lowerBound);
- pstmt.setLong(7, upperBound);
- pstmt.setString(8, parentURI);
-
- if (pstmt.execute())
- {
- throw new DBException("No result set expected");
+ try
+ {
+ pstmt = getConnection().prepareStatement(sql);
+ pstmt.setInt(1, id);
+ pstmt.setString(2, packageURI);
+ pstmt.setString(3, name);
+ pstmt.setString(4, ecore);
+ pstmt.setBoolean(5, dynamic);
+ pstmt.setLong(6, lowerBound);
+ pstmt.setLong(7, upperBound);
+ pstmt.setString(8, parentURI);
+
+ if (pstmt.execute())
+ {
+ throw new DBException("No result set expected");
+ }
+
+ if (pstmt.getUpdateCount() == 0)
+ {
+ throw new DBException("No row inserted into table " + CDODBSchema.PACKAGES);
+ }
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException(ex);
+ }
+ finally
+ {
+ DBUtil.close(pstmt);
+ }
}
- if (pstmt.getUpdateCount() == 0)
+ @Override
+ protected void writeClass(InternalCDOClass cdoClass)
{
- throw new DBException("No row inserted into table " + CDODBSchema.PACKAGES);
+ int id = getStore().getNextClassID();
+ ClassServerInfo.setDBID(cdoClass, id);
+
+ CDOPackage cdoPackage = cdoClass.getContainingPackage();
+ int packageID = ServerInfo.getDBID(cdoPackage);
+ int classifierID = cdoClass.getClassifierID();
+ String name = cdoClass.getName();
+ boolean isAbstract = cdoClass.isAbstract();
+ DBUtil.insertRow(getConnection(), getStore().getDBAdapter(), CDODBSchema.CLASSES, id, packageID, classifierID,
+ name, isAbstract);
}
- }
- catch (SQLException ex)
- {
- throw new DBException(ex);
- }
- finally
- {
- DBUtil.close(pstmt);
- }
-
- super.writePackage(cdoPackage);
- }
-
- @Override
- protected void writeClass(InternalCDOClass cdoClass)
- {
- int id = getStore().getNextClassID();
- ClassServerInfo.setDBID(cdoClass, id);
-
- CDOPackage cdoPackage = cdoClass.getContainingPackage();
- int packageID = ServerInfo.getDBID(cdoPackage);
- int classifierID = cdoClass.getClassifierID();
- String name = cdoClass.getName();
- boolean isAbstract = cdoClass.isAbstract();
- DBUtil.insertRow(getConnection(), getStore().getDBAdapter(), CDODBSchema.CLASSES, id, packageID, classifierID,
- name, isAbstract);
- super.writeClass(cdoClass);
- }
+ @Override
+ protected void writeSuperType(InternalCDOClass type, CDOClassProxy superType)
+ {
+ int id = ClassServerInfo.getDBID(type);
+ String packageURI = superType.getPackageURI();
+ int classifierID = superType.getClassifierID();
+ DBUtil.insertRow(getConnection(), getStore().getDBAdapter(), CDODBSchema.SUPERTYPES, id, packageURI,
+ classifierID);
+ }
- @Override
- protected void writeSuperType(InternalCDOClass type, CDOClassProxy superType)
- {
- int id = ClassServerInfo.getDBID(type);
- String packageURI = superType.getPackageURI();
- int classifierID = superType.getClassifierID();
- DBUtil.insertRow(getConnection(), getStore().getDBAdapter(), CDODBSchema.SUPERTYPES, id, packageURI, classifierID);
- }
+ @Override
+ protected void writeFeature(InternalCDOFeature feature)
+ {
+ int id = getStore().getNextFeatureID();
+ FeatureServerInfo.setDBID(feature, id);
+
+ int classID = ServerInfo.getDBID(feature.getContainingClass());
+ String name = feature.getName();
+ int featureID = feature.getFeatureID();
+ int type = feature.getType().getTypeID();
+ CDOClassProxy reference = (feature).getReferenceTypeProxy();
+ String packageURI = reference == null ? null : reference.getPackageURI();
+ int classifierID = reference == null ? 0 : reference.getClassifierID();
+ boolean many = feature.isMany();
+ boolean containment = feature.isContainment();
+ int idx = feature.getFeatureIndex();
+ DBUtil.insertRow(getConnection(), getStore().getDBAdapter(), CDODBSchema.FEATURES, id, classID, featureID,
+ name, type, packageURI, classifierID, many, containment, idx);
+ }
+ }.run();
- @Override
- protected void writeFeature(CDOFeature feature)
- {
- int id = getStore().getNextFeatureID();
- FeatureServerInfo.setDBID(feature, id);
-
- int classID = ServerInfo.getDBID(feature.getContainingClass());
- String name = feature.getName();
- int featureID = feature.getFeatureID();
- int type = feature.getType().getTypeID();
- CDOClassProxy reference = ((InternalCDOFeature)feature).getReferenceTypeProxy();
- String packageURI = reference == null ? null : reference.getPackageURI();
- int classifierID = reference == null ? 0 : reference.getClassifierID();
- boolean many = feature.isMany();
- boolean containment = feature.isContainment();
- int idx = feature.getFeatureIndex();
- DBUtil.insertRow(getConnection(), getStore().getDBAdapter(), CDODBSchema.FEATURES, id, classID, featureID, name,
- type, packageURI, classifierID, many, containment, idx);
+ Set<IDBTable> affectedTables = mapPackages(cdoPackages);
+ getStore().getDBAdapter().createTables(affectedTables, getConnection());
}
@Override
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 f43251d854..d94fd752ab 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,6 @@ 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.model.CDOClassProxy;
import org.eclipse.emf.cdo.common.model.CDOClassRef;
import org.eclipse.emf.cdo.common.model.CDOFeature;
import org.eclipse.emf.cdo.common.model.CDOPackage;
@@ -30,7 +29,6 @@ import org.eclipse.emf.cdo.server.hibernate.IHibernateStoreAccessor;
import org.eclipse.emf.cdo.server.hibernate.id.CDOIDHibernate;
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.InternalCDOClass;
import org.eclipse.emf.cdo.spi.common.InternalCDORevision;
import org.eclipse.net4j.util.WrappedException;
@@ -432,7 +430,7 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
}
@Override
- protected void writePackages(CDOPackage... cdoPackages)
+ protected void writePackages(CDOPackage[] cdoPackages)
{
if (cdoPackages != null && cdoPackages.length != 0)
{
@@ -444,30 +442,6 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS
}
@Override
- protected void writePackage(CDOPackage cdoPackage)
- {
- throw new UnsupportedOperationException("Should not be called");
- }
-
- @Override
- protected void writeClass(InternalCDOClass cdoClass)
- {
- throw new UnsupportedOperationException("Should not be called, should be handled by hibernate cascade");
- }
-
- @Override
- protected void writeFeature(CDOFeature feature)
- {
- throw new UnsupportedOperationException("Should not be called, should be handled by hibernate cascade");
- }
-
- @Override
- protected void writeSuperType(InternalCDOClass type, CDOClassProxy superType)
- {
- throw new UnsupportedOperationException("Should not be called, should be handled by hibernate cascade");
- }
-
- @Override
protected void writeRevisions(CDORevision[] revisions)
{
// Don't do anything it is done at commit
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java
index 38f65e5693..9f99f1ee37 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java
@@ -162,7 +162,7 @@ public class MEMStoreAccessor extends StoreAccessor
}
@Override
- protected void writePackages(CDOPackage... cdoPackages)
+ protected void writePackages(CDOPackage[] cdoPackages)
{
// Do nothing
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java
index 059fe8cdbd..7ddfe966c5 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java
@@ -25,6 +25,8 @@ 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.spi.common.InternalCDOClass;
+import org.eclipse.emf.cdo.spi.common.InternalCDOFeature;
+import org.eclipse.emf.cdo.spi.common.InternalCDOPackage;
import org.eclipse.emf.cdo.spi.common.InternalCDORevision;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
@@ -183,44 +185,7 @@ public abstract class StoreAccessor extends Lifecycle implements IStoreAccessor
}
}
- protected void writePackages(CDOPackage... cdoPackages)
- {
- for (CDOPackage cdoPackage : cdoPackages)
- {
- writePackage(cdoPackage);
- }
- }
-
- protected void writePackage(CDOPackage cdoPackage)
- {
- for (CDOClass cdoClass : cdoPackage.getClasses())
- {
- writeClass((InternalCDOClass)cdoClass);
- }
- }
-
- protected void writeClass(InternalCDOClass cdoClass)
- {
- for (CDOClassProxy superType : cdoClass.getSuperTypeProxies())
- {
- writeSuperType(cdoClass, superType);
- }
-
- for (CDOFeature feature : cdoClass.getFeatures())
- {
- writeFeature(feature);
- }
- }
-
- protected void writeSuperType(InternalCDOClass type, CDOClassProxy superType)
- {
- throw new UnsupportedOperationException();
- }
-
- protected void writeFeature(CDOFeature feature)
- {
- throw new UnsupportedOperationException();
- }
+ protected abstract void writePackages(CDOPackage[] cdoPackages);
protected abstract void writeRevisions(CDORevision[] revisions);
@@ -255,4 +220,62 @@ public abstract class StoreAccessor extends Lifecycle implements IStoreAccessor
* @since 2.0
*/
protected abstract void doUnpassivate() throws Exception;
+
+ /**
+ * @author Eike Stepper
+ * @since 2.0
+ */
+ public static abstract class PackageWriter implements Runnable
+ {
+ private CDOPackage[] cdoPackages;
+
+ public PackageWriter(CDOPackage[] cdoPackages)
+ {
+ this.cdoPackages = cdoPackages;
+ }
+
+ public CDOPackage[] getCDOPackages()
+ {
+ return cdoPackages;
+ }
+
+ public void run()
+ {
+ for (CDOPackage cdoPackage : cdoPackages)
+ {
+ runPackage(cdoPackage);
+ }
+ }
+
+ protected void runPackage(CDOPackage cdoPackage)
+ {
+ writePackage((InternalCDOPackage)cdoPackage);
+ for (CDOClass cdoClass : cdoPackage.getClasses())
+ {
+ runClass((InternalCDOClass)cdoClass);
+ }
+ }
+
+ protected void runClass(InternalCDOClass cdoClass)
+ {
+ writeClass(cdoClass);
+ for (CDOClassProxy superType : cdoClass.getSuperTypeProxies())
+ {
+ writeSuperType(cdoClass, superType);
+ }
+
+ for (CDOFeature feature : cdoClass.getFeatures())
+ {
+ writeFeature((InternalCDOFeature)feature);
+ }
+ }
+
+ protected abstract void writePackage(InternalCDOPackage cdoPackage);
+
+ protected abstract void writeClass(InternalCDOClass cdoClass);
+
+ protected abstract void writeSuperType(InternalCDOClass type, CDOClassProxy superType);
+
+ protected abstract void writeFeature(InternalCDOFeature feature);
+ }
}

Back to the top