Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/fill/JRDistinctCountExtendedIncrementer.java
2025-07-28 13:56:49 +05:30

41 lines
1.4 KiB
Java

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;
}
}