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