first commit
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
package net.sf.jasperreports.crosstabs.fill.calculation;
|
||||
|
||||
import net.sf.jasperreports.engine.JRException;
|
||||
import net.sf.jasperreports.engine.fill.AbstractValueProvider;
|
||||
import net.sf.jasperreports.engine.fill.JRCalculable;
|
||||
import net.sf.jasperreports.engine.fill.JRDistinctCountExtendedIncrementerFactory;
|
||||
import net.sf.jasperreports.engine.fill.JRExtendedIncrementer;
|
||||
import net.sf.jasperreports.engine.fill.JRExtendedIncrementerFactory;
|
||||
|
||||
public class MeasureDefinition {
|
||||
protected final byte calculation;
|
||||
|
||||
protected final JRExtendedIncrementerFactory incrementerFactory;
|
||||
|
||||
protected final Class valueClass;
|
||||
|
||||
protected final boolean isSystemDefined;
|
||||
|
||||
public MeasureDefinition(Class valueClass, byte calculation, JRExtendedIncrementerFactory incrementerFactory) {
|
||||
this(valueClass, calculation, incrementerFactory, false);
|
||||
}
|
||||
|
||||
protected MeasureDefinition(Class valueClass, byte calculation, JRExtendedIncrementerFactory incrementerFactory, boolean isSystemDefined) {
|
||||
this.valueClass = valueClass;
|
||||
this.calculation = calculation;
|
||||
this.incrementerFactory = incrementerFactory;
|
||||
this.isSystemDefined = isSystemDefined;
|
||||
}
|
||||
|
||||
public static MeasureDefinition createHelperMeasure(MeasureDefinition measure, byte helperCalculation) {
|
||||
return new MeasureDefinition(measure.valueClass, helperCalculation, measure.incrementerFactory, true);
|
||||
}
|
||||
|
||||
public static MeasureDefinition createDistinctCountHelperMeasure(MeasureDefinition measure) {
|
||||
return new MeasureDefinition(measure.valueClass, (byte)0, (JRExtendedIncrementerFactory)JRDistinctCountExtendedIncrementerFactory.getInstance(), true);
|
||||
}
|
||||
|
||||
public byte getCalculation() {
|
||||
return this.calculation;
|
||||
}
|
||||
|
||||
public JRExtendedIncrementerFactory getIncrementerFactory() {
|
||||
return this.incrementerFactory;
|
||||
}
|
||||
|
||||
public JRExtendedIncrementer getIncrementer() {
|
||||
return this.incrementerFactory.getExtendedIncrementer(this.calculation);
|
||||
}
|
||||
|
||||
protected boolean isSystemDefined() {
|
||||
return this.isSystemDefined;
|
||||
}
|
||||
|
||||
public Class getValueClass() {
|
||||
return this.valueClass;
|
||||
}
|
||||
|
||||
protected static final AbstractValueProvider VALUE_PROVIDER = new AbstractValueProvider() {
|
||||
public Object getValue(JRCalculable calculable) {
|
||||
return calculable.getValue();
|
||||
}
|
||||
};
|
||||
|
||||
public class MeasureValue implements JRCalculable {
|
||||
private Object value;
|
||||
|
||||
private MeasureValue[] helpers;
|
||||
|
||||
private boolean initialized;
|
||||
|
||||
private JRExtendedIncrementer incrementer;
|
||||
|
||||
private final MeasureDefinition this$0;
|
||||
|
||||
public MeasureValue() {
|
||||
this.value = null;
|
||||
this.helpers = new MeasureValue[3];
|
||||
this.incrementer = MeasureDefinition.this.getIncrementer();
|
||||
init();
|
||||
}
|
||||
|
||||
protected void init() {
|
||||
this.value = this.incrementer.initialValue();
|
||||
setInitialized(true);
|
||||
}
|
||||
|
||||
public void addValue(Object addValue) throws JRException {
|
||||
this.value = this.incrementer.increment(this, addValue, MeasureDefinition.VALUE_PROVIDER);
|
||||
setInitialized(false);
|
||||
}
|
||||
|
||||
public void addValue(MeasureValue measureValue) throws JRException {
|
||||
if (!measureValue.isInitialized()) {
|
||||
this.value = this.incrementer.combine(this, measureValue, MeasureDefinition.VALUE_PROVIDER);
|
||||
setInitialized(false);
|
||||
}
|
||||
}
|
||||
|
||||
public Object getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return String.valueOf(getValue());
|
||||
}
|
||||
|
||||
public MeasureValue setHelper(MeasureValue helperVariable, byte type) {
|
||||
MeasureValue old = this.helpers[type];
|
||||
this.helpers[type] = helperVariable;
|
||||
return old;
|
||||
}
|
||||
|
||||
public boolean isInitialized() {
|
||||
return this.initialized;
|
||||
}
|
||||
|
||||
public Object getIncrementedValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public JRCalculable getHelperVariable(byte helperType) {
|
||||
return this.helpers[helperType];
|
||||
}
|
||||
|
||||
public void setInitialized(boolean isInitialized) {
|
||||
this.initialized = isInitialized;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user