package jdepend.util.refactor;
import jdepend.framework.util.MathUtil;
import jdepend.model.AreaComponent;
import jdepend.model.MetricsMgr;
public class CompareInfo {
private String metrics;
private Object value;
private Object originality;
private Integer result;
private Boolean evaluate;
private CompareObject object;
public static final int NEW = 100;
public CompareInfo(CompareObject object) {
this.object = object;
}
public String getMetrics() {
return metrics;
}
public void setMetrics(String metrics) {
this.metrics = metrics;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public Object getOriginality() {
return originality;
}
public void setOriginality(Object originality) {
this.originality = originality;
}
public int getResult() {
if (this.result == null) {
this.calResult();
}
return result;
}
private void setResult(int result) {
this.result = result;
this.evaluate = evaluate(result, metrics);
}
public void calResult() {
if (originality == null) {
this.setResult(NEW);
return;
}
if (value instanceof Float) {
Float newValue = (Float) value;
Float oldValue = (Float) originality;
this.setResult(MathUtil.compare(newValue, oldValue));
} else if (value instanceof String) {
String newValue = (String) value;
String oldValue = (String) originality;
this.setResult(MathUtil.compare(newValue, oldValue));
} else if (value instanceof Integer) {
Integer newValue = (Integer) value;
Integer oldValue = (Integer) originality;
this.setResult(MathUtil.compare(newValue, oldValue));
} else if (value instanceof AreaComponent) {
Integer valueLayer = ((AreaComponent) value).getLayer();
Integer originalityLayer = ((AreaComponent) originality).getLayer();
this.setResult(MathUtil.compare(valueLayer, originalityLayer));
} else {
this.setResult(0);
}
}
public Boolean getEvaluate() {
return evaluate;
}
public boolean isDiff() {
if (this.value == null && this.originality == null) {
return true;
} else if (this.value == null && this.originality != null) {
return false;
} else if (this.value != null && this.originality == null) {
return false;
} else {
return !this.value.equals(this.originality);
}
}
private Boolean evaluate(int result, String metrics) {
if (result == NEW) {
return null;
} else {
return this.object.evaluate(result, metrics);
}
}
}