diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java | 370 |
1 files changed, 185 insertions, 185 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java index 8ebbdda3a6..4977e1da15 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java @@ -1,185 +1,185 @@ -/* - * Copyright (c) 2004 - 2011 Eike Stepper (Berlin, Germany) and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Simon McDuff - initial API and implementation - * Eike Stepper - maintenance - */ -package org.eclipse.emf.cdo.internal.common.revision.delta; - -import org.eclipse.emf.cdo.common.id.CDOID; -import org.eclipse.emf.cdo.common.protocol.CDODataInput; -import org.eclipse.emf.cdo.common.protocol.CDODataOutput; -import org.eclipse.emf.cdo.common.revision.CDORevisionUtil; -import org.eclipse.emf.cdo.spi.common.revision.CDOReferenceAdjuster; -import org.eclipse.emf.cdo.spi.common.revision.InternalCDOFeatureDelta.WithIndex; - -import org.eclipse.net4j.util.ObjectUtil; - -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EReference; -import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.util.FeatureMap; -import org.eclipse.emf.ecore.util.FeatureMap.Entry; -import org.eclipse.emf.ecore.util.FeatureMapUtil; - -import java.io.IOException; -import java.text.MessageFormat; - -/** - * @author Simon McDuff - */ -public abstract class CDOSingleValueFeatureDeltaImpl extends CDOFeatureDeltaImpl implements WithIndex -{ - private int index; - - private Object value; - - public CDOSingleValueFeatureDeltaImpl(EStructuralFeature feature, int index, Object value) - { - super(feature); - this.index = index; - this.value = value; - } - - public CDOSingleValueFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException - { - super(in, eClass); - index = in.readInt(); - value = readValue(in, eClass); - } - - @Override - public void write(CDODataOutput out, EClass eClass) throws IOException - { - super.write(out, eClass); - out.writeInt(index); - writeValue(out, eClass); - } - - protected void writeValue(CDODataOutput out, EClass eClass) throws IOException - { - Object valueToWrite = value; - if (valueToWrite == UNKNOWN_VALUE) - { - throw new IOException("Value is unknown"); - } - - EStructuralFeature feature = getFeature(); - if (FeatureMapUtil.isFeatureMap(feature)) - { - FeatureMap.Entry entry = (Entry)valueToWrite; - feature = entry.getEStructuralFeature(); - valueToWrite = entry.getValue(); - - int featureID = eClass.getFeatureID(feature); - out.writeInt(featureID); - } - - if (valueToWrite != null && feature instanceof EReference) - { - valueToWrite = out.getIDProvider().provideCDOID(value); - } - - out.writeCDOFeatureValue(feature, valueToWrite); - } - - protected Object readValue(CDODataInput in, EClass eClass) throws IOException - { - EStructuralFeature feature = getFeature(); - if (FeatureMapUtil.isFeatureMap(feature)) - { - int featureID = in.readInt(); - feature = eClass.getEStructuralFeature(featureID); - Object innerValue = in.readCDOFeatureValue(feature); - return CDORevisionUtil.createFeatureMapEntry(feature, innerValue); - } - - return in.readCDOFeatureValue(feature); - } - - public int getIndex() - { - return index; - } - - public void setIndex(int index) - { - this.index = index; - } - - public Object getValue() - { - return value; - } - - public void setValue(Object value) - { - this.value = value; - } - - public void clear() - { - setValue(CDOID.NULL); - } - - public void adjustAfterAddition(int index) - { - if (index <= this.index) - { - ++this.index; - } - } - - public void adjustAfterRemoval(int index) - { - if (index < this.index && this.index > 0) - { - --this.index; - } - } - - @Override - public boolean adjustReferences(CDOReferenceAdjuster referenceAdjuster) - { - if (value != UNKNOWN_VALUE) - { - Object adjustedValue = referenceAdjuster.adjustReference(value, getFeature(), NO_INDEX); - if (adjustedValue != value) - { - value = adjustedValue; - return true; - } - } - - return false; - } - - @Override - public boolean isStructurallyEqual(Object obj) - { - if (!super.isStructurallyEqual(obj)) - { - return false; - } - - CDOSingleValueFeatureDeltaImpl that = (CDOSingleValueFeatureDeltaImpl)obj; - return index == that.getIndex() && ObjectUtil.equals(value, that.getValue()); - } - - @Override - protected String toStringAdditional() - { - if (index == Notification.NO_INDEX) - { - return MessageFormat.format("value={0}", value); //$NON-NLS-1$ - } - - return MessageFormat.format("value={0}, index={1}", value, index); //$NON-NLS-1$ - } -} +/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Simon McDuff - initial API and implementation
+ * Eike Stepper - maintenance
+ */
+package org.eclipse.emf.cdo.internal.common.revision.delta;
+
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.protocol.CDODataInput;
+import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
+import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
+import org.eclipse.emf.cdo.spi.common.revision.CDOReferenceAdjuster;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDOFeatureDelta.WithIndex;
+
+import org.eclipse.net4j.util.ObjectUtil;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap.Entry;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+
+/**
+ * @author Simon McDuff
+ */
+public abstract class CDOSingleValueFeatureDeltaImpl extends CDOFeatureDeltaImpl implements WithIndex
+{
+ private int index;
+
+ private Object value;
+
+ public CDOSingleValueFeatureDeltaImpl(EStructuralFeature feature, int index, Object value)
+ {
+ super(feature);
+ this.index = index;
+ this.value = value;
+ }
+
+ public CDOSingleValueFeatureDeltaImpl(CDODataInput in, EClass eClass) throws IOException
+ {
+ super(in, eClass);
+ index = in.readInt();
+ value = readValue(in, eClass);
+ }
+
+ @Override
+ public void write(CDODataOutput out, EClass eClass) throws IOException
+ {
+ super.write(out, eClass);
+ out.writeInt(index);
+ writeValue(out, eClass);
+ }
+
+ protected void writeValue(CDODataOutput out, EClass eClass) throws IOException
+ {
+ Object valueToWrite = value;
+ if (valueToWrite == UNKNOWN_VALUE)
+ {
+ throw new IOException("Value is unknown");
+ }
+
+ EStructuralFeature feature = getFeature();
+ if (FeatureMapUtil.isFeatureMap(feature))
+ {
+ FeatureMap.Entry entry = (Entry)valueToWrite;
+ feature = entry.getEStructuralFeature();
+ valueToWrite = entry.getValue();
+
+ int featureID = eClass.getFeatureID(feature);
+ out.writeInt(featureID);
+ }
+
+ if (valueToWrite != null && feature instanceof EReference)
+ {
+ valueToWrite = out.getIDProvider().provideCDOID(value);
+ }
+
+ out.writeCDOFeatureValue(feature, valueToWrite);
+ }
+
+ protected Object readValue(CDODataInput in, EClass eClass) throws IOException
+ {
+ EStructuralFeature feature = getFeature();
+ if (FeatureMapUtil.isFeatureMap(feature))
+ {
+ int featureID = in.readInt();
+ feature = eClass.getEStructuralFeature(featureID);
+ Object innerValue = in.readCDOFeatureValue(feature);
+ return CDORevisionUtil.createFeatureMapEntry(feature, innerValue);
+ }
+
+ return in.readCDOFeatureValue(feature);
+ }
+
+ public int getIndex()
+ {
+ return index;
+ }
+
+ public void setIndex(int index)
+ {
+ this.index = index;
+ }
+
+ public Object getValue()
+ {
+ return value;
+ }
+
+ public void setValue(Object value)
+ {
+ this.value = value;
+ }
+
+ public void clear()
+ {
+ setValue(CDOID.NULL);
+ }
+
+ public void adjustAfterAddition(int index)
+ {
+ if (index <= this.index)
+ {
+ ++this.index;
+ }
+ }
+
+ public void adjustAfterRemoval(int index)
+ {
+ if (index < this.index && this.index > 0)
+ {
+ --this.index;
+ }
+ }
+
+ @Override
+ public boolean adjustReferences(CDOReferenceAdjuster referenceAdjuster)
+ {
+ if (value != UNKNOWN_VALUE)
+ {
+ Object adjustedValue = referenceAdjuster.adjustReference(value, getFeature(), NO_INDEX);
+ if (adjustedValue != value)
+ {
+ value = adjustedValue;
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean isStructurallyEqual(Object obj)
+ {
+ if (!super.isStructurallyEqual(obj))
+ {
+ return false;
+ }
+
+ CDOSingleValueFeatureDeltaImpl that = (CDOSingleValueFeatureDeltaImpl)obj;
+ return index == that.getIndex() && ObjectUtil.equals(value, that.getValue());
+ }
+
+ @Override
+ protected String toStringAdditional()
+ {
+ if (index == Notification.NO_INDEX)
+ {
+ return MessageFormat.format("value={0}", value); //$NON-NLS-1$
+ }
+
+ return MessageFormat.format("value={0}, index={1}", value, index); //$NON-NLS-1$
+ }
+}
|