Commit a0ff9ed7 authored by Matthias Betz's avatar Matthias Betz
Browse files

Added check plugin system

parent 0a7d6299
Pipeline #1380 passed with stage
in 2 minutes and 13 seconds
......@@ -66,7 +66,6 @@ public class CheckContainer extends Check {
private final Check check;
public CheckContainer(Check check) {
super(null);
this.check = check;
}
......@@ -81,7 +80,7 @@ public class CheckContainer extends Check {
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
public List<Class<Checkable>> getApplicableToClasses() {
return check.getApplicableToClasses();
}
......
......@@ -19,29 +19,30 @@
package de.hft.stuttgart.citydoctor2.checks;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import de.hft.stuttgart.citydoctor2.check.Check;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.checks.geometry.RingNotClosedCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.MultipleConnectedComponentCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.DuplicatePointsCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonWrongOrientationCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.FaceOutCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.HoleOutsideCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.InteriorDisconnectedCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.ManifoldVertexCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.MultipleConnectedComponentCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.NestedRingsCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.NumPointsCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.NonManifoldEdgeCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.NumPointsCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.PlanarCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonSameOrientationCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonIntersectingRingsCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonSameOrientationCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonWrongOrientationCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.RingNotClosedCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.RingSelfIntCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.SolidNotClosedCheck;
import de.hft.stuttgart.citydoctor2.checks.geometry.SolidSelfIntCheck;
......@@ -71,7 +72,7 @@ public class Checks {
static {
checkPrototypes = new ArrayList<>();
prototypeMap = new EnumMap<>(CheckId.class);
prototypeMap = new HashMap<>();
// add new checks here
publish(new NumPointsCheck());
......@@ -99,6 +100,12 @@ public class Checks {
publish(new IsCeilingCheck());
publish(new IsGroundCheck());
publish(new RoofSurfaceUnfragmentedCheck());
// load checks from service loader
ServiceLoader<Check> checkLoader = ServiceLoader.load(Check.class);
for (Check c : checkLoader) {
publish(c);
}
}
/**
......@@ -106,7 +113,7 @@ public class Checks {
* this container. Access the checks with {@link Checks#getCheckForId(CheckId)}.
*/
public Checks() {
checkMap = new EnumMap<>(CheckId.class);
checkMap = new HashMap<>();
for (CheckPrototype proto : checkPrototypes) {
Check check = proto.createCheck();
......
......@@ -52,7 +52,6 @@ public class DuplicatePointsCheck extends Check {
private static final String EPSILON_NAME = "minVertexDistance";
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -62,8 +61,6 @@ public class DuplicatePointsCheck extends Check {
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(LinearRing.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
private double epsilon = 0.0001;
......@@ -78,20 +75,11 @@ public class DuplicatePointsCheck extends Check {
}
}
public DuplicatePointsCheck() {
super(CheckId.C_GE_R_DUPLICATE_POINT);
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public void check(LinearRing lr) {
List<Vertex> pointList = lr.getVertices();
......@@ -137,4 +125,9 @@ public class DuplicatePointsCheck extends Check {
return new DuplicatePointsCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_R_DUPLICATE_POINT;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.AllPolygonsWrongOrientationError;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
......@@ -46,7 +45,6 @@ import de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon;
public class FaceOutCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -65,14 +63,6 @@ public class FaceOutCheck extends Check {
deps.add(CheckId.C_GE_S_SELF_INTERSECTION);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Geometry.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public FaceOutCheck() {
super(CheckId.C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION);
}
@Override
......@@ -182,11 +172,6 @@ public class FaceOutCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public CheckType getType() {
return CheckType.GEOMETRY;
......@@ -197,4 +182,9 @@ public class FaceOutCheck extends Check {
return new FaceOutCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.PolygonHoleOutsideError;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
......@@ -37,7 +36,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
public class HoleOutsideCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -48,16 +46,8 @@ public class HoleOutsideCheck extends Check {
deps.add(CheckId.C_GE_P_NON_PLANAR);
deps.add(CheckId.C_GE_P_ORIENTATION_RINGS_SAME);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Polygon.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public HoleOutsideCheck() {
super(CheckId.C_GE_P_HOLE_OUTSIDE);
}
@Override
public void check(Polygon p) {
List<LinearRing> holesOutside = new ArrayList<>();
......@@ -85,11 +75,6 @@ public class HoleOutsideCheck extends Check {
}
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
......@@ -104,4 +89,9 @@ public class HoleOutsideCheck extends Check {
public Check createNewInstance() {
return new HoleOutsideCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_P_HOLE_OUTSIDE;
}
}
......@@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.DefaultParameter;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.Unit;
......@@ -46,7 +45,6 @@ public class InteriorDisconnectedCheck extends Check {
private static final String EPSILON_NAME = "Epsilon";
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
private static final List<DefaultParameter> defaultParameters;
static {
......@@ -58,10 +56,6 @@ public class InteriorDisconnectedCheck extends Check {
deps.add(CheckId.C_GE_P_NON_PLANAR);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Polygon.class);
applicableToClasses = Collections.unmodifiableList(classes);
ArrayList<DefaultParameter> defaultParameter = new ArrayList<>();
defaultParameter.add(new DefaultParameter(EPSILON_NAME, "0.0001", Unit.METER));
defaultParameters = Collections.unmodifiableList(defaultParameter);
......@@ -79,10 +73,6 @@ public class InteriorDisconnectedCheck extends Check {
}
}
public InteriorDisconnectedCheck() {
super(CheckId.C_GE_P_INTERIOR_DISCONNECTED);
}
@Override
public void check(Polygon p) {
if (p.getInnerRings().isEmpty()) {
......@@ -175,11 +165,6 @@ public class InteriorDisconnectedCheck extends Check {
return defaultParameters;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
......@@ -194,4 +179,9 @@ public class InteriorDisconnectedCheck extends Check {
public Check createNewInstance() {
return new InteriorDisconnectedCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_P_INTERIOR_DISCONNECTED;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.NonManifoldVertexError;
import de.hft.stuttgart.citydoctor2.datastructure.Edge;
......@@ -47,7 +46,6 @@ import de.hft.stuttgart.citydoctor2.math.graph.PolygonGraph;
public class ManifoldVertexCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -64,15 +62,8 @@ public class ManifoldVertexCheck extends Check {
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Geometry.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public ManifoldVertexCheck() {
super(CheckId.C_GE_S_NON_MANIFOLD_VERTEX);
}
@Override
public void check(Geometry geom) {
// only for solids
......@@ -102,11 +93,6 @@ public class ManifoldVertexCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public CheckType getType() {
return CheckType.GEOMETRY;
......@@ -116,4 +102,9 @@ public class ManifoldVertexCheck extends Check {
public Check createNewInstance() {
return new ManifoldVertexCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_S_NON_MANIFOLD_VERTEX;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.MultipleConnectedComponentsError;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
......@@ -45,7 +44,6 @@ import de.hft.stuttgart.citydoctor2.math.graph.PolygonGraph;
public class MultipleConnectedComponentCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -59,16 +57,8 @@ public class MultipleConnectedComponentCheck extends Check {
deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Geometry.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public MultipleConnectedComponentCheck() {
super(CheckId.C_GE_S_MULTIPLE_CONNECTED_COMPONENTS);
}
@Override
public void check(Geometry g) {
// only for solids
......@@ -97,11 +87,6 @@ public class MultipleConnectedComponentCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public CheckType getType() {
return CheckType.GEOMETRY;
......@@ -111,4 +96,9 @@ public class MultipleConnectedComponentCheck extends Check {
public Check createNewInstance() {
return new MultipleConnectedComponentCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_S_MULTIPLE_CONNECTED_COMPONENTS;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.NestedRingError;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
......@@ -37,7 +36,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
public class NestedRingsCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -48,14 +46,6 @@ public class NestedRingsCheck extends Check {
deps.add(CheckId.C_GE_P_NON_PLANAR);
deps.add(CheckId.C_GE_P_ORIENTATION_RINGS_SAME);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Polygon.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public NestedRingsCheck() {
super(CheckId.C_GE_P_INNER_RINGS_NESTED);
}
@Override
......@@ -91,11 +81,6 @@ public class NestedRingsCheck extends Check {
return isInside;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
......@@ -111,4 +96,9 @@ public class NestedRingsCheck extends Check {
return new NestedRingsCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_P_INNER_RINGS_NESTED;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.NonManifoldEdgeError;
import de.hft.stuttgart.citydoctor2.datastructure.Edge;
......@@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
public class NonManifoldEdgeCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -57,14 +55,6 @@ public class NonManifoldEdgeCheck extends Check {
deps.add(CheckId.C_GE_P_NON_PLANAR);
deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Geometry.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public NonManifoldEdgeCheck() {
super(CheckId.C_GE_S_NON_MANIFOLD_EDGE);
}
@Override
......@@ -96,11 +86,6 @@ public class NonManifoldEdgeCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public CheckType getType() {
return CheckType.GEOMETRY;
......@@ -110,4 +95,9 @@ public class NonManifoldEdgeCheck extends Check {
public Check createNewInstance() {
return new NonManifoldEdgeCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_S_NON_MANIFOLD_EDGE;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.Check;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.DefaultParameter;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.Unit;
......@@ -46,7 +45,6 @@ public class NullAreaCheck extends Check {
private static final String DELTA_NAME = "delta";
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
private static final List<DefaultParameter> defaultParameters;
static {
......@@ -55,10 +53,6 @@ public class NullAreaCheck extends Check {
deps.add(CheckId.C_GE_R_NOT_CLOSED);
deps.add(CheckId.C_GE_R_DUPLICATE_POINT);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(LinearRing.class);
applicableToClasses = Collections.unmodifiableList(classes);
ArrayList<DefaultParameter> defParameters = new ArrayList<>();
defParameters.add(new DefaultParameter(DELTA_NAME, "0.0001", Unit.SQUARE_METER));
......@@ -67,11 +61,6 @@ public class NullAreaCheck extends Check {
private double delta = 0.0001;
public NullAreaCheck() {
super(CheckId.NULL_AREA);
}
@Override
public void init(Map<String, String> parameters, ParserConfiguration config) {
if (parameters.containsKey(DELTA_NAME)) {
......@@ -123,12 +112,6 @@ public class NullAreaCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public CheckType getType() {
return CheckType.GEOMETRY;
......@@ -140,4 +123,9 @@ public class NullAreaCheck extends Check {
return new NullAreaCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_R_NULL_AREA;
}
}
......@@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.RingTooFewPointsError;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
......@@ -47,23 +46,14 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
*/
public class NumPointsCheck extends Check {
private static final List<Class<? extends Checkable>> applicableToClasses;
private static final List<CheckId> dependencies;
static {
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(LinearRing.class);
applicableToClasses = Collections.unmodifiableList(classes);
ArrayList<CheckId> temp = new ArrayList<>();
temp.add(CheckId.C_GE_R_NOT_CLOSED);
dependencies = Collections.unmodifiableList(temp);
}
public NumPointsCheck() {
super(CheckId.C_GE_R_TOO_FEW_POINTS);
}
/**
* checks if every linear ring has at least 3 distinct points
*/
......@@ -101,12 +91,6 @@ public class NumPointsCheck extends Check {
lr.addCheckResult(cr);
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
......@@ -121,4 +105,9 @@ public class NumPointsCheck extends Check {
public Check createNewInstance() {
return new NumPointsCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_R_TOO_FEW_POINTS;
}
}
......@@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.DefaultParameter;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.Unit;
......@@ -63,7 +62,6 @@ public class PlanarCheck extends Check {
private static final String TINY_EDGE_TOLERANCE = "tinyEdgeTolerance";
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
private static final List<DefaultParameter> defaultParameters;
static {
......@@ -74,10 +72,6 @@ public class PlanarCheck extends Check {
deps.add(CheckId.C_GE_R_SELF_INTERSECTION);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(1);
classes.add(Polygon.class);
applicableToClasses = Collections.unmodifiableList(classes);
ArrayList<DefaultParameter> defParameters = new ArrayList<>(3);
defParameters.add(new DefaultParameter(TYPE, DISTANCE, Unit.NONE));
defParameters.add(new DefaultParameter(DISTANCE_TOLERANCE, "0.01", Unit.METER));
......@@ -93,10 +87,6 @@ public class PlanarCheck extends Check {
private double delta = 0.01;
private double tinyEdgeTolerance = 0.00000;
public PlanarCheck() {
super(CheckId.C_GE_P_NON_PLANAR);
}
@Override
public void init(Map<String, String> parameters, ParserConfiguration config) {
if (parameters.containsKey(TYPE)) {
......@@ -253,11 +243,6 @@ public class PlanarCheck extends Check {
return false;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
......@@ -272,4 +257,9 @@ public class PlanarCheck extends Check {
public Check createNewInstance() {
return new PlanarCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_P_NON_PLANAR;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.PolygonIntersectingRingsError;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
......@@ -43,7 +42,6 @@ public class PolygonIntersectingRingsCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -55,16 +53,8 @@ public class PolygonIntersectingRingsCheck extends Check {
deps.add(CheckId.C_GE_P_HOLE_OUTSIDE);
deps.add(CheckId.C_GE_P_INNER_RINGS_NESTED);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Polygon.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public PolygonIntersectingRingsCheck() {
super(CheckId.C_GE_P_INTERSECTING_RINGS);
}
@Override
public void check(Polygon p) {
if (p.getInnerRings().isEmpty()) {
......@@ -128,11 +118,6 @@ public class PolygonIntersectingRingsCheck extends Check {
return false;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
......@@ -147,4 +132,9 @@ public class PolygonIntersectingRingsCheck extends Check {
public Check createNewInstance() {
return new PolygonIntersectingRingsCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_P_INTERSECTING_RINGS;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.PolygonSameOrientationError;
import de.hft.stuttgart.citydoctor2.checks.util.Orientation;
......@@ -39,7 +38,6 @@ import de.hft.stuttgart.citydoctor2.math.Ring2d;
public class PolygonSameOrientationCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -49,14 +47,6 @@ public class PolygonSameOrientationCheck extends Check {
deps.add(CheckId.C_GE_R_SELF_INTERSECTION);
deps.add(CheckId.C_GE_P_NON_PLANAR);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Polygon.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public PolygonSameOrientationCheck() {
super(CheckId.C_GE_P_ORIENTATION_RINGS_SAME);
}
@Override
......@@ -84,11 +74,6 @@ public class PolygonSameOrientationCheck extends Check {
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
......@@ -104,4 +89,9 @@ public class PolygonSameOrientationCheck extends Check {
return new PolygonSameOrientationCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_P_ORIENTATION_RINGS_SAME;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.PolygonWrongOrientationError;
import de.hft.stuttgart.citydoctor2.datastructure.Edge;
......@@ -43,7 +42,6 @@ public class PolygonWrongOrientationCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -58,14 +56,6 @@ public class PolygonWrongOrientationCheck extends Check {
deps.add(CheckId.C_GE_S_NOT_CLOSED);
deps.add(CheckId.C_GE_S_NON_MANIFOLD_EDGE);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Geometry.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public PolygonWrongOrientationCheck() {
super(CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION);
}
@Override
......@@ -96,11 +86,6 @@ public class PolygonWrongOrientationCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public CheckType getType() {
return CheckType.GEOMETRY;
......@@ -110,4 +95,9 @@ public class PolygonWrongOrientationCheck extends Check {
public Check createNewInstance() {
return new PolygonWrongOrientationCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION;
}
}
\ No newline at end of file
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.RingNotClosedError;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
......@@ -43,19 +42,10 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
public class RingNotClosedCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(LinearRing.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public RingNotClosedCheck() {
super(CheckId.C_GE_R_NOT_CLOSED);
}
@Override
......@@ -63,11 +53,6 @@ public class RingNotClosedCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public void check(LinearRing lr) {
Vertex first = lr.getVertices().get(0);
......@@ -92,4 +77,9 @@ public class RingNotClosedCheck extends Check {
public Check createNewInstance() {
return new RingNotClosedCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_R_NOT_CLOSED;
}
}
......@@ -28,10 +28,9 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.RingEdgeIntersectionError;
import de.hft.stuttgart.citydoctor2.check.error.PointTouchesEdgeError;
import de.hft.stuttgart.citydoctor2.check.error.RingEdgeIntersectionError;
import de.hft.stuttgart.citydoctor2.datastructure.Edge;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
......@@ -46,7 +45,6 @@ public class RingSelfIntCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
......@@ -55,19 +53,10 @@ public class RingSelfIntCheck extends Check {
deps.add(CheckId.C_GE_R_NOT_CLOSED);
deps.add(CheckId.C_GE_R_DUPLICATE_POINT);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(LinearRing.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
private double epsilon = 0.0001;
public RingSelfIntCheck() {
super(CheckId.C_GE_R_SELF_INTERSECTION);
}
@Override
public void init(Map<String, String> parameters, ParserConfiguration config) {
String epsilonString = parameters.get(EPSILON_NAME);
......@@ -151,11 +140,6 @@ public class RingSelfIntCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public CheckType getType() {
return CheckType.GEOMETRY;
......@@ -165,4 +149,9 @@ public class RingSelfIntCheck extends Check {
public Check createNewInstance() {
return new RingSelfIntCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_R_SELF_INTERSECTION;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError;
import de.hft.stuttgart.citydoctor2.datastructure.Edge;
......@@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
public class SolidNotClosedCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -58,16 +56,8 @@ public class SolidNotClosedCheck extends Check {
deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS);
dependencies = Collections.unmodifiableList(deps);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Geometry.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public SolidNotClosedCheck() {
super(CheckId.C_GE_S_NOT_CLOSED);
}
@Override
public void check(Geometry g) {
// only for solids
......@@ -98,11 +88,6 @@ public class SolidNotClosedCheck extends Check {
return dependencies;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public CheckType getType() {
return CheckType.GEOMETRY;
......@@ -112,4 +97,9 @@ public class SolidNotClosedCheck extends Check {
public Check createNewInstance() {
return new SolidNotClosedCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_S_NOT_CLOSED;
}
}
......@@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckType;
import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.GeometrySelfIntersection;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError;
......@@ -45,7 +44,6 @@ import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection;
public class SolidSelfIntCheck extends Check {
private static final List<CheckId> dependencies;
private static final List<Class<? extends Checkable>> applicableToClasses;
static {
ArrayList<CheckId> deps = new ArrayList<>();
......@@ -66,14 +64,6 @@ public class SolidSelfIntCheck extends Check {
deps.add(CheckId.C_GE_S_NON_MANIFOLD_EDGE);
deps.add(CheckId.C_GE_S_NON_MANIFOLD_VERTEX);
deps.add(CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION);
ArrayList<Class<? extends Checkable>> classes = new ArrayList<>();
classes.add(Geometry.class);
applicableToClasses = Collections.unmodifiableList(classes);
}
public SolidSelfIntCheck() {
super(CheckId.C_GE_S_SELF_INTERSECTION);
}
@Override
......@@ -104,11 +94,6 @@ public class SolidSelfIntCheck extends Check {
return cr;
}
@Override
public List<Class<? extends Checkable>> getApplicableToClasses() {
return applicableToClasses;
}
@Override
public List<CheckId> getDependencies() {
return dependencies;
......@@ -123,4 +108,9 @@ public class SolidSelfIntCheck extends Check {
public Check createNewInstance() {
return new SolidSelfIntCheck();
}
@Override
public CheckId getCheckId() {
return CheckId.C_GE_S_SELF_INTERSECTION;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment