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