SystemInputOutputKey.java

/*
 * Created on 2008/11/27
 * Copyright (C) 2008 Koga Laboratory. All rights reserved.
 *
 */
package org.mklab.tool.control;

/**
 * システムの入出力を特定するためのキーを表すクラスです。
 * 
 * @author koga
 * 
 */
final public class SystemInputOutputKey implements Comparable<SystemInputOutputKey> {

  /** 入力番号 */
  private int inputNumber;
  /** 出力番号 */
  private int outputNumber;

  /**
   * 新しく生成された<code>SystemInputOutputKey</code>オブジェクトを初期化します。
   * 
   * @param inputNumber 入力番号
   * @param outputNumber 出力番号
   */
  public SystemInputOutputKey(final int inputNumber, final int outputNumber) {
    this.inputNumber = inputNumber;
    this.outputNumber = outputNumber;
  }

  /**
   * 入力番号を返します。
   * 
   * @return 入力番号
   */
  public int getInputNumber() {
    return this.inputNumber;
  }

  /**
   * 入力番号を設定します。
   * 
   * @param inputNumber 入力番号
   */
  public void setInputNumber(int inputNumber) {
    this.inputNumber = inputNumber;
  }

  /**
   * 出力番号を返します。
   * 
   * @return 出力番号
   */
  public int getOutputNumber() {
    return this.outputNumber;
  }

  /**
   * 出力番号を設定します。
   * 
   * @param outputNumber 出力番号
   */
  public void setOutputNumber(int outputNumber) {
    this.outputNumber = outputNumber;
  }

  /**
   * @see java.lang.Object#hashCode()
   */
  @Override
  public int hashCode() {
    int hashCode = 1;
    hashCode = 31 * hashCode + this.inputNumber;
    hashCode = 31 * hashCode + this.outputNumber;
    return hashCode;
  }

  /**
   * @see java.lang.Object#equals(java.lang.Object)
   */
  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null) {
      return false;
    }
    if (o.getClass() != getClass()) {
      return false;
    }
    SystemInputOutputKey castedObj = (SystemInputOutputKey)o;
    return ((this.inputNumber == castedObj.inputNumber) && (this.outputNumber == castedObj.outputNumber));
  }

  /**
   * @see java.lang.Object#clone()
   */
  @Override
  protected Object clone() {
    return new SystemInputOutputKey(this.inputNumber, this.outputNumber);
  }

  /**
   * @see java.lang.Object#toString()
   */
  @Override
  public String toString() {
    return "(" + this.outputNumber + "," + this.inputNumber + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
  }

  /**
   * @see java.lang.Comparable#compareTo(java.lang.Object)
   */
  @Override
  public int compareTo(SystemInputOutputKey o) {
    if (this.outputNumber < o.outputNumber) {
      return -1;
    }
    if (this.outputNumber > o.outputNumber) {
      return 1;
    }

    if (this.inputNumber < o.inputNumber) {
      return -1;
    }
    if (this.inputNumber > o.inputNumber) {
      return 1;
    }
    return 0;
  }

}