Home | History | Annotate | Download | only in model
      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  *******************************************************************************/
     11 package org.eclipse.test.internal.performance.results.model;
     12 
     13 import java.util.Vector;
     14 
     15 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
     16 import org.eclipse.core.runtime.preferences.InstanceScope;
     17 import org.eclipse.test.internal.performance.results.db.*;
     18 import org.eclipse.test.internal.performance.results.utils.IPerformancesConstants;
     19 import org.eclipse.test.internal.performance.results.utils.Util;
     20 import org.eclipse.ui.views.properties.IPropertyDescriptor;
     21 import org.eclipse.ui.views.properties.TextPropertyDescriptor;
     22 
     23 public class ScenarioResultsElement extends ResultsElement {
     24 
     25 	// Property descriptors
     26     static final String P_ID_SCENARIO_LABEL = "ScenarioResultsElement.label"; //$NON-NLS-1$
     27     static final String P_ID_SCENARIO_FILE_NAME = "ScenarioResultsElement.filename"; //$NON-NLS-1$
     28     static final String P_ID_SCENARIO_SHORT_NAME = "ScenarioResultsElement.shortname"; //$NON-NLS-1$
     29 
     30     static final String P_STR_SCENARIO_LABEL = "label"; //$NON-NLS-1$
     31     static final String P_STR_SCENARIO_FILE_NAME = "file name"; //$NON-NLS-1$
     32     static final String P_STR_SCENARIO_SHORT_NAME = "short name"; //$NON-NLS-1$
     33 
     34     private static final TextPropertyDescriptor SCENARIO_LABEL_DESCRIPTOR = new TextPropertyDescriptor(P_ID_SCENARIO_LABEL, P_STR_SCENARIO_LABEL);
     35 	private static final TextPropertyDescriptor SCENARIO_FILE_NAME_DESCRIPTOR = new TextPropertyDescriptor(P_ID_SCENARIO_FILE_NAME, P_STR_SCENARIO_FILE_NAME);
     36 	private static final TextPropertyDescriptor SCENARIO_SHORT_NAME_DESCRIPTOR = new TextPropertyDescriptor(P_ID_SCENARIO_SHORT_NAME, P_STR_SCENARIO_SHORT_NAME);
     37 
     38     private static Vector DESCRIPTORS;
     39     static Vector initDescriptors(int status) {
     40         DESCRIPTORS = new Vector();
     41 		// Status category
     42 		DESCRIPTORS.add(getInfosDescriptor(status));
     43 		DESCRIPTORS.add(getWarningsDescriptor(status));
     44 		DESCRIPTORS.add(ERROR_DESCRIPTOR);
     45 		ERROR_DESCRIPTOR.setCategory("Status");
     46 		// Results category
     47         DESCRIPTORS.addElement(SCENARIO_LABEL_DESCRIPTOR);
     48 		SCENARIO_LABEL_DESCRIPTOR.setCategory("Results");
     49         DESCRIPTORS.addElement(SCENARIO_FILE_NAME_DESCRIPTOR);
     50 		SCENARIO_FILE_NAME_DESCRIPTOR.setCategory("Results");
     51         DESCRIPTORS.addElement(SCENARIO_SHORT_NAME_DESCRIPTOR);
     52 		SCENARIO_SHORT_NAME_DESCRIPTOR.setCategory("Results");
     53 		// Survey category
     54 		DESCRIPTORS.add(COMMENT_DESCRIPTOR);
     55 		COMMENT_DESCRIPTOR.setCategory("Survey");
     56         return DESCRIPTORS;
     57 	}
     58     static Vector getDescriptors() {
     59     	return DESCRIPTORS;
     60 	}
     61 
     62 ScenarioResultsElement(AbstractResults results, ResultsElement parent) {
     63     super(results, parent);
     64 }
     65 
     66 ResultsElement createChild(AbstractResults testResults) {
     67 	return new ConfigResultsElement(testResults, this);
     68 }
     69 
     70 public String getLabel(Object o) {
     71 	return ((ScenarioResults) this.results).getShortName();
     72 }
     73 
     74 /* (non-Javadoc)
     75  * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
     76  */
     77 public IPropertyDescriptor[] getPropertyDescriptors() {
     78 	Vector descriptors = getDescriptors();
     79 	if (descriptors == null) {
     80 		descriptors = initDescriptors(getStatus());
     81 	}
     82 	int size = descriptors.size();
     83 	IPropertyDescriptor[] descriptorsArray = new IPropertyDescriptor[size];
     84 	descriptorsArray[0] = getInfosDescriptor(getStatus());
     85 	descriptorsArray[1] = getWarningsDescriptor(getStatus());
     86 	for (int i=2; i<size; i++) {
     87 		descriptorsArray[i] = (IPropertyDescriptor) descriptors.get(i);
     88 	}
     89 	return descriptorsArray;
     90 }
     91 
     92 /* (non-Javadoc)
     93  * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
     94  */
     95 public Object getPropertyValue(Object propKey) {
     96 	ScenarioResults scenarioResults = (ScenarioResults) this.results;
     97     if (propKey.equals(P_ID_SCENARIO_LABEL))
     98         return scenarioResults.getLabel();
     99     if (propKey.equals(P_ID_SCENARIO_FILE_NAME))
    100         return scenarioResults.getFileName();
    101     if (propKey.equals(P_ID_SCENARIO_SHORT_NAME))
    102         return scenarioResults.getShortName();
    103     return super.getPropertyValue(propKey);
    104 }
    105 
    106 /**
    107  * Returns whether one of the scenario's config has a summary or not.
    108  *
    109  * @return <code>true</code> if one of the scenario's config has a summary
    110  * 	<code>false</code> otherwise.
    111  */
    112 public boolean hasSummary() {
    113 	if (this.results == null) return false;
    114 	return ((ScenarioResults)this.results).hasSummary();
    115 }
    116 
    117 void initStatus() {
    118 	if (onlyFingerprints()) {
    119 		if (hasSummary()) {
    120 			super.initStatus();
    121 		} else {
    122 			this.status = READ;
    123 		}
    124 	} else {
    125 		super.initStatus();
    126 	}
    127 }
    128 
    129 StringBuffer writableStatus(StringBuffer buffer, int kind, StringBuffer excluded) {
    130 	// Write status for scenarios having error
    131 	if ((getStatus() & ERROR_MASK) != 0) {
    132 
    133 		// Get children status
    134 		StringBuffer childrenBuffer = super.writableStatus(new StringBuffer(), kind, excluded);
    135 
    136 		// Write status on file if not excluded
    137 		if (childrenBuffer.length() > 0) {
    138 			buffer.append("	");
    139 			buffer.append(getLabel(null));
    140 			IEclipsePreferences preferences = new InstanceScope().getNode(IPerformancesConstants.PLUGIN_ID);
    141 			String comment = preferences.get(getId(), null);
    142 			if (comment != null) {
    143 				if ((kind & IPerformancesConstants.STATUS_VALUES) != 0) {
    144 					buffer.append("											");
    145 				} else {
    146 					buffer.append("		");
    147 				}
    148 				buffer.append(comment);
    149 			}
    150 			buffer.append(Util.LINE_SEPARATOR);
    151 			buffer.append(childrenBuffer);
    152 			buffer.append(Util.LINE_SEPARATOR);
    153 		}
    154 	}
    155 	return buffer;
    156 }
    157 
    158 }
    159