From fd1b29d45ca55db52a60268e9eafcd22d2b8719b Mon Sep 17 00:00:00 2001 From: Eric Duminil <eric.duminil@gmail.com> Date: Fri, 7 Oct 2022 12:13:22 +0200 Subject: [PATCH] Small refactor --- .../regionchooser/RegionChooserBrowser.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java index 826475e..31edc82 100644 --- a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java +++ b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java @@ -50,9 +50,9 @@ public JavaScriptFXBridge() { /** * Launches a background thread in which the hull gets extracted for every CityGML file. The hull gets sent back * to the JS app in order to be displayed. - * + * * NOTE: To be very honest, I don't really understand concurrency in JavaFX. Eric - * + * */ public void refreshHulls() { //NOTE: Could add progress bar? @@ -76,6 +76,9 @@ public Void call() throws IOException { new Thread(task).start(); } + /** + * This method is called from Javascript, with a prepared wktPolygon written in local coordinates. + */ public void downloadRegionFromCityGMLs(String wktPolygon, String project, String csvCitygmls, String srsName) throws IOException, ParseException, XPathParseException, NavException { // It doesn't seem possible to pass arrays or list from JS to Java. So csvCitygmls contains names separated by ; @@ -85,8 +88,12 @@ public void downloadRegionFromCityGMLs(String wktPolygon, String project, String File buildingIdsFile = selectSaveFileWithDialog(project, csvCitygmls.replace(";", "_").replace(".gml", ""), "selected_region"); - if (buildingIdsFile != null) { - try (BufferedWriter writer = Files.newBufferedWriter(buildingIdsFile.toPath())) { + writeStringBuilderToFile(sb, buildingIdsFile.toPath()); + } + + private void writeStringBuilderToFile(StringBuilder sb, Path outputFile) throws IOException { + if (outputFile != null) { + try (BufferedWriter writer = Files.newBufferedWriter(outputFile)) { char[] chars = new char[BUFFER]; for (int aPosStart = 0; aPosStart < sb.length(); aPosStart += BUFFER) { int chunk = Math.min(BUFFER, sb.length() - aPosStart); -- GitLab