Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/FloodMapState.java @ 2095:8cb679d4ec49
Implemented initialize() in FloodMapState to enable cloning floodmaps.
flys-artifacts/trunk@3642 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 10 Jan 2012 11:50:01 +0000 |
parents | ebc2aa64c1be |
children | a78dafdd8590 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/FloodMapState.java Tue Jan 10 11:44:46 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/FloodMapState.java Tue Jan 10 11:50:01 2012 +0000 @@ -40,6 +40,7 @@ import de.intevation.flys.artifacts.model.CalculationMessage; import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.FacetTypes; +import de.intevation.flys.artifacts.model.WMSLayerFacet; import de.intevation.flys.artifacts.model.WQKms; import de.intevation.flys.artifacts.model.WSPLGENCalculation; import de.intevation.flys.artifacts.model.WSPLGENJob; @@ -67,6 +68,8 @@ System.getProperty("flys.uesk.keep.artifactsdir", "false"); + public static final String OUTPUT_NAME = "floodmap"; + public static final String WSP_ARTIFACT = "wsp"; public static final String WINFO_WSP_STATE_ID = "state.winfo.waterlevel"; @@ -83,12 +86,72 @@ public static final int WSPLGEN_DEFAULT_OUTPUT = 0; + /** + * @param orig + * @param owner + * @param context + * @param callMeta + */ @Override - public void initialize(Artifact orig, Object context, CallMeta callMeta) { + public void initialize( + Artifact orig, + Artifact owner, + Object context, + CallMeta callMeta + ) { logger.info("Initialize State with Artifact: " + orig.identifier()); + + copyShapeDir(orig, owner); + modifyFacets(orig, owner, context, callMeta); + + MapfileGenerator.getInstance().update(); } + protected void copyShapeDir(Artifact orig, Artifact owner) { + File origDir = getDirectory((FLYSArtifact) orig); + File thisDir = getDirectory((FLYSArtifact) owner); + + FileTools.copyDirectory(origDir, thisDir); + } + + + protected void modifyFacets( + Artifact orig, + Artifact owner, + Object context, + CallMeta callMeta + ) { + FLYSArtifact flys = (FLYSArtifact) owner; + List<Facet> facets = flys.getFacets(); + if (facets == null || facets.size() == 0) { + logger.warn("No facets for '" + OUTPUT_NAME + "' given!"); + return; + } + + for (Facet facet: facets) { + if (facet instanceof WMSLayerFacet) { + WMSLayerFacet wms = (WMSLayerFacet) facet; + + List<String> layers = wms.getLayers(); + + for (String layer: layers) { + if (layer.startsWith(MapfileGenerator.MS_WSPLGEN_PREFIX)) { + wms.removeLayer(layer); + + String newLayer = MapfileGenerator.MS_WSPLGEN_PREFIX + + owner.identifier(); + + wms.addLayer(newLayer); + + logger.debug( + "Replaced layer: " + layer + " with " + newLayer); + } + } + } + } + } + @Override public Object computeAdvance(