view geo-backend/src/main/java/de/intevation/gnv/geobackend/base/DefaultResultDescriptor.java @ 271:8aad9d098b08

Integrated Patch of issue57 to get some Memoryusage-improvements geo-backend/trunk@248 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 20 Oct 2009 09:57:52 +0000
parents b02310d7ffee
children 4a874c664123
line wrap: on
line source
/**
 *
 */
package de.intevation.gnv.geobackend.base;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * This Class is the DefaultImplementation of the
 * Interface ResultDescriptor
 * @author Tim Englich <tim.englich@intevation.de>
 *
 */
public class DefaultResultDescriptor implements ResultDescriptor {

    /**
     *The Uid of this Class
     */
    private static final long serialVersionUID = 7016889733270716130L;

    /**
     * The Names of the Columns of one Result
     */
    private List<String> columnNames = new ArrayList<String>();
    
    /**
     * The Name of the Classes of the Values of one Result.
     */
    private List<String> columnClassNames = new ArrayList<String>();
    
    /**
     * 
     */
    private Map<String, Integer> columnIndexLookup = new HashMap<String, Integer>();
    
    /**
     * Constructor
     */
    public DefaultResultDescriptor() {
        super();
    }

    /**
     * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnClassName(int)
     */
    public String getColumnClassName(int column) {
        return this.columnClassNames.get(column);
    }

    /**
     * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnCount()
     */
    public int getColumnCount() {
        return this.columnClassNames.size();
    }

    /**
     * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnName(int)
     */
    public String getColumnName(int column) {
        return this.columnNames.get(column);
    }

    /**
     * @see de.intevation.gnv.geobackend.base.ResultDescriptor#addColumn(java.lang.String, java.lang.String)
     */
    public void addColumn(String name, String className) {
        this.columnClassNames.add(className);
        this.columnNames.add(name);
        this.columnIndexLookup.put(name,this.columnNames.size()-1);
    }

    /**
     * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnIndices(java.lang.String[])
     */
    public int [] getColumnIndices(String [] columnNames) {
        if (columnNames == null) {
            return null;
        }

        int [] indices = new int[columnNames.length];

        for (int i = 0; i < indices.length; ++i) {
            indices[i] = this.getColumnIndex(columnNames[i]);
        }

        return indices;
    }

    /**
     * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnIndex(java.lang.String)
     */
    public int getColumnIndex(String columnName) {
        
        Integer value = this.columnIndexLookup.get(columnName);
        if (value != null){
            return value.intValue();
        }
        return -1;
    }
}

http://dive4elements.wald.intevation.org