Skip to content

Commit 6499b8b

Browse files
committed
Refinements in support of visualization monitor
1 parent 605d5a3 commit 6499b8b

File tree

2 files changed

+38
-8
lines changed

2 files changed

+38
-8
lines changed

libs/geo/src/main/java/org/elasticsearch/geometry/simplify/GeometrySimplifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ public Polygon simplify(Polygon geometry) {
337337
for (int i = 0; i < ring.length(); i++) {
338338
consume(ring.getX(i), ring.getY(i));
339339
}
340+
notifyMonitorSimplificationEnd();
340341
for (int i = 0; i < geometry.getNumberOfHoles(); i++) {
341342
LinearRing hole = geometry.getHole(i);
342343
double simplificationFactor = (double) maxPoints / ring.length();
@@ -346,7 +347,6 @@ public Polygon simplify(Polygon geometry) {
346347
holeSimplifiers.add(holeSimplifier);
347348
holeSimplifier.simplify(hole);
348349
}
349-
notifyMonitorSimplificationEnd();
350350
return produce();
351351
}
352352

libs/geo/src/main/java/org/elasticsearch/geometry/simplify/SimplificationErrorCalculator.java

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
package org.elasticsearch.geometry.simplify;
1010

11+
import java.util.ArrayList;
12+
import java.util.HashMap;
13+
import java.util.List;
1114
import java.util.Locale;
1215

1316
public interface SimplificationErrorCalculator {
@@ -19,14 +22,41 @@ interface PointLike {
1922
double y();
2023
}
2124

25+
class Registry {
26+
static ArrayList<String> names = new ArrayList<>();
27+
static HashMap<String, SimplificationErrorCalculator> map = new HashMap<>();
28+
29+
static {
30+
add("cartesiantrianglearea", new CartesianTriangleAreaCalculator());
31+
add("trianglearea", new TriangleAreaCalculator());
32+
add("triangleheight", new TriangleHeightCalculator());
33+
add("frecheterror", new FrechetErrorCalculator());
34+
}
35+
36+
static void add(String name, SimplificationErrorCalculator calculator) {
37+
String key = name.toLowerCase(Locale.ROOT);
38+
if (map.containsKey(key)) {
39+
throw new IllegalArgumentException("Duplicate calculator name key: " + key);
40+
}
41+
map.put(key, calculator);
42+
names.add(key);
43+
}
44+
45+
static SimplificationErrorCalculator get(String calculatorName) {
46+
SimplificationErrorCalculator calculator = map.get(calculatorName.toLowerCase(Locale.ROOT));
47+
if (calculator == null) {
48+
throw new IllegalArgumentException("Unknown geometry simplification error calculator: " + calculatorName);
49+
}
50+
return calculator;
51+
}
52+
}
53+
54+
static List<String> names() {
55+
return Registry.names;
56+
}
57+
2258
static SimplificationErrorCalculator byName(String calculatorName) {
23-
return switch (calculatorName.toLowerCase(Locale.ROOT)) {
24-
case "cartesiantrianglearea" -> new CartesianTriangleAreaCalculator();
25-
case "trianglearea" -> new TriangleAreaCalculator();
26-
case "triangleheight" -> new TriangleHeightCalculator();
27-
case "frecheterror" -> new FrechetErrorCalculator();
28-
default -> throw new IllegalArgumentException("Unknown geometry simplification error calculator: " + calculatorName);
29-
};
59+
return Registry.get(calculatorName);
3060
}
3161

3262
/**

0 commit comments

Comments
 (0)