/**
   * Invocationを追加する。
   *
   * @param invocation Invocation
   * @return Invocation リストに変更があった場合は <code>true</code> 、そうでない場合は <code>false</code>
   */
  public boolean addInvocation(final InvocationModel invocation) {

    String methodName = invocation.getMethodName();
    InvocationModel oldInvocation = this.invocationMap_.get(methodName);
    this.invocationMap_.put(methodName, invocation);
    invocation.setComponent(this);

    if (oldInvocation != null) {
      if (equalsInvocationModel(invocation, oldInvocation)) {
        return false;
      }
      this.invocationList_.remove(oldInvocation);
    }
    this.invocationList_.add(invocation);

    return true;
  }
  /** {@inheritDoc} */
  @Override
  public Object getPropertyValue(final Object id) {
    if (P_CLASS_NAME.equals(id)) {
      // プロパティ・ビューに表示するデータを返す
      return this.componentName_;
    }
    if (id instanceof String) {
      String idString = (String) id;
      if (idString.startsWith(P_INVOCATION)) {
        String methodName = idString.substring(P_INVOCATION.length());
        InvocationModel invocationModel = this.invocationMap_.get(methodName);
        return invocationModel.toString();
      }
    }

    return null;
  }
 /**
  * View タブ上に表示される項目(メソッド名、最大時間、平均時間、計測対象)で比較します。<br>
  *
  * @param invocation1 InvocationModel
  * @param invocation2 InvocationModel
  * @return 2つのメソッド名、最大時間、平均時間、計測対象が同じ場合、<code>true</code>
  */
 private boolean equalsInvocationModel(
     final InvocationModel invocation1, final InvocationModel invocation2) {
   String methodName1 = invocation1.getMethodName();
   String methodName2 = invocation2.getMethodName();
   double average1 = invocation1.getAverageDouble();
   double average2 = invocation2.getAverageDouble();
   long maximum1 = invocation1.getMaximum();
   long maximum2 = invocation2.getMaximum();
   long callCount1 = invocation1.getCount();
   long callCount2 = invocation2.getCount();
   boolean equal =
       (methodName1.equals(methodName2)
           && average1 == average2
           && maximum1 == maximum2
           && callCount1 == callCount2
           && invocation1.isTarget() == invocation2.isTarget());
   return equal;
 }
 /** {@inheritDoc} */
 public int compare(final InvocationModel o1, final InvocationModel o2) {
   int ret = Long.signum(o2.getMaximum() - o1.getMaximum());
   if (ret == 0) {
     ret = Double.compare(o2.getAverageDouble(), o1.getAverageDouble());
     if (ret == 0) {
       ret = o1.getMethodName().compareTo(o2.getMethodName());
     }
   }
   return ret;
 }