Commit d900ea38 authored by Luna Riegel's avatar Luna Riegel
Browse files

Feat: Add FeatureCollisionError

parent 26d87dcf
package de.hft.stuttgart.citydoctor2.check.error;
import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.ErrorId;
import de.hft.stuttgart.citydoctor2.check.ErrorReport;
import de.hft.stuttgart.citydoctor2.check.ErrorType;
import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
import de.hft.stuttgart.citydoctor2.check.HealingMethod;
import de.hft.stuttgart.citydoctor2.check.ModificationListener;
import de.hft.stuttgart.citydoctor2.datastructure.CityObject;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import java.util.List;
import java.util.Map;
import java.util.StringJoiner;
public class FeatureCollisionError implements CheckError {
private final CityObject subjectFeature;
private final Geometry subjectGeom;
private final Geometry collidingGeom;
private final GmlId collidingFeatureId;
private final Map<Polygon, List<Polygon>> collisionMap;
public FeatureCollisionError(CityObject subjectFeature, Geometry subjectGeom, GmlId collidingFeatureId, Geometry collidingGeom, Map<Polygon, List<Polygon>> collisionMap) {
this.subjectFeature = subjectFeature;
this.subjectGeom = subjectGeom;
this.collidingFeatureId = collidingFeatureId;
this.collidingGeom = collidingGeom;
this.collisionMap = collisionMap;
}
@Override
public ErrorType getType() {
return ErrorType.ERROR;
}
@Override
public ErrorId getErrorId() {
return ErrorId.TO_FEATURE_COLLISION;
}
@Override
public GmlElement getFeature() {
return subjectFeature;
}
@Override
public void accept(ErrorVisitor errorVisitor) {
//TODO: Add this CheckError to the errorVisitor
}
@Override
public boolean accept(HealingMethod method, ModificationListener l) {
return false;
}
@Override
public void report(ErrorReport report) {
report.add("Geometry", subjectGeom.getGmlId().toString());
report.add("Colliding with Feature", collidingFeatureId.toString());
report.add("In Geometry", collidingGeom.getGmlId().toString());
collisionMap.forEach((subjectPoly, collisionList) -> {
StringJoiner sj = new StringJoiner(", ");
collisionList.forEach(polygon -> sj.add(polygon.getGmlId().toString()));
report.add("On Subject Polygon", subjectPoly.toString());
report.add("With Polygons", sj.toString());
});
}
}
Supports Markdown
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