ingo@1127: /* ingo@1127: * Copyright (c) 2010 by Intevation GmbH ingo@1127: * ingo@1127: * This program is free software under the LGPL (>=v2.1) ingo@1127: * Read the file LGPL.txt coming with the software for details ingo@1127: * or visit http://www.gnu.org/licenses/ if it does not exist. ingo@1127: */ ingo@1127: tim@132: package de.intevation.gnv.geobackend.base; tim@132: tim@132: import java.util.ArrayList; tim@271: import java.util.HashMap; tim@132: import java.util.List; tim@271: import java.util.Map; tim@132: tim@132: /** tim@132: * This Class is the DefaultImplementation of the tim@132: * Interface ResultDescriptor sascha@887: * @author Tim Englich tim@132: * tim@132: */ tim@132: public class DefaultResultDescriptor implements ResultDescriptor { tim@132: tim@132: /** tim@141: *The Uid of this Class tim@141: */ tim@141: private static final long serialVersionUID = 7016889733270716130L; tim@141: /** tim@132: * The Names of the Columns of one Result tim@132: */ tim@132: private List columnNames = new ArrayList(); tim@132: /** tim@132: * The Name of the Classes of the Values of one Result. tim@132: */ tim@132: private List columnClassNames = new ArrayList(); tim@271: /** tim@884: * The Lookup for the Columnindex of the Columnnames tim@271: */ tim@271: private Map columnIndexLookup = new HashMap(); sascha@885: tim@132: /** tim@132: * Constructor tim@132: */ tim@132: public DefaultResultDescriptor() { tim@132: super(); tim@132: } tim@132: tim@132: /** tim@132: * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnClassName(int) tim@132: */ tim@132: public String getColumnClassName(int column) { tim@132: return this.columnClassNames.get(column); tim@132: } tim@132: tim@132: /** tim@132: * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnCount() tim@132: */ tim@132: public int getColumnCount() { tim@132: return this.columnClassNames.size(); tim@132: } tim@132: tim@132: /** tim@132: * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnName(int) tim@132: */ tim@132: public String getColumnName(int column) { tim@132: return this.columnNames.get(column); tim@132: } tim@132: tim@132: /** tim@132: * @see de.intevation.gnv.geobackend.base.ResultDescriptor#addColumn(java.lang.String, java.lang.String) tim@132: */ tim@132: public void addColumn(String name, String className) { tim@132: this.columnClassNames.add(className); tim@132: this.columnNames.add(name); tim@271: this.columnIndexLookup.put(name,this.columnNames.size()-1); tim@132: } tim@132: tim@271: /** tim@271: * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnIndices(java.lang.String[]) tim@271: */ tim@271: public int [] getColumnIndices(String [] columnNames) { tim@271: if (columnNames == null) { tim@271: return null; tim@271: } tim@271: int [] indices = new int[columnNames.length]; tim@271: for (int i = 0; i < indices.length; ++i) { tim@271: indices[i] = this.getColumnIndex(columnNames[i]); tim@271: } tim@271: return indices; tim@271: } tim@271: tim@271: /** tim@271: * @see de.intevation.gnv.geobackend.base.ResultDescriptor#getColumnIndex(java.lang.String) tim@271: */ tim@271: public int getColumnIndex(String columnName) { sascha@885: tim@271: Integer value = this.columnIndexLookup.get(columnName); sascha@381: return value != null ? value.intValue() : -1; tim@271: } sascha@553: tim@884: /** tim@884: * @see java.lang.Object#toString() tim@884: */ tim@884: @Override sascha@553: public String toString() { sascha@553: StringBuilder sb = new StringBuilder("["); sascha@553: int N = Math.min(columnNames.size(), columnClassNames.size()); sascha@553: for (int i = 0; i < N; ++i) { sascha@553: if (i > 0) { sascha@553: sb.append(", "); sascha@553: } sascha@553: sb.append(columnNames.get(i)) sascha@553: .append(": ") sascha@553: .append(columnClassNames.get(i)); sascha@553: } sascha@553: sb.append(']'); sascha@553: return sb.toString(); sascha@553: } tim@271: }