001/**
002 * ******************************************************************************
003 * Copyright (c) 2018 Red Hat Inc
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *  *
009 * Contributors:
010 *     Jens Reimann - initial API and implementation
011 *  ******************************************************************************
012 */
013package de.dentrassi.varlink.idl.varlinkIdl.impl;
014
015import de.dentrassi.varlink.idl.varlinkIdl.Interface;
016import de.dentrassi.varlink.idl.varlinkIdl.Member;
017import de.dentrassi.varlink.idl.varlinkIdl.VarlinkIdlPackage;
018
019import java.util.Collection;
020
021import org.eclipse.emf.common.notify.Notification;
022import org.eclipse.emf.common.notify.NotificationChain;
023
024import org.eclipse.emf.common.util.EList;
025
026import org.eclipse.emf.ecore.EClass;
027import org.eclipse.emf.ecore.InternalEObject;
028
029import org.eclipse.emf.ecore.impl.ENotificationImpl;
030import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
031
032import org.eclipse.emf.ecore.util.EObjectContainmentEList;
033import org.eclipse.emf.ecore.util.InternalEList;
034
035/**
036 * <!-- begin-user-doc -->
037 * An implementation of the model object '<em><b>Interface</b></em>'.
038 * <!-- end-user-doc -->
039 * <p>
040 * The following features are implemented:
041 * </p>
042 * <ul>
043 *   <li>{@link de.dentrassi.varlink.idl.varlinkIdl.impl.InterfaceImpl#getName <em>Name</em>}</li>
044 *   <li>{@link de.dentrassi.varlink.idl.varlinkIdl.impl.InterfaceImpl#getMembers <em>Members</em>}</li>
045 * </ul>
046 *
047 * @generated
048 */
049public class InterfaceImpl extends MinimalEObjectImpl.Container implements Interface
050{
051  /**
052   * The default value of the '{@link #getName() <em>Name</em>}' attribute.
053   * <!-- begin-user-doc -->
054   * <!-- end-user-doc -->
055   * @see #getName()
056   * @generated
057   * @ordered
058   */
059  protected static final String NAME_EDEFAULT = null;
060
061  /**
062   * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
063   * <!-- begin-user-doc -->
064   * <!-- end-user-doc -->
065   * @see #getName()
066   * @generated
067   * @ordered
068   */
069  protected String name = NAME_EDEFAULT;
070
071  /**
072   * The cached value of the '{@link #getMembers() <em>Members</em>}' containment reference list.
073   * <!-- begin-user-doc -->
074   * <!-- end-user-doc -->
075   * @see #getMembers()
076   * @generated
077   * @ordered
078   */
079  protected EList<Member> members;
080
081  /**
082   * <!-- begin-user-doc -->
083   * <!-- end-user-doc -->
084   * @generated
085   */
086  protected InterfaceImpl()
087  {
088    super();
089  }
090
091  /**
092   * <!-- begin-user-doc -->
093   * <!-- end-user-doc -->
094   * @generated
095   */
096  @Override
097  protected EClass eStaticClass()
098  {
099    return VarlinkIdlPackage.Literals.INTERFACE;
100  }
101
102  /**
103   * <!-- begin-user-doc -->
104   * <!-- end-user-doc -->
105   * @generated
106   */
107  public String getName()
108  {
109    return name;
110  }
111
112  /**
113   * <!-- begin-user-doc -->
114   * <!-- end-user-doc -->
115   * @generated
116   */
117  public void setName(String newName)
118  {
119    String oldName = name;
120    name = newName;
121    if (eNotificationRequired())
122      eNotify(new ENotificationImpl(this, Notification.SET, VarlinkIdlPackage.INTERFACE__NAME, oldName, name));
123  }
124
125  /**
126   * <!-- begin-user-doc -->
127   * <!-- end-user-doc -->
128   * @generated
129   */
130  public EList<Member> getMembers()
131  {
132    if (members == null)
133    {
134      members = new EObjectContainmentEList<Member>(Member.class, this, VarlinkIdlPackage.INTERFACE__MEMBERS);
135    }
136    return members;
137  }
138
139  /**
140   * <!-- begin-user-doc -->
141   * <!-- end-user-doc -->
142   * @generated
143   */
144  @Override
145  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
146  {
147    switch (featureID)
148    {
149      case VarlinkIdlPackage.INTERFACE__MEMBERS:
150        return ((InternalEList<?>)getMembers()).basicRemove(otherEnd, msgs);
151    }
152    return super.eInverseRemove(otherEnd, featureID, msgs);
153  }
154
155  /**
156   * <!-- begin-user-doc -->
157   * <!-- end-user-doc -->
158   * @generated
159   */
160  @Override
161  public Object eGet(int featureID, boolean resolve, boolean coreType)
162  {
163    switch (featureID)
164    {
165      case VarlinkIdlPackage.INTERFACE__NAME:
166        return getName();
167      case VarlinkIdlPackage.INTERFACE__MEMBERS:
168        return getMembers();
169    }
170    return super.eGet(featureID, resolve, coreType);
171  }
172
173  /**
174   * <!-- begin-user-doc -->
175   * <!-- end-user-doc -->
176   * @generated
177   */
178  @SuppressWarnings("unchecked")
179  @Override
180  public void eSet(int featureID, Object newValue)
181  {
182    switch (featureID)
183    {
184      case VarlinkIdlPackage.INTERFACE__NAME:
185        setName((String)newValue);
186        return;
187      case VarlinkIdlPackage.INTERFACE__MEMBERS:
188        getMembers().clear();
189        getMembers().addAll((Collection<? extends Member>)newValue);
190        return;
191    }
192    super.eSet(featureID, newValue);
193  }
194
195  /**
196   * <!-- begin-user-doc -->
197   * <!-- end-user-doc -->
198   * @generated
199   */
200  @Override
201  public void eUnset(int featureID)
202  {
203    switch (featureID)
204    {
205      case VarlinkIdlPackage.INTERFACE__NAME:
206        setName(NAME_EDEFAULT);
207        return;
208      case VarlinkIdlPackage.INTERFACE__MEMBERS:
209        getMembers().clear();
210        return;
211    }
212    super.eUnset(featureID);
213  }
214
215  /**
216   * <!-- begin-user-doc -->
217   * <!-- end-user-doc -->
218   * @generated
219   */
220  @Override
221  public boolean eIsSet(int featureID)
222  {
223    switch (featureID)
224    {
225      case VarlinkIdlPackage.INTERFACE__NAME:
226        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
227      case VarlinkIdlPackage.INTERFACE__MEMBERS:
228        return members != null && !members.isEmpty();
229    }
230    return super.eIsSet(featureID);
231  }
232
233  /**
234   * <!-- begin-user-doc -->
235   * <!-- end-user-doc -->
236   * @generated
237   */
238  @Override
239  public String toString()
240  {
241    if (eIsProxy()) return super.toString();
242
243    StringBuffer result = new StringBuffer(super.toString());
244    result.append(" (name: ");
245    result.append(name);
246    result.append(')');
247    return result.toString();
248  }
249
250} //InterfaceImpl