package org.commcare.suite.model.graph;
import org.javarosa.core.model.condition.EvaluationContext;
import org.javarosa.core.util.externalizable.DeserializationException;
import org.javarosa.core.util.externalizable.ExtUtil;
import org.javarosa.core.util.externalizable.PrototypeFactory;
import org.javarosa.xpath.expr.XPathExpression;
import org.javarosa.xpath.parser.XPathSyntaxException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
/**
* Single series ("line") on a bubble chart.
*
* @author jschweers
*/
public class BubbleSeries extends XYSeries {
private String mRadius;
private XPathExpression mRadiusParse;
/*
* Deserialization Only!
*/
@SuppressWarnings("unused")
public BubbleSeries() {
}
public BubbleSeries(String nodeSet) {
super(nodeSet);
}
public String getRadius() {
return mRadius;
}
public void setRadius(String radius) {
mRadius = radius;
mRadiusParse = null;
}
@Override
protected void parse() throws XPathSyntaxException {
super.parse();
if (mRadiusParse == null) {
mRadiusParse = parse(mRadius);
}
}
/*
* Get actual value for radius in a given EvaluationContext.
*/
public String evaluateRadius(EvaluationContext context) throws XPathSyntaxException {
parse();
return evaluateExpression(mRadiusParse, context);
}
@Override
public void readExternal(DataInputStream in, PrototypeFactory pf)
throws IOException, DeserializationException {
super.readExternal(in, pf);
mRadius = ExtUtil.readString(in);
}
@Override
public void writeExternal(DataOutputStream out) throws IOException {
super.writeExternal(out);
ExtUtil.writeString(out, mRadius);
}
}