# HG changeset patch # User Christian Lins # Date 1355783067 -3600 # Node ID 13abfb1bcb75e78fef474ffde665f4c5242ebccd # Parent 63d1e91db66692c20c64b00abec3ba73bf51a7c3 Fix typo in class names and correct file path in floodmap.xml. diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/doc/conf/mapserver/river-mapfile.vm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/doc/conf/mapserver/river-mapfile.vm Mon Dec 17 23:24:27 2012 +0100 @@ -0,0 +1,60 @@ +MAP + NAME "Rivers" + STATUS ON + SIZE 600 400 + MAXSIZE 4000 + EXTENT 3233232.55407617 5303455.37850183 3421524.44644752 5585825.50888523 + UNITS DD + SHAPEPATH "$SHAPEFILEPATH" + FONTSET "$CONFIGDIR/mapserver/fontset.txt" + SYMBOLSET "$CONFIGDIR/mapserver/symbols.sym" + IMAGECOLOR 255 255 255 + PROJECTION + "init=epsg:31467" + END + + DEBUG 5 + CONFIG "MS_ERRORFILE" "log/river-$RIVERNAME.log" + + WEB + METADATA + "wms_title" "FLYS Rivers Web Map Service" + "wms_onlineresource" "$MAPSERVERURL" + "wms_accessconstraints" "none" + "wms_fees" "none" + "wms_addresstype" "postal" + "wms_address" "Any Street" + "wms_city" "Any City" + "wms_stateorprovince" "Any state" + "wms_postcode" "My Postalcode" + "wms_country" "Any Country" + "wms_contactperson" "Any Person" + "wms_contactorganization" "Any Orga" + "wms_contactelectronicmailaddress" "any-email@example.com" + "wms_contactvoicetelephone" "Any's telephone number" + "wms_srs" "EPSG:4326 EPSG:31466 EPSG:31467" + "wms_feature_info_mime_type" "text/html" + "ows_enable_request" "*" + END + END + + LEGEND + KEYSIZE 20 20 + STATUS ON + TRANSPARENT ON + + LABEL + COLOR 150 150 150 + OUTLINECOLOR 255 255 255 + TYPE truetype + FONT "FreeSans" + SIZE 12 + POSITION AUTO + END + END + + ## Don't change the following lines. + #foreach ($LAYER in $LAYERS) + include "$LAYER" + #end +END \ No newline at end of file diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/doc/conf/mapserver/riveraxis-layer.vm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/doc/conf/mapserver/riveraxis-layer.vm Mon Dec 17 23:24:27 2012 +0100 @@ -0,0 +1,58 @@ +LAYER + NAME "$LAYER.getName()" + TYPE $LAYER.getType() + + CONNECTIONTYPE $LAYER.getConnectionType() + CONNECTION "$LAYER.getConnection()" + + DATA "$LAYER.getData()" + FILTER "$LAYER.getFilter()" + EXTENT $LAYER.getExtent() + + STATUS ON + TEMPLATE map.html + TOLERANCE 10 + DUMP TRUE + #if( $LAYER.getGroup() ) + GROUP "$LAYER.getGroup()" + #end + + #if ( $LAYER.getLabelItem() ) + LABELITEM $LAYER.getLabelItem() + #end + + PROJECTION + "init=epsg:31467" + END + + METADATA + "wms_title" "$LAYER.getTitle()" + "gml_include_items" "all" + #if ( $LAYER.getGroupTitle() ) + "wms_group_title" "$LAYER.getGroupTitle()" + #end + END + + #if ( $LAYER.getStyle() ) + $LAYER.getStyle() + #else + CLASS + NAME "" + STYLE + SIZE 5 + OUTLINECOLOR "#000000" + END + #if ( $LAYER.getLabelItem() ) + LABEL + ANGLE auto + SIZE 10 + COLOR "#000000" + TYPE truetype + FONT LiberationSans-Italic + POSITION ur + OFFSET 2 2 + END + #end + END + #end +END \ No newline at end of file diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/doc/conf/rivermap.xml --- a/flys-artifacts/doc/conf/rivermap.xml Mon Dec 17 18:03:53 2012 +0100 +++ b/flys-artifacts/doc/conf/rivermap.xml Mon Dec 17 23:24:27 2012 +0100 @@ -5,7 +5,7 @@ - + diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/doc/mapserver/river-mapfile.vm --- a/flys-artifacts/doc/mapserver/river-mapfile.vm Mon Dec 17 18:03:53 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -MAP - NAME "River $RIVERNAME" - STATUS ON - SIZE 600 400 - MAXSIZE 4000 - EXTENT 3233232.55407617 5303455.37850183 3421524.44644752 5585825.50888523 - UNITS DD - SHAPEPATH "$SHAPEFILEPATH" - FONTSET "$CONFIGDIR/mapserver/fontset.txt" - SYMBOLSET "$CONFIGDIR/mapserver/symbols.sym" - IMAGECOLOR 255 255 255 - PROJECTION - "init=epsg:31467" - END - - DEBUG 5 - CONFIG "MS_ERRORFILE" "log/river-$RIVERNAME.log" - - WEB - METADATA - "wms_title" "FLYS $RIVERNAME Web Map Service" - "wms_onlineresource" "$MAPSERVERURL" - "wms_accessconstraints" "none" - "wms_fees" "none" - "wms_addresstype" "postal" - "wms_address" "Any Street" - "wms_city" "Any City" - "wms_stateorprovince" "Any state" - "wms_postcode" "My Postalcode" - "wms_country" "Any Country" - "wms_contactperson" "Any Person" - "wms_contactorganization" "Any Orga" - "wms_contactelectronicmailaddress" "any-email@example.com" - "wms_contactvoicetelephone" "Any's telephone number" - "wms_srs" "EPSG:4326 EPSG:31466 EPSG:31467" - "wms_feature_info_mime_type" "text/html" - "ows_enable_request" "*" - END - END - - LEGEND - KEYSIZE 20 20 - STATUS ON - TRANSPARENT ON - - LABEL - COLOR 150 150 150 - OUTLINECOLOR 255 255 255 - TYPE truetype - FONT "FreeSans" - SIZE 12 - POSITION AUTO - END - END - - ## Don't change the following lines. - #foreach ($LAYER in $LAYERS) - include "$LAYER" - #end -END \ No newline at end of file diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/doc/mapserver/riveraxis-layer.vm --- a/flys-artifacts/doc/mapserver/riveraxis-layer.vm Mon Dec 17 18:03:53 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -LAYER - NAME "$LAYER.getName()" - TYPE $LAYER.getType() - - CONNECTIONTYPE $LAYER.getConnectionType() - CONNECTION "$LAYER.getConnection()" - - DATA "$LAYER.getData()" - FILTER "$LAYER.getFilter()" - EXTENT $LAYER.getExtent() - - STATUS ON - TEMPLATE map.html - TOLERANCE 10 - DUMP TRUE - #if( $LAYER.getGroup() ) - GROUP "$LAYER.getGroup()" - #end - - #if ( $LAYER.getLabelItem() ) - LABELITEM $LAYER.getLabelItem() - #end - - PROJECTION - "init=epsg:31467" - END - - METADATA - "wms_title" "$LAYER.getTitle()" - "gml_include_items" "all" - #if ( $LAYER.getGroupTitle() ) - "wms_group_title" "$LAYER.getGroupTitle()" - #end - END - - #if ( $LAYER.getStyle() ) - $LAYER.getStyle() - #else - CLASS - NAME "" - STYLE - SIZE 5 - OUTLINECOLOR "#000000" - END - #if ( $LAYER.getLabelItem() ) - LABEL - ANGLE auto - SIZE 10 - COLOR "#000000" - TYPE truetype - FONT LiberationSans-Italic - POSITION ur - OFFSET 2 2 - END - #end - END - #end -END \ No newline at end of file diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java Mon Dec 17 18:03:53 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java Mon Dec 17 23:24:27 2012 +0100 @@ -16,7 +16,7 @@ import de.intevation.flys.artifacts.model.map.WMSLayerFacet; import de.intevation.flys.artifacts.model.map.WSPLGENLayerFacet; import de.intevation.flys.collections.FLYSArtifactCollection; -import de.intevation.flys.utils.ArtefactMapfileGenerator; +import de.intevation.flys.utils.ArtifactMapfileGenerator; import de.intevation.flys.utils.GeometryUtils; import de.intevation.flys.utils.ThemeUtil; @@ -133,7 +133,7 @@ ) { try { if(wms instanceof WSPLGENLayerFacet) { - ArtefactMapfileGenerator mfg = new ArtefactMapfileGenerator(); + ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator(); mfg.createUeskLayer( flys, (WSPLGENLayerFacet) wms, @@ -152,7 +152,7 @@ protected void createBarriersLayer(FLYSArtifact flys, WMSLayerFacet wms) { - ArtefactMapfileGenerator mfg = new ArtefactMapfileGenerator(); + ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator(); try { mfg.createBarriersLayer(flys, wms); @@ -167,7 +167,7 @@ protected void createUserShapeLayer(FLYSArtifact flys, WMSLayerFacet wms) { - ArtefactMapfileGenerator mfg = new ArtefactMapfileGenerator(); + ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator(); try { mfg.createUserShapeLayer(flys, wms); @@ -188,7 +188,7 @@ ) { logger.debug("createDatabaseLayer for facet: " + wms.getName()); - ArtefactMapfileGenerator mfg = new ArtefactMapfileGenerator(); + ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator(); try { File baseDir = mfg.getShapefileBaseDir(); @@ -224,7 +224,7 @@ { logger.debug("MapGenerator.generate"); - ArtefactMapfileGenerator mfg = new ArtefactMapfileGenerator(); + ArtifactMapfileGenerator mfg = new ArtifactMapfileGenerator(); mfg.generate(); Document response = XMLUtils.newDocument(); diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/src/main/java/de/intevation/flys/utils/ArtefactMapfileGenerator.java --- a/flys-artifacts/src/main/java/de/intevation/flys/utils/ArtefactMapfileGenerator.java Mon Dec 17 18:03:53 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,337 +0,0 @@ -package de.intevation.flys.utils; - -import de.intevation.artifacts.CallContext; -import de.intevation.flys.artifacts.FLYSArtifact; -import de.intevation.flys.artifacts.model.LayerInfo; -import de.intevation.flys.artifacts.model.map.WMSDBLayerFacet; -import de.intevation.flys.artifacts.model.map.WMSLayerFacet; -import de.intevation.flys.artifacts.model.map.WSPLGENLayerFacet; -import de.intevation.flys.artifacts.resources.Resources; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.List; - -import org.apache.log4j.Logger; -import org.apache.velocity.Template; -import org.geotools.data.shapefile.ShpFiles; -import org.geotools.data.shapefile.shp.ShapefileHeader; -import org.geotools.data.shapefile.shp.ShapefileReader; - -public class ArtefactMapfileGenerator extends MapfileGenerator { - - private static Logger logger = Logger.getLogger(ArtefactMapfileGenerator.class); - - @Override - protected String getVelocityLogfile() { - return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_VELOCITY_LOGFILE); - } - - @Override - protected String getMapserverTemplatePath() { - return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPSERVER_TEMPLATE_PATH); - } - - @Override - protected String getMapserverUrl() { - return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPSERVER_URL); - } - - /** - * Method which starts searching for meta information file and mapfile - * generation. - */ - @Override - public void generate() throws IOException - { - File[] userDirs = getUserDirs(); - List layers = parseLayers(userDirs); - logger.info("Found " + layers.size() + " layers for user mapfile."); - - writeMapfile(layers); - } - - /** - * Creates a layer file used for Mapserver's mapfile which represents the - * floodmap. - * - * @param flys The FLYSArtifact that owns wms. - * @param wms The WMSLayerFacet that contains information for the layer. - */ - public void createUeskLayer( - FLYSArtifact flys, - WSPLGENLayerFacet wms, - String style, - CallContext context - ) throws FileNotFoundException, IOException - { - logger.debug("createUeskLayer"); - - LayerInfo layerinfo = new LayerInfo(); - layerinfo.setName(MS_WSPLGEN_PREFIX + flys.identifier()); - layerinfo.setType("POLYGON"); - layerinfo.setDirectory(flys.identifier()); - layerinfo.setData(WSPLGEN_RESULT_SHAPE); - layerinfo.setTitle(Resources.getMsg(Resources.getLocale(context.getMeta()), - "floodmap.uesk", - "Floodmap")); - layerinfo.setStyle(style); - layerinfo.setSrid(wms.getSrid()); - - String name = MS_LAYER_PREFIX + wms.getName(); - - Template template = getTemplateByName(WSPLGEN_LAYER_TEMPLATE); - if (template == null) { - logger.warn("Template '" + WSPLGEN_LAYER_TEMPLATE + "' found."); - return; - } - - try { - File dir = new File(getShapefileBaseDir(), flys.identifier()); - writeLayer(layerinfo, new File(dir, name), template); - } - catch (FileNotFoundException fnfe) { - logger.error(fnfe, fnfe); - logger.warn("Unable to write layer: " + name); - } - } - - - /** - * Creates a layer file used for Mapserver's mapfile which represents the - * user defined barriers. - * - * @param flys The FLYSArtifact that owns wms. - * @param wms The WMSLayerFacet that contains information for the layer. - */ - public void createBarriersLayer(FLYSArtifact flys, WMSLayerFacet wms) - throws FileNotFoundException, IOException - { - logger.debug("createBarriersLayer"); - - //String uuid = flys.identifier(); - //File dir = new File(getShapefileBaseDir(), uuid); - - createBarriersLineLayer(flys, wms); - createBarriersPolygonLayer(flys, wms); - } - - - protected void createBarriersLineLayer( - FLYSArtifact flys, - WMSLayerFacet wms - ) - throws FileNotFoundException, IOException - { - String uuid = flys.identifier(); - String group = MS_BARRIERS_PREFIX + uuid; - String groupTitle = "I18N_BARRIERS_TITLE"; - - File dir = new File(getShapefileBaseDir(), uuid); - File test = new File(dir, WSPLGEN_LINES_SHAPE); - - if (!test.exists() || !test.canRead()) { - logger.debug("No barrier line layer existing."); - return; - } - - LayerInfo lineInfo = new LayerInfo(); - lineInfo.setName(MS_LINE_PREFIX + uuid); - lineInfo.setType("LINE"); - lineInfo.setDirectory(uuid); - lineInfo.setData(WSPLGEN_LINES_SHAPE); - lineInfo.setTitle("I18N_LINE_SHAPE"); - lineInfo.setGroup(group); - lineInfo.setGroupTitle(groupTitle); - lineInfo.setSrid(wms.getSrid()); - - String nameLines = MS_LAYER_PREFIX + wms.getName() + "-lines"; - - Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE); - if (tpl == null) { - logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found."); - return; - } - - try { - writeLayer(lineInfo, new File(dir, nameLines), tpl); - } - catch (FileNotFoundException fnfe) { - logger.error(fnfe, fnfe); - logger.warn("Unable to write layer: " + nameLines); - } - } - - protected void createBarriersPolygonLayer( - FLYSArtifact flys, - WMSLayerFacet wms - ) - throws FileNotFoundException, IOException - { - String uuid = flys.identifier(); - String group = uuid + MS_BARRIERS_PREFIX; - String groupTitle = "I18N_BARRIERS_TITLE"; - - File dir = new File(getShapefileBaseDir(), uuid); - File test = new File(dir, WSPLGEN_POLYGONS_SHAPE); - - if (!test.exists() || !test.canRead()) { - logger.debug("No barrier line layer existing."); - return; - } - - LayerInfo polygonInfo = new LayerInfo(); - polygonInfo.setName(MS_POLYGONS_PREFIX + uuid); - polygonInfo.setType("POLYGON"); - polygonInfo.setDirectory(uuid); - polygonInfo.setData(WSPLGEN_POLYGONS_SHAPE); - polygonInfo.setTitle("I18N_POLYGON_SHAPE"); - polygonInfo.setGroup(group); - polygonInfo.setGroupTitle(groupTitle); - polygonInfo.setSrid(wms.getSrid()); - - String namePolygons = MS_LAYER_PREFIX + wms.getName() + "-polygons"; - - Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE); - if (tpl == null) { - logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found."); - return; - } - - try { - writeLayer(polygonInfo, new File(dir, namePolygons), tpl); - } - catch (FileNotFoundException fnfe) { - logger.error(fnfe, fnfe); - logger.warn("Unable to write layer: " + namePolygons); - } - } - - - /** - * Creates a layer file used for Mapserver's mapfile which represents the - * shape files uploaded by the user. - * - * @param flys The FLYSArtifact that owns wms. - * @param wms The WMSLayerFacet that contains information for the layer. - */ - public void createUserShapeLayer(FLYSArtifact flys, WMSLayerFacet wms) - throws FileNotFoundException, IOException - { - logger.debug("createUserShapeLayer"); - - String uuid = flys.identifier(); - File dir = new File(getShapefileBaseDir(), uuid); - File test = new File(dir, WSPLGEN_USER_SHAPE); - - if (!test.exists() || !test.canRead()) { - logger.debug("No user layer existing."); - return; - } - - File userShape = new File(dir, WSPLGEN_USER_SHAPE); - ShpFiles sf = new ShpFiles(userShape); - ShapefileReader sfr = new ShapefileReader(sf, true, false, null); - ShapefileHeader sfh = sfr.getHeader(); - - String group = uuid + MS_USERSHAPE_PREFIX; - String groupTitle = "I18N_USER_SHAPE_TITLE"; - - LayerInfo info = new LayerInfo(); - info.setName(MS_USERSHAPE_PREFIX + uuid); - if (sfh.getShapeType().isLineType()) { - info.setType("LINE"); - } - else if (sfh.getShapeType().isPolygonType()) { - info.setType("POLYGON"); - } - else { - return; - } - info.setDirectory(uuid); - info.setData(WSPLGEN_USER_SHAPE); - info.setTitle("I18N_USER_SHAPE"); - info.setGroup(group); - info.setGroupTitle(groupTitle); - info.setSrid(wms.getSrid()); - - String nameUser = MS_LAYER_PREFIX + wms.getName(); - - Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE); - if (tpl == null) { - logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found."); - return; - } - - try { - writeLayer(info, new File(dir, nameUser), tpl); - } - catch (FileNotFoundException fnfe) { - logger.error(fnfe, fnfe); - logger.warn("Unable to write layer: " + nameUser); - } - - } - - - /** - * Creates a layer file used for Mapserver's mapfile which represents - * geometries from database. - * - * @param flys The FLYSArtifact that owns wms. - * @param wms The WMSLayerFacet that contains information for the layer. - */ - public void createDatabaseLayer( - FLYSArtifact flys, - WMSDBLayerFacet wms, - String style - ) - throws FileNotFoundException, IOException - { - logger.debug("createDatabaseLayer"); - - LayerInfo layerinfo = new LayerInfo(); - layerinfo.setName(wms.getName() + "-" + flys.identifier()); - layerinfo.setType(wms.getGeometryType()); - layerinfo.setFilter(wms.getFilter()); - layerinfo.setData(wms.getData()); - layerinfo.setTitle(wms.getDescription()); - layerinfo.setStyle(style); - if(wms.getExtent() != null) { - layerinfo.setExtent(GeometryUtils.jtsBoundsToOLBounds(wms.getExtent())); - } - layerinfo.setConnection(wms.getConnection()); - layerinfo.setConnectionType(wms.getConnectionType()); - layerinfo.setLabelItem(wms.getLabelItem()); - layerinfo.setSrid(wms.getSrid()); - - String name = MS_LAYER_PREFIX + wms.getName(); - - Template template = getTemplateByName(DB_LAYER_TEMPLATE); - if (template == null) { - logger.warn("Template '" + DB_LAYER_TEMPLATE + "' found."); - return; - } - - try { - File dir = new File(getShapefileBaseDir(), flys.identifier()); - writeLayer(layerinfo, new File(dir, name), template); - } - catch (FileNotFoundException fnfe) { - logger.error(fnfe, fnfe); - logger.warn("Unable to write layer: " + name); - } - } - - @Override - protected String getMapfilePath() { - return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPFILE_PATH); - } - - @Override - protected String getMapfileTemplate() { - return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPFILE_TEMPLATE); - } - -} diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/src/main/java/de/intevation/flys/utils/ArtifactMapfileGenerator.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/ArtifactMapfileGenerator.java Mon Dec 17 23:24:27 2012 +0100 @@ -0,0 +1,337 @@ +package de.intevation.flys.utils; + +import de.intevation.artifacts.CallContext; +import de.intevation.flys.artifacts.FLYSArtifact; +import de.intevation.flys.artifacts.model.LayerInfo; +import de.intevation.flys.artifacts.model.map.WMSDBLayerFacet; +import de.intevation.flys.artifacts.model.map.WMSLayerFacet; +import de.intevation.flys.artifacts.model.map.WSPLGENLayerFacet; +import de.intevation.flys.artifacts.resources.Resources; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.List; + +import org.apache.log4j.Logger; +import org.apache.velocity.Template; +import org.geotools.data.shapefile.ShpFiles; +import org.geotools.data.shapefile.shp.ShapefileHeader; +import org.geotools.data.shapefile.shp.ShapefileReader; + +public class ArtifactMapfileGenerator extends MapfileGenerator { + + private static Logger logger = Logger.getLogger(ArtifactMapfileGenerator.class); + + @Override + protected String getVelocityLogfile() { + return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_VELOCITY_LOGFILE); + } + + @Override + protected String getMapserverTemplatePath() { + return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPSERVER_TEMPLATE_PATH); + } + + @Override + protected String getMapserverUrl() { + return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPSERVER_URL); + } + + /** + * Method which starts searching for meta information file and mapfile + * generation. + */ + @Override + public void generate() throws IOException + { + File[] userDirs = getUserDirs(); + List layers = parseLayers(userDirs); + logger.info("Found " + layers.size() + " layers for user mapfile."); + + writeMapfile(layers); + } + + /** + * Creates a layer file used for Mapserver's mapfile which represents the + * floodmap. + * + * @param flys The FLYSArtifact that owns wms. + * @param wms The WMSLayerFacet that contains information for the layer. + */ + public void createUeskLayer( + FLYSArtifact flys, + WSPLGENLayerFacet wms, + String style, + CallContext context + ) throws FileNotFoundException, IOException + { + logger.debug("createUeskLayer"); + + LayerInfo layerinfo = new LayerInfo(); + layerinfo.setName(MS_WSPLGEN_PREFIX + flys.identifier()); + layerinfo.setType("POLYGON"); + layerinfo.setDirectory(flys.identifier()); + layerinfo.setData(WSPLGEN_RESULT_SHAPE); + layerinfo.setTitle(Resources.getMsg(Resources.getLocale(context.getMeta()), + "floodmap.uesk", + "Floodmap")); + layerinfo.setStyle(style); + layerinfo.setSrid(wms.getSrid()); + + String name = MS_LAYER_PREFIX + wms.getName(); + + Template template = getTemplateByName(WSPLGEN_LAYER_TEMPLATE); + if (template == null) { + logger.warn("Template '" + WSPLGEN_LAYER_TEMPLATE + "' found."); + return; + } + + try { + File dir = new File(getShapefileBaseDir(), flys.identifier()); + writeLayer(layerinfo, new File(dir, name), template); + } + catch (FileNotFoundException fnfe) { + logger.error(fnfe, fnfe); + logger.warn("Unable to write layer: " + name); + } + } + + + /** + * Creates a layer file used for Mapserver's mapfile which represents the + * user defined barriers. + * + * @param flys The FLYSArtifact that owns wms. + * @param wms The WMSLayerFacet that contains information for the layer. + */ + public void createBarriersLayer(FLYSArtifact flys, WMSLayerFacet wms) + throws FileNotFoundException, IOException + { + logger.debug("createBarriersLayer"); + + //String uuid = flys.identifier(); + //File dir = new File(getShapefileBaseDir(), uuid); + + createBarriersLineLayer(flys, wms); + createBarriersPolygonLayer(flys, wms); + } + + + protected void createBarriersLineLayer( + FLYSArtifact flys, + WMSLayerFacet wms + ) + throws FileNotFoundException, IOException + { + String uuid = flys.identifier(); + String group = MS_BARRIERS_PREFIX + uuid; + String groupTitle = "I18N_BARRIERS_TITLE"; + + File dir = new File(getShapefileBaseDir(), uuid); + File test = new File(dir, WSPLGEN_LINES_SHAPE); + + if (!test.exists() || !test.canRead()) { + logger.debug("No barrier line layer existing."); + return; + } + + LayerInfo lineInfo = new LayerInfo(); + lineInfo.setName(MS_LINE_PREFIX + uuid); + lineInfo.setType("LINE"); + lineInfo.setDirectory(uuid); + lineInfo.setData(WSPLGEN_LINES_SHAPE); + lineInfo.setTitle("I18N_LINE_SHAPE"); + lineInfo.setGroup(group); + lineInfo.setGroupTitle(groupTitle); + lineInfo.setSrid(wms.getSrid()); + + String nameLines = MS_LAYER_PREFIX + wms.getName() + "-lines"; + + Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE); + if (tpl == null) { + logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found."); + return; + } + + try { + writeLayer(lineInfo, new File(dir, nameLines), tpl); + } + catch (FileNotFoundException fnfe) { + logger.error(fnfe, fnfe); + logger.warn("Unable to write layer: " + nameLines); + } + } + + protected void createBarriersPolygonLayer( + FLYSArtifact flys, + WMSLayerFacet wms + ) + throws FileNotFoundException, IOException + { + String uuid = flys.identifier(); + String group = uuid + MS_BARRIERS_PREFIX; + String groupTitle = "I18N_BARRIERS_TITLE"; + + File dir = new File(getShapefileBaseDir(), uuid); + File test = new File(dir, WSPLGEN_POLYGONS_SHAPE); + + if (!test.exists() || !test.canRead()) { + logger.debug("No barrier line layer existing."); + return; + } + + LayerInfo polygonInfo = new LayerInfo(); + polygonInfo.setName(MS_POLYGONS_PREFIX + uuid); + polygonInfo.setType("POLYGON"); + polygonInfo.setDirectory(uuid); + polygonInfo.setData(WSPLGEN_POLYGONS_SHAPE); + polygonInfo.setTitle("I18N_POLYGON_SHAPE"); + polygonInfo.setGroup(group); + polygonInfo.setGroupTitle(groupTitle); + polygonInfo.setSrid(wms.getSrid()); + + String namePolygons = MS_LAYER_PREFIX + wms.getName() + "-polygons"; + + Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE); + if (tpl == null) { + logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found."); + return; + } + + try { + writeLayer(polygonInfo, new File(dir, namePolygons), tpl); + } + catch (FileNotFoundException fnfe) { + logger.error(fnfe, fnfe); + logger.warn("Unable to write layer: " + namePolygons); + } + } + + + /** + * Creates a layer file used for Mapserver's mapfile which represents the + * shape files uploaded by the user. + * + * @param flys The FLYSArtifact that owns wms. + * @param wms The WMSLayerFacet that contains information for the layer. + */ + public void createUserShapeLayer(FLYSArtifact flys, WMSLayerFacet wms) + throws FileNotFoundException, IOException + { + logger.debug("createUserShapeLayer"); + + String uuid = flys.identifier(); + File dir = new File(getShapefileBaseDir(), uuid); + File test = new File(dir, WSPLGEN_USER_SHAPE); + + if (!test.exists() || !test.canRead()) { + logger.debug("No user layer existing."); + return; + } + + File userShape = new File(dir, WSPLGEN_USER_SHAPE); + ShpFiles sf = new ShpFiles(userShape); + ShapefileReader sfr = new ShapefileReader(sf, true, false, null); + ShapefileHeader sfh = sfr.getHeader(); + + String group = uuid + MS_USERSHAPE_PREFIX; + String groupTitle = "I18N_USER_SHAPE_TITLE"; + + LayerInfo info = new LayerInfo(); + info.setName(MS_USERSHAPE_PREFIX + uuid); + if (sfh.getShapeType().isLineType()) { + info.setType("LINE"); + } + else if (sfh.getShapeType().isPolygonType()) { + info.setType("POLYGON"); + } + else { + return; + } + info.setDirectory(uuid); + info.setData(WSPLGEN_USER_SHAPE); + info.setTitle("I18N_USER_SHAPE"); + info.setGroup(group); + info.setGroupTitle(groupTitle); + info.setSrid(wms.getSrid()); + + String nameUser = MS_LAYER_PREFIX + wms.getName(); + + Template tpl = getTemplateByName(SHP_LAYER_TEMPLATE); + if (tpl == null) { + logger.warn("Template '" + SHP_LAYER_TEMPLATE + "' found."); + return; + } + + try { + writeLayer(info, new File(dir, nameUser), tpl); + } + catch (FileNotFoundException fnfe) { + logger.error(fnfe, fnfe); + logger.warn("Unable to write layer: " + nameUser); + } + + } + + + /** + * Creates a layer file used for Mapserver's mapfile which represents + * geometries from database. + * + * @param flys The FLYSArtifact that owns wms. + * @param wms The WMSLayerFacet that contains information for the layer. + */ + public void createDatabaseLayer( + FLYSArtifact flys, + WMSDBLayerFacet wms, + String style + ) + throws FileNotFoundException, IOException + { + logger.debug("createDatabaseLayer"); + + LayerInfo layerinfo = new LayerInfo(); + layerinfo.setName(wms.getName() + "-" + flys.identifier()); + layerinfo.setType(wms.getGeometryType()); + layerinfo.setFilter(wms.getFilter()); + layerinfo.setData(wms.getData()); + layerinfo.setTitle(wms.getDescription()); + layerinfo.setStyle(style); + if(wms.getExtent() != null) { + layerinfo.setExtent(GeometryUtils.jtsBoundsToOLBounds(wms.getExtent())); + } + layerinfo.setConnection(wms.getConnection()); + layerinfo.setConnectionType(wms.getConnectionType()); + layerinfo.setLabelItem(wms.getLabelItem()); + layerinfo.setSrid(wms.getSrid()); + + String name = MS_LAYER_PREFIX + wms.getName(); + + Template template = getTemplateByName(DB_LAYER_TEMPLATE); + if (template == null) { + logger.warn("Template '" + DB_LAYER_TEMPLATE + "' found."); + return; + } + + try { + File dir = new File(getShapefileBaseDir(), flys.identifier()); + writeLayer(layerinfo, new File(dir, name), template); + } + catch (FileNotFoundException fnfe) { + logger.error(fnfe, fnfe); + logger.warn("Unable to write layer: " + name); + } + } + + @Override + protected String getMapfilePath() { + return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPFILE_PATH); + } + + @Override + protected String getMapfileTemplate() { + return FLYSUtils.getXPathString(FLYSUtils.XPATH_FLOODMAP_MAPFILE_TEMPLATE); + } + +} diff -r 63d1e91db666 -r 13abfb1bcb75 flys-artifacts/src/main/java/de/intevation/flys/utils/RiverMapfileGenerator.java --- a/flys-artifacts/src/main/java/de/intevation/flys/utils/RiverMapfileGenerator.java Mon Dec 17 18:03:53 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/RiverMapfileGenerator.java Mon Dec 17 23:24:27 2012 +0100 @@ -6,6 +6,7 @@ import java.io.File; import java.io.FileNotFoundException; +import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; @@ -20,15 +21,20 @@ */ @Override public void generate() { - List rivers = RiverFactory.getRivers(); + logger.debug("generate()"); + + List rivers = RiverFactory.getRivers(); + List riverNames = new ArrayList(); for (River river : rivers) { - createRiverAxisLayer( + /*createRiverAxisLayer( river.getName(), river.getId(), "41677", - "100,100,100,100"); + "100,100,100,100");*/ + riverNames.add(river.getName()); } + writeMapfile(riverNames); } protected void createRiverAxisLayer(String riverName, int riverID, String srid, String extend) {