/** * <copyright> * </copyright> * * $Id$ */ package com.openMap1.mapper.impl; import java.util.Map; import com.openMap1.mapper.util.MapperValidator; import com.openMap1.mapper.util.ModelUtil; import com.openMap1.mapper.ConditionTest; import com.openMap1.mapper.MapperPackage; import com.openMap1.mapper.ModelPropertyFilter; import com.openMap1.mapper.ObjMapping; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Model Property Filter</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link com.openMap1.mapper.impl.ModelPropertyFilterImpl#getPropertyName <em>Property Name</em>}</li> * <li>{@link com.openMap1.mapper.impl.ModelPropertyFilterImpl#getValue <em>Value</em>}</li> * <li>{@link com.openMap1.mapper.impl.ModelPropertyFilterImpl#getTest <em>Test</em>}</li> * </ul> * </p> * * @generated */ public class ModelPropertyFilterImpl extends ModelFilterImpl implements ModelPropertyFilter { /** * The default value of the '{@link #getPropertyName() <em>Property Name</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getPropertyName() * @generated * @ordered */ protected static final String PROPERTY_NAME_EDEFAULT = null; /** * The cached value of the '{@link #getPropertyName() <em>Property Name</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getPropertyName() * @generated * @ordered */ protected String propertyName = PROPERTY_NAME_EDEFAULT; /** * The default value of the '{@link #getValue() <em>Value</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getValue() * @generated * @ordered */ protected static final String VALUE_EDEFAULT = null; /** * The cached value of the '{@link #getValue() <em>Value</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getValue() * @generated * @ordered */ protected String value = VALUE_EDEFAULT; /** * The default value of the '{@link #getTest() <em>Test</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getTest() * @generated * @ordered */ protected static final ConditionTest TEST_EDEFAULT = ConditionTest.EQUALS; /** * The cached value of the '{@link #getTest() <em>Test</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getTest() * @generated * @ordered */ protected ConditionTest test = TEST_EDEFAULT; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected ModelPropertyFilterImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return MapperPackage.Literals.MODEL_PROPERTY_FILTER; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getPropertyName() { return propertyName; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setPropertyName(String newPropertyName) { String oldPropertyName = propertyName; propertyName = newPropertyName; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, MapperPackage.MODEL_PROPERTY_FILTER__PROPERTY_NAME, oldPropertyName, propertyName)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getValue() { return value; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setValue(String newValue) { String oldValue = value; value = newValue; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, MapperPackage.MODEL_PROPERTY_FILTER__VALUE, oldValue, value)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public ConditionTest getTest() { return test; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setTest(ConditionTest newTest) { ConditionTest oldTest = test; test = newTest == null ? TEST_EDEFAULT : newTest; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, MapperPackage.MODEL_PROPERTY_FILTER__TEST, oldTest, test)); } /** * <!-- begin-user-doc --> * Check that the class being filtered has this property. * Only make the check if the class exists; * a nonexistent class is detected by another check. * <!-- end-user-doc --> */ public boolean classHasProperty(DiagnosticChain diagnostics, Map<?,?> context) { boolean hasProperty = true; String thisClassName = ""; String thisPackageName = ""; EObject om = eContainer().eContainer(); if (om instanceof ObjMapping) { thisClassName = ((ObjMapping)om).getMappedClass(); thisPackageName = ((ObjMapping)om).getMappedPackage(); } if (ModelUtil.isInClassModel(thisClassName, thisPackageName,this)) hasProperty = ModelUtil.hasProperty(thisClassName, thisPackageName, getPropertyName(), this); if (!hasProperty) { if (diagnostics != null) { diagnostics.add (new BasicDiagnostic (Diagnostic.ERROR, MapperValidator.DIAGNOSTIC_SOURCE, MapperValidator.MODEL_PROPERTY_FILTER__CLASS_HAS_PROPERTY, "Class '" + thisClassName + "' has no property '" + getPropertyName() + "'", new Object [] { this })); } return false; } return true; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case MapperPackage.MODEL_PROPERTY_FILTER__PROPERTY_NAME: return getPropertyName(); case MapperPackage.MODEL_PROPERTY_FILTER__VALUE: return getValue(); case MapperPackage.MODEL_PROPERTY_FILTER__TEST: return getTest(); } return super.eGet(featureID, resolve, coreType); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eSet(int featureID, Object newValue) { switch (featureID) { case MapperPackage.MODEL_PROPERTY_FILTER__PROPERTY_NAME: setPropertyName((String)newValue); return; case MapperPackage.MODEL_PROPERTY_FILTER__VALUE: setValue((String)newValue); return; case MapperPackage.MODEL_PROPERTY_FILTER__TEST: setTest((ConditionTest)newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case MapperPackage.MODEL_PROPERTY_FILTER__PROPERTY_NAME: setPropertyName(PROPERTY_NAME_EDEFAULT); return; case MapperPackage.MODEL_PROPERTY_FILTER__VALUE: setValue(VALUE_EDEFAULT); return; case MapperPackage.MODEL_PROPERTY_FILTER__TEST: setTest(TEST_EDEFAULT); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case MapperPackage.MODEL_PROPERTY_FILTER__PROPERTY_NAME: return PROPERTY_NAME_EDEFAULT == null ? propertyName != null : !PROPERTY_NAME_EDEFAULT.equals(propertyName); case MapperPackage.MODEL_PROPERTY_FILTER__VALUE: return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value); case MapperPackage.MODEL_PROPERTY_FILTER__TEST: return test != TEST_EDEFAULT; } return super.eIsSet(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public String toString() { if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (propertyName: "); result.append(propertyName); result.append(", value: "); result.append(value); result.append(", test: "); result.append(test); result.append(')'); return result.toString(); } /** * * @return description of the filter to go in the Filter column of the Mappings View */ public String getFilterColumnText() { String filter = getPropertyName() + " " + getTest() + " '" + getValue() + "'"; return filter; } } //ModelPropertyFilterImpl