gernotbelger@8854: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
gernotbelger@8854: * Software engineering by
gernotbelger@8854: * Björnsen Beratende Ingenieure GmbH
gernotbelger@8854: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
gernotbelger@8854: *
gernotbelger@8854: * This file is Free Software under the GNU AGPL (>=v3)
gernotbelger@8854: * and comes with ABSOLUTELY NO WARRANTY! Check out the
gernotbelger@8854: * documentation coming with Dive4Elements River for details.
gernotbelger@8854: */
gernotbelger@8854: package org.dive4elements.river.artifacts.sinfo.util;
gernotbelger@8854:
gernotbelger@8854: import java.util.ArrayList;
gernotbelger@8854: import java.util.HashMap;
gernotbelger@8854: import java.util.List;
gernotbelger@8854: import java.util.Map;
gernotbelger@8854:
gernotbelger@8854: import net.sf.jasperreports.engine.JRDataSource;
gernotbelger@8854: import net.sf.jasperreports.engine.JRException;
gernotbelger@8854: import net.sf.jasperreports.engine.JRField;
gernotbelger@8854:
gernotbelger@8854: /**
gernotbelger@8854: * @author Raimund Renkert
gernotbelger@8854: */
gernotbelger@8854: public final class MetaAndTableJRDataSource implements JRDataSource
gernotbelger@8854: {
gernotbelger@8854: private List data = new ArrayList<>();
gernotbelger@8854:
gernotbelger@8854: private Map metaData = new HashMap<>();
gernotbelger@8854:
gernotbelger@8854: private int index = -1;
gernotbelger@8854:
gernotbelger@8854: public void addData(final String[] data) {
gernotbelger@8854: this.data.add(data);
gernotbelger@8854: }
gernotbelger@8854:
gernotbelger@8854: public void addMetaData(final String key, final String value) {
gernotbelger@8854: this.metaData.put(key, value);
gernotbelger@8854: }
gernotbelger@8854:
gernotbelger@8854: @Override
gernotbelger@8854: public boolean next() throws JRException
gernotbelger@8854: {
gernotbelger@8854: index++;
gernotbelger@8854:
gernotbelger@8854: return index < data.size();
gernotbelger@8854: }
gernotbelger@8854:
gernotbelger@8854: @Override
gernotbelger@8854: public Object getFieldValue(final JRField field) throws JRException
gernotbelger@8854: {
gernotbelger@8854: final String fieldName = field.getName();
gernotbelger@8854:
gernotbelger@8854: if( fieldName.startsWith("meta:"))
gernotbelger@8854: return metaData.get(fieldName.substring("meta:".length()));
gernotbelger@8854:
gernotbelger@8854: if( fieldName.startsWith("data:"))
gernotbelger@8854: {
gernotbelger@8854: int column = Integer.valueOf(fieldName.substring("data:".length()));
gernotbelger@8854: return data.get(index)[column];
gernotbelger@8854: }
gernotbelger@8854:
gernotbelger@8854: return null;
gernotbelger@8854: }
gernotbelger@8854: }