001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/io/datastore/schema/content/MappingField.java $ 002 /*---------------- FILE HEADER ------------------------------------------ 003 004 This file is part of deegree. 005 Copyright (C) 2001-2008 by: 006 EXSE, Department of Geography, University of Bonn 007 http://www.giub.uni-bonn.de/deegree/ 008 lat/lon GmbH 009 http://www.lat-lon.de 010 011 This library is free software; you can redistribute it and/or 012 modify it under the terms of the GNU Lesser General Public 013 License as published by the Free Software Foundation; either 014 version 2.1 of the License, or (at your option) any later version. 015 016 This library is distributed in the hope that it will be useful, 017 but WITHOUT ANY WARRANTY; without even the implied warranty of 018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 019 Lesser General Public License for more details. 020 021 You should have received a copy of the GNU Lesser General Public 022 License along with this library; if not, write to the Free Software 023 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 024 025 Contact: 026 027 Andreas Poth 028 lat/lon GmbH 029 Aennchenstraße 19 030 53177 Bonn 031 Germany 032 E-Mail: poth@lat-lon.de 033 034 Prof. Dr. Klaus Greve 035 Department of Geography 036 University of Bonn 037 Meckenheimer Allee 166 038 53115 Bonn 039 Germany 040 E-Mail: greve@giub.uni-bonn.de 041 042 ---------------------------------------------------------------------------*/ 043 package org.deegree.io.datastore.schema.content; 044 045 /** 046 * Encapsulates a field of the backend (e.g. an SQL table column). 047 * 048 * @author <a href="mailto:schneider@lat-lon.de">Markus Schneider </a> 049 * @author last edited by: $Author: apoth $ 050 * 051 * @version $Revision: 9342 $, $Date: 2007-12-27 13:32:57 +0100 (Do, 27 Dez 2007) $ 052 */ 053 public class MappingField implements SimpleContent { 054 055 private String table; 056 057 private String field; 058 059 private int type; 060 061 private boolean auto; 062 063 /** 064 * Creates a new instance of <code>MappingField</code> from the given parameters. 065 * 066 * @param table 067 * @param field 068 * @param type type code 069 * @param auto 070 * 071 * @see java.sql.Types 072 */ 073 public MappingField( String table, String field, int type, boolean auto ) { 074 this.table = table; 075 this.field = field; 076 this.type = type; 077 this.auto = auto; 078 } 079 080 /** 081 * Creates a new instance of <code>MappingField</code> from the given parameters with no 082 * automatic generation of values. 083 * 084 * @param table 085 * @param field 086 * @param type 087 * 088 * @see java.sql.Types 089 */ 090 public MappingField( String table, String field, int type ) { 091 this.table = table; 092 this.field = field; 093 this.type = type; 094 } 095 096 /** 097 * Returns true, because a db field may be updated. 098 * 099 * @return true, because a db field may be updated 100 */ 101 public boolean isUpdateable() { 102 return true; 103 } 104 105 /** 106 * Returns true, because a db field is (in general) suitable as a sort criterion. 107 * 108 * @return true, because a db field is (in general) suitable as a sort criterion 109 */ 110 public boolean isSortable () { 111 return true; 112 } 113 114 /** 115 * Returns the name of the backend's (e.g. database) table. 116 * 117 * @return the table name 118 */ 119 public String getTable() { 120 return this.table; 121 } 122 123 /** 124 * Sets the table to the given table name. This is currently needed, as 125 * <code>MappedGMLSchema</code> must be able to resolve unspecified (null) table names. 126 * 127 * @param table table name to set 128 */ 129 public void setTable( String table ) { 130 this.table = table; 131 } 132 133 /** 134 * Returns the name of the backend's (e.g. database) field. 135 * 136 * @return the field name 137 */ 138 public String getField() { 139 return this.field; 140 } 141 142 /** 143 * Returns the SQL type code of the field. 144 * 145 * @return the SQL type code 146 * @see java.sql.Types 147 */ 148 public int getType() { 149 return this.type; 150 } 151 152 /** 153 * Returns whether the backend generates the value automatically on insert. 154 * 155 * @return true, if a value for this field is generated automatically, false otherwise 156 */ 157 public boolean isAuto() { 158 return this.auto; 159 } 160 161 /** 162 * Returns <code>true</code> if the field has a numerical type. 163 * 164 * @see java.sql.Types 165 * 166 * @return <code>true</code> if the field has a numerical type, false otherwise 167 */ 168 public boolean isNumeric() { 169 switch (getType()) { 170 case java.sql.Types.BIT: 171 case java.sql.Types.BIGINT: 172 case java.sql.Types.INTEGER: 173 case java.sql.Types.FLOAT: 174 case java.sql.Types.DOUBLE: 175 case java.sql.Types.DECIMAL: 176 case java.sql.Types.NUMERIC: 177 case java.sql.Types.REAL: 178 case java.sql.Types.SMALLINT: 179 return true; 180 } 181 return false; 182 } 183 184 @Override 185 public String toString() { 186 return this.table + "." + this.field; 187 } 188 }