From 8f7fcb88674c0ebe0cc920af8daf9c7931d93ffe Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Tue, 20 Mar 2018 11:24:48 +0100
Subject: [PATCH] RegionChooser: Message when extract Citygml fails. New test.

---
 .../website/script/simstadt_openlayers.js          | 14 +++++++++-----
 .../regionchooser/RegionExtractorTests.java        | 11 +++++++++++
 2 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js b/src/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js
index ad41b79..f6710d6 100644
--- a/src/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js
+++ b/src/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js
@@ -231,7 +231,7 @@ proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.3876388
 		    features_and_intersections = features.map(f=> [f, findIntersection(f,polygon)]).filter(l => l[1] !== undefined);
 		    if (features_and_intersections.length > 0){
 		    	intersection_found = true;
-				dataPanel.append("<h2>" + project);
+				dataPanel.append("<h2 class='info'>" + project);
 		    	features_and_intersections.forEach(l => showLinkToDownload(l[0], l[1], polygonArea));
 		    }
 		});
@@ -256,13 +256,17 @@ proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.3876388
 			if (proj4.defs(srsName)){
 				$("html").addClass("wait");
 				console.log("Selected region is written in " + srsName + " coordinate system.");
-				fxapp.downloadRegionFromCityGML(sketchAsWKT(srsName), feature.get("project"), feature.get("name"), srsName);
+				try {
+					fxapp.downloadRegionFromCityGML(sketchAsWKT(srsName), feature.get("project"), feature.get("name"), srsName);
+					dataPanel.append("<h2 class='ok'>Done!</h2><br/>\n");
+				} catch (e) {
+					dataPanel.append("<h2 class='error'>Some problem occured!</h2><br/>\n");
+				}
 				var end = new Date().getTime();
 				var time = end - start;
 				console.log('Download Execution time: ' + (time / 1000).toFixed(3) + 's');
 				setTimeout(function() {
 					$("html").removeClass("wait");
-					dataPanel.append("Done<br/>\n");
 				}, 100);
 			} else {
 				var msg = "ERROR : Unknown coordinate system : \"" + srsName + "\". Cannot extract any region";
@@ -290,7 +294,7 @@ proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.3876388
 			dataPanel.append("WGS84 Coordinates<br/>");
 			dataPanel.append(wgs84_coords + "<br/>\n");
 		}
-		dataPanel.append("<h3>Area : " + (area / 10000).toFixed(1) + " ha<br/><br/>\n");
+		dataPanel.append("<h3 class='clean'>Area : " + (area / 10000).toFixed(1) + " ha\n");
 		findIntersections();
 	}
 
@@ -382,7 +386,7 @@ proj4.defs("EPSG:28992", "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.3876388
 	
 	function displayHelp(){
 		dataPanel.empty();
-		dataPanel.append("Welcome to Region Chooser!<br><br>\n");
+		dataPanel.append("<h2 class='info'>Welcome to Region Chooser!<br><br>\n");
 		dataPanel.append("You can draw a polygon on the map by clicking.<br>\n");
 		dataPanel.append("You can add a new point to an existing edge by clicking and dragging.<br>\n");
 		dataPanel.append("You can remove a point with SHIFT + clicking.<br>\n");
diff --git a/test/eu/simstadt/regionchooser/RegionExtractorTests.java b/test/eu/simstadt/regionchooser/RegionExtractorTests.java
index 434b528..3bab5a7 100644
--- a/test/eu/simstadt/regionchooser/RegionExtractorTests.java
+++ b/test/eu/simstadt/regionchooser/RegionExtractorTests.java
@@ -124,5 +124,16 @@ public void testExtract0BuildingsFromWeirdGML() throws Throwable {
 		assertTrue(emptyGMLString.contains("<core:CityModel")); // Header
 		assertTrue(emptyGMLString.contains("</core:CityModel")); // Footer
 	}
+
 	//TODO: Add BuildingParts tests with StuttgartAroundCampus.
+	@Test
+	public void testExtractBuildingsFromCitygmlWithBuildingParts() throws Throwable {
+		//NOTE: Small region, with too many spaces between coordinates
+		String wktPolygon = "POLYGON((3512683.1280912133 5404783.732132129,3512719.1608604863 5404714.627650777,3512831.40076119 5404768.344155442,3512790.239106708 5404838.614891164,3512683.1280912133 5404783.732132129))";
+		Path repo = Paths.get("../TestRepository");
+		Path citygmlPath = repo.resolve("Stuttgart.proj/Stuttgart_LOD0_LOD1_around_campus.gml");
+		String emptyGMLString = RegionExtractor.selectRegionDirectlyFromCityGML(citygmlPath, wktPolygon, "EPSG:31463")
+				.toString();
+		assertEquals(countRegexMatches(emptyGMLString, "<(core:)?cityObjectMember"), 2);
+	}
 }
-- 
GitLab