/** * Uses the current {@link JDBCDataStore} facilities to grab a connection, subclasses can * override to use other methods * * @param ds * @throws IOException */ protected Connection getDatabaseConnection(DataStore ds) throws IOException { if (ds instanceof JDBCDataStore) { return ((JDBCDataStore) ds).getConnection(Transaction.AUTO_COMMIT); } else { return null; } }
if (jstore.getVirtualTables().containsValue(vt)) { ft = jstore.getSchema(vt.getName()); if (!jstore.getVirtualTables().containsValue(vt)) { ft = null; jstore.createVirtualTable(new VirtualTable(temporaryName.getLocalPart(), vt)); return true; } else { jstore.createVirtualTable(vt);
@Override public void dispose( FeatureTypeInfo info, DataAccess<? extends FeatureType, ? extends Feature> dataAccess, Name temporaryName) throws IOException { JDBCDataStore ds = (JDBCDataStore) dataAccess; if (temporaryName != null) { ds.dropVirtualTable(temporaryName.getLocalPart()); } else { ds.dropVirtualTable(info.getNativeName()); } } }
defaultValue = reader.getValue(); } else if (reader.getNodeName().equals("regexpValidator")) { validator = new RegexpValidator(reader.getValue()); "Expect name but could not find it in property tag"); params.add(new VirtualTableParameter(pname, defaultValue, validator)); } else if (reader.getNodeName().equals("escapeSql")) { escapeSql = Boolean.valueOf(reader.getValue()); VirtualTable vt = new VirtualTable(name, sql, false); vt.addGeometryMetadatata(geomNames.get(i), types.get(i), srids.get(i)); vt.addParameter(p); vt.setEscapeSql(escapeSql); vt.setPrimaryKeyColumns(primaryKeys);
VirtualTable vt = (VirtualTable) source; writer.startNode("name"); writer.setValue(vt.getName()); writer.endNode(); writer.startNode("sql"); writer.setValue(vt.getSql()); writer.endNode(); writer.startNode("escapeSql"); writer.setValue(Boolean.toString(vt.isEscapeSql())); writer.endNode(); if (vt.getPrimaryKeyColumns() != null) { for (String pk : vt.getPrimaryKeyColumns()) { writer.startNode("keyColumn"); writer.setValue(pk); if (vt.getGeometries() != null) { for (String geom : vt.getGeometries()) { writer.startNode("geometry"); writer.startNode("name"); writer.endNode(); writer.startNode("type"); writer.setValue(Geometries.getForBinding(vt.getGeometryType(geom)).getName()); writer.endNode(); writer.startNode("srid"); writer.setValue(String.valueOf(vt.getNativeSrid(geom))); writer.endNode(); writer.endNode();
new VirtualTable( VT_NAME, "select \"name\", \"pointProperty\" from \"pgeo\" where \"booleanProperty\" = %bool% and \"name\" = '%name%'"); vt.addParameter(new VirtualTableParameter("bool", "true")); vt.addParameter(new VirtualTableParameter("name", "name-f001")); vt.addGeometryMetadatata("pointProperty", Point.class, 4326); jds.createVirtualTable(vt); FeatureTypeInfo vft = cb.buildFeatureType(jds.getFeatureSource(vt.getName())); vft.getMetadata().put(FeatureTypeInfo.JDBC_VIRTUAL_TABLE, vt); cat.add(vft);
@Override public Object getNext(Connection cx) throws IOException, SQLException { if (isPostInsert()) { return NOT_SET_BEFORE_INSERT; } else { return ds.getSQLDialect() .getNextAutoGeneratedValue( ds.getDatabaseSchema(), key.getTableName(), col.getName(), cx); } }
@Override public Object getLastValue(Connection cx, Statement st) throws SQLException { return ds.getSQLDialect() .getLastAutoGeneratedValue( ds.getDatabaseSchema(), key.getTableName(), col.getName(), cx, st); }
@Override public Object getNext(Connection cx) throws IOException, SQLException { if (isPostInsert()) { return NOT_SET_BEFORE_INSERT; } else { String sequenceName = ((SequencedPrimaryKeyColumn) col).getSequenceName(); return ds.getSQLDialect() .getNextSequenceValue(ds.getDatabaseSchema(), sequenceName, cx); } } }
public void close() throws IOException { if (dataStore != null) { // clean up dataStore.closeSafe(rs); dataStore.closeSafe(st); dataStore.releaseConnection(cx, featureSource.getState()); } cleanup(); }
@Override public void addKeyBinding(StringBuffer sql) { if (isPostInsert()) { String sequenceName = ((SequencedPrimaryKeyColumn) col).getSequenceName(); sql.append(ds.getSQLDialect().encodeNextSequenceValue(null, sequenceName)); sql.append(","); } else { super.addKeyBinding(sql); } }
VirtualTable vt3 = (VirtualTable) ft.getMetadata().get(FeatureTypeInfo.JDBC_VIRTUAL_TABLE); assertEquals(8, vt3.getGeometries().size()); for (String g : vt3.getGeometries()) { Class<? extends Geometry> geom = vt3.getGeometryType(g); assertEquals(srids.get(g).intValue(), vt3.getNativeSrid(g)); assertEquals(types.get(g), geom.getName());
protected void connect() throws Exception { super.connect(); source = (JDBCFeatureStore) dataStore.getFeatureSource(tname("ft1")); collection = source.getFeatures(); }
protected void connect() throws Exception { super.connect(); store = (JDBCFeatureStore) dataStore.getFeatureSource(tname("ft1")); store.setFeatureLock(FeatureLock.TRANSACTION); }
@Override protected void connect() throws Exception { super.connect(); fs = dataStore.getFeatureSource(tname("ft1")); }
@Test public void testVirtualTableOrder() throws Exception { FeatureTypeInfo ft = persister.load( getClass() .getResourceAsStream( "/org/geoserver/config/virtualtable_order_error.xml"), FeatureTypeInfo.class); VirtualTable vtc = (VirtualTable) ft.getMetadata().get(FeatureTypeInfo.JDBC_VIRTUAL_TABLE); assertEquals(vtc.getSql(), "select * from table\n"); assertEquals(vtc.getName(), "sqlview"); }
@Test public void testByCopyConstructor() { VirtualTable source = new VirtualTable("test", "select * from tables"); VirtualTable copy = ModificationProxyCloner.clone(source); assertNotSame(source, copy); assertEquals(source, copy); }
public SimpleFeature next() throws IOException { // init, setting id to null explicity since the feature is yet to be // inserted ResultSetFeature rsf = getOrCreateRSF(); rsf.init(null); return rsf; }
new VirtualTable( "riverReduced", "select a, b, c * %mulparam% \n from table \n where x > 1 %andparam%"); vt.addGeometryMetadatata("geom", LineString.class, 4326); vt.setPrimaryKeyColumns(Arrays.asList("a", "b")); vt.addParameter(new VirtualTableParameter("mulparam", "1", new RegexpValidator("\\d+"))); vt.addParameter(new VirtualTableParameter("andparam", null));
assertNotNull(vt2); assertEquals(1, ft.getMetadata().size()); assertEquals(1, vt2.getGeometries().size()); String geometryName = vt2.getGeometries().iterator().next(); assertEquals("geometry", geometryName); assertNotNull(vt2.getGeometryType(geometryName)); assertNotNull(vt2.getNativeSrid(geometryName));