diff options
author | Eike Stepper | 2007-08-25 06:17:55 +0000 |
---|---|---|
committer | Eike Stepper | 2007-08-25 06:17:55 +0000 |
commit | 6cec9f82bb01a87fd78bdeebff6043e21970b8fe (patch) | |
tree | f2cfbc736d39d6cf02d146a42d2a1d4d9257d610 | |
parent | ad2b06991ec82c9456d67a1a8d10f829ac44fa06 (diff) | |
download | cdo-6cec9f82bb01a87fd78bdeebff6043e21970b8fe.tar.gz cdo-6cec9f82bb01a87fd78bdeebff6043e21970b8fe.tar.xz cdo-6cec9f82bb01a87fd78bdeebff6043e21970b8fe.zip |
*** empty log message ***
2 files changed, 34 insertions, 13 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ReferenceMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ReferenceMapping.java index b838a5756b..bdcf8043d6 100644 --- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ReferenceMapping.java +++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ReferenceMapping.java @@ -26,11 +26,26 @@ public class ReferenceMapping extends FeatureMapping implements IReferenceMappin private boolean withFeature; + private String constantPrefix; + public ReferenceMapping(ValueMapping valueMapping, CDOFeature feature, ToMany toMany) { super(valueMapping, feature); this.toMany = toMany; mapReference(valueMapping.getCDOClass(), feature); + + // Build the constant SQL prefix + StringBuilder builder = new StringBuilder(); + builder.append("INSERT INTO "); + builder.append(table); + builder.append(" VALUES ("); + if (withFeature) + { + builder.append(FeatureServerInfo.getDBID(feature)); + builder.append(", "); + } + + constantPrefix = builder.toString(); } public IDBTable getTable() @@ -47,16 +62,7 @@ public class ReferenceMapping extends FeatureMapping implements IReferenceMappin for (Object value : list) { long target = ((CDOID)value).getValue(); - StringBuilder builder = new StringBuilder(); - builder.append("INSERT INTO "); - builder.append(table); - builder.append(" VALUES ("); - if (withFeature) - { - builder.append(FeatureServerInfo.getDBID(feature)); - builder.append(", "); - } - + StringBuilder builder = new StringBuilder(constantPrefix); builder.append(idx++); builder.append(", "); builder.append(source); diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ValueMapping.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ValueMapping.java index 39b87733d9..2e01a45329 100644 --- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ValueMapping.java +++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ValueMapping.java @@ -163,12 +163,12 @@ public abstract class ValueMapping extends Mapping { if (!feature.isMany()) { - attributeMappings.add(new ToOneReferenceMapping(this, feature)); + attributeMappings.add(createToOneReferenceMapping(feature)); } } else { - attributeMappings.add(new AttributeMapping(this, feature)); + attributeMappings.add(createAttributeMapping(feature)); } } @@ -182,12 +182,27 @@ public abstract class ValueMapping extends Mapping { if (feature.isReference() && feature.isMany()) { - referenceMappings.add(new ReferenceMapping(this, feature)); + referenceMappings.add(createReferenceMapping(feature)); } } return referenceMappings.isEmpty() ? null : referenceMappings; } + protected AttributeMapping createAttributeMapping(CDOFeature feature) + { + return new AttributeMapping(this, feature); + } + + protected ToOneReferenceMapping createToOneReferenceMapping(CDOFeature feature) + { + return new ToOneReferenceMapping(this, feature); + } + + protected ReferenceMapping createReferenceMapping(CDOFeature feature) + { + return new ReferenceMapping(this, feature, ToMany.PER_REFERENCE); + } + protected abstract boolean hasFullRevisionInfo(); } |