Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/TransformationWritablePropertyValueModel.java')
-rw-r--r--common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/TransformationWritablePropertyValueModel.java146
1 files changed, 0 insertions, 146 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/TransformationWritablePropertyValueModel.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/TransformationWritablePropertyValueModel.java
deleted file mode 100644
index 01213ae8c2..0000000000
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/model/value/TransformationWritablePropertyValueModel.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2012 Oracle. 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:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.common.utility.internal.model.value;
-
-import org.eclipse.jpt.common.utility.internal.Transformer;
-import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel;
-
-/**
- * A <code>TransformationWritablePropertyValueModel</code> wraps another
- * {@link ModifiablePropertyValueModel} and uses two {@link Transformer}s
- * to:<ul>
- * <li>transform the wrapped value before it is returned by {@link #getValue()}
- * <li>"reverse-transform" the new value that comes in via
- * {@link #setValue(Object)}
- * </ul>
- * <strong>NB:</strong> If the mapping between the wrapped values and the
- * transformed values is not strictly one-to-one, the behavior of the
- * transformation model may seem unpredictable; since the wrapped model's
- * change events can cause the transformation model's value to change.
- * For example: If the value is a string to be <em>transformed</em> to uppercase
- * and <em>reverse-transformed</em> to lowercase; then mixed case values passed to
- * the transformation model will be<ul>
- * <li>unchanged if the transformation model has <em>no</em> listeners
- * <li>changed to uppercase if the transformation model has any listeners
- * ({@link #wrappedValueChanged(org.eclipse.jpt.common.utility.model.event.PropertyChangeEvent)})
- * </ul>
- * As an alternative to building two {@link Transformer}s,
- * a subclass of <code>TransformationWritablePropertyValueModel</code> can
- * override {@link #transform_(Object)} and {@link #reverseTransform_(Object)};
- * or, if something other than <code>null</code> should be returned when the
- * wrapped value is <code>null</code> or the new value is <code>null</code>,
- * override {@link #transform(Object)} and {@link #reverseTransform(Object)}.
- *
- * @param <V1> the type of the <em>wrapped</em> model's value
- * @param <V2> the type of the model's <em>transformed</em> value
- * @see Transformer
- */
-public class TransformationWritablePropertyValueModel<V1, V2>
- extends TransformationPropertyValueModel<V1, V2>
- implements ModifiablePropertyValueModel<V2>
-{
- protected final Transformer<V2, V1> reverseTransformer;
-
-
- // ********** constructors/initialization **********
-
- /**
- * Construct a writable property value model with the specified nested
- * writable property value model and the default transformers.
- * Use this constructor if you want to override the
- * {@link #transform_(Object)} and {@link #reverseTransform_(Object)}
- * (or {@link #transform(Object)} and {@link #reverseTransform(Object)})
- * methods instead of building {@link Transformer}s.
- */
- public TransformationWritablePropertyValueModel(ModifiablePropertyValueModel<V1> valueModel) {
- super(valueModel);
- this.reverseTransformer = this.buildReverseTransformer();
- }
-
- /**
- * Construct a writable property value model with the specified nested
- * writable property value model and transformers.
- */
- public TransformationWritablePropertyValueModel(ModifiablePropertyValueModel<V1> valueModel, Transformer<V1, V2> transformer, Transformer<V2, V1> reverseTransformer) {
- super(valueModel, transformer);
- if (reverseTransformer == null) {
- throw new NullPointerException();
- }
- this.reverseTransformer = reverseTransformer;
- }
-
- protected Transformer<V2, V1> buildReverseTransformer() {
- return new DefaultReverseTransformer();
- }
-
-
- // ********** WritablePropertyValueModel implementation **********
-
- /**
- * Cache and "reverse-transform" the new value before passing it to the the
- * nested value model.
- * A side-effect of caching the new value is that the wrapper will
- * <em>not</em> fire an event when the wrapped model fires an event when
- * called from here.
- * @see #wrappedValueChanged(org.eclipse.jpt.common.utility.model.event.PropertyChangeEvent)
- */
- public void setValue(V2 value) {
- this.value = value;
- this.getValueModel().setValue(this.reverseTransform(value));
- }
-
-
- // ********** transformation **********
-
- /**
- * "Reverse-transform" the specified value and return the result.
- * This is called by {@link #setValue(Object)}.
- */
- protected V1 reverseTransform(V2 v) {
- return this.reverseTransformer.transform(v);
- }
-
- /**
- * "Reverse-transform" the specified, non-<code>null</code>,
- * value and return the result.
- */
- protected V1 reverseTransform_(@SuppressWarnings("unused") V2 v) {
- throw new RuntimeException("This method was not overridden."); //$NON-NLS-1$
- }
-
-
- // ********** queries **********
-
- /**
- * Our constructors accept only a {@link ModifiablePropertyValueModel}{@code<V>},
- * so this cast should be safe.
- */
- @SuppressWarnings("unchecked")
- protected ModifiablePropertyValueModel<V1> getValueModel() {
- return (ModifiablePropertyValueModel<V1>) this.valueModel;
- }
-
-
- // ********** default reverse transformer **********
-
- /**
- * The default reverse transformer will return <code>null</code>
- * if the new value is <code>null</code>.
- * If the new value is not <code>null</code>, it is reverse-transformed
- * by a subclass implementation of {@link #reverseTransform_(Object)}.
- */
- protected class DefaultReverseTransformer
- implements Transformer<V2, V1>
- {
- public V1 transform(V2 v) {
- return (v == null) ? null : TransformationWritablePropertyValueModel.this.reverseTransform_(v);
- }
- }
-}

Back to the top