blob: 48dc08e7ac3aa6c0fce6f8dd4dc57cbdaf08efe5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2008 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:
* Kentarou FUKUDA - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.visualization.eval.guideline;
import java.text.MessageFormat;
import org.eclipse.actf.visualization.Constants;
import org.eclipse.actf.visualization.eval.EvaluationPlugin;
import org.eclipse.actf.visualization.eval.IEvaluationItem;
import org.eclipse.actf.visualization.eval.IGuidelineItem;
import org.eclipse.swt.graphics.Image;
public class EvaluationItem implements IEvaluationItem{
private String id = "";
private GuidelineItem[] guidelines = new GuidelineItem[0];
private MetricsItem[] metrics = new MetricsItem[0];
private String description;
private String[] tableDataMetrics = new String[0];
private String[] tableDataGuideline = new String[0];
private Image[] metricsIcons = new Image[0];
private int[] metricsScores = new int[0];
private short severity = SEV_INFO;
private String severityStr = SEV_INFO_STR;
/**
* @param id
*/
public EvaluationItem(String id, String severity) {
this.id = id;
setSeverity(severity);
description = GuidelineItemDescription.getDescription(id);
}
public String createDescription(String targetString) {
return MessageFormat.format(description, new Object[] {targetString});
}
public String createDescription() {
return (description);
}
public GuidelineItem[] getGuidelines() {
return guidelines;
}
protected void setGuidelines(GuidelineItem[] guidelines) {
this.guidelines = guidelines;
}
public String getId() {
return id;
}
public int getSeverity() {
return severity;
}
public String getSeverityStr(){
return severityStr;
}
private void setSeverity(String _severityStr) {
severity = SEV_INFO;
severityStr = SEV_INFO_STR;
if (_severityStr != null) {
_severityStr = _severityStr.trim();
if (SEV_ERROR_STR.equalsIgnoreCase(_severityStr)) {
severity = SEV_ERROR;
severityStr = SEV_ERROR_STR;
} else if (SEV_WARNING_STR.equalsIgnoreCase(_severityStr)) {
severity = SEV_WARNING;
severityStr = SEV_WARNING_STR;
}
//else{
//severity = SEV_INFO;
//}
}
}
public MetricsItem[] getMetricsItems() {
return metrics;
}
protected void setMetrics(MetricsItem[] metrics) {
this.metrics = metrics;
}
protected void initTableData(String[] guidelineNames, String[] metricsNames) {
tableDataGuideline = new String[guidelineNames.length];
tableDataMetrics = new String[metricsNames.length];
metricsScores = new int[metricsNames.length];
metricsIcons = new Image[metricsNames.length];
for (int i = 0; i < guidelineNames.length; i++) {
StringBuffer tmpSB = new StringBuffer();
boolean notFirst = false;
for (int j = 0; j < guidelines.length; j++) {
IGuidelineItem tmpItem = guidelines[j];
if (guidelineNames[i].equalsIgnoreCase(tmpItem.getGuidelineName())) {
if (notFirst) {
tmpSB.append(", ");
} else {
notFirst = true;
}
if (tmpItem.getLevel().length() > 0) {
tmpSB.append(tmpItem.getLevel() + ": " + tmpItem.getId());
} else {
tmpSB.append(tmpItem.getId());
}
}
}
tableDataGuideline[i] = tmpSB.toString();
}
for (int i = 0; i < metricsNames.length; i++) {
String curName = metricsNames[i];
tableDataMetrics[i] = "";
metricsScores[i] = 0;
metricsIcons[i] = null;
for (int j = 0; j < metrics.length; j++) {
MetricsItem tmpItem = metrics[j];
if (curName.equalsIgnoreCase(tmpItem.getMetricsName())) {
metricsScores[i] = tmpItem.getScore();
if (tmpItem.getScore() != 0) {
tableDataMetrics[i] = Integer.toString(-tmpItem.getScore());
}
//TODO reuse
switch (this.severity) {
case SEV_ERROR:
if (curName.equalsIgnoreCase("compliance")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/ErrC.png").createImage();
} else if (curName.equalsIgnoreCase("navigability")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/ErrN.png").createImage();
} else if (curName.equalsIgnoreCase("listenability")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/ErrL.png").createImage();
} else {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/Err.png").createImage();
}
break;
case SEV_WARNING:
if (curName.equalsIgnoreCase("compliance")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/WarnC.png").createImage();
} else if (curName.equalsIgnoreCase("navigability")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/WarnN.png").createImage();
} else if (curName.equalsIgnoreCase("listenability")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/WarnL.png").createImage();
} else {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/Warn.png").createImage();
}
break;
case SEV_INFO:
if (curName.equalsIgnoreCase("compliance")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/InfoC.png").createImage();
} else if (curName.equalsIgnoreCase("navigability")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/InfoN.png").createImage();
} else if (curName.equalsIgnoreCase("listenability")) {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/InfoL.png").createImage();
} else {
metricsIcons[i] = EvaluationPlugin.getImageDescriptor("icons/Info.png").createImage();
}
break;
}
}
}
}
}
public String toString() {
StringBuffer tmpSB = new StringBuffer();
tmpSB.append(id + " " + severity + " : " + Constants.LINE_SEP);
for (int i = 0; i < guidelines.length; i++) {
tmpSB.append(" " + guidelines[i] + Constants.LINE_SEP);
}
for (int i = 0; i < tableDataGuideline.length; i++) {
tmpSB.append(" " + tableDataGuideline[i] + Constants.LINE_SEP);
}
for (int i = 0; i < metrics.length; i++) {
tmpSB.append(" " + metrics[i] + Constants.LINE_SEP);
}
for (int i = 0; i < tableDataMetrics.length; i++) {
tmpSB.append(" " + tableDataMetrics[i] + Constants.LINE_SEP);
}
return (tmpSB.toString());
}
public int[] getMetricsScores() {
return metricsScores;
}
public String[] getTableDataGuideline() {
return tableDataGuideline;
}
public String[] getTableDataMetrics() {
return tableDataMetrics;
}
public Image[] getMetricsIcons() {
return metricsIcons;
}
}