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