Package org.telehash.model.impl

Source Code of org.telehash.model.impl.LineImpl

/**
* <copyright>
* </copyright>
*
* $Id$
*/
package org.telehash.model.impl;

import java.net.InetSocketAddress;
import java.security.SecureRandom;
import java.util.Collection;

import org.apache.mina.core.session.IoSession;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
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.EObjectImpl;
import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
import org.eclipse.emf.ecore.util.EObjectContainmentEList;
import org.eclipse.emf.ecore.util.InternalEList;
import org.telehash.Hash;
import org.telehash.SwitchHandler;
import org.telehash.model.Line;
import org.telehash.model.TapRule;
import org.telehash.model.TelehashPackage;
import org.telehash.model.Telex;

import com.google.common.base.Objects;

/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Line</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
*   <li>{@link org.telehash.model.impl.LineImpl#getAddress <em>Address</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getEnd <em>End</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getNeighbors <em>Neighbors</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getRingIn <em>Ring In</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getRingOut <em>Ring Out</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getInit <em>Init</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getSeenAt <em>Seen At</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getSentAt <em>Sent At</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getLineAt <em>Line At</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getTapLastAt <em>Tap Last At</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getBr <em>Br</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getBrIn <em>Br In</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getBrOut <em>Br Out</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getBsent <em>Bsent</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getLineId <em>Line Id</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#isVisible <em>Visible</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#isAdvertised <em>Advertised</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getRules <em>Rules</em>}</li>
*   <li>{@link org.telehash.model.impl.LineImpl#getSession <em>Session</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class LineImpl extends EObjectImpl implements Line {
  /**
   * The default value of the '{@link #getAddress() <em>Address</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getAddress()
   * @generated
   * @ordered
   */
  protected static final InetSocketAddress ADDRESS_EDEFAULT = null;

  /**
   * The cached value of the '{@link #getAddress() <em>Address</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getAddress()
   * @generated
   * @ordered
   */
  protected InetSocketAddress address = ADDRESS_EDEFAULT;

  /**
   * The default value of the '{@link #getEnd() <em>End</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getEnd()
   * @generated
   * @ordered
   */
  protected static final Hash END_EDEFAULT = null;

  /**
   * The cached value of the '{@link #getEnd() <em>End</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getEnd()
   * @generated
   * @ordered
   */
  protected Hash end = END_EDEFAULT;

  /**
   * The cached value of the '{@link #getNeighbors() <em>Neighbors</em>}' attribute list.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getNeighbors()
   * @generated
   * @ordered
   */
  protected EList<Hash> neighbors;

  /**
   * The default value of the '{@link #getRingIn() <em>Ring In</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getRingIn()
   * @generated
   * @ordered
   */
  protected static final int RING_IN_EDEFAULT = 0;

  /**
   * The cached value of the '{@link #getRingIn() <em>Ring In</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getRingIn()
   * @generated
   * @ordered
   */
  protected int ringIn = RING_IN_EDEFAULT;

  /**
   * This is true if the Ring In attribute has been set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   * @ordered
   */
  protected boolean ringInESet;

  /**
   * The default value of the '{@link #getRingOut() <em>Ring Out</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getRingOut()
   * @generated
   * @ordered
   */
  protected static final int RING_OUT_EDEFAULT = 0;

  /**
   * The cached value of the '{@link #getRingOut() <em>Ring Out</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getRingOut()
   * @generated
   * @ordered
   */
  protected int ringOut = RING_OUT_EDEFAULT;

  /**
   * This is true if the Ring Out attribute has been set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   * @ordered
   */
  protected boolean ringOutESet;

  /**
   * The default value of the '{@link #getInit() <em>Init</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getInit()
   * @generated
   * @ordered
   */
  protected static final long INIT_EDEFAULT = 0L;

  /**
   * The cached value of the '{@link #getInit() <em>Init</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getInit()
   * @generated
   * @ordered
   */
  protected long init = INIT_EDEFAULT;

  /**
   * This is true if the Init attribute has been set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   * @ordered
   */
  protected boolean initESet;

  /**
   * The default value of the '{@link #getSeenAt() <em>Seen At</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getSeenAt()
   * @generated
   * @ordered
   */
  protected static final long SEEN_AT_EDEFAULT = 0L;

  /**
   * The cached value of the '{@link #getSeenAt() <em>Seen At</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getSeenAt()
   * @generated
   * @ordered
   */
  protected long seenAt = SEEN_AT_EDEFAULT;

  /**
   * This is true if the Seen At attribute has been set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   * @ordered
   */
  protected boolean seenAtESet;

  /**
   * The default value of the '{@link #getSentAt() <em>Sent At</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getSentAt()
   * @generated
   * @ordered
   */
  protected static final long SENT_AT_EDEFAULT = 0L;

  /**
   * The cached value of the '{@link #getSentAt() <em>Sent At</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getSentAt()
   * @generated
   * @ordered
   */
  protected long sentAt = SENT_AT_EDEFAULT;

  /**
   * This is true if the Sent At attribute has been set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   * @ordered
   */
  protected boolean sentAtESet;

  /**
   * The default value of the '{@link #getLineAt() <em>Line At</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getLineAt()
   * @generated
   * @ordered
   */
  protected static final long LINE_AT_EDEFAULT = 0L;

  /**
   * The cached value of the '{@link #getLineAt() <em>Line At</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getLineAt()
   * @generated
   * @ordered
   */
  protected long lineAt = LINE_AT_EDEFAULT;

  /**
   * This is true if the Line At attribute has been set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   * @ordered
   */
  protected boolean lineAtESet;

  /**
   * The default value of the '{@link #getTapLastAt() <em>Tap Last At</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getTapLastAt()
   * @generated
   * @ordered
   */
  protected static final int TAP_LAST_AT_EDEFAULT = 0;

  /**
   * The cached value of the '{@link #getTapLastAt() <em>Tap Last At</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getTapLastAt()
   * @generated
   * @ordered
   */
  protected int tapLastAt = TAP_LAST_AT_EDEFAULT;

  /**
   * This is true if the Tap Last At attribute has been set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   * @ordered
   */
  protected boolean tapLastAtESet;

  /**
   * The default value of the '{@link #getBr() <em>Br</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBr()
   * @generated
   * @ordered
   */
  protected static final int BR_EDEFAULT = 0;

  /**
   * The cached value of the '{@link #getBr() <em>Br</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBr()
   * @generated
   * @ordered
   */
  protected int br = BR_EDEFAULT;

  /**
   * The default value of the '{@link #getBrIn() <em>Br In</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBrIn()
   * @generated
   * @ordered
   */
  protected static final int BR_IN_EDEFAULT = 0;

  /**
   * The cached value of the '{@link #getBrIn() <em>Br In</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBrIn()
   * @generated
   * @ordered
   */
  protected int brIn = BR_IN_EDEFAULT;

  /**
   * The default value of the '{@link #getBrOut() <em>Br Out</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBrOut()
   * @generated
   * @ordered
   */
  protected static final int BR_OUT_EDEFAULT = 0;

  /**
   * The cached value of the '{@link #getBrOut() <em>Br Out</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBrOut()
   * @generated
   * @ordered
   */
  protected int brOut = BR_OUT_EDEFAULT;

  /**
   * The default value of the '{@link #getBsent() <em>Bsent</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBsent()
   * @generated
   * @ordered
   */
  protected static final int BSENT_EDEFAULT = 0;

  /**
   * The cached value of the '{@link #getBsent() <em>Bsent</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getBsent()
   * @generated
   * @ordered
   */
  protected int bsent = BSENT_EDEFAULT;

  /**
   * The default value of the '{@link #getLineId() <em>Line Id</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getLineId()
   * @generated
   * @ordered
   */
  protected static final int LINE_ID_EDEFAULT = 0;

  /**
   * The cached value of the '{@link #getLineId() <em>Line Id</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getLineId()
   * @generated
   * @ordered
   */
  protected int lineId = LINE_ID_EDEFAULT;

  /**
   * This is true if the Line Id attribute has been set.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   * @ordered
   */
  protected boolean lineIdESet;

  /**
   * The default value of the '{@link #isVisible() <em>Visible</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #isVisible()
   * @generated
   * @ordered
   */
  protected static final boolean VISIBLE_EDEFAULT = false;

  /**
   * The cached value of the '{@link #isVisible() <em>Visible</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #isVisible()
   * @generated
   * @ordered
   */
  protected boolean visible = VISIBLE_EDEFAULT;

  /**
   * The default value of the '{@link #isAdvertised() <em>Advertised</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #isAdvertised()
   * @generated
   * @ordered
   */
  protected static final boolean ADVERTISED_EDEFAULT = false;

  /**
   * The cached value of the '{@link #isAdvertised() <em>Advertised</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #isAdvertised()
   * @generated
   * @ordered
   */
  protected boolean advertised = ADVERTISED_EDEFAULT;

  /**
   * The cached value of the '{@link #getRules() <em>Rules</em>}' containment reference list.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getRules()
   * @generated
   * @ordered
   */
  protected EList<TapRule> rules;

  /**
   * The default value of the '{@link #getSession() <em>Session</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getSession()
   * @generated
   * @ordered
   */
  protected static final IoSession SESSION_EDEFAULT = null;

  /**
   * The cached value of the '{@link #getSession() <em>Session</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #getSession()
   * @generated
   * @ordered
   */
  protected IoSession session = SESSION_EDEFAULT;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated NOT
   */
  protected LineImpl() {
    super();
    setInit(SwitchHandler.time());
    setRingOut(new SecureRandom().nextInt(32767) + 1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  protected EClass eStaticClass() {
    return TelehashPackage.Literals.LINE;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public InetSocketAddress getAddress() {
    return address;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withAddress(InetSocketAddress value) {
    setAddress(value);
    return this;
  }

  public void setAddress(InetSocketAddress newAddress) {
    InetSocketAddress oldAddress = address;
    address = newAddress;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__ADDRESS, oldAddress, address));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Hash getEnd() {
    return end;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withEnd(Hash value) {
    setEnd(value);
    return this;
  }

  public void setEnd(Hash newEnd) {
    Hash oldEnd = end;
    end = newEnd;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__END, oldEnd, end));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EList<Hash> getNeighbors() {
    if (neighbors == null) {
      neighbors = new EDataTypeUniqueEList<Hash>(Hash.class, this,
          TelehashPackage.LINE__NEIGHBORS);
    }
    return neighbors;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getRingIn() {
    return ringIn;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withRingIn(int value) {
    setRingIn(value);
    return this;
  }

  public void setRingIn(int newRingIn) {
    int oldRingIn = ringIn;
    ringIn = newRingIn;
    boolean oldRingInESet = ringInESet;
    ringInESet = true;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__RING_IN, oldRingIn, ringIn,
          !oldRingInESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetRingIn() {
    int oldRingIn = ringIn;
    boolean oldRingInESet = ringInESet;
    ringIn = RING_IN_EDEFAULT;
    ringInESet = false;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.UNSET,
          TelehashPackage.LINE__RING_IN, oldRingIn, RING_IN_EDEFAULT,
          oldRingInESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetRingIn() {
    return ringInESet;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getRingOut() {
    return ringOut;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withRingOut(int value) {
    setRingOut(value);
    return this;
  }

  public void setRingOut(int newRingOut) {
    int oldRingOut = ringOut;
    ringOut = newRingOut;
    boolean oldRingOutESet = ringOutESet;
    ringOutESet = true;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__RING_OUT, oldRingOut, ringOut,
          !oldRingOutESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetRingOut() {
    int oldRingOut = ringOut;
    boolean oldRingOutESet = ringOutESet;
    ringOut = RING_OUT_EDEFAULT;
    ringOutESet = false;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.UNSET,
          TelehashPackage.LINE__RING_OUT, oldRingOut,
          RING_OUT_EDEFAULT, oldRingOutESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetRingOut() {
    return ringOutESet;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public long getInit() {
    return init;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withInit(long value) {
    setInit(value);
    return this;
  }

  public void setInit(long newInit) {
    long oldInit = init;
    init = newInit;
    boolean oldInitESet = initESet;
    initESet = true;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__INIT, oldInit, init, !oldInitESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetInit() {
    long oldInit = init;
    boolean oldInitESet = initESet;
    init = INIT_EDEFAULT;
    initESet = false;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.UNSET,
          TelehashPackage.LINE__INIT, oldInit, INIT_EDEFAULT,
          oldInitESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetInit() {
    return initESet;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public long getSeenAt() {
    return seenAt;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withSeenAt(long value) {
    setSeenAt(value);
    return this;
  }

  public void setSeenAt(long newSeenAt) {
    long oldSeenAt = seenAt;
    seenAt = newSeenAt;
    boolean oldSeenAtESet = seenAtESet;
    seenAtESet = true;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__SEEN_AT, oldSeenAt, seenAt,
          !oldSeenAtESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetSeenAt() {
    long oldSeenAt = seenAt;
    boolean oldSeenAtESet = seenAtESet;
    seenAt = SEEN_AT_EDEFAULT;
    seenAtESet = false;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.UNSET,
          TelehashPackage.LINE__SEEN_AT, oldSeenAt, SEEN_AT_EDEFAULT,
          oldSeenAtESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetSeenAt() {
    return seenAtESet;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public long getSentAt() {
    return sentAt;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withSentAt(long value) {
    setSentAt(value);
    return this;
  }

  public void setSentAt(long newSentAt) {
    long oldSentAt = sentAt;
    sentAt = newSentAt;
    boolean oldSentAtESet = sentAtESet;
    sentAtESet = true;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__SENT_AT, oldSentAt, sentAt,
          !oldSentAtESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetSentAt() {
    long oldSentAt = sentAt;
    boolean oldSentAtESet = sentAtESet;
    sentAt = SENT_AT_EDEFAULT;
    sentAtESet = false;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.UNSET,
          TelehashPackage.LINE__SENT_AT, oldSentAt, SENT_AT_EDEFAULT,
          oldSentAtESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetSentAt() {
    return sentAtESet;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public long getLineAt() {
    return lineAt;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withLineAt(long value) {
    setLineAt(value);
    return this;
  }

  public void setLineAt(long newLineAt) {
    long oldLineAt = lineAt;
    lineAt = newLineAt;
    boolean oldLineAtESet = lineAtESet;
    lineAtESet = true;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__LINE_AT, oldLineAt, lineAt,
          !oldLineAtESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetLineAt() {
    long oldLineAt = lineAt;
    boolean oldLineAtESet = lineAtESet;
    lineAt = LINE_AT_EDEFAULT;
    lineAtESet = false;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.UNSET,
          TelehashPackage.LINE__LINE_AT, oldLineAt, LINE_AT_EDEFAULT,
          oldLineAtESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetLineAt() {
    return lineAtESet;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getTapLastAt() {
    return tapLastAt;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withTapLastAt(int value) {
    setTapLastAt(value);
    return this;
  }

  public void setTapLastAt(int newTapLastAt) {
    int oldTapLastAt = tapLastAt;
    tapLastAt = newTapLastAt;
    boolean oldTapLastAtESet = tapLastAtESet;
    tapLastAtESet = true;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__TAP_LAST_AT, oldTapLastAt, tapLastAt,
          !oldTapLastAtESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetTapLastAt() {
    int oldTapLastAt = tapLastAt;
    boolean oldTapLastAtESet = tapLastAtESet;
    tapLastAt = TAP_LAST_AT_EDEFAULT;
    tapLastAtESet = false;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.UNSET,
          TelehashPackage.LINE__TAP_LAST_AT, oldTapLastAt,
          TAP_LAST_AT_EDEFAULT, oldTapLastAtESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetTapLastAt() {
    return tapLastAtESet;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getBr() {
    return br;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withBr(int value) {
    setBr(value);
    return this;
  }

  public void setBr(int newBr) {
    int oldBr = br;
    br = newBr;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__BR, oldBr, br));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getBrIn() {
    return brIn;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withBrIn(int value) {
    setBrIn(value);
    return this;
  }

  public void setBrIn(int newBrIn) {
    int oldBrIn = brIn;
    brIn = newBrIn;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__BR_IN, oldBrIn, brIn));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getBrOut() {
    return brOut;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withBrOut(int value) {
    setBrOut(value);
    return this;
  }

  public void setBrOut(int newBrOut) {
    int oldBrOut = brOut;
    brOut = newBrOut;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__BR_OUT, oldBrOut, brOut));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getBsent() {
    return bsent;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withBsent(int value) {
    setBsent(value);
    return this;
  }

  public void setBsent(int newBsent) {
    int oldBsent = bsent;
    bsent = newBsent;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__BSENT, oldBsent, bsent));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public int getLineId() {
    return lineId;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withLineId(int value) {
    setLineId(value);
    return this;
  }

  public void setLineId(int newLineId) {
    int oldLineId = lineId;
    lineId = newLineId;
    boolean oldLineIdESet = lineIdESet;
    lineIdESet = true;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__LINE_ID, oldLineId, lineId,
          !oldLineIdESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetLineId() {
    int oldLineId = lineId;
    boolean oldLineIdESet = lineIdESet;
    lineId = LINE_ID_EDEFAULT;
    lineIdESet = false;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.UNSET,
          TelehashPackage.LINE__LINE_ID, oldLineId, LINE_ID_EDEFAULT,
          oldLineIdESet));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetLineId() {
    return lineIdESet;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isVisible() {
    return visible;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withVisible(boolean value) {
    setVisible(value);
    return this;
  }

  public void setVisible(boolean newVisible) {
    boolean oldVisible = visible;
    visible = newVisible;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__VISIBLE, oldVisible, visible));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isAdvertised() {
    return advertised;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withAdvertised(boolean value) {
    setAdvertised(value);
    return this;
  }

  public void setAdvertised(boolean newAdvertised) {
    boolean oldAdvertised = advertised;
    advertised = newAdvertised;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__ADVERTISED, oldAdvertised, advertised));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EList<TapRule> getRules() {
    if (rules == null) {
      rules = new EObjectContainmentEList.Unsettable<TapRule>(
          TapRule.class, this, TelehashPackage.LINE__RULES);
    }
    return rules;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void unsetRules() {
    if (rules != null)
      ((InternalEList.Unsettable<?>) rules).unset();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public boolean isSetRules() {
    return rules != null && ((InternalEList.Unsettable<?>) rules).isSet();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public IoSession getSession() {
    return session;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Line withSession(IoSession value) {
    setSession(value);
    return this;
  }

  public void setSession(IoSession newSession) {
    IoSession oldSession = session;
    session = newSession;
    if (eNotificationRequired())
      eNotify(new ENotificationImpl(this, Notification.SET,
          TelehashPackage.LINE__SESSION, oldSession, session));
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated NOT
   */
  public boolean isRulesMatch(Telex telex) {
    for (TapRule tapRule : getRules()) {
      if (!isRuleMatch(tapRule, telex)) {
        return false;
      }
    }
    return true;
  }
 
  private boolean isRuleMatch(TapRule tapRule, Telex telex) {
    for (String hasKey : tapRule.getHas()) {
      if (telex.get(hasKey) == null) {
        return false;
      }
    }
    for (String isField : tapRule.getIs().getFieldNames()) {
      if (!Objects.equal(tapRule.get(isField), telex.get(isField))) {
        return false;
      }
    }
    return true;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public NotificationChain eInverseRemove(InternalEObject otherEnd,
      int featureID, NotificationChain msgs) {
    switch (featureID) {
    case TelehashPackage.LINE__RULES:
      return ((InternalEList<?>) getRules()).basicRemove(otherEnd, msgs);
    }
    return super.eInverseRemove(otherEnd, featureID, msgs);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public Object eGet(int featureID, boolean resolve, boolean coreType) {
    switch (featureID) {
    case TelehashPackage.LINE__ADDRESS:
      return getAddress();
    case TelehashPackage.LINE__END:
      return getEnd();
    case TelehashPackage.LINE__NEIGHBORS:
      return getNeighbors();
    case TelehashPackage.LINE__RING_IN:
      return getRingIn();
    case TelehashPackage.LINE__RING_OUT:
      return getRingOut();
    case TelehashPackage.LINE__INIT:
      return getInit();
    case TelehashPackage.LINE__SEEN_AT:
      return getSeenAt();
    case TelehashPackage.LINE__SENT_AT:
      return getSentAt();
    case TelehashPackage.LINE__LINE_AT:
      return getLineAt();
    case TelehashPackage.LINE__TAP_LAST_AT:
      return getTapLastAt();
    case TelehashPackage.LINE__BR:
      return getBr();
    case TelehashPackage.LINE__BR_IN:
      return getBrIn();
    case TelehashPackage.LINE__BR_OUT:
      return getBrOut();
    case TelehashPackage.LINE__BSENT:
      return getBsent();
    case TelehashPackage.LINE__LINE_ID:
      return getLineId();
    case TelehashPackage.LINE__VISIBLE:
      return isVisible();
    case TelehashPackage.LINE__ADVERTISED:
      return isAdvertised();
    case TelehashPackage.LINE__RULES:
      return getRules();
    case TelehashPackage.LINE__SESSION:
      return getSession();
    }
    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 TelehashPackage.LINE__ADDRESS:
      setAddress((InetSocketAddress) newValue);
      return;
    case TelehashPackage.LINE__END:
      setEnd((Hash) newValue);
      return;
    case TelehashPackage.LINE__NEIGHBORS:
      getNeighbors().clear();
      getNeighbors().addAll((Collection<? extends Hash>) newValue);
      return;
    case TelehashPackage.LINE__RING_IN:
      setRingIn((Integer) newValue);
      return;
    case TelehashPackage.LINE__RING_OUT:
      setRingOut((Integer) newValue);
      return;
    case TelehashPackage.LINE__INIT:
      setInit((Long) newValue);
      return;
    case TelehashPackage.LINE__SEEN_AT:
      setSeenAt((Long) newValue);
      return;
    case TelehashPackage.LINE__SENT_AT:
      setSentAt((Long) newValue);
      return;
    case TelehashPackage.LINE__LINE_AT:
      setLineAt((Long) newValue);
      return;
    case TelehashPackage.LINE__TAP_LAST_AT:
      setTapLastAt((Integer) newValue);
      return;
    case TelehashPackage.LINE__BR:
      setBr((Integer) newValue);
      return;
    case TelehashPackage.LINE__BR_IN:
      setBrIn((Integer) newValue);
      return;
    case TelehashPackage.LINE__BR_OUT:
      setBrOut((Integer) newValue);
      return;
    case TelehashPackage.LINE__BSENT:
      setBsent((Integer) newValue);
      return;
    case TelehashPackage.LINE__LINE_ID:
      setLineId((Integer) newValue);
      return;
    case TelehashPackage.LINE__VISIBLE:
      setVisible((Boolean) newValue);
      return;
    case TelehashPackage.LINE__ADVERTISED:
      setAdvertised((Boolean) newValue);
      return;
    case TelehashPackage.LINE__RULES:
      getRules().clear();
      getRules().addAll((Collection<? extends TapRule>) newValue);
      return;
    case TelehashPackage.LINE__SESSION:
      setSession((IoSession) newValue);
      return;
    }
    super.eSet(featureID, newValue);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public void eUnset(int featureID) {
    switch (featureID) {
    case TelehashPackage.LINE__ADDRESS:
      setAddress(ADDRESS_EDEFAULT);
      return;
    case TelehashPackage.LINE__END:
      setEnd(END_EDEFAULT);
      return;
    case TelehashPackage.LINE__NEIGHBORS:
      getNeighbors().clear();
      return;
    case TelehashPackage.LINE__RING_IN:
      unsetRingIn();
      return;
    case TelehashPackage.LINE__RING_OUT:
      unsetRingOut();
      return;
    case TelehashPackage.LINE__INIT:
      unsetInit();
      return;
    case TelehashPackage.LINE__SEEN_AT:
      unsetSeenAt();
      return;
    case TelehashPackage.LINE__SENT_AT:
      unsetSentAt();
      return;
    case TelehashPackage.LINE__LINE_AT:
      unsetLineAt();
      return;
    case TelehashPackage.LINE__TAP_LAST_AT:
      unsetTapLastAt();
      return;
    case TelehashPackage.LINE__BR:
      setBr(BR_EDEFAULT);
      return;
    case TelehashPackage.LINE__BR_IN:
      setBrIn(BR_IN_EDEFAULT);
      return;
    case TelehashPackage.LINE__BR_OUT:
      setBrOut(BR_OUT_EDEFAULT);
      return;
    case TelehashPackage.LINE__BSENT:
      setBsent(BSENT_EDEFAULT);
      return;
    case TelehashPackage.LINE__LINE_ID:
      unsetLineId();
      return;
    case TelehashPackage.LINE__VISIBLE:
      setVisible(VISIBLE_EDEFAULT);
      return;
    case TelehashPackage.LINE__ADVERTISED:
      setAdvertised(ADVERTISED_EDEFAULT);
      return;
    case TelehashPackage.LINE__RULES:
      unsetRules();
      return;
    case TelehashPackage.LINE__SESSION:
      setSession(SESSION_EDEFAULT);
      return;
    }
    super.eUnset(featureID);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public boolean eIsSet(int featureID) {
    switch (featureID) {
    case TelehashPackage.LINE__ADDRESS:
      return ADDRESS_EDEFAULT == null ? address != null
          : !ADDRESS_EDEFAULT.equals(address);
    case TelehashPackage.LINE__END:
      return END_EDEFAULT == null ? end != null : !END_EDEFAULT
          .equals(end);
    case TelehashPackage.LINE__NEIGHBORS:
      return neighbors != null && !neighbors.isEmpty();
    case TelehashPackage.LINE__RING_IN:
      return isSetRingIn();
    case TelehashPackage.LINE__RING_OUT:
      return isSetRingOut();
    case TelehashPackage.LINE__INIT:
      return isSetInit();
    case TelehashPackage.LINE__SEEN_AT:
      return isSetSeenAt();
    case TelehashPackage.LINE__SENT_AT:
      return isSetSentAt();
    case TelehashPackage.LINE__LINE_AT:
      return isSetLineAt();
    case TelehashPackage.LINE__TAP_LAST_AT:
      return isSetTapLastAt();
    case TelehashPackage.LINE__BR:
      return br != BR_EDEFAULT;
    case TelehashPackage.LINE__BR_IN:
      return brIn != BR_IN_EDEFAULT;
    case TelehashPackage.LINE__BR_OUT:
      return brOut != BR_OUT_EDEFAULT;
    case TelehashPackage.LINE__BSENT:
      return bsent != BSENT_EDEFAULT;
    case TelehashPackage.LINE__LINE_ID:
      return isSetLineId();
    case TelehashPackage.LINE__VISIBLE:
      return visible != VISIBLE_EDEFAULT;
    case TelehashPackage.LINE__ADVERTISED:
      return advertised != ADVERTISED_EDEFAULT;
    case TelehashPackage.LINE__RULES:
      return isSetRules();
    case TelehashPackage.LINE__SESSION:
      return SESSION_EDEFAULT == null ? session != null
          : !SESSION_EDEFAULT.equals(session);
    }
    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(" (address: ");
    result.append(address);
    result.append(", end: ");
    result.append(end);
    result.append(", neighbors: ");
    result.append(neighbors);
    result.append(", ringIn: ");
    if (ringInESet)
      result.append(ringIn);
    else
      result.append("<unset>");
    result.append(", ringOut: ");
    if (ringOutESet)
      result.append(ringOut);
    else
      result.append("<unset>");
    result.append(", init: ");
    if (initESet)
      result.append(init);
    else
      result.append("<unset>");
    result.append(", seenAt: ");
    if (seenAtESet)
      result.append(seenAt);
    else
      result.append("<unset>");
    result.append(", sentAt: ");
    if (sentAtESet)
      result.append(sentAt);
    else
      result.append("<unset>");
    result.append(", lineAt: ");
    if (lineAtESet)
      result.append(lineAt);
    else
      result.append("<unset>");
    result.append(", tapLastAt: ");
    if (tapLastAtESet)
      result.append(tapLastAt);
    else
      result.append("<unset>");
    result.append(", br: ");
    result.append(br);
    result.append(", brIn: ");
    result.append(brIn);
    result.append(", brOut: ");
    result.append(brOut);
    result.append(", bsent: ");
    result.append(bsent);
    result.append(", lineId: ");
    if (lineIdESet)
      result.append(lineId);
    else
      result.append("<unset>");
    result.append(", visible: ");
    result.append(visible);
    result.append(", advertised: ");
    result.append(advertised);
    result.append(", session: ");
    result.append(session);
    result.append(')');
    return result.toString();
  }

} //LineImpl
TOP

Related Classes of org.telehash.model.impl.LineImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.