/**
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations under
* the License.
*
* The Original Code is OpenELIS code.
*
* Copyright (C) The Minnesota Department of Health. All Rights Reserved.
*/
package us.mn.state.health.lims.common.provider.reports.toplink;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.List;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import org.apache.commons.beanutils.PropertyUtils;
import us.mn.state.health.lims.common.log.LogEvent;
/**
* @author benzd1
*
*/
public class QueryResultDataSource implements JRDataSource {
private Iterator iterator;
private Object currentValue;
/**
* @param list
*/
public QueryResultDataSource(List list) {
this.iterator = list.iterator();
}
/* (non-Javadoc)
* @see net.sf.jasperreports.engine.JRDataSource#getFieldValue(net.sf.jasperreports.engine.JRField)
*/
public Object getFieldValue(JRField field) throws JRException {
Object value = null;
try {
Method getter = PropertyUtils.getReadMethod(PropertyUtils
.getPropertyDescriptor(currentValue, field.getName()));
value = getter.invoke(currentValue, (Object[])null);
} catch (Exception ex) {
//bugzilla 2154
LogEvent.logError("QueryResultDataSource","getFieldValue()",ex.toString());
}
return value;
}
/* (non-Javadoc)
* @see net.sf.jasperreports.engine.JRDataSource#next()
*/
public boolean next() throws JRException {
currentValue = iterator.hasNext() ? iterator.next() : null;
return (currentValue != null);
}
}