You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
89 lines
2.4 KiB
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.StableKit; |
|
import com.fanruan.api.util.StringKit; |
|
import com.fr.stable.xml.XMLPrintWriter; |
|
import com.fr.stable.xml.XMLableReader; |
|
|
|
/** |
|
* @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 (StableKit.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); |
|
} |
|
} |