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.test.internal.performance.data.Dim;
16import org.eclipse.test.internal.performance.results.db.*;
17import org.eclipse.ui.views.properties.IPropertyDescriptor;
18import org.eclipse.ui.views.properties.PropertyDescriptor;
19import org.eclipse.ui.views.properties.TextPropertyDescriptor;
20
21public class DimResultsElement extends ResultsElement {
22
23	Dim dim;
24
25	// Property descriptors
26    static final String P_ID_DIMENSION = "DimResultsElement.dim"; //$NON-NLS-1$
27    static final String P_ID_COUNT = "DimResultsElement.count"; //$NON-NLS-1$
28    static final String P_ID_AVERAGE = "DimResultsElement.average"; //$NON-NLS-1$
29    static final String P_ID_STDDEV = "DimResultsElement.stddev"; //$NON-NLS-1$
30    static final String P_ID_ERROR= "DimResultsElement.error"; //$NON-NLS-1$
31    static final String P_ID_HAD_VALUES = "DimResultsElement.hadvalues"; //$NON-NLS-1$
32
33    static final String P_STR_DIMENSION = "dimension"; //$NON-NLS-1$
34    static final String P_STR_COUNT= "count"; //$NON-NLS-1$
35    static final String P_STR_AVERAGE = "average"; //$NON-NLS-1$
36    static final String P_STR_STDDEV = "std dev"; //$NON-NLS-1$
37    static final String P_STR_ERROR = "error"; //$NON-NLS-1$
38    static final String P_STR_HAD_VALUES = "had values"; //$NON-NLS-1$
39
40	private static final TextPropertyDescriptor DIMENSION_DESCRIPTOR = new TextPropertyDescriptor(P_ID_DIMENSION, P_STR_DIMENSION);
41	private static final PropertyDescriptor DIM_COUNT_DESCRIPTOR = new PropertyDescriptor(P_ID_COUNT, P_STR_COUNT);
42	private static final PropertyDescriptor DIM_AVERAGE_DESCRIPTOR = new PropertyDescriptor(P_ID_AVERAGE, P_STR_AVERAGE);
43	private static final PropertyDescriptor DIM_STDDEV_DESCRIPTOR = new PropertyDescriptor(P_ID_STDDEV, P_STR_STDDEV);
44	private static final PropertyDescriptor DIM_ERROR_DESCRIPTOR = new PropertyDescriptor(P_ID_ERROR, P_STR_ERROR);
45	private static final PropertyDescriptor DIM_HAD_VALUES_DESCRIPTOR = new PropertyDescriptor(P_ID_HAD_VALUES, P_STR_HAD_VALUES);
46
47    private static Vector DESCRIPTORS;
48    static Vector initDescriptors(int status) {
49        DESCRIPTORS = new Vector();
50		// Status category
51		DESCRIPTORS.add(getInfosDescriptor(status));
52		DESCRIPTORS.add(getWarningsDescriptor(status));
53		DESCRIPTORS.add(ERROR_DESCRIPTOR);
54		ERROR_DESCRIPTOR.setCategory("Status");
55		// Results category
56        DESCRIPTORS.addElement(DIMENSION_DESCRIPTOR);
57		DIMENSION_DESCRIPTOR.setCategory("Results");
58        DESCRIPTORS.addElement(DIM_COUNT_DESCRIPTOR);
59		DIM_COUNT_DESCRIPTOR.setCategory("Results");
60        DESCRIPTORS.addElement(DIM_AVERAGE_DESCRIPTOR);
61		DIM_AVERAGE_DESCRIPTOR.setCategory("Results");
62        DESCRIPTORS.addElement(DIM_STDDEV_DESCRIPTOR);
63		DIM_STDDEV_DESCRIPTOR.setCategory("Results");
64        DESCRIPTORS.addElement(DIM_ERROR_DESCRIPTOR);
65		DIM_ERROR_DESCRIPTOR.setCategory("Results");
66        DESCRIPTORS.addElement(DIM_HAD_VALUES_DESCRIPTOR);
67		DIM_HAD_VALUES_DESCRIPTOR.setCategory("Results");
68		// Survey category
69		DESCRIPTORS.add(COMMENT_DESCRIPTOR);
70		COMMENT_DESCRIPTOR.setCategory("Survey");
71        return DESCRIPTORS;
72   	}
73    static Vector getDescriptors() {
74    	return DESCRIPTORS;
75	}
76
77public DimResultsElement(AbstractResults results, ResultsElement parent, Dim d) {
78	super(results, parent);
79	this.dim = d;
80}
81
82ResultsElement createChild(AbstractResults testResults) {
83	return null;
84}
85
86private BuildResults getBuildResults() {
87	return (BuildResults) this.results;
88}
89
90public String getLabel(Object o) {
91	return this.dim.getName();
92}
93
94/* (non-Javadoc)
95 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
96 */
97public IPropertyDescriptor[] getPropertyDescriptors() {
98	Vector descriptors = getDescriptors();
99	if (descriptors == null) {
100		descriptors = initDescriptors(getStatus());
101	}
102	int size = descriptors.size();
103	IPropertyDescriptor[] descriptorsArray = new IPropertyDescriptor[size];
104	descriptorsArray[0] = getInfosDescriptor(getStatus());
105	descriptorsArray[1] = getWarningsDescriptor(getStatus());
106	for (int i=2; i<size; i++) {
107		descriptorsArray[i] = (IPropertyDescriptor) descriptors.get(i);
108	}
109	return descriptorsArray;
110}
111
112/* (non-Javadoc)
113 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
114 */
115public Object getPropertyValue(Object propKey) {
116	BuildResults buildResults = getBuildResults();
117    if (propKey.equals(P_ID_DIMENSION)) {
118    	return  this.dim.getDescription();
119    }
120    if (propKey.equals(P_ID_COUNT)) {
121	    long count = buildResults.getCount(this.dim.getId());
122	    return new Double(count);
123    }
124    if (propKey.equals(P_ID_AVERAGE))
125        return new Double(buildResults.getValue(this.dim.getId()));
126    if (propKey.equals(P_ID_STDDEV))
127        return new Double(buildResults.getDeviation(this.dim.getId()));
128    if (propKey.equals(P_ID_ERROR))
129        return new Double(buildResults.getError(this.dim.getId()));
130    if (propKey.equals(P_ID_HAD_VALUES))
131        return new Boolean(buildResults.hadValues());
132    return super.getPropertyValue(propKey);
133}
134
135}
136