|
|
|
package com.fr.plugin.present.fun;
|
|
|
|
|
|
|
|
import com.fr.base.BaseFormula;
|
|
|
|
import com.fr.base.present.AbstractPresent;
|
|
|
|
import com.fanruan.api.util.GeneralKit;
|
|
|
|
import com.fr.intelli.record.Focus;
|
|
|
|
import com.fr.intelli.record.Original;
|
|
|
|
import com.fanruan.api.log.LogKit;
|
|
|
|
import com.fr.record.analyzer.EnableMetrics;
|
|
|
|
import com.fr.script.Calculator;
|
|
|
|
import com.fanruan.api.util.AssistKit;
|
|
|
|
import com.fr.stable.ColumnRow;
|
|
|
|
import com.fanruan.api.util.StringKit;
|
|
|
|
import com.fr.stable.xml.XMLPrintWriter;
|
|
|
|
import com.fr.stable.xml.XMLableReader;
|
|
|
|
import com.fanruan.api.cal.FormulaKit;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author richie
|
|
|
|
* @date 2015-05-24
|
|
|
|
* @since 8.0
|
|
|
|
*/
|
|
|
|
@EnableMetrics
|
|
|
|
public class StarPresent extends AbstractPresent {
|
|
|
|
|
|
|
|
private String condition;
|
|
|
|
|
|
|
|
public String getCondition() {
|
|
|
|
return condition;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setCondition(String condition) {
|
|
|
|
this.condition = condition;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Focus(id = "com.fr.plugin.present.star", text = "", source = Original.PLUGIN)
|
|
|
|
public Object present(Object value, Calculator calculator, ColumnRow cr) {
|
|
|
|
Object result = null;
|
|
|
|
if (FormulaKit.canBeFormula(condition)) {
|
|
|
|
try {
|
|
|
|
result = calculator.evalValue(BaseFormula.createFormulaBuilder().build(condition));
|
|
|
|
} catch (Exception e) {
|
|
|
|
LogKit.error(e.getMessage(), e);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
result = condition;
|
|
|
|
}
|
|
|
|
Number num = GeneralKit.objectToNumber(result, true);
|
|
|
|
if (num == null) {
|
|
|
|
return value;
|
|
|
|
}
|
|
|
|
return new StarPainter(num.intValue());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void readXML(XMLableReader reader) {
|
|
|
|
if (reader.isChildNode()) {
|
|
|
|
String tag = reader.getTagName();
|
|
|
|
if ("Condition".equals(tag)) {
|
|
|
|
condition = reader.getElementValue();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void writeXML(XMLPrintWriter writer) {
|
|
|
|
if (StringKit.isNotEmpty(condition)) {
|
|
|
|
writer.startTAG("Condition").textNode(condition).end();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Object clone() throws CloneNotSupportedException {
|
|
|
|
return super.clone();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean equals(Object o) {
|
|
|
|
return o instanceof StarPresent
|
|
|
|
&& super.equals(o)
|
|
|
|
&& AssistKit.equals(((StarPresent) o).condition, condition);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int hashCode() {
|
|
|
|
return AssistKit.hashCode(condition);
|
|
|
|
}
|
|
|
|
}
|