/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.test.internal.performance.results.db; import java.io.PrintStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.test.internal.performance.results.utils.Util; /** * Abstract class to store performance results. * * Each results gives access to specific children depending on model. */ public abstract class AbstractResults implements Comparable { public static final double[] INVALID_RESULTS = new double[] {2}; public static final double[] NO_BUILD_RESULTS = new double[0]; public static final int BUILD_VALUE_INDEX = 0; public static final int BASELINE_VALUE_INDEX = 1; public static final int DELTA_VALUE_INDEX = 2; public static final int DELTA_ERROR_INDEX = 3; public static final int BUILD_ERROR_INDEX = 4; public static final int BASELINE_ERROR_INDEX = 5; public static final int NUMBERS_LENGTH = 6; AbstractResults parent; int id = -1; String name; List children; private static boolean NEW_LINE = true; PrintStream printStream = null; AbstractResults(AbstractResults parent, String name) { this.parent = parent; this.children = new ArrayList(); this.name = name; } AbstractResults(AbstractResults parent, int id) { this.parent = parent; this.children = new ArrayList(); this.id = id; } /* * Add a child to current results, using specific sort * order if specified. */ void addChild(Comparable child, boolean sort) { if (sort) { int size = this.children.size(); for (int i=0; itrue if the name are equals, * false otherwise * @see java.lang.Comparable#compareTo(java.lang.Object) */ public boolean equals(Object obj) { if (obj instanceof AbstractResults) { return this.name.equals(((AbstractResults)obj).getName()); } return super.equals(obj); } /** * Return an array built on the current results children list. * * @return An array of the children list */ public AbstractResults[] getChildren() { AbstractResults[] elements = new AbstractResults[size()]; this.children.toArray(elements); return elements; } ComponentResults getComponentResults() { if (this.parent != null) { return this.parent.getComponentResults(); } return null; } int getId() { return this.id; } /** * Returns the name of the results object. * * @return The name of the results */ public String getName() { return this.name; } /** * Returns the parent * * @return The parent */ public AbstractResults getParent() { return this.parent; } PerformanceResults getPerformance() { if (this.parent != null) { return this.parent.getPerformance(); } return null; } String getPath() { String path = this.parent==null || this.parent.parent==null ? "" : this.parent.getPath() + ">"; //$NON-NLS-1$ //$NON-NLS-2$ return path+this.name; } /** * Return the children list of the current results. * * @return An iterator on the children list */ public Iterator getResults() { return this.children.iterator(); } AbstractResults getResults(String resultName) { int size = this.children.size(); for (int i=0; i time spent was "); //$NON-NLS-1$ } else { buffer = new StringBuffer(" => time spent in '"); //$NON-NLS-1$ buffer.append(resultsName); buffer.append("' was "); //$NON-NLS-1$ } buffer.append(Util.timeString(time-start)); if (end != null) { buffer.append(". "); //$NON-NLS-1$ buffer.append(end.trim()); } println(buffer); } void println() { if (this.printStream != null) { this.printStream.println(); NEW_LINE = true; } } void println(String text) { if (this.printStream != null) { if (NEW_LINE) printTab(); this.printStream.println(text); NEW_LINE = true; } } void println(StringBuffer buffer) { println(buffer.toString()); } public int size() { return this.children == null ? 0 : this.children.size(); } public String toString() { return getPath(); } }