]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.elevation.server/src/org/simantics/maps/elevation/server/TiffTileInterface.java
Fixed most warnings from district codebase after JavaSE-11 switch
[simantics/district.git] / org.simantics.maps.elevation.server / src / org / simantics / maps / elevation / server / TiffTileInterface.java
index 6f24ad5b65073eec799ac66247c90180d14b9f4e..6cc9cd7b79e0c544f01f14f02c7c23563ef50927 100644 (file)
@@ -1,6 +1,7 @@
 package org.simantics.maps.elevation.server;
 
 import java.awt.geom.Rectangle2D;
+import java.io.Closeable;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -27,11 +28,12 @@ import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.geom.Envelope;
 import com.vividsolutions.jts.index.strtree.STRtree;
 
-public class TiffTileInterface {
+public class TiffTileInterface implements Closeable {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(TiffTileInterface.class);
 
     private Path tilesFolder;
+    private Map<Path, Envelope> envelopes = new ConcurrentHashMap<>();
     private LoadingCache<Path, TiffInterface> interfaceCache;
     private int openInterfacesSize;
     private STRtree index;
@@ -94,8 +96,6 @@ public class TiffTileInterface {
         });
     }
 
-    private Map<Path, Envelope> envelopes = new ConcurrentHashMap<>();
-
     public Collection<Rectangle2D> getBoundingBoxes() {
         Collection<Rectangle2D> rects = envelopes.values().stream().map(env -> {
             double x = env.getMinX();
@@ -111,13 +111,14 @@ public class TiffTileInterface {
         try {
             c4326 = CRS.decode("EPSG:4326");
         } catch (Exception e) {
-            LOGGER.error("Could not initialize epsg:4326", e);
+            LOGGER.error("Could not initialize EPSG:4326", e);
         }
     }
 
     public Number lookup(double x, double y) {
-        LOGGER.info("Looking up x={} y={}", x, y);
+        LOGGER.trace("Looking up x={} y={}", x, y);
         DirectPosition p = new DirectPosition2D(c4326, x, y);
+        @SuppressWarnings("unchecked")
         List<Path> tifFiles = (List<Path>) index.query(new Envelope(new Coordinate(x, y)));
         for (Path tifFile : tifFiles) {
             TiffInterface tifInterface = openTifInterface(tifFile);
@@ -128,9 +129,20 @@ public class TiffTileInterface {
                     tifInterface.close();
                 }
             } else {
-                System.out.println("not found");
+                //System.out.println("not found");
             }
         }
-        return new Double(0); // use 0 by default for now
+        return Double.valueOf(0); // use 0 by default for now
+    }
+
+    @Override
+    public void close() throws IOException {
+        interfaceCache.invalidateAll();
+        interfaceCache.cleanUp();
+        
+        envelopes.clear();
+        envelopes = null;
+        index = null;
+        interfaceCache = null;
     }
 }
\ No newline at end of file