# HG changeset patch # User Tim Englich # Date 1268393798 0 # Node ID f6630d0203daf0419d5d2c9649d5269e5e45e027 # Parent 22dc921cd8b1bd130a742c26892d2b85a8dcfb8f Put all Attributes of the Databasetables into the Shapefile which will be produced for the Product Layer gnv-artifacts/trunk@764 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 22dc921cd8b1 -r f6630d0203da gnv-artifacts/ChangeLog --- a/gnv-artifacts/ChangeLog Fri Mar 12 11:28:36 2010 +0000 +++ b/gnv-artifacts/ChangeLog Fri Mar 12 11:36:38 2010 +0000 @@ -1,3 +1,18 @@ +2010-03-12 Tim Englich + + * src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java (fetchColumns): + Integrated an Method for fetching all required Columns for an given Layer + and put them into the Query witch will load the Layerdata from the + Database. + + * doc/conf/products/layer/conf.xml: + Added an Configuration-Element to determine the Query which should be used + to Query the Columns of a choosen Layer. + + * doc/conf/queries.properties: + Manipulated the Queries for fetching the Layerdata in that way that it is + possible to put the requested-Columns into it using the ?-Syntax. + 2010-03-12 Tim Englich * src/main/java/de/intevation/gnv/utils/ShapeFileWriter.java (writeDataToFile): diff -r 22dc921cd8b1 -r f6630d0203da gnv-artifacts/doc/conf/products/layer/conf.xml --- a/gnv-artifacts/doc/conf/products/layer/conf.xml Fri Mar 12 11:28:36 2010 +0000 +++ b/gnv-artifacts/doc/conf/products/layer/conf.xml Fri Mar 12 11:36:38 2010 +0000 @@ -91,6 +91,7 @@ layer_request_data layer_data_with_geom geometry_for_subareafilter + layer_colums subareaid diff -r 22dc921cd8b1 -r f6630d0203da gnv-artifacts/doc/conf/queries.properties --- a/gnv-artifacts/doc/conf/queries.properties Fri Mar 12 11:28:36 2010 +0000 +++ b/gnv-artifacts/doc/conf/queries.properties Fri Mar 12 11:36:38 2010 +0000 @@ -1233,11 +1233,11 @@ FROM MEDIAN.LAYER_HAS_SUBTYPES \ WHERE ROW_ID = ? -layer_data = SELECT ST_ASTEXT(SHAPE) \ +layer_data = SELECT ST_ASTEXT(SHAPE), ? \ FROM ? \ WHERE ? -layer_data_with_geom = SELECT ST_ASTEXT(SHAPE) \ +layer_data_with_geom = SELECT ST_ASTEXT(SHAPE), ? \ FROM ? \ WHERE ? AND \ INTERSECTS(SHAPE,"?") @@ -1246,3 +1246,9 @@ FROM MEDIAN.FEATUREAREA \ WHERE (FEATURETYPE = 7 OR FEATURETYPE = 8) AND \ FEATURECODE = ? + +layer_colums= SELECT COLUMN_NAME \ + FROM SDE.COLUMN_REGISTRY \ + WHERE COLUMN_NAME NOT LIKE 'SHAPE' AND \ + OWNER = '?' AND \ + TABLE_NAME = '?' diff -r 22dc921cd8b1 -r f6630d0203da gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java Fri Mar 12 11:28:36 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java Fri Mar 12 11:36:38 2010 +0000 @@ -7,9 +7,7 @@ import java.io.IOException; import java.io.OutputStream; import java.util.Collection; -import java.util.HashMap; import java.util.Iterator; -import java.util.Map; import org.apache.log4j.Logger; import org.w3c.dom.Document; @@ -29,7 +27,6 @@ import de.intevation.gnv.geobackend.base.query.QueryExecutor; import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; import de.intevation.gnv.geobackend.base.query.exception.QueryException; -import de.intevation.gnv.raster.PaletteManager; import de.intevation.gnv.state.InputData; import de.intevation.gnv.state.OutputStateBase; import de.intevation.gnv.state.exception.StateException; @@ -69,6 +66,8 @@ */ private String geometryQueryID = null; + private String columnQueryID = null; + /** * The ID for the Value which will hold the Geometrie-Value */ @@ -152,6 +151,8 @@ Result resultValue = it.next(); String table = resultValue.getString(0); String where = resultValue.getString(1); + String columns = this.fetchColumns(table); + templateID = resultValue.getString(2); if (this.geometryID != null){ InputData geometryInputData = @@ -171,16 +172,17 @@ log.error(e,e); // TODO: what should happen?? } - queryValues = new String[]{table, + queryValues = new String[]{columns, + table, where, geometryWKT}; }else{ // TODO: Look into the presetting for an WKT - queryValues = new String[]{table,where}; + queryValues = new String[]{columns,table,where}; } }else{ // TODO: Look into the presetting for an WKT - queryValues = new String[]{table,where}; + queryValues = new String[]{columns,table,where}; } } @@ -221,6 +223,36 @@ return data; } + private String fetchColumns(String tableName){ + String returnValue = null; + try { + String[] filter = tableName.toUpperCase().split("\\."); + QueryExecutor queryExecutor = QueryExecutorFactory.getInstance() + .getQueryExecutor(); + + Collection columnData = queryExecutor. + executeQuery(this.columnQueryID, + filter); + if (columnData != null && !columnData.isEmpty()){ + StringBuffer sb = new StringBuffer(); + synchronized (sb) { + Iterator it = columnData.iterator(); + while(it.hasNext()){ + Result current = it.next(); + sb.append(current.getString(0)); + if (it.hasNext()){ + sb.append(" , "); + } + } + } + returnValue = sb.toString(); + } + + } catch (QueryException e) { + log.error(e,e); + } + return returnValue; + } @Override public void setup(Node configuration) { log.debug("LayerOutputState.setup"); @@ -231,6 +263,9 @@ "inputvalue-geometry"); this.geometryQueryID = Config.getStringXPath(configuration, "queryID-geometry"); + + this.columnQueryID = "layer_colums"; //Config.getStringXPath(configuration, + // "queryID-columns"); } protected String writeToShapeFile( @@ -423,19 +458,4 @@ } return returnValue; } - - private static Map getPalettes( - CallContext callContext - ) { - //TODO: customize for product Layer - GNVArtifactContext context = - (GNVArtifactContext)callContext.globalContext(); - Map palettes = - (Map)context.get( - GNVArtifactContext.PALETTES_KEY); - return palettes != null - ? palettes - : new HashMap(); - } - }