| /** |
| * Copyright (c) 2018 CEA |
| * |
| * 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: |
| * Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation |
| * Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation |
| * |
| */ |
| package org.eclipse.papyrus.iotml.wot.impl; |
| |
| import java.util.Collection; |
| |
| import org.eclipse.emf.common.notify.Notification; |
| |
| import org.eclipse.emf.common.util.EList; |
| |
| import org.eclipse.emf.ecore.EClass; |
| import org.eclipse.emf.ecore.InternalEObject; |
| |
| import org.eclipse.emf.ecore.impl.ENotificationImpl; |
| import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; |
| |
| import org.eclipse.emf.ecore.util.EObjectResolvingEList; |
| |
| import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification; |
| |
| import org.eclipse.papyrus.iotml.wot.DataSchema; |
| import org.eclipse.papyrus.iotml.wot.WoTPackage; |
| |
| import org.eclipse.uml2.uml.Interval; |
| import org.eclipse.uml2.uml.Property; |
| import org.eclipse.uml2.uml.Type; |
| import org.eclipse.uml2.uml.TypedElement; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * An implementation of the model object '<em><b>Data Schema</b></em>'. |
| * <!-- end-user-doc --> |
| * <p> |
| * The following features are implemented: |
| * </p> |
| * <ul> |
| * <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getBase_TypedElement <em>Base Typed Element</em>}</li> |
| * <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getEnum <em>Enum</em>}</li> |
| * <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getNumberInterval <em>Number Interval</em>}</li> |
| * <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getRequired <em>Required</em>}</li> |
| * <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getItems <em>Items</em>}</li> |
| * <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getProperties <em>Properties</em>}</li> |
| * </ul> |
| * |
| * @generated |
| */ |
| public class DataSchemaImpl extends MinimalEObjectImpl.Container implements DataSchema { |
| /** |
| * The cached value of the '{@link #getBase_TypedElement() <em>Base Typed Element</em>}' reference. |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @see #getBase_TypedElement() |
| * @generated |
| * @ordered |
| */ |
| protected TypedElement base_TypedElement; |
| |
| /** |
| * The cached value of the '{@link #getEnum() <em>Enum</em>}' reference list. |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @see #getEnum() |
| * @generated |
| * @ordered |
| */ |
| protected EList<MetaValueSpecification> enum_; |
| |
| /** |
| * The cached value of the '{@link #getNumberInterval() <em>Number Interval</em>}' reference. |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @see #getNumberInterval() |
| * @generated |
| * @ordered |
| */ |
| protected Interval numberInterval; |
| |
| /** |
| * The cached value of the '{@link #getRequired() <em>Required</em>}' reference list. |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @see #getRequired() |
| * @generated |
| * @ordered |
| */ |
| protected EList<Property> required; |
| |
| /** |
| * The cached value of the '{@link #getItems() <em>Items</em>}' reference list. |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @see #getItems() |
| * @generated |
| * @ordered |
| */ |
| protected EList<DataSchema> items; |
| |
| /** |
| * The cached value of the '{@link #getProperties() <em>Properties</em>}' reference. |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @see #getProperties() |
| * @generated |
| * @ordered |
| */ |
| protected DataSchema properties; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| protected DataSchemaImpl() { |
| super(); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| protected EClass eStaticClass() { |
| return WoTPackage.Literals.DATA_SCHEMA; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public TypedElement getBase_TypedElement() { |
| if (base_TypedElement != null && base_TypedElement.eIsProxy()) { |
| InternalEObject oldBase_TypedElement = (InternalEObject)base_TypedElement; |
| base_TypedElement = (TypedElement)eResolveProxy(oldBase_TypedElement); |
| if (base_TypedElement != oldBase_TypedElement) { |
| if (eNotificationRequired()) |
| eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT, oldBase_TypedElement, base_TypedElement)); |
| } |
| } |
| return base_TypedElement; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public TypedElement basicGetBase_TypedElement() { |
| return base_TypedElement; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public void setBase_TypedElement(TypedElement newBase_TypedElement) { |
| TypedElement oldBase_TypedElement = base_TypedElement; |
| base_TypedElement = newBase_TypedElement; |
| if (eNotificationRequired()) |
| eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT, oldBase_TypedElement, base_TypedElement)); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public EList<MetaValueSpecification> getEnum() { |
| if (enum_ == null) { |
| enum_ = new EObjectResolvingEList<MetaValueSpecification>(MetaValueSpecification.class, this, WoTPackage.DATA_SCHEMA__ENUM); |
| } |
| return enum_; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public Interval getNumberInterval() { |
| if (numberInterval != null && numberInterval.eIsProxy()) { |
| InternalEObject oldNumberInterval = (InternalEObject)numberInterval; |
| numberInterval = (Interval)eResolveProxy(oldNumberInterval); |
| if (numberInterval != oldNumberInterval) { |
| if (eNotificationRequired()) |
| eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL, oldNumberInterval, numberInterval)); |
| } |
| } |
| return numberInterval; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Interval basicGetNumberInterval() { |
| return numberInterval; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public void setNumberInterval(Interval newNumberInterval) { |
| Interval oldNumberInterval = numberInterval; |
| numberInterval = newNumberInterval; |
| if (eNotificationRequired()) |
| eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL, oldNumberInterval, numberInterval)); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public EList<Property> getRequired() { |
| if (required == null) { |
| required = new EObjectResolvingEList<Property>(Property.class, this, WoTPackage.DATA_SCHEMA__REQUIRED); |
| } |
| return required; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Property getRequired(String name, Type type) { |
| return getRequired(name, type, false, null); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Property getRequired(String name, Type type, boolean ignoreCase, EClass eClass) { |
| requiredLoop: for (Property required : getRequired()) { |
| if (eClass != null && !eClass.isInstance(required)) |
| continue requiredLoop; |
| if (name != null && !(ignoreCase ? name.equalsIgnoreCase(required.getName()) : name.equals(required.getName()))) |
| continue requiredLoop; |
| if (type != null && !type.equals(required.getType())) |
| continue requiredLoop; |
| return required; |
| } |
| return null; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public EList<DataSchema> getItems() { |
| if (items == null) { |
| items = new EObjectResolvingEList<DataSchema>(DataSchema.class, this, WoTPackage.DATA_SCHEMA__ITEMS); |
| } |
| return items; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public DataSchema getProperties() { |
| if (properties != null && properties.eIsProxy()) { |
| InternalEObject oldProperties = (InternalEObject)properties; |
| properties = (DataSchema)eResolveProxy(oldProperties); |
| if (properties != oldProperties) { |
| if (eNotificationRequired()) |
| eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.DATA_SCHEMA__PROPERTIES, oldProperties, properties)); |
| } |
| } |
| return properties; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public DataSchema basicGetProperties() { |
| return properties; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public void setProperties(DataSchema newProperties) { |
| DataSchema oldProperties = properties; |
| properties = newProperties; |
| if (eNotificationRequired()) |
| eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEMA__PROPERTIES, oldProperties, properties)); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public Object eGet(int featureID, boolean resolve, boolean coreType) { |
| switch (featureID) { |
| case WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT: |
| if (resolve) return getBase_TypedElement(); |
| return basicGetBase_TypedElement(); |
| case WoTPackage.DATA_SCHEMA__ENUM: |
| return getEnum(); |
| case WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL: |
| if (resolve) return getNumberInterval(); |
| return basicGetNumberInterval(); |
| case WoTPackage.DATA_SCHEMA__REQUIRED: |
| return getRequired(); |
| case WoTPackage.DATA_SCHEMA__ITEMS: |
| return getItems(); |
| case WoTPackage.DATA_SCHEMA__PROPERTIES: |
| if (resolve) return getProperties(); |
| return basicGetProperties(); |
| } |
| return super.eGet(featureID, resolve, coreType); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @SuppressWarnings("unchecked") |
| @Override |
| public void eSet(int featureID, Object newValue) { |
| switch (featureID) { |
| case WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT: |
| setBase_TypedElement((TypedElement)newValue); |
| return; |
| case WoTPackage.DATA_SCHEMA__ENUM: |
| getEnum().clear(); |
| getEnum().addAll((Collection<? extends MetaValueSpecification>)newValue); |
| return; |
| case WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL: |
| setNumberInterval((Interval)newValue); |
| return; |
| case WoTPackage.DATA_SCHEMA__REQUIRED: |
| getRequired().clear(); |
| getRequired().addAll((Collection<? extends Property>)newValue); |
| return; |
| case WoTPackage.DATA_SCHEMA__ITEMS: |
| getItems().clear(); |
| getItems().addAll((Collection<? extends DataSchema>)newValue); |
| return; |
| case WoTPackage.DATA_SCHEMA__PROPERTIES: |
| setProperties((DataSchema)newValue); |
| return; |
| } |
| super.eSet(featureID, newValue); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public void eUnset(int featureID) { |
| switch (featureID) { |
| case WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT: |
| setBase_TypedElement((TypedElement)null); |
| return; |
| case WoTPackage.DATA_SCHEMA__ENUM: |
| getEnum().clear(); |
| return; |
| case WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL: |
| setNumberInterval((Interval)null); |
| return; |
| case WoTPackage.DATA_SCHEMA__REQUIRED: |
| getRequired().clear(); |
| return; |
| case WoTPackage.DATA_SCHEMA__ITEMS: |
| getItems().clear(); |
| return; |
| case WoTPackage.DATA_SCHEMA__PROPERTIES: |
| setProperties((DataSchema)null); |
| return; |
| } |
| super.eUnset(featureID); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| @Override |
| public boolean eIsSet(int featureID) { |
| switch (featureID) { |
| case WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT: |
| return base_TypedElement != null; |
| case WoTPackage.DATA_SCHEMA__ENUM: |
| return enum_ != null && !enum_.isEmpty(); |
| case WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL: |
| return numberInterval != null; |
| case WoTPackage.DATA_SCHEMA__REQUIRED: |
| return required != null && !required.isEmpty(); |
| case WoTPackage.DATA_SCHEMA__ITEMS: |
| return items != null && !items.isEmpty(); |
| case WoTPackage.DATA_SCHEMA__PROPERTIES: |
| return properties != null; |
| } |
| return super.eIsSet(featureID); |
| } |
| |
| } //DataSchemaImpl |