/** * 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; }