blob: 705256476d55635a4b0c75d7062c59b5b78c6416 [file] [log] [blame]
/**
* 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