| /******************************************************************************* |
| * Copyright (c) 2003, 2006 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.common.internal.emfworkbench.integration; |
| |
| |
| import java.util.HashMap; |
| |
| import org.eclipse.emf.ecore.EClass; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.EPackage; |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| import org.eclipse.emf.ecore.impl.EClassImpl; |
| import org.eclipse.emf.edit.command.SetCommand; |
| import org.eclipse.jem.util.logger.proxy.Logger; |
| import org.eclipse.wst.common.internal.emf.utilities.FeatureValueConversionException; |
| import org.eclipse.wst.common.internal.emf.utilities.FeatureValueConverter; |
| |
| /** |
| * Insert the type's description here. Creation date: (4/6/2001 3:23:36 PM) |
| * |
| * @author: Administrator |
| */ |
| public class ModifierHelper { |
| |
| private EObject owner; |
| private ModifierHelper ownerHelper; |
| private OwnerProvider ownerProvider; |
| private Object value; |
| private EStructuralFeature feature; |
| private HashMap attributes; |
| private boolean shouldUnsetValue = false; |
| private String valueXSITypeName; |
| private FeatureValueConverter featureValueConverter; |
| |
| public static final int ACTION_SET = 0; |
| public static final int ACTION_UNSET = 1; |
| public static final int ACTION_BOTH = 2; |
| |
| /** |
| * J2EEModifierHelper constructor comment. |
| */ |
| public ModifierHelper() { |
| super(); |
| } |
| |
| /** |
| * J2EEModifierHelper constructor comment. |
| */ |
| public ModifierHelper(EObject anOwner, EStructuralFeature aFeature, Object aValue) { |
| setOwner(anOwner); |
| setFeature(aFeature); |
| setValue(aValue); |
| } |
| |
| /** |
| * J2EEModifierHelper constructor comment. |
| */ |
| public ModifierHelper(ModifierHelper anOwnerHelper, EStructuralFeature aFeature, Object aValue) { |
| setOwnerHelper(anOwnerHelper); |
| setFeature(aFeature); |
| setValue(aValue); |
| } |
| |
| /** |
| * J2EEModifierHelper constructor comment. |
| */ |
| public ModifierHelper(OwnerProvider anOwnerProvider, EStructuralFeature aFeature, Object aValue) { |
| setOwnerProvider(anOwnerProvider); |
| setFeature(aFeature); |
| setValue(aValue); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @return java.util.HashMap |
| */ |
| public void addAttribute(EStructuralFeature aFeature, Object aValue) { |
| if (aFeature != null && aValue != null) |
| getAttributes().put(aFeature, aValue); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @param newValue |
| * java.lang.Object |
| */ |
| protected Object convertValue(java.lang.Object newValue) { |
| return getFeatureValueConverter().convertValue(newValue, getFeature()); |
| } |
| |
| //Calling this will cause the value to be removed or unset from the owner. |
| public void doUnsetValue() { |
| shouldUnsetValue = true; |
| if (value != SetCommand.UNSET_VALUE && feature != null && !feature.isMany()) |
| primSetValue(SetCommand.UNSET_VALUE); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @return java.util.HashMap |
| */ |
| public java.util.HashMap getAttributes() { |
| if (attributes == null) |
| attributes = new HashMap(); |
| return attributes; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @return org.eclipse.emf.ecore.EFactory |
| */ |
| protected org.eclipse.emf.ecore.EFactory getFactory() { |
| return getPackage().getEFactoryInstance(); |
| } |
| |
| protected EPackage getPackage() { |
| return ((EClassImpl) getFeatureType()).getEPackage(); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @return org.eclipse.emf.ecore.EStructuralFeature |
| */ |
| public org.eclipse.emf.ecore.EStructuralFeature getFeature() { |
| return feature; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @return EObject |
| */ |
| protected EObject getFeatureType() { |
| return getFeature().getEType(); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (5/10/2001 4:51:58 PM) |
| * |
| * @return com.ibm.etools.j2ee.commands.FeatureValueConverter |
| */ |
| public FeatureValueConverter getFeatureValueConverter() { |
| if (featureValueConverter == null) |
| featureValueConverter = FeatureValueConverter.DEFAULT; |
| return featureValueConverter; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @return String |
| */ |
| protected String getNewValueTypeName() { |
| if (getValueXSITypeName() != null && getValueXSITypeName().length() > 0) |
| return getValueXSITypeName(); |
| return (((EClass) getFeatureType()).getName()); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @return org.eclipse.emf.ecore.EObject |
| */ |
| public org.eclipse.emf.ecore.EObject getOwner() { |
| if (owner == null) { |
| OwnerProvider provider = getOwnerProvider(); |
| EObject providerOwner = null; |
| if (provider != null) |
| providerOwner = provider.getOwner(); |
| if (providerOwner == null && getOwnerHelper() != null) |
| providerOwner = (EObject) getOwnerHelper().getValue(); |
| return providerOwner; |
| } |
| return owner; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/8/2001 2:47:54 PM) |
| * |
| * @return com.ibm.etools.j2ee.commands.J2EEModifierHelper |
| */ |
| public ModifierHelper getOwnerHelper() { |
| if (ownerHelper == null) { |
| if (getOwnerProvider() != null && getOwnerProvider().getOwner() == null) |
| return getOwnerProvider().getOwnerHelper(); |
| } |
| return ownerHelper; |
| } |
| |
| public ModifierHelper primGetOwnerHelper() { |
| return ownerHelper; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (9/18/2001 1:31:14 PM) |
| * |
| * @return com.ibm.etools.j2ee.ui.J2EEOwnerProvider |
| */ |
| public OwnerProvider getOwnerProvider() { |
| return ownerProvider; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @return java.lang.Object |
| */ |
| public java.lang.Object getValue() { |
| return value; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/10/2001 3:39:31 PM) |
| * |
| * @return java.lang.String |
| */ |
| public java.lang.String getValueXSITypeName() { |
| return valueXSITypeName; |
| } |
| |
| /** |
| * This will automatically get called from the J2EEModelModifier before executing so it is not |
| * necessary to call it directly. |
| */ |
| public boolean isComplete() { |
| boolean result = true; |
| if (getOwnerHelper() != null) |
| result = getOwnerHelper().isComplete(); |
| if (!mustCreateValue()) |
| result = getValue() != null || shouldUnsetValue(); |
| else |
| result = getFeatureType() != null; |
| return result && getFeature() != null && (getOwner() != null || getOwnerHelper() != null); |
| } |
| |
| public boolean mustCreateValue() { |
| return getValue() == null && getFeature() != null && !shouldUnsetValue(); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @param newValue |
| * java.lang.Object |
| */ |
| public void primSetValue(java.lang.Object newValue) { |
| value = newValue; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @param newFeature |
| * org.eclipse.emf.ecore.EStructuralFeature |
| */ |
| public void setFeature(org.eclipse.emf.ecore.EStructuralFeature newFeature) { |
| feature = newFeature; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (5/10/2001 4:51:58 PM) |
| * |
| * @param newFeatureValueConverter |
| * com.ibm.etools.j2ee.commands.FeatureValueConverter |
| */ |
| public void setFeatureValueConverter(FeatureValueConverter newFeatureValueConverter) { |
| featureValueConverter = newFeatureValueConverter; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @param newOwner |
| * org.eclipse.emf.ecore.EObject |
| */ |
| public void setOwner(org.eclipse.emf.ecore.EObject newOwner) { |
| owner = newOwner; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/8/2001 2:47:54 PM) |
| * |
| * @param newOwnerHelper |
| * com.ibm.etools.j2ee.commands.J2EEModifierHelper |
| */ |
| public void setOwnerHelper(ModifierHelper newOwnerHelper) { |
| ownerHelper = newOwnerHelper; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (9/18/2001 1:31:14 PM) |
| * |
| * @param newOwnerProvider |
| * com.ibm.etools.j2ee.ui.J2EEOwnerProvider |
| */ |
| public void setOwnerProvider(OwnerProvider newOwnerProvider) { |
| ownerProvider = newOwnerProvider; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @param newValue |
| * java.lang.Object |
| */ |
| public void setValue(java.lang.Object newValue) { |
| try { |
| primSetValue(convertValue(newValue)); |
| } catch (FeatureValueConversionException featureException) { |
| Logger.getLogger().logError(featureException); |
| primSetValue(null); |
| } |
| } |
| |
| /** |
| * Treat an empty String as a null value. Creation date: (4/6/2001 3:28:16 PM) |
| * |
| * @param newValue |
| * java.lang.Object |
| */ |
| public void setValueFromWidget(String newValue) { |
| Object data = newValue; |
| if (newValue != null && newValue.length() == 0) |
| data = null; |
| setValue(data); |
| if (data == null) |
| doUnsetValue(); |
| else |
| shouldUnsetValue = false; |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (4/10/2001 3:39:31 PM) |
| * |
| * @param newValueXSITypeName |
| * java.lang.String |
| */ |
| public void setValueXSITypeName(java.lang.String newValueXSITypeName) { |
| valueXSITypeName = newValueXSITypeName; |
| } |
| |
| public boolean shouldUnsetValue() { |
| return shouldUnsetValue; |
| } |
| |
| public EObject createNewObjectFromFeature() { |
| EClass metaClass = (EClass) getPackage().getEClassifier(getNewValueTypeName()); |
| return getFactory().create(metaClass); |
| } |
| } |