ingo@233: package de.intevation.gnv.exports; ingo@233: ingo@233: import java.util.List; ingo@233: import java.util.ArrayList; ingo@233: ingo@233: import org.apache.log4j.Logger; ingo@233: ingo@233: import de.intevation.gnv.geobackend.base.Result; ingo@233: import de.intevation.gnv.geobackend.base.ResultDescriptor; tim@335: import de.intevation.gnv.state.exception.StateException; ingo@233: ingo@233: ingo@233: /** ingo@771: * This is the default implementation of {@link Export.DataCollector}. This ingo@771: * class serves a method to extract required data from Result ingo@771: * objects. ingo@771: * ingo@771: * @author Ingo Weinzierl ingo@233: */ ingo@233: public class DefaultDataCollector ingo@233: implements Export.DataCollector ingo@233: { ingo@771: /** ingo@771: * Logger used to log via log4j. ingo@771: */ ingo@233: private Logger log = Logger.getLogger(DefaultDataCollector.class); ingo@233: ingo@771: /** ingo@771: * ResultDescriptor used to extract specific attributes from ingo@771: * Result object. ingo@771: */ ingo@233: protected ResultDescriptor rd; ingo@771: ingo@771: /** ingo@771: * Atrribute names in Result object which should be used for ingo@771: * data extraction. ingo@771: */ ingo@233: protected String [] names; ingo@233: ingo@233: ingo@771: /** ingo@771: * Constructor ingo@771: * ingo@771: * @param names See {@link #names} ingo@771: */ ingo@233: public DefaultDataCollector(String[] names) { ingo@233: this.names = names; ingo@233: } ingo@233: ingo@771: /** ingo@771: * This method initializes the ResultDescriptor rd for a faster ingo@771: * data extraction. ingo@771: * ingo@771: * @param res A Result object used to get its description. ingo@771: */ ingo@233: public void init(Result res) { ingo@233: rd = res.getResultDescriptor(); ingo@233: } ingo@233: ingo@771: /** ingo@771: * This method is used to extract the required data specified by {@link ingo@771: * #names}. ingo@771: * ingo@771: * @param result Result object. ingo@771: * ingo@771: * @return Extracted data. ingo@771: */ ingo@233: public String[] getData(Result result) tim@335: throws StateException { ingo@233: ingo@233: if (rd == null) ingo@233: init(result); ingo@233: ingo@233: List entries = new ArrayList(); ingo@233: ingo@233: int[] indices = rd.getColumnIndices(names); ingo@233: for (int i = 0; i < names.length; ++i) { ingo@233: entries.add(result.getString(indices[i])); ingo@233: } ingo@233: ingo@233: return (String[]) entries.toArray((new String[entries.size()])); ingo@233: } ingo@233: } ingo@771: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :