001: //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/trunk/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 04:32:57 -0800 (Thu, 27 Dec 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,
074: boolean auto) {
075: this .table = table;
076: this .field = field;
077: this .type = type;
078: this .auto = auto;
079: }
080:
081: /**
082: * Creates a new instance of <code>MappingField</code> from the given parameters with no
083: * automatic generation of values.
084: *
085: * @param table
086: * @param field
087: * @param type
088: *
089: * @see java.sql.Types
090: */
091: public MappingField(String table, String field, int type) {
092: this .table = table;
093: this .field = field;
094: this .type = type;
095: }
096:
097: /**
098: * Returns true, because a db field may be updated.
099: *
100: * @return true, because a db field may be updated
101: */
102: public boolean isUpdateable() {
103: return true;
104: }
105:
106: /**
107: * Returns true, because a db field is (in general) suitable as a sort criterion.
108: *
109: * @return true, because a db field is (in general) suitable as a sort criterion
110: */
111: public boolean isSortable() {
112: return true;
113: }
114:
115: /**
116: * Returns the name of the backend's (e.g. database) table.
117: *
118: * @return the table name
119: */
120: public String getTable() {
121: return this .table;
122: }
123:
124: /**
125: * Sets the table to the given table name. This is currently needed, as
126: * <code>MappedGMLSchema</code> must be able to resolve unspecified (null) table names.
127: *
128: * @param table table name to set
129: */
130: public void setTable(String table) {
131: this .table = table;
132: }
133:
134: /**
135: * Returns the name of the backend's (e.g. database) field.
136: *
137: * @return the field name
138: */
139: public String getField() {
140: return this .field;
141: }
142:
143: /**
144: * Returns the SQL type code of the field.
145: *
146: * @return the SQL type code
147: * @see java.sql.Types
148: */
149: public int getType() {
150: return this .type;
151: }
152:
153: /**
154: * Returns whether the backend generates the value automatically on insert.
155: *
156: * @return true, if a value for this field is generated automatically, false otherwise
157: */
158: public boolean isAuto() {
159: return this .auto;
160: }
161:
162: /**
163: * Returns <code>true</code> if the field has a numerical type.
164: *
165: * @see java.sql.Types
166: *
167: * @return <code>true</code> if the field has a numerical type, false otherwise
168: */
169: public boolean isNumeric() {
170: switch (getType()) {
171: case java.sql.Types.BIT:
172: case java.sql.Types.BIGINT:
173: case java.sql.Types.INTEGER:
174: case java.sql.Types.FLOAT:
175: case java.sql.Types.DOUBLE:
176: case java.sql.Types.DECIMAL:
177: case java.sql.Types.NUMERIC:
178: case java.sql.Types.REAL:
179: case java.sql.Types.SMALLINT:
180: return true;
181: }
182: return false;
183: }
184:
185: @Override
186: public String toString() {
187: return this .table + "." + this.field;
188: }
189: }
|