TotalMin.java from BIRT at Krugle
Show TotalMin.java syntax highlighted
/*
*************************************************************************
* Copyright (c) 2004 Actuate Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Actuate Corporation - initial API and implementation
*
*************************************************************************
*/
package org.eclipse.birt.data.engine.aggregation;
import org.eclipse.birt.data.engine.api.aggregation.Accumulator;
import org.eclipse.birt.data.engine.api.aggregation.IAggregation;
/**
*
* Implements the built-in Total.min aggregation
*/
public class TotalMin implements IAggregation
{
/*
* (non-Javadoc)
*
* @see org.eclipse.birt.data.engine.aggregation.Aggregation#getName()
*/
public String getName()
{
return BuiltInAggregationFactory.TOTAL_MIN_FUNC;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.birt.data.engine.aggregation.Aggregation#getType()
*/
public int getType()
{
return SUMMARY_AGGR;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.birt.data.engine.aggregation.Aggregation#getParameterDefn()
*/
public boolean[] getParameterDefn()
{
return new boolean[] { true };
}
/*
* (non-Javadoc)
*
* @see org.eclipse.birt.data.engine.aggregation.Aggregation#newAccumulator()
*/
public Accumulator newAccumulator()
{
return new MyAccumulator();
}
private class MyAccumulator extends SummaryAccumulator
{
private Object min = null;
public void start()
{
super.start();
min = null;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.birt.data.engine.aggregation.Accumulator#onRow(java.lang.Object[])
*/
public void onRow(Object[] args)
{
assert (args.length > 0);
if (args[0] != null)
{
if (min==null)
{
min = args[0];
}
if (isLessThan(args[0],min))
{
min = args[0];
}
}
}
private boolean isLessThan(Object origin, Object target)
{
if((origin instanceof Comparable)&&(target instanceof Comparable))
{
return ((Comparable)origin).compareTo(target)<0;
}
else
{
throw new RuntimeException("can't get max value!");
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.birt.data.engine.aggregation.SummaryAccumulator#getSummaryValue()
*/
public Object getSummaryValue()
{
return min;
}
}
}
See more files for this project here