X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.maps.server%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fmaps%2Fserver%2FTileserverMapnik.java;h=5b1e735c2ee0f60345cd0e6bcde0c1b709b35b49;hb=00e4eca98cef6d77d5023f4b424f9e8da0487463;hp=8f3135dc567c2ddf18124bfaa7a70c14c77dbab1;hpb=02ecca5e61d2eb17de40cc058be678b414aaad00;p=simantics%2Fdistrict.git diff --git a/org.simantics.maps.server/src/org/simantics/district/maps/server/TileserverMapnik.java b/org.simantics.maps.server/src/org/simantics/district/maps/server/TileserverMapnik.java index 8f3135dc..5b1e735c 100644 --- a/org.simantics.maps.server/src/org/simantics/district/maps/server/TileserverMapnik.java +++ b/org.simantics.maps.server/src/org/simantics/district/maps/server/TileserverMapnik.java @@ -16,6 +16,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Stream; +import org.simantics.district.maps.server.prefs.MapsServerPreferences; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; @@ -38,17 +39,11 @@ public class TileserverMapnik { private SystemProcess process; private Path serverRoot; - private int port; private AtomicBoolean running = new AtomicBoolean(false); - TileserverMapnik(Path serverRoot, int port) { + TileserverMapnik(Path serverRoot) { this.serverRoot = serverRoot.normalize(); - this.port = port; - } - - public void setPort(int port) { - this.port = port; } public boolean isRunning() throws IOException, InterruptedException { @@ -80,7 +75,7 @@ public class TileserverMapnik { return; StartedProcess startedProcess = new ProcessExecutor().directory(serverRoot.resolve("tileserver-mapnik").toFile()).destroyOnExit().environment(getEnv()) - .command(NodeJS.executable().toString(), getTessera().toString(), "-c", getConfigJson().toString()) + .command(NodeJS.executable().toString(), getTessera().toString(), "-c", getConfigJson().toString(), "-p", Integer.toString(MapsServerPreferences.defaultPort())) .redirectOutput(Slf4jStream.ofCaller().asDebug()).start(); Process nativeProcess = startedProcess.getProcess(); @@ -176,7 +171,7 @@ public class TileserverMapnik { } public List availableMBTiles() throws IOException { - Path data = serverRoot.resolve("data").toAbsolutePath(); + Path data = getDataDirectory(); List result = new ArrayList<>(); try (Stream paths = Files.walk(data)) { paths.forEach(p -> { @@ -192,7 +187,7 @@ public class TileserverMapnik { private void checkConfigJson() throws JsonParseException, JsonMappingException, IOException { Path configJson = getConfigJson(); Map config = new HashMap<>(); - Path tm2 = serverRoot.resolve("tm2").toAbsolutePath(); + Path tm2 = getStyleDirectory(); try (DirectoryStream stream = Files.newDirectoryStream(tm2)) { stream.forEach(p -> { Path projectYaml = p.resolve("project.yml"); @@ -214,8 +209,20 @@ public class TileserverMapnik { mapper.writerWithDefaultPrettyPrinter().writeValue(Files.newOutputStream(configJson, StandardOpenOption.TRUNCATE_EXISTING), config); } + public Path getStyleDirectory() { + return serverRoot.resolve("tm2"); + } + + public Path getDataDirectory() { + return serverRoot.resolve("data"); + } + + public Path getCurrentTiles() { + return getDataDirectory().resolve(MapsServerPreferences.currentMBTiles()); + } + public void checkTm2Styles() { - Path tm2 = serverRoot.resolve("tm2").toAbsolutePath(); + Path tm2 = getStyleDirectory(); try (DirectoryStream stream = Files.newDirectoryStream(tm2)) { stream.forEach(p -> { Path projectYaml = p.resolve("project.yml"); @@ -224,8 +231,7 @@ public class TileserverMapnik { try (InputStream input = Files.newInputStream(projectYaml, StandardOpenOption.READ)) { data = yaml.loadAs(input, Map.class); - Path tiles = serverRoot.relativize(serverRoot.resolve("data").resolve("helsinki_finland.mbtiles"));//.toAbsolutePath().toString().replace("\\", "/"); - + Path tiles = serverRoot.relativize(getCurrentTiles()); String tmStyle = "mbtiles://../" + tiles.toString(); data.put("source", tmStyle); @@ -246,7 +252,7 @@ public class TileserverMapnik { public List listStyles() throws IOException { List results = new ArrayList<>(); - Path tm2 = serverRoot.resolve("tm2").toAbsolutePath(); + Path tm2 = getStyleDirectory(); try (DirectoryStream stream = Files.newDirectoryStream(tm2)) { stream.forEach(p -> { results.add(p.getFileName().toString());