Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/FloodMapState.java @ 1650:aaf8d32f85bd
Improved Facet creation for floodmaps - WSPLGEN and barriers Facets are only created if the calculation was successful.
flys-artifacts/trunk@2837 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 27 Sep 2011 12:40:42 +0000 |
parents | 74142aa5d938 |
children | 3bf464ec436f |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/FloodMapState.java Tue Sep 27 11:33:45 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/FloodMapState.java Tue Sep 27 12:40:42 2011 +0000 @@ -39,7 +39,6 @@ import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.WQKms; -import de.intevation.flys.artifacts.model.WMSLayerFacet; import de.intevation.flys.artifacts.model.WSPLGENCalculation; import de.intevation.flys.artifacts.model.WSPLGENJob; import de.intevation.flys.artifacts.model.WSPLGENReportFacet; @@ -48,7 +47,7 @@ import de.intevation.flys.exports.WstWriter; import de.intevation.flys.utils.FLYSUtils; import de.intevation.flys.utils.GeometryUtils; -import de.intevation.flys.utils.MapfileGenerator; +import de.intevation.flys.wsplgen.FacetCreator; import de.intevation.flys.wsplgen.JobObserver; import de.intevation.flys.wsplgen.Scheduler; @@ -78,130 +77,10 @@ public static final String WSPLGEN_WSP_FILE = "waterlevel.wst"; public static final String WSPLGEN_OUTPUT_FILE = "wsplgen.shp"; - public static final String I18N_WSPLGEN_RESULT = "floodmap.uesk"; - public static final String I18N_WSPLGEN_DEFAULT = "floodmap.uesk"; - public static final String I18N_BARRIERS = "floodmap.barriers"; - public static final String I18N_BARRIERS_DEFAULT = "floodmap.barriers"; - public static final int WSPLGEN_DEFAULT_OUTPUT = 0; - /** - * Inner class that is used to create facets. An instance of this class is - * used while packaging the data for the WSPLGEN calculation. - */ - private static class FacetCreator { - protected FLYSArtifact artifact; - protected CallContext cc; - protected List<Facet> facets; - protected String url; - protected String hash; - protected String stateId; - - public FacetCreator( - FLYSArtifact artifact, - CallContext cc, - String hash, - String sId - ) { - this.facets = new ArrayList<Facet>(2); - this.artifact = artifact; - this.cc = cc; - this.hash = hash; - this.stateId = sId; - } - - protected String getRiver() { - return artifact.getDataAsString("river"); - } - - protected String getUrl() { - String url = FLYSUtils.getXPathString(FLYSUtils.XPATH_MAPSERVER_URL); - url = url + "user-wms"; - return url; - } - - protected String getSrid() { - return FLYSUtils.getRiverSrid(artifact); - } - - protected String getWSPLGENBounds() { - String river = getRiver(); - double kms[] = FLYSUtils.getKmRange(artifact); - - CrossSectionTrack a = - CrossSectionTrack.getCrossSectionTrack(river, kms[0]); - - CrossSectionTrack b = - CrossSectionTrack.getCrossSectionTrack(river, kms[1]); - - if (a == null || b == null) { - return null; - } - - return GeometryUtils.createOLBounds(a.getGeom(), b.getGeom()); - } - - protected String getBounds() { - return GeometryUtils.getRiverBounds(getRiver()); - } - - public List<Facet> getFacets() { - return facets; - } - - public void createWSPLGENFacet() { - WMSLayerFacet wsplgen = new WMSLayerFacet( - 0, - FLOODMAP_WSPLGEN, - Resources.getMsg( - cc.getMeta(), - I18N_WSPLGEN_RESULT, - I18N_WSPLGEN_DEFAULT), - ComputeType.ADVANCE, - stateId, - hash, - getUrl()); - - String bounds = getWSPLGENBounds(); - - if (bounds == null || bounds.length() == 0) { - bounds = getBounds(); - } - - wsplgen.addLayer( - artifact.identifier() + MapfileGenerator.MS_WSPLGEN_POSTFIX); - wsplgen.setSrid(getSrid()); - wsplgen.setExtent(bounds); - - facets.add(wsplgen); - } - - public void createBarrierFacet() { - WMSLayerFacet barriers = new WMSLayerFacet( - 1, - FLOODMAP_WSPLGEN, - Resources.getMsg( - cc.getMeta(), - I18N_BARRIERS, - I18N_BARRIERS_DEFAULT), - ComputeType.ADVANCE, - stateId, - hash, - getUrl()); - - barriers.addLayer( - artifact.identifier() + MapfileGenerator.MS_BARRIERS_POSTFIX); - barriers.setSrid(getSrid()); - barriers.setExtent(getBounds()); - - facets.add(barriers); - } - } // end of FacetCreator - - - @Override public Object computeAdvance( FLYSArtifact artifact, @@ -222,7 +101,7 @@ WSPLGENCalculation calculation = new WSPLGENCalculation(); FacetCreator facetCreator = new FacetCreator( - artifact, context, hash, getID()); + artifact, context, hash, getID(), facets); WSPLGENJob job = prepareWSPLGENJob( artifact, @@ -252,10 +131,6 @@ return null; } - facetCreator.createWSPLGENFacet(); - - facets.addAll(facetCreator.getFacets()); - context.afterCall(CallContext.BACKGROUND); context.addBackgroundMessage(new CalculationMessage( JobObserver.STEPS.length, @@ -333,6 +208,7 @@ WSPLGENJob job = new WSPLGENJob( artifact, artifactDir, + facetCreator, context, calculation);