1/*******************************************************************************
2 * Copyright (c) 2000, 2009 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 *     IBM Corporation - initial API and implementation
10 *******************************************************************************/
11package org.eclipse.test.internal.performance.results.model;
12
13import java.util.Vector;
14
15import org.eclipse.ui.views.properties.IPropertyDescriptor;
16import org.eclipse.ui.views.properties.TextPropertyDescriptor;
17
18public class BuildResultsProperties {
19
20	    // Property descriptors
21    static final String P_ID_SMALL_VALUE = "BuildResultsProperties.small_value"; //$NON-NLS-1$
22    static final String P_ID_NO_BASELINE = "BuildResultsProperties.no_baseline"; //$NON-NLS-1$
23    static final String P_ID_SINGLE_RUN = "BuildResultsProperties.single_run"; //$NON-NLS-1$
24    static final String P_ID_BIG_ERROR = "BuildResultsProperties.big_error"; //$NON-NLS-1$
25    static final String P_ID_STUDENT_TTEST = "BuildResultsProperties.ttest"; //$NON-NLS-1$
26    static final String P_ID_NOT_STABLE = "BuildResultsProperties.not_stable"; //$NON-NLS-1$
27    static final String P_ID_NOT_RELIABLE = "BuildResultsProperties.not_reliable"; //$NON-NLS-1$
28    static final String P_ID_BIG_DELTA = "BuildResultsProperties.big_delta"; //$NON-NLS-1$
29    static final String P_STR_SMALL_VALUE = "small value"; //$NON-NLS-1$
30    static final String P_STR_NO_BASELINE = "no baseline"; //$NON-NLS-1$
31    static final String P_STR_SINGLE_RUN = "single run"; //$NON-NLS-1$
32    static final String P_STR_BIG_ERROR = "big error"; //$NON-NLS-1$
33    static final String P_STR_STUDENT_TTEST = "student ttest"; //$NON-NLS-1$
34    static final String P_STR_NOT_STABLE = "not stable"; //$NON-NLS-1$
35    static final String P_STR_NOT_RELIABLE = "not reliable"; //$NON-NLS-1$
36    static final String P_STR_BIG_DELTA = "delta error"; //$NON-NLS-1$
37    private static Vector descriptors;
38    static {
39        descriptors = new Vector();
40        descriptors.addElement(new TextPropertyDescriptor(P_ID_SMALL_VALUE, P_STR_SMALL_VALUE));
41        descriptors.addElement(new TextPropertyDescriptor(P_ID_NO_BASELINE, P_STR_NO_BASELINE));
42        descriptors.addElement(new TextPropertyDescriptor(P_ID_SINGLE_RUN, P_STR_SINGLE_RUN));
43        descriptors.addElement(new TextPropertyDescriptor(P_ID_BIG_ERROR, P_STR_BIG_ERROR));
44        descriptors.addElement(new TextPropertyDescriptor(P_ID_STUDENT_TTEST, P_STR_STUDENT_TTEST));
45        descriptors.addElement(new TextPropertyDescriptor(P_ID_NOT_STABLE, P_STR_NOT_STABLE));
46        descriptors.addElement(new TextPropertyDescriptor(P_ID_NOT_RELIABLE, P_STR_NOT_RELIABLE));
47        descriptors.addElement(new TextPropertyDescriptor(P_ID_BIG_DELTA, P_STR_BIG_DELTA));
48    }
49    static Vector getDescriptors() {
50        return descriptors;
51	}
52
53    private int status;
54
55public BuildResultsProperties() {
56}
57
58void setStatus(int status) {
59	this.status = status;
60}
61
62public Object getEditableValue() {
63	return null;
64}
65
66/* (non-Javadoc)
67 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
68 */
69public IPropertyDescriptor[] getPropertyDescriptors() {
70    return (IPropertyDescriptor[]) getDescriptors().toArray(
71            new IPropertyDescriptor[getDescriptors().size()]);
72}
73
74/* (non-Javadoc)
75 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
76 */
77public Object getPropertyValue(Object propKey) {
78	if (propKey.equals(P_ID_SMALL_VALUE)) {
79		if ((this.status & ResultsElement.SMALL_VALUE) != 0) {
80			return "This test and/or its variation has a small value, hence it may not be necessary to spend time on fixing it if a regression occurs.";
81		}
82	}
83	if (propKey.equals(P_ID_NO_BASELINE)) {
84		if ((this.status & ResultsElement.NO_BASELINE) != 0) {
85			return "There's no baseline to compare with.";
86		}
87	}
88	if (propKey.equals(P_ID_SINGLE_RUN)) {
89		if ((this.status & ResultsElement.SINGLE_RUN) != 0) {
90			return "This test has only one run, hence no error can be computed to verify if it's stable enough to be reliable.";
91		}
92	}
93	if (propKey.equals(P_ID_BIG_ERROR)) {
94		if ((this.status & ResultsElement.BIG_ERROR) != 0) {
95			return "The error on this test is over the 3% threshold, hence its result may not be really reliable.";
96		}
97	}
98	if (propKey.equals(P_ID_STUDENT_TTEST)) {
99		if ((this.status & ResultsElement.STUDENT_TTEST) != 0) {
100			return "The student-t on this test is over the threshold";
101		}
102	}
103	if (propKey.equals(P_ID_NOT_STABLE)) {
104		if ((this.status & ResultsElement.NOT_STABLE) != 0) {
105			return "The results history shows that the variation of its delta is between 10% and 20%, hence its result may not be really reliable.";
106		}
107	}
108	if (propKey.equals(P_ID_NOT_RELIABLE)) {
109		if ((this.status & ResultsElement.NOT_RELIABLE) != 0) {
110			return "The results history shows that the variation of its delta is over 20%, hence its result is surely not reliable.";
111		}
112	}
113	if (propKey.equals(P_ID_BIG_DELTA)) {
114		if ((this.status & ResultsElement.BIG_DELTA) != 0) {
115			return "The delta on this test is over the 10% threshold, hence may indicate a possible regression.";
116		}
117	}
118	return null;
119}
120
121}
122