01: /*
02: * GeoTools - OpenSource mapping toolkit
03: * http://geotools.org
04: * (C) Copyright IBM Corporation, 2005. All rights reserved.
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation;
09: * version 2.1 of the License.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: */
17: package org.geotools.data.db2;
18:
19: import org.geotools.data.jdbc.FeatureTypeHandler;
20: import org.geotools.data.jdbc.JDBCDataStore;
21: import org.geotools.data.jdbc.fidmapper.FIDMapperFactory;
22: import java.io.IOException;
23: import java.util.logging.Logger;
24:
25: /**
26: * Override methods from FeatureTypeHandler for DB2-specific handling.
27: *
28: * @author David Adler - IBM Corporation
29: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/unsupported/db2/src/main/java/org/geotools/data/db2/DB2FeatureTypeHandler.java $
30: */
31: public class DB2FeatureTypeHandler extends FeatureTypeHandler {
32: private static final Logger LOGGER = org.geotools.util.logging.Logging
33: .getLogger("org.geotools.data.db2");
34:
35: // It is really nasty that we make a second copy of the DataStore in the subclass because
36: // it is private in FeatureTypeHandler and not visible to subclasses.
37: DB2DataStore db2Store;
38:
39: /**
40: * Creates a new feature type handler
41: *
42: * @param store the parent data store
43: * @param fmFactory the FIDMapper factory
44: * @param cacheTimeOut timeout used to purge possibly stale data from the
45: * caches
46: */
47: public DB2FeatureTypeHandler(JDBCDataStore store,
48: FIDMapperFactory fmFactory, long cacheTimeOut) {
49: super (store, fmFactory, cacheTimeOut);
50: this .db2Store = (DB2DataStore) store;
51: }
52:
53: /**
54: * Gets the list of type names from the DB2SpatialCatalog which should have
55: * been loaded with all geometry columns (includes type names) when the
56: * DB2DataStore was created.
57: *
58: * <p>
59: * Note: there seems to be some ambiguity as one could have the same type
60: * name (table name) in the database with different table schemas.
61: * </p>
62: *
63: * <p>
64: * It isn't clear how this relates to DataStore.getTypeNames
65: * </p>
66: *
67: * @return an array of type (table) names.
68: *
69: * @throws IOException
70: */
71: private String[] loadTypeNamesFromDatabase() throws IOException {
72: return this.db2Store.getTypeNames();
73: }
74: }
|