first commit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package net.sf.jasperreports.engine.fill;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
class JRDistinctCountExtendedIncrementer extends JRAbstractExtendedIncrementer {
|
||||
private DistinctCountHolder lastHolder = new DistinctCountHolder();
|
||||
|
||||
public Object increment(JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider) {
|
||||
DistinctCountHolder holder = (DistinctCountHolder)variable.getIncrementedValue();
|
||||
if (holder == null) {
|
||||
holder = this.lastHolder;
|
||||
} else {
|
||||
this.lastHolder = holder;
|
||||
}
|
||||
holder.addLastValue();
|
||||
return new DistinctCountHolder(holder, expressionValue);
|
||||
}
|
||||
|
||||
public Object combine(JRCalculable calculable1, JRCalculable calculable2, AbstractValueProvider valueProvider) {
|
||||
Set distinctValues = new HashSet();
|
||||
DistinctCountHolder holder1 = (DistinctCountHolder)calculable1.getValue();
|
||||
if (holder1 != null) {
|
||||
distinctValues.addAll(holder1.getDistinctValues());
|
||||
if (holder1.getLastValue() != null)
|
||||
distinctValues.add(holder1.getLastValue());
|
||||
}
|
||||
DistinctCountHolder holder2 = (DistinctCountHolder)calculable2.getValue();
|
||||
if (holder2 != null) {
|
||||
distinctValues.addAll(holder2.getDistinctValues());
|
||||
if (holder2.getLastValue() != null)
|
||||
distinctValues.add(holder2.getLastValue());
|
||||
}
|
||||
return new DistinctCountHolder(distinctValues);
|
||||
}
|
||||
|
||||
public Object initialValue() {
|
||||
return null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user