Commit 87dba3fa authored by Riegel's avatar Riegel
Browse files

Merge branch 'dev' into 'master'

CityDoctor Version 3.17.3

See merge request !34
parents 0d2e9fd5 aa9c2a95
Pipeline #11660 passed with stage
in 1 minute and 26 seconds
...@@ -21,7 +21,6 @@ package de.hft.stuttgart.citydoctor2.check.error; ...@@ -21,7 +21,6 @@ package de.hft.stuttgart.citydoctor2.check.error;
import java.io.Serial; import java.io.Serial;
import java.util.List; import java.util.List;
import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.ErrorId; import de.hft.stuttgart.citydoctor2.check.ErrorId;
import de.hft.stuttgart.citydoctor2.check.ErrorReport; import de.hft.stuttgart.citydoctor2.check.ErrorReport;
import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorType;
...@@ -39,21 +38,16 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; ...@@ -39,21 +38,16 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
* @author Matthias Betz * @author Matthias Betz
* *
*/ */
public class SolidNotClosedError implements CheckError { public class SolidNotClosedError extends SolidError {
@Serial @Serial
private static final long serialVersionUID = 8256385219885788891L; private static final long serialVersionUID = 8256385219885788891L;
private final List<Edge> errorEdges; private final List<Edge> errorEdges;
private final Geometry g;
public SolidNotClosedError(Geometry g, List<Edge> errorEdges) { public SolidNotClosedError(Geometry g, List<Edge> errorEdges) {
super(g);
this.errorEdges = errorEdges; this.errorEdges = errorEdges;
this.g = g;
}
public Geometry getGeometry() {
return g;
} }
public List<Edge> getErrorEdges() { public List<Edge> getErrorEdges() {
...@@ -62,23 +56,24 @@ public class SolidNotClosedError implements CheckError { ...@@ -62,23 +56,24 @@ public class SolidNotClosedError implements CheckError {
@Override @Override
public void report(ErrorReport report) { public void report(ErrorReport report) {
report.add(g); super.report(report);
report.addEdges("open edges", errorEdges); report.addEdges("open edges", errorEdges);
} }
@Override @Override
public void accept(ErrorVisitor errorVisitor) { public void accept(ErrorVisitor errorVisitor) {
super.accept(errorVisitor);
errorVisitor.visit(this); errorVisitor.visit(this);
} }
@Override @Override
public boolean accept(HealingMethod method, ModificationListener l) { public boolean accept(HealingMethod method, ModificationListener l) {
return method.visit(this, l); return super.accept(method, l) || method.visit(this, l);
} }
@Override @Override
public String toString() { public String toString() {
return "SolidNotClosedError [errorEdges=" + errorEdges + ", g=" + g + "]"; return "SolidNotClosedError [errorEdges=" + errorEdges + ", g=" + getGeometry() + "]";
} }
@Override @Override
......
...@@ -21,9 +21,7 @@ package de.hft.stuttgart.citydoctor2.check.error; ...@@ -21,9 +21,7 @@ package de.hft.stuttgart.citydoctor2.check.error;
import java.io.Serial; import java.io.Serial;
import java.util.List; import java.util.List;
import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.ErrorId; 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.ErrorType;
import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor;
import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.HealingMethod;
...@@ -38,46 +36,37 @@ import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection; ...@@ -38,46 +36,37 @@ import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection;
* @author Matthias Betz * @author Matthias Betz
* *
*/ */
public class SolidSelfIntError implements CheckError { public class SolidSelfIntError extends SolidError {
@Serial @Serial
private static final long serialVersionUID = -4479936555545861422L; private static final long serialVersionUID = -4479936555545861422L;
private final Geometry g;
private final List<PolygonIntersection> intersections; private final List<PolygonIntersection> intersections;
public SolidSelfIntError(Geometry g, List<PolygonIntersection> intersections) { public SolidSelfIntError(Geometry g, List<PolygonIntersection> intersections) {
this.g = g; super(g);
this.intersections = intersections; this.intersections = intersections;
} }
public Geometry getGeometry() {
return g;
}
@Override
public void report(ErrorReport report) {
report.add(g);
}
public List<PolygonIntersection> getIntersections() { public List<PolygonIntersection> getIntersections() {
return intersections; return intersections;
} }
@Override @Override
public void accept(ErrorVisitor errorVisitor) { public void accept(ErrorVisitor errorVisitor) {
super.accept(errorVisitor);
errorVisitor.visit(this); errorVisitor.visit(this);
} }
@Override @Override
public boolean accept(HealingMethod method, ModificationListener l) { public boolean accept(HealingMethod method, ModificationListener l) {
return method.visit(this, l); return super.accept(method, l) || method.visit(this, l);
} }
@Override @Override
public String toString() { public String toString() {
return "SolidSelfIntError [g=" + g + ", intersection=" + intersections + "]"; return "SolidSelfIntError [g=" + getGeometry() + ", intersection=" + intersections + "]";
} }
@Override @Override
......
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
*/ */
package de.hft.stuttgart.citydoctor2.check.error; package de.hft.stuttgart.citydoctor2.check.error;
import de.hft.stuttgart.citydoctor2.check.CheckError; import java.io.Serial;
import de.hft.stuttgart.citydoctor2.check.ErrorId; import de.hft.stuttgart.citydoctor2.check.ErrorId;
import de.hft.stuttgart.citydoctor2.check.ErrorReport; import de.hft.stuttgart.citydoctor2.check.ErrorReport;
import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorType;
...@@ -28,48 +29,42 @@ import de.hft.stuttgart.citydoctor2.check.ModificationListener; ...@@ -28,48 +29,42 @@ import de.hft.stuttgart.citydoctor2.check.ModificationListener;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry; import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
import java.io.Serial;
/** /**
* When a geometry has less than 4 polygons, it cannot form a valid solid. * When a geometry has less than 4 polygons, it cannot form a valid solid.
* *
* @author Matthias Betz * @author Matthias Betz
* *
*/ */
public class TooFewPolygonsError implements CheckError { public class TooFewPolygonsError extends SolidError {
@Serial @Serial
private static final long serialVersionUID = 5800732409355221678L; private static final long serialVersionUID = 5800732409355221678L;
private final Geometry g;
public TooFewPolygonsError(Geometry g) { public TooFewPolygonsError(Geometry g) {
this.g = g; super(g);
} }
public Geometry getGeometry() {
return g;
}
@Override @Override
public void report(ErrorReport report) { public void report(ErrorReport report) {
report.add(g); super.report(report);
report.add("number of polygons", g.getPolygons().size()); report.add("number of polygons", getGeometry().getPolygons().size());
} }
@Override @Override
public void accept(ErrorVisitor errorVisitor) { public void accept(ErrorVisitor errorVisitor) {
super.accept(errorVisitor);
errorVisitor.visit(this); errorVisitor.visit(this);
} }
@Override @Override
public boolean accept(HealingMethod method, ModificationListener l) { public boolean accept(HealingMethod method, ModificationListener l) {
return method.visit(this, l); return super.accept(method, l) || method.visit(this, l);
} }
@Override @Override
public String toString() { public String toString() {
return "TooFewPolygonsError [g=" + g + "]"; return "TooFewPolygonsError [g=" + getGeometry() + "]";
} }
@Override @Override
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -53,6 +53,7 @@ public abstract class AbstractBuilding extends CityObject { ...@@ -53,6 +53,7 @@ public abstract class AbstractBuilding extends CityObject {
private final List<Storey> buildingStoreys = new ArrayList<>(); private final List<Storey> buildingStoreys = new ArrayList<>();
private final List<BuildingUnit> buildingUnits = new ArrayList<>(); private final List<BuildingUnit> buildingUnits = new ArrayList<>();
private final List<BuildingRoomFurniture> buildingRoomFurnitureList = new ArrayList<>(); private final List<BuildingRoomFurniture> buildingRoomFurnitureList = new ArrayList<>();
private final List<BuildingConstructiveElement> buildingConstructiveElements = new ArrayList<>();
private org.citygml4j.core.model.building.AbstractBuilding ab; private org.citygml4j.core.model.building.AbstractBuilding ab;
/** /**
...@@ -74,6 +75,10 @@ public abstract class AbstractBuilding extends CityObject { ...@@ -74,6 +75,10 @@ public abstract class AbstractBuilding extends CityObject {
return FeatureType.BUILDING; return FeatureType.BUILDING;
} }
public List<BuildingConstructiveElement> getConstructiveElements() {
return buildingConstructiveElements;
}
@Override @Override
public void unsetGmlGeometries() { public void unsetGmlGeometries() {
ab.setLod1Solid(null); ab.setLod1Solid(null);
...@@ -160,7 +165,7 @@ public abstract class AbstractBuilding extends CityObject { ...@@ -160,7 +165,7 @@ public abstract class AbstractBuilding extends CityObject {
} }
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
...@@ -171,6 +176,9 @@ public abstract class AbstractBuilding extends CityObject { ...@@ -171,6 +176,9 @@ public abstract class AbstractBuilding extends CityObject {
for (BoundarySurface bs : boundarySurfaceList) { for (BoundarySurface bs : boundarySurfaceList) {
bs.accept(c); bs.accept(c);
} }
for (BuildingConstructiveElement bce : buildingConstructiveElements) {
bce.accept(c);
}
for (BuildingRoom br : buildingRooms) { for (BuildingRoom br : buildingRooms) {
br.accept(c); br.accept(c);
} }
...@@ -219,6 +227,11 @@ public abstract class AbstractBuilding extends CityObject { ...@@ -219,6 +227,11 @@ public abstract class AbstractBuilding extends CityObject {
buildingUnit.setParent(this); buildingUnit.setParent(this);
} }
public void addConstructiveElement(BuildingConstructiveElement constructiveElement) {
buildingConstructiveElements.add(constructiveElement);
constructiveElement.setParent(this);
}
public void setGmlObject(org.citygml4j.core.model.building.AbstractBuilding ab) { public void setGmlObject(org.citygml4j.core.model.building.AbstractBuilding ab) {
this.ab = ab; this.ab = ab;
} }
......
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -136,7 +136,7 @@ public abstract class AbstractBuildingSubdivision extends CityObject { ...@@ -136,7 +136,7 @@ public abstract class AbstractBuildingSubdivision extends CityObject {
} }
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
...@@ -30,7 +29,7 @@ public abstract class AbstractFurniture extends CityObject { ...@@ -30,7 +29,7 @@ public abstract class AbstractFurniture extends CityObject {
private org.citygml4j.core.model.construction.AbstractFurniture af; private org.citygml4j.core.model.construction.AbstractFurniture af;
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import org.citygml4j.core.model.core.AbstractCityObject; import org.citygml4j.core.model.core.AbstractCityObject;
...@@ -32,7 +32,7 @@ public abstract class AbstractRoom extends CityObject { ...@@ -32,7 +32,7 @@ public abstract class AbstractRoom extends CityObject {
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
...@@ -143,7 +143,7 @@ public abstract class AbstractTunnel extends CityObject { ...@@ -143,7 +143,7 @@ public abstract class AbstractTunnel extends CityObject {
} }
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
...@@ -145,7 +145,7 @@ public class BoundarySurface extends CityObject { ...@@ -145,7 +145,7 @@ public class BoundarySurface extends CityObject {
} }
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
...@@ -95,7 +95,7 @@ public class BridgeConstructiveElement extends CityObject { ...@@ -95,7 +95,7 @@ public class BridgeConstructiveElement extends CityObject {
} }
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
...@@ -191,7 +191,7 @@ public class BridgeObject extends CityObject { ...@@ -191,7 +191,7 @@ public class BridgeObject extends CityObject {
} }
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import org.citygml4j.core.model.building.BuildingInstallation; import org.citygml4j.core.model.building.BuildingInstallation;
import org.citygml4j.core.model.building.BuildingInstallationProperty; import org.citygml4j.core.model.building.BuildingInstallationProperty;
import org.citygml4j.core.model.core.AbstractSpaceBoundaryProperty; import org.citygml4j.core.model.core.AbstractSpaceBoundaryProperty;
...@@ -45,7 +45,7 @@ public class Building extends AbstractBuilding { ...@@ -45,7 +45,7 @@ public class Building extends AbstractBuilding {
} }
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import javafx.scene.paint.Color;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.citygml4j.core.model.core.AbstractSpaceBoundaryProperty;
import org.citygml4j.core.model.deprecated.bridge.DeprecatedPropertiesOfBridgeConstructiveElement;
import org.citygml4j.core.util.geometry.GeometryFactory;
import org.xmlobjects.gml.model.geometry.GeometryProperty;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurface;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import org.xmlobjects.gml.model.geometry.complexes.CompositeSurface;
import org.xmlobjects.gml.model.geometry.primitives.Solid;
import org.xmlobjects.gml.model.geometry.primitives.SolidProperty;
import org.xmlobjects.gml.model.geometry.primitives.SurfaceProperty;
import java.io.Serial;
import java.util.ArrayList;
import java.util.List;
public class BuildingConstructiveElement extends CityObject {
private static final Logger logger = LogManager.getLogger(BuildingConstructiveElement.class);
private static final String CANNOT_ADD = "Cannot add ";
@Serial
private static final long serialVersionUID = 7353233899458901155L;
private final org.citygml4j.core.model.building.BuildingConstructiveElement gmlBuildingElement;
private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
private AbstractBuilding parent;
public BuildingConstructiveElement(org.citygml4j.core.model.building.BuildingConstructiveElement gmlObject) {
this.gmlBuildingElement = gmlObject;
}
public void setParent(AbstractBuilding parent) {
this.parent = parent;
}
public AbstractBuilding getParent() {
return parent;
}
@Override
public Color getRenderColor() {
return parent.getRenderColor().brighter();
}
@Override
public void rebuildGeometries(GeometryFactory factory, ParserConfiguration config) {
// only handles CityGML2 for now
// unknown which CityGML is handled here
// need context information to decide
for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder) {
continue;
}
switch (geom.getType()) {
case SOLID:
Solid solid = CityGmlUtils.createSolid(geom, factory, config);
setSolidAccordingToLod(geom, solid);
break;
case MULTI_SURFACE:
MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config);
setMultiSurfaceAccordingToLod(geom, ms);
break;
}
}
}
@Override
public void accept(CheckableVisitor c) {
super.accept(c);
if (c.canExecute(this)) {
c.check(this);
}
for (BoundarySurface bs : boundarySurfaceList) {
bs.accept(c);
}
}
private void reCreateBoundarySurface(GeometryFactory factory, ParserConfiguration config, BoundarySurface bs) {
if (bs.getGeometries().isEmpty()) {
for (AbstractSpaceBoundaryProperty bsp : gmlBuildingElement.getBoundaries()) {
if (bsp.getObject() != null && bsp.getObject() == bs.getGmlObject()) {
logger.warn("Found empty boundary surface: {}, removing from BridgeConstructiveElement", bs.getGmlId());
gmlBuildingElement.getBoundaries().remove(bsp);
break;
}
}
return;
}
bs.reCreateGeometries(factory, config);
}
private void setSolidAccordingToLod(Geometry geom, Solid solid) {
switch (geom.getLod()) {
case LOD1:
gmlBuildingElement.setLod1Solid(new SolidProperty(solid));
break;
case LOD2:
gmlBuildingElement.setLod2Solid(new SolidProperty(solid));
break;
case LOD3:
gmlBuildingElement.setLod3Solid(new SolidProperty(solid));
break;
default:
throw new IllegalStateException(CANNOT_ADD + geom.getLod() + " solid to buildings");
}
}
private void setMultiSurfaceAccordingToLod(Geometry geom, MultiSurface ms) {
switch (geom.getLod()) {
case LOD0:
gmlBuildingElement.setLod0MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD2:
gmlBuildingElement.setLod2MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD3:
gmlBuildingElement.setLod3MultiSurface(new MultiSurfaceProperty(ms));
break;
default:
throw new IllegalStateException(CANNOT_ADD + geom.getLod() + " multi surface to buildings");
}
}
@Override
public org.citygml4j.core.model.building.BuildingConstructiveElement getGmlObject() {
return gmlBuildingElement;
}
@Override
public void unsetGmlGeometries() {
gmlBuildingElement.setLod0MultiSurface(null);
gmlBuildingElement.setLod2MultiSurface(null);
gmlBuildingElement.setLod3MultiSurface(null);
gmlBuildingElement.setLod1Solid(null);
gmlBuildingElement.setLod2Solid(null);
gmlBuildingElement.setLod3Solid(null);
}
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
@Override
public FeatureType getFeatureType() {
return FeatureType.BRIDGE_CONSTRUCTION_ELEMENT;
}
public void addBoundarySurface(BoundarySurface bs) {
boundarySurfaceList.add(bs);
bs.setParent(this);
}
public List<BoundarySurface> getBoundarySurfaces() {
return boundarySurfaceList;
}
}
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import org.citygml4j.core.util.geometry.GeometryFactory;
import java.io.Serial; import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -16,7 +14,7 @@ public class BuildingUnit extends AbstractBuildingSubdivision { ...@@ -16,7 +14,7 @@ public class BuildingUnit extends AbstractBuildingSubdivision {
private final List<Storey> storeys = new ArrayList<>(); private final List<Storey> storeys = new ArrayList<>();
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
for (Storey storey : storeys) { for (Storey storey : storeys) {
storey.accept(c); storey.accept(c);
......
...@@ -18,8 +18,7 @@ ...@@ -18,8 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.AbstractCheck; import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor;
import de.hft.stuttgart.citydoctor2.check.Check;
import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.exceptions.CityDoctorWriteException; import de.hft.stuttgart.citydoctor2.exceptions.CityDoctorWriteException;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
...@@ -147,7 +146,7 @@ public class CityDoctorModel { ...@@ -147,7 +146,7 @@ public class CityDoctorModel {
folder.mkdirs(); folder.mkdirs();
createFeatureStream().forEach(co -> { createFeatureStream().forEach(co -> {
Map<Lod, Set<Polygon>> polygonMap = new EnumMap<>(Lod.class); Map<Lod, Set<Polygon>> polygonMap = new EnumMap<>(Lod.class);
Check c = new AbstractCheck() { CheckableUtilsVisitor c = new CheckableUtilsVisitor() {
@Override @Override
public void check(Geometry geom) { public void check(Geometry geom) {
......
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
...@@ -21,7 +21,7 @@ public class CityFurniture extends CityObject { ...@@ -21,7 +21,7 @@ public class CityFurniture extends CityObject {
private org.citygml4j.core.model.cityfurniture.CityFurniture cgmlCityFurniture; private org.citygml4j.core.model.cityfurniture.CityFurniture cgmlCityFurniture;
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.visitors.GmlGeometryRebuilder; import de.hft.stuttgart.citydoctor2.utils.visitors.GmlGeometryRebuilder;
import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor; import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor;
...@@ -185,7 +185,7 @@ public abstract class CityObject extends GmlElement { ...@@ -185,7 +185,7 @@ public abstract class CityObject extends GmlElement {
public abstract FeatureType getFeatureType(); public abstract FeatureType getFeatureType();
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check;
import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.Checkable;
import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.math.Vector3d; import de.hft.stuttgart.citydoctor2.math.Vector3d;
import de.hft.stuttgart.citydoctor2.tesselation.JoglTesselator; import de.hft.stuttgart.citydoctor2.tesselation.JoglTesselator;
import de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon; import de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon;
...@@ -180,7 +180,7 @@ public class ConcretePolygon extends Polygon { ...@@ -180,7 +180,7 @@ public class ConcretePolygon extends Polygon {
* citydoctor2.check.Check) * citydoctor2.check.Check)
*/ */
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
...@@ -48,9 +48,6 @@ public class Edge implements Serializable { ...@@ -48,9 +48,6 @@ public class Edge implements Serializable {
this.to = to; this.to = to;
} }
private Edge() {
}
public Vertex getFrom() { public Vertex getFrom() {
return from; return from;
} }
......
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckableVisitor;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
...@@ -33,7 +33,7 @@ public class GenericCityObject extends CityObject { ...@@ -33,7 +33,7 @@ public class GenericCityObject extends CityObject {
private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>(); private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
@Override @Override
public void accept(Check c) { public void accept(CheckableVisitor c) {
super.accept(c); super.accept(c);
if (c.canExecute(this)) { if (c.canExecute(this)) {
c.check(this); c.check(this);
......
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