comparison gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputState.java @ 829:95733e564896

Bugfix: Put some Code that is responsible for Synchonization into the final-block to prevent that the lock is not released. gnv-artifacts/trunk@923 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 13 Apr 2010 14:26:21 +0000
parents bb7afd783321
children 2423cefe7d39
comparison
equal deleted inserted replaced
828:28028979c813 829:95733e564896
1 package de.intevation.gnv.state.profile.horizontalcrosssection; 1 package de.intevation.gnv.state.profile.horizontalcrosssection;
2
3 import java.awt.Dimension;
4 import java.io.File;
5 import java.io.IOException;
6 import java.io.OutputStream;
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.Date;
10 import java.util.HashMap;
11 import java.util.List;
12 import java.util.Map;
13
14 import org.apache.log4j.Logger;
15 import org.w3c.dom.Document;
16 import org.w3c.dom.Element;
17 import org.w3c.dom.Node;
2 18
3 import com.vividsolutions.jts.geom.Coordinate; 19 import com.vividsolutions.jts.geom.Coordinate;
4 import com.vividsolutions.jts.geom.Envelope; 20 import com.vividsolutions.jts.geom.Envelope;
5 import com.vividsolutions.jts.geom.MultiLineString; 21 import com.vividsolutions.jts.geom.MultiLineString;
6 import com.vividsolutions.jts.geom.MultiPolygon; 22 import com.vividsolutions.jts.geom.MultiPolygon;
7 import com.vividsolutions.jts.geom.Polygon; 23 import com.vividsolutions.jts.geom.Polygon;
8 24
9 import de.intevation.artifactdatabase.Config; 25 import de.intevation.artifactdatabase.Config;
10 import de.intevation.artifactdatabase.XMLUtils; 26 import de.intevation.artifactdatabase.XMLUtils;
11
12 import de.intevation.artifacts.ArtifactNamespaceContext; 27 import de.intevation.artifacts.ArtifactNamespaceContext;
13 import de.intevation.artifacts.CallContext; 28 import de.intevation.artifacts.CallContext;
14
15 import de.intevation.gnv.artifacts.cache.CacheFactory; 29 import de.intevation.gnv.artifacts.cache.CacheFactory;
16
17 import de.intevation.gnv.artifacts.context.GNVArtifactContext; 30 import de.intevation.gnv.artifacts.context.GNVArtifactContext;
18
19 import de.intevation.gnv.geobackend.base.Result; 31 import de.intevation.gnv.geobackend.base.Result;
20 import de.intevation.gnv.geobackend.base.ResultDescriptor; 32 import de.intevation.gnv.geobackend.base.ResultDescriptor;
21
22 import de.intevation.gnv.geobackend.base.query.QueryExecutor; 33 import de.intevation.gnv.geobackend.base.query.QueryExecutor;
23 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; 34 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
24
25 import de.intevation.gnv.geobackend.base.query.exception.QueryException; 35 import de.intevation.gnv.geobackend.base.query.exception.QueryException;
26
27 import de.intevation.gnv.geobackend.sde.datasources.RasterObject; 36 import de.intevation.gnv.geobackend.sde.datasources.RasterObject;
28
29 import de.intevation.gnv.math.AreaInterpolation; 37 import de.intevation.gnv.math.AreaInterpolation;
30 import de.intevation.gnv.math.AttributedPoint2ds; 38 import de.intevation.gnv.math.AttributedPoint2ds;
31 import de.intevation.gnv.math.Point2d; 39 import de.intevation.gnv.math.Point2d;
32 import de.intevation.gnv.math.QueriedXYDepth; 40 import de.intevation.gnv.math.QueriedXYDepth;
33
34 import de.intevation.gnv.raster.ExternalIndexConverter; 41 import de.intevation.gnv.raster.ExternalIndexConverter;
35 import de.intevation.gnv.raster.IsoAttributeGenerator; 42 import de.intevation.gnv.raster.IsoAttributeGenerator;
36 import de.intevation.gnv.raster.JTSMultiLineStringProducer; 43 import de.intevation.gnv.raster.JTSMultiLineStringProducer;
37 import de.intevation.gnv.raster.JTSMultiPolygonProducer; 44 import de.intevation.gnv.raster.JTSMultiPolygonProducer;
38 import de.intevation.gnv.raster.Palette; 45 import de.intevation.gnv.raster.Palette;
39 import de.intevation.gnv.raster.PaletteManager; 46 import de.intevation.gnv.raster.PaletteManager;
40 import de.intevation.gnv.raster.Raster; 47 import de.intevation.gnv.raster.Raster;
41 import de.intevation.gnv.raster.Vectorizer; 48 import de.intevation.gnv.raster.Vectorizer;
42
43 import de.intevation.gnv.state.InputData; 49 import de.intevation.gnv.state.InputData;
44 import de.intevation.gnv.state.OutputStateBase; 50 import de.intevation.gnv.state.OutputStateBase;
45
46 import de.intevation.gnv.state.exception.StateException; 51 import de.intevation.gnv.state.exception.StateException;
47
48 import de.intevation.gnv.utils.ExclusiveExec; 52 import de.intevation.gnv.utils.ExclusiveExec;
49 import de.intevation.gnv.utils.FileUtils; 53 import de.intevation.gnv.utils.FileUtils;
50 import de.intevation.gnv.utils.MapfileGenerator; 54 import de.intevation.gnv.utils.MapfileGenerator;
51 import de.intevation.gnv.utils.MetaWriter; 55 import de.intevation.gnv.utils.MetaWriter;
52 import de.intevation.gnv.utils.Pair; 56 import de.intevation.gnv.utils.Pair;
53 import de.intevation.gnv.utils.ShapeFileWriter; 57 import de.intevation.gnv.utils.ShapeFileWriter;
54 import de.intevation.gnv.utils.StringUtils; 58 import de.intevation.gnv.utils.StringUtils;
55 import de.intevation.gnv.utils.WKTUtils; 59 import de.intevation.gnv.utils.WKTUtils;
56
57 import java.awt.Dimension;
58
59 import java.io.File;
60 import java.io.IOException;
61 import java.io.OutputStream;
62
63 import java.util.ArrayList;
64 import java.util.Collection;
65 import java.util.Date;
66 import java.util.HashMap;
67 import java.util.List;
68 import java.util.Map;
69
70 import org.apache.log4j.Logger;
71
72 import org.w3c.dom.Document;
73 import org.w3c.dom.Element;
74 import org.w3c.dom.Node;
75 60
76 /** 61 /**
77 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a> 62 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a>
78 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> 63 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
79 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 64 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
347 pathElement.setTextContent(path); 332 pathElement.setTextContent(path);
348 } 333 }
349 else { 334 else {
350 AttributedPoint2ds result = getResult(uuid, callContext); 335 AttributedPoint2ds result = getResult(uuid, callContext);
351 ExclusiveExec.UniqueKey key = ExclusiveExec.INSTANCE.acquire(uuid); 336 ExclusiveExec.UniqueKey key = ExclusiveExec.INSTANCE.acquire(uuid);
337 try{
352 if (result != null 338 if (result != null
353 && (path = writeToShapeFile(uuid, result, callContext)) != null) { 339 && (path = writeToShapeFile(uuid, result, callContext)) != null) {
354 ExclusiveExec.INSTANCE.release(key);
355 340
356 String paramType = findParameterType(callContext); 341 String paramType = findParameterType(callContext);
357 342
358 InputData inputTitle = this.inputData.get("title");
359 String title = getLayerTitle(inputData); 343 String title = getLayerTitle(inputData);
360 if (title == null) { 344 if (title == null) {
361 title = uuid; 345 title = uuid;
362 } 346 }
363 callContext.putContextValue( 347 callContext.putContextValue(
375 MapfileGenerator.getInstance().update(); 359 MapfileGenerator.getInstance().update();
376 return meta; 360 return meta;
377 } 361 }
378 362
379 pathElement.setTextContent(path); 363 pathElement.setTextContent(path);
364 }
365 }finally{
366 ExclusiveExec.INSTANCE.release(key);
380 } 367 }
381 } 368 }
382 369
383 return document; 370 return document;
384 } 371 }

http://dive4elements.wald.intevation.org