blob: 41e4507614336b67f4f76171afbe2205a925b0ab [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.problem;
import org.eclipse.actf.util.html2view.Html2ViewMapData;
import org.eclipse.actf.visualization.eval.IEvaluationItem;
import org.eclipse.actf.visualization.eval.IGuidelineItem;
import org.eclipse.actf.visualization.eval.guideline.EvaluationItem;
import org.eclipse.actf.visualization.eval.guideline.GuidelineHolder;
import org.eclipse.actf.visualization.eval.problem.HighlightTargetId;
import org.eclipse.actf.visualization.eval.problem.HighlightTargetNodeInfo;
import org.eclipse.actf.visualization.eval.problem.HighlightTargetSourceInfo;
import org.eclipse.actf.visualization.eval.problem.IProblemItem;
import org.eclipse.actf.visualization.eval.problem.IProblemItemVisitor;
import org.eclipse.swt.graphics.Image;
import org.w3c.dom.Node;
public class ProblemItemImpl implements IProblemItem {
private static GuidelineHolder GUIDELINE_HOLDER = GuidelineHolder.getInstance();
private boolean canHighlight = false;
private IEvaluationItem checkItem;
private String description = "";
private int serialNumber = -1;
private int line = -1;
private HighlightTargetNodeInfo highlightTargetNodeInfo;
private HighlightTargetId[] targetIds = new HighlightTargetId[0];
private HighlightTargetSourceInfo[] targetSources = new HighlightTargetSourceInfo[0];
private Node targetNode = null;
protected String targetStringForHPB = "";
protected String targetString = "";
// TODO add Icon(for Result doc) info
/**
*
*/
public ProblemItemImpl(String id) {
checkItem = GUIDELINE_HOLDER.getCheckItem(id);
if (checkItem == null) {
checkItem = new EvaluationItem("unknown", EvaluationItem.SEV_INFO_STR);
System.err.println("Problem Item: unknown id \"" + id + "\"");
} else {
description = checkItem.createDescription();
}
}
public ProblemItemImpl(String id, Node targetNode) {
this(id);
setTargetNode(targetNode);
}
public IEvaluationItem getEvaluationItem() {
return checkItem;
}
public String getId() {
return checkItem.getId();
}
public String[] getTableDataGuideline() {
return checkItem.getTableDataGuideline();
}
public String[] getTableDataMetrics() {
return checkItem.getTableDataMetrics();
}
public int[] getMetricsScores() {
return checkItem.getMetricsScores();
}
public Image[] getMetricsIcons() {
return checkItem.getMetricsIcons();
}
public int getSeverity() {
return checkItem.getSeverity();
}
public String getSeverityStr() {
return checkItem.getSeverityStr();
}
public String getDescription() {
return description;
}
public int getSerialNumber() {
return serialNumber;
}
public Node getTargetNode() {
return targetNode;
}
public String getTargetStringForHPB() {
return targetStringForHPB;
}
public boolean isCanHighlight() {
return canHighlight;
}
public void setCanHighlight(boolean canHighlight) {
this.canHighlight = canHighlight;
}
public void setCheckItem(IEvaluationItem checkItem) {
this.checkItem = checkItem;
}
public void setDescription(String description) {
this.description = description;
}
public void setSerialNumber(int serialNumber) {
this.serialNumber = serialNumber;
}
public void setHighlightTargetIds(HighlightTargetId[] targetIds) {
if (targetIds != null) {
this.targetIds = targetIds;
if (targetIds.length > 0) {
canHighlight = true;
}
}
}
public HighlightTargetId[] getHighlightTargetIds() {
return (targetIds);
}
public void setTargetNode(Node targetNode) {
this.targetNode = targetNode;
}
public void setTargetStringForHPB(String targetString) {
this.targetStringForHPB = targetString;
}
public String getTargetString() {
return targetString;
}
public void setTargetString(String targetString) {
this.targetString = targetString;
if (targetString != null && targetString.length() > 0) {
this.description = checkItem.createDescription(targetString);
}
}
public int getLine() {
return line;
}
public void setLine(int line) {
this.line = line;
}
public String getLineStr() {
int curLine = getLine();
if (curLine > -1) {
return (Integer.toString(curLine));
} else {
return ("");
}
}
public String getLineStrMulti() {
StringBuffer tmpSB = new StringBuffer();
// TODO check multiple same line number
if (targetSources.length > 0) {
for (int i = 0; i < targetSources.length; i++) {
int tmp = targetSources[i].getStartLine() + 1;
tmpSB.append(tmp);
tmpSB.append(", ");
}
String result = tmpSB.substring(0, tmpSB.length() - 2);
return result;
}
if (line > -1) {
return (Integer.toString(line));
} else {
return ("");
}
}
public void setHighlightTargetSourceInfo(HighlightTargetSourceInfo[] targetSourceInfo) {
if (targetSourceInfo != null) {
targetSources = targetSourceInfo;
int tmpLine = Integer.MAX_VALUE;
for (int i = 0; i < targetSources.length; i++) {
if (tmpLine > targetSources[i].getStartLine()) {
tmpLine = targetSources[i].getStartLine();
}
// TODO
if (tmpLine != Integer.MAX_VALUE) {
line = tmpLine;
}
}
}
}
public HighlightTargetSourceInfo[] getHighlightTargetSoruceInfo() {
if (targetSources.length == 0 && line > -1) {
Html2ViewMapData dummy = new Html2ViewMapData(new int[] { line, -1 }, new int[] { line, -1 });
return (new HighlightTargetSourceInfo[] { new HighlightTargetSourceInfo(dummy, dummy) });
}
return (targetSources);
}
public void accept(IProblemItemVisitor visitor) {
visitor.visit(this);
}
public HighlightTargetNodeInfo getHighlightTargetNodeInfo() {
return highlightTargetNodeInfo;
}
public void setHighlightTargetNodeInfo(HighlightTargetNodeInfo targetNodeInfo) {
this.highlightTargetNodeInfo = targetNodeInfo;
}
public void setHighlightTargetIds(HighlightTargetId targetId) {
if(targetId!=null){
this.setHighlightTargetIds(new HighlightTargetId[]{targetId});
}
}
public void setHighlightTargetSourceInfo(HighlightTargetSourceInfo targetSourceInfo) {
if(targetSourceInfo!=null){
this.setHighlightTargetSourceInfo(new HighlightTargetSourceInfo[]{targetSourceInfo});
}
}
public IGuidelineItem[] getGuidelines() {
if(checkItem!=null){
return checkItem.getGuidelines();
}
return new IGuidelineItem[0];
}
}