Commit 72b53470 authored by Riegel's avatar Riegel
Browse files

Test: Update Test cases for Visitor implementation

parent 93ddbe87
Pipeline #11067 passed with stage
in 1 minute and 25 seconds
...@@ -79,14 +79,12 @@ public abstract class AbstractBuilding extends CityObject { ...@@ -79,14 +79,12 @@ public abstract class AbstractBuilding extends CityObject {
ab.setLod1Solid(null); ab.setLod1Solid(null);
ab.setLod2Solid(null); ab.setLod2Solid(null);
ab.setLod3Solid(null); ab.setLod3Solid(null);
ab.getDeprecatedProperties().setLod4Solid(null);
ab.setLod0MultiSurface(null);
ab.getDeprecatedProperties().setLod1MultiSurface(null);
ab.setLod2MultiSurface(null); ab.setLod2MultiSurface(null);
ab.setLod3MultiSurface(null); ab.setLod3MultiSurface(null);
ab.getDeprecatedProperties().setLod1MultiSurface(null);
ab.getDeprecatedProperties().setLod4MultiSurface(null); ab.getDeprecatedProperties().setLod4MultiSurface(null);
ab.getDeprecatedProperties().setLod4Solid(null);
ab.setLod0MultiCurve(null);
ab.setLod2MultiCurve(null);
ab.setLod3MultiCurve(null);
} }
@Override @Override
......
...@@ -67,6 +67,7 @@ public abstract class AbstractBuildingSubdivision extends CityObject { ...@@ -67,6 +67,7 @@ public abstract class AbstractBuildingSubdivision extends CityObject {
abs.setLod1Solid(null); abs.setLod1Solid(null);
abs.setLod2Solid(null); abs.setLod2Solid(null);
abs.setLod3Solid(null); abs.setLod3Solid(null);
abs.setLod0MultiSurface(null);
abs.setLod2MultiSurface(null); abs.setLod2MultiSurface(null);
abs.setLod3MultiSurface(null); abs.setLod3MultiSurface(null);
} }
......
...@@ -23,7 +23,7 @@ public abstract class AbstractRoom extends CityObject { ...@@ -23,7 +23,7 @@ public abstract class AbstractRoom extends CityObject {
private static final long serialVersionUID = -1730625513988944329L; private static final long serialVersionUID = -1730625513988944329L;
private final List<Installation> roomInstallations = new ArrayList<>(2); private final List<Installation> roomInstallations = new ArrayList<>(2);
// Rooms have a Href list of furniture, the actual object is saved in the Building // Rooms have a Href list of furniture, the furniture-objects are saved in the TopLevelFeature
private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>(); private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
...@@ -103,9 +103,6 @@ public abstract class AbstractRoom extends CityObject { ...@@ -103,9 +103,6 @@ public abstract class AbstractRoom extends CityObject {
cgmlRoom.setLod1Solid(null); cgmlRoom.setLod1Solid(null);
cgmlRoom.setLod2Solid(null); cgmlRoom.setLod2Solid(null);
cgmlRoom.setLod3Solid(null); cgmlRoom.setLod3Solid(null);
cgmlRoom.setLod0MultiCurve(null);
cgmlRoom.setLod2MultiCurve(null);
cgmlRoom.setLod3MultiCurve(null);
} }
@Override @Override
......
...@@ -58,10 +58,6 @@ public abstract class AbstractTunnel extends CityObject { ...@@ -58,10 +58,6 @@ public abstract class AbstractTunnel extends CityObject {
@Override @Override
public void unsetGmlGeometries() { public void unsetGmlGeometries() {
at.setLod0MultiCurve(null);
at.setLod2MultiCurve(null);
at.setLod3MultiCurve(null);
at.getDeprecatedProperties().setLod4MultiCurve(null);
at.setLod1Solid(null); at.setLod1Solid(null);
at.setLod2Solid(null); at.setLod2Solid(null);
at.setLod3Solid(null); at.setLod3Solid(null);
......
...@@ -137,6 +137,9 @@ public class BridgeObject extends CityObject { ...@@ -137,6 +137,9 @@ public class BridgeObject extends CityObject {
private void setMultiSurfaceAccordingToLod(Geometry geom, MultiSurface ms) { private void setMultiSurfaceAccordingToLod(Geometry geom, MultiSurface ms) {
switch (geom.getLod()) { switch (geom.getLod()) {
case LOD0:
ab.setLod0MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD1: case LOD1:
ab.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty(ms)); ab.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty(ms));
break; break;
...@@ -251,11 +254,13 @@ public class BridgeObject extends CityObject { ...@@ -251,11 +254,13 @@ public class BridgeObject extends CityObject {
ab.setLod1Solid(null); ab.setLod1Solid(null);
ab.setLod2Solid(null); ab.setLod2Solid(null);
ab.setLod3Solid(null); ab.setLod3Solid(null);
ab.getDeprecatedProperties().setLod4Solid(null);
ab.setLod0MultiSurface(null);
ab.getDeprecatedProperties().setLod1MultiSurface(null);
ab.setLod2MultiSurface(null); ab.setLod2MultiSurface(null);
ab.setLod3MultiSurface(null); ab.setLod3MultiSurface(null);
ab.getDeprecatedProperties().setLod1MultiSurface(null);
ab.getDeprecatedProperties().setLod4MultiSurface(null); ab.getDeprecatedProperties().setLod4MultiSurface(null);
ab.getDeprecatedProperties().setLod4Solid(null);
} }
@Override @Override
......
...@@ -15,15 +15,6 @@ public class BuildingUnit extends AbstractBuildingSubdivision { ...@@ -15,15 +15,6 @@ public class BuildingUnit extends AbstractBuildingSubdivision {
private final List<Storey> storeys = new ArrayList<>(); private final List<Storey> storeys = new ArrayList<>();
@Override
public void rebuildGeometries(GeometryFactory factory, ParserConfiguration config) {
super.reCreateGeometries(factory, config);
for (Storey storey : storeys) {
storey.reCreateGeometries(factory, config);
}
}
@Override @Override
public void accept(Check c) { public void accept(Check c) {
super.accept(c); super.accept(c);
......
...@@ -51,6 +51,9 @@ public class CityFurniture extends CityObject { ...@@ -51,6 +51,9 @@ public class CityFurniture extends CityObject {
cgmlCityFurniture.setLod1Solid(null); cgmlCityFurniture.setLod1Solid(null);
cgmlCityFurniture.setLod2Solid(null); cgmlCityFurniture.setLod2Solid(null);
cgmlCityFurniture.setLod3Solid(null); cgmlCityFurniture.setLod3Solid(null);
cgmlCityFurniture.getDeprecatedProperties().setLod1Geometry(null);
cgmlCityFurniture.getDeprecatedProperties().setLod2Geometry(null);
cgmlCityFurniture.getDeprecatedProperties().setLod3Geometry(null);
cgmlCityFurniture.getDeprecatedProperties().setLod4Geometry(null); cgmlCityFurniture.getDeprecatedProperties().setLod4Geometry(null);
} }
......
...@@ -103,7 +103,6 @@ public class LandObject extends CityObject { ...@@ -103,7 +103,6 @@ public class LandObject extends CityObject {
@Override @Override
public void unsetGmlGeometries() { public void unsetGmlGeometries() {
lu.setLod0MultiCurve(null);
lu.setLod0MultiSurface(null); lu.setLod0MultiSurface(null);
lu.setLod1MultiSurface(null); lu.setLod1MultiSurface(null);
lu.setLod2MultiSurface(null); lu.setLod2MultiSurface(null);
......
...@@ -19,9 +19,6 @@ public class Storey extends AbstractBuildingSubdivision { ...@@ -19,9 +19,6 @@ public class Storey extends AbstractBuildingSubdivision {
@Override @Override
public void rebuildGeometries(GeometryFactory factory, ParserConfiguration config) { public void rebuildGeometries(GeometryFactory factory, ParserConfiguration config) {
super.reCreateGeometries(factory, config); super.reCreateGeometries(factory, config);
for (BuildingUnit buildingUnit : buildingUnits) {
buildingUnit.reCreateGeometries(factory, config);
}
} }
@Override @Override
......
...@@ -25,6 +25,7 @@ import javafx.scene.paint.Color; ...@@ -25,6 +25,7 @@ import javafx.scene.paint.Color;
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 org.citygml4j.core.model.relief.TINRelief; import org.citygml4j.core.model.relief.TINRelief;
import org.citygml4j.core.model.relief.TinProperty;
import org.citygml4j.core.util.geometry.GeometryFactory; import org.citygml4j.core.util.geometry.GeometryFactory;
import org.xmlobjects.gml.model.geometry.primitives.AbstractRingProperty; import org.xmlobjects.gml.model.geometry.primitives.AbstractRingProperty;
import org.xmlobjects.gml.model.geometry.primitives.Triangle; import org.xmlobjects.gml.model.geometry.primitives.Triangle;
...@@ -76,6 +77,8 @@ public class TinObject extends CityObject { ...@@ -76,6 +77,8 @@ public class TinObject extends CityObject {
t.setExterior(new AbstractRingProperty(CityGmlUtils.createGmlRing(factory, config, ring))); t.setExterior(new AbstractRingProperty(CityGmlUtils.createGmlRing(factory, config, ring)));
triangles.add(t); triangles.add(t);
} }
this.gmlRelief.setTin(new TinProperty(surface));
gmlRelief.setLod(geom.getLod().ordinal());
} }
@Override @Override
......
...@@ -43,6 +43,7 @@ public class TrafficAreaObject extends TransportationObject { ...@@ -43,6 +43,7 @@ public class TrafficAreaObject extends TransportationObject {
AuxiliaryTrafficArea ata = (AuxiliaryTrafficArea) super.getGmlObject(); AuxiliaryTrafficArea ata = (AuxiliaryTrafficArea) super.getGmlObject();
setMultiSurfaceAccordingToLod(ata, ms, geom.getLod()); setMultiSurfaceAccordingToLod(ata, ms, geom.getLod());
break; break;
} }
} else { } else {
throw new IllegalStateException("Geometry in TransportationObject cannot be of type " + geom.getType() throw new IllegalStateException("Geometry in TransportationObject cannot be of type " + geom.getType()
...@@ -102,6 +103,8 @@ public class TrafficAreaObject extends TransportationObject { ...@@ -102,6 +103,8 @@ public class TrafficAreaObject extends TransportationObject {
switch (type) { switch (type) {
case TRAFFIC_AREA: case TRAFFIC_AREA:
TrafficArea ta = (TrafficArea) super.getGmlObject(); TrafficArea ta = (TrafficArea) super.getGmlObject();
ta.setLod0MultiSurface(null);
ta.setLod1MultiSurface(null);
ta.setLod2MultiSurface(null); ta.setLod2MultiSurface(null);
ta.setLod3MultiSurface(null); ta.setLod3MultiSurface(null);
ta.getDeprecatedProperties().setLod4MultiSurface(null); ta.getDeprecatedProperties().setLod4MultiSurface(null);
......
...@@ -7,6 +7,8 @@ import org.citygml4j.core.model.core.AbstractSpace; ...@@ -7,6 +7,8 @@ import org.citygml4j.core.model.core.AbstractSpace;
import org.citygml4j.core.util.geometry.GeometryFactory; import org.citygml4j.core.util.geometry.GeometryFactory;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurface; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurface;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import org.xmlobjects.gml.model.geometry.primitives.Solid;
import org.xmlobjects.gml.model.geometry.primitives.SolidProperty;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -44,9 +46,17 @@ public class TrafficSpaceObject extends TransportationObject { ...@@ -44,9 +46,17 @@ public class TrafficSpaceObject extends TransportationObject {
if (geom instanceof ImplicitGeometryHolder) { if (geom instanceof ImplicitGeometryHolder) {
continue; continue;
} }
MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config);
AbstractSpace ats = (AbstractSpace) super.getGmlObject(); AbstractSpace ats = (AbstractSpace) super.getGmlObject();
if (geom.getType() == GeometryType.MULTI_SURFACE || geom.getType() == GeometryType.COMPOSITE_SURFACE) {
MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config);
setMultiSurfaceAccordingToLod(ats, ms, geom.getLod()); setMultiSurfaceAccordingToLod(ats, ms, geom.getLod());
} else if (geom.getType() == GeometryType.SOLID) {
Solid solid = CityGmlUtils.createSolid(geom, factory, config);
setSolidAccordingtoLod(ats, solid, geom.getLod());
} else {
throw new IllegalArgumentException("Unsupported geometry type: " + geom.getType());
}
} }
} }
...@@ -62,7 +72,25 @@ public class TrafficSpaceObject extends TransportationObject { ...@@ -62,7 +72,25 @@ public class TrafficSpaceObject extends TransportationObject {
ats.setLod3MultiSurface(new MultiSurfaceProperty(ms)); ats.setLod3MultiSurface(new MultiSurfaceProperty(ms));
break; break;
default: default:
throw new IllegalStateException("cannot set geometry with LOD for AuxiliaryTrafficSpace: " + lod); throw new IllegalStateException(String.format("Cannot set MultiSurface with LOD %s for " +
"[GML]AbstractSpace in TrafficSpaceObject ", lod));
}
}
private void setSolidAccordingtoLod(AbstractSpace ats, Solid solid, Lod lod) {
switch (lod) {
case LOD1:
ats.setLod1Solid(new SolidProperty(solid));
break;
case LOD2:
ats.setLod2Solid(new SolidProperty(solid));
break;
case LOD3:
ats.setLod3Solid(new SolidProperty(solid));
break;
default:
throw new IllegalStateException(String.format("Cannot set MultiSurface with LOD %s for " +
"[GML]AbstractSpace in TrafficSpaceObject ", lod));
} }
} }
...@@ -83,6 +111,9 @@ public class TrafficSpaceObject extends TransportationObject { ...@@ -83,6 +111,9 @@ public class TrafficSpaceObject extends TransportationObject {
ats.setLod0MultiSurface(null); ats.setLod0MultiSurface(null);
ats.setLod2MultiSurface(null); ats.setLod2MultiSurface(null);
ats.setLod3MultiSurface(null); ats.setLod3MultiSurface(null);
ats.setLod1Solid(null);
ats.setLod2Solid(null);
ats.setLod3Solid(null);
} }
@Override @Override
......
...@@ -8,6 +8,8 @@ import org.citygml4j.core.model.transportation.AbstractTransportationSpace; ...@@ -8,6 +8,8 @@ import org.citygml4j.core.model.transportation.AbstractTransportationSpace;
import org.citygml4j.core.util.geometry.GeometryFactory; import org.citygml4j.core.util.geometry.GeometryFactory;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurface; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurface;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import org.xmlobjects.gml.model.geometry.primitives.Solid;
import org.xmlobjects.gml.model.geometry.primitives.SolidProperty;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -45,17 +47,26 @@ public abstract class TransportationSpace extends TransportationObject { ...@@ -45,17 +47,26 @@ public abstract class TransportationSpace extends TransportationObject {
if (geom instanceof ImplicitGeometryHolder) { if (geom instanceof ImplicitGeometryHolder) {
continue; continue;
} }
if (geom.getType() == GeometryType.MULTI_SURFACE) {
MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config);
if (super.getGmlObject() instanceof AbstractTransportationSpace ats) { if (super.getGmlObject() instanceof AbstractTransportationSpace ats) {
if (geom.getType() == GeometryType.MULTI_SURFACE || geom.getType() == GeometryType.COMPOSITE_SURFACE) {
MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config);
setMultiSurfaceAccordingToLod(ats, ms, geom.getLod()); setMultiSurfaceAccordingToLod(ats, ms, geom.getLod());
} else if (geom.getType() == GeometryType.SOLID) {
Solid solid = CityGmlUtils.createSolid(geom, factory, config);
setSolidAccordingToLod(ats, solid, geom.getLod());
} else { } else {
AbstractSpace as = (AbstractSpace) super.getGmlObject(); throw new IllegalArgumentException("Unsupported geometry type: " + geom.getType());
setMultiSurfaceAccordingToLod(as, ms, geom.getLod());
} }
} else if (super.getGmlObject() instanceof AbstractSpace as) {
if (geom.getType() == GeometryType.MULTI_SURFACE || geom.getType() == GeometryType.COMPOSITE_SURFACE) {
MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config);
setMultiSurfaceAccordingToLod(as, ms, geom.getLod());
} else if (geom.getType() == GeometryType.SOLID) {
Solid solid = CityGmlUtils.createSolid(geom, factory, config);
setSolidAccordingToLod(as, solid, geom.getLod());
} else { } else {
throw new IllegalStateException("Geometry in TransportationObject cannot be of type " + geom.getType() throw new IllegalArgumentException("Unsupported geometry type: " + geom.getType());
+ ". Only MultiSurface allowed"); }
} }
} }
} }
...@@ -67,8 +78,8 @@ public abstract class TransportationSpace extends TransportationObject { ...@@ -67,8 +78,8 @@ public abstract class TransportationSpace extends TransportationObject {
case LOD2 -> ats.setLod2MultiSurface(new MultiSurfaceProperty(ms)); case LOD2 -> ats.setLod2MultiSurface(new MultiSurfaceProperty(ms));
case LOD3 -> ats.setLod3MultiSurface(new MultiSurfaceProperty(ms)); case LOD3 -> ats.setLod3MultiSurface(new MultiSurfaceProperty(ms));
case LOD4 -> ats.getDeprecatedProperties().setLod4MultiSurface(new MultiSurfaceProperty(ms)); case LOD4 -> ats.getDeprecatedProperties().setLod4MultiSurface(new MultiSurfaceProperty(ms));
default -> default -> throw new IllegalStateException(String.format("Cannot set MultiSurface with LOD %s for " +
throw new IllegalStateException("cannot set geometry with LOD for AuxiliaryTrafficSpace: " + lod); "[GML]AbstractTransportationSpace in TransportationSpace ", lod));
} }
} }
...@@ -84,7 +95,28 @@ public abstract class TransportationSpace extends TransportationObject { ...@@ -84,7 +95,28 @@ public abstract class TransportationSpace extends TransportationObject {
as.setLod3MultiSurface(new MultiSurfaceProperty(ms)); as.setLod3MultiSurface(new MultiSurfaceProperty(ms));
break; break;
default: default:
throw new IllegalStateException("cannot set geometry with LOD for AuxiliaryTrafficSpace: " + lod); throw new IllegalStateException(String.format("Cannot set MultiSurface with LOD %s for [GML]AbstractSpace in TransportationSpace ", lod));
}
}
private void setSolidAccordingToLod(AbstractTransportationSpace ats, Solid solid, Lod lod) {
switch (lod) {
case LOD1 -> ats.setLod1Solid(new SolidProperty(solid));
case LOD2 -> ats.setLod2Solid(new SolidProperty(solid));
case LOD3 -> ats.setLod3Solid(new SolidProperty(solid));
default -> throw new IllegalStateException(String.format("Cannot set Solid with LOD %s for " +
"[GML]AbstractTransportationSpace in TransportationSpace ", lod));
}
}
private void setSolidAccordingToLod(AbstractSpace ats, Solid solid, Lod lod) {
switch (lod) {
case LOD1 -> ats.setLod1Solid(new SolidProperty(solid));
case LOD2 -> ats.setLod2Solid(new SolidProperty(solid));
case LOD3 -> ats.setLod3Solid(new SolidProperty(solid));
default ->
throw new IllegalStateException(String.format("Cannot set Solid with LOD %s for [GML]AbstractSpace" +
" in TransportationSpace ", lod));
} }
} }
...@@ -109,6 +141,9 @@ public abstract class TransportationSpace extends TransportationObject { ...@@ -109,6 +141,9 @@ public abstract class TransportationSpace extends TransportationObject {
ats.setLod0MultiSurface(null); ats.setLod0MultiSurface(null);
ats.setLod2MultiSurface(null); ats.setLod2MultiSurface(null);
ats.setLod3MultiSurface(null); ats.setLod3MultiSurface(null);
ats.setLod1Solid(null);
ats.setLod2Solid(null);
ats.setLod3Solid(null);
} }
@Override @Override
......
...@@ -156,6 +156,7 @@ public class TunnelConstructiveElement extends CityObject { ...@@ -156,6 +156,7 @@ public class TunnelConstructiveElement extends CityObject {
gmlTunnelElement.setLod1Solid(null); gmlTunnelElement.setLod1Solid(null);
gmlTunnelElement.setLod2Solid(null); gmlTunnelElement.setLod2Solid(null);
gmlTunnelElement.setLod3Solid(null); gmlTunnelElement.setLod3Solid(null);
} }
@Override @Override
......
...@@ -94,16 +94,13 @@ public class Vegetation extends CityObject { ...@@ -94,16 +94,13 @@ public class Vegetation extends CityObject {
private void setSolidAccordingToLod(PlantCover pc, Solid solid, Lod lod) { private void setSolidAccordingToLod(PlantCover pc, Solid solid, Lod lod) {
switch (lod) { switch (lod) {
case LOD1: case LOD1:
pc.getDeprecatedProperties().setLod1MultiSolid(new MultiSolidProperty(new MultiSolid(Collections.singletonList(new SolidProperty(solid))))); pc.setLod1Solid(new SolidProperty(solid));
break; break;
case LOD2: case LOD2:
pc.getDeprecatedProperties().setLod2MultiSolid(new MultiSolidProperty(new MultiSolid(Collections.singletonList(new SolidProperty(solid))))); pc.setLod2Solid(new SolidProperty(solid));
break; break;
case LOD3: case LOD3:
pc.getDeprecatedProperties().setLod3MultiSolid(new MultiSolidProperty(new MultiSolid(Collections.singletonList(new SolidProperty(solid))))); pc.setLod3Solid(new SolidProperty(solid));
break;
case LOD4:
pc.getDeprecatedProperties().setLod4MultiSolid(new MultiSolidProperty(new MultiSolid(Collections.singletonList(new SolidProperty(solid)))));
break; break;
default: default:
throw new IllegalStateException("Cannot set Solid with lod to PlantCover:" + lod); throw new IllegalStateException("Cannot set Solid with lod to PlantCover:" + lod);
...@@ -113,13 +110,13 @@ public class Vegetation extends CityObject { ...@@ -113,13 +110,13 @@ public class Vegetation extends CityObject {
private void setSolidAccordingToLod(SolitaryVegetationObject svo, Solid solid, Lod lod) { private void setSolidAccordingToLod(SolitaryVegetationObject svo, Solid solid, Lod lod) {
switch (lod) { switch (lod) {
case LOD1: case LOD1:
svo.getDeprecatedProperties().setLod1Geometry(new SolidProperty(solid)); svo.setLod1Solid(new SolidProperty(solid));
break; break;
case LOD2: case LOD2:
svo.getDeprecatedProperties().setLod2Geometry(new SolidProperty(solid)); svo.setLod2Solid(new SolidProperty(solid));
break; break;
case LOD3: case LOD3:
svo.getDeprecatedProperties().setLod3Geometry(new SolidProperty(solid)); svo.setLod3Solid(new SolidProperty(solid));
break; break;
case LOD4: case LOD4:
svo.getDeprecatedProperties().setLod4Geometry(new SolidProperty(solid)); svo.getDeprecatedProperties().setLod4Geometry(new SolidProperty(solid));
...@@ -131,6 +128,9 @@ public class Vegetation extends CityObject { ...@@ -131,6 +128,9 @@ public class Vegetation extends CityObject {
private void setMultiSurfaceAccordingToLod(PlantCover pc, MultiSurface ms, Lod lod) { private void setMultiSurfaceAccordingToLod(PlantCover pc, MultiSurface ms, Lod lod) {
switch (lod) { switch (lod) {
case LOD0:
pc.setLod0MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD1: case LOD1:
pc.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty(ms)); pc.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty(ms));
break; break;
...@@ -151,14 +151,17 @@ public class Vegetation extends CityObject { ...@@ -151,14 +151,17 @@ public class Vegetation extends CityObject {
private void setMultiSurfaceAccordingToLod(SolitaryVegetationObject svo, MultiSurface ms, Lod lod) { private void setMultiSurfaceAccordingToLod(SolitaryVegetationObject svo, MultiSurface ms, Lod lod) {
switch (lod) { switch (lod) {
case LOD0:
svo.setLod0MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD1: case LOD1:
svo.getDeprecatedProperties().setLod1Geometry(new MultiSurfaceProperty(ms)); svo.getDeprecatedProperties().setLod1Geometry(new MultiSurfaceProperty(ms));
break; break;
case LOD2: case LOD2:
svo.getDeprecatedProperties().setLod2Geometry(new MultiSurfaceProperty(ms)); svo.setLod2MultiSurface(new MultiSurfaceProperty(ms));
break; break;
case LOD3: case LOD3:
svo.getDeprecatedProperties().setLod3Geometry(new MultiSurfaceProperty(ms)); svo.setLod3MultiSurface(new MultiSurfaceProperty(ms));
break; break;
case LOD4: case LOD4:
svo.getDeprecatedProperties().setLod4Geometry(new MultiSurfaceProperty(ms)); svo.getDeprecatedProperties().setLod4Geometry(new MultiSurfaceProperty(ms));
...@@ -196,18 +199,12 @@ public class Vegetation extends CityObject { ...@@ -196,18 +199,12 @@ public class Vegetation extends CityObject {
citygmlVegetation.setLod3Solid(null); citygmlVegetation.setLod3Solid(null);
if (type == VegetationType.SOLITARY_VEGETATION_OBJECT) { if (type == VegetationType.SOLITARY_VEGETATION_OBJECT) {
SolitaryVegetationObject svo = (SolitaryVegetationObject) citygmlVegetation; SolitaryVegetationObject svo = (SolitaryVegetationObject) citygmlVegetation;
svo.setLod0MultiCurve(null);
svo.setLod2MultiCurve(null);
svo.setLod3MultiCurve(null);
svo.getDeprecatedProperties().setLod1Geometry(null); svo.getDeprecatedProperties().setLod1Geometry(null);
svo.getDeprecatedProperties().setLod2Geometry(null); svo.getDeprecatedProperties().setLod2Geometry(null);
svo.getDeprecatedProperties().setLod3Geometry(null); svo.getDeprecatedProperties().setLod3Geometry(null);
svo.getDeprecatedProperties().setLod4Geometry(null); svo.getDeprecatedProperties().setLod4Geometry(null);
} else { } else {
PlantCover pc = (PlantCover) citygmlVegetation; PlantCover pc = (PlantCover) citygmlVegetation;
pc.setLod0MultiCurve(null);
pc.setLod2MultiCurve(null);
pc.setLod3MultiCurve(null);
pc.getDeprecatedProperties().setLod1MultiSurface(null); pc.getDeprecatedProperties().setLod1MultiSurface(null);
pc.getDeprecatedProperties().setLod4MultiSurface(null); pc.getDeprecatedProperties().setLod4MultiSurface(null);
pc.getDeprecatedProperties().setLod1MultiSolid(null); pc.getDeprecatedProperties().setLod1MultiSolid(null);
......
...@@ -30,6 +30,8 @@ import org.citygml4j.core.model.waterbody.WaterBody; ...@@ -30,6 +30,8 @@ import org.citygml4j.core.model.waterbody.WaterBody;
import org.citygml4j.core.util.geometry.GeometryFactory; import org.citygml4j.core.util.geometry.GeometryFactory;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurface; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurface;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import org.xmlobjects.gml.model.geometry.primitives.Solid;
import org.xmlobjects.gml.model.geometry.primitives.SolidProperty;
import java.io.Serial; import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -54,16 +56,12 @@ public class WaterObject extends CityObject { ...@@ -54,16 +56,12 @@ public class WaterObject extends CityObject {
@Override @Override
public void rebuildGeometries(GeometryFactory factory, ParserConfiguration config) { public void rebuildGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom.getType() == GeometryType.MULTI_SURFACE) { if (geom.getType() == GeometryType.MULTI_SURFACE || geom.getType() == GeometryType.COMPOSITE_SURFACE) {
MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config); MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config);
if (geom.getLod() == Lod.LOD0) { setMultiSurfaceAccordingToLod(gmlWater, ms, geom.getLod());
gmlWater.setLod0MultiSurface(new MultiSurfaceProperty(ms)); } else if (geom.getType() == GeometryType.SOLID) {
} else if (geom.getLod() == Lod.LOD1) { Solid solid = CityGmlUtils.createSolid(geom, factory, config);
gmlWater.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty(ms)); setSolidAccordingToLod(gmlWater, solid, geom.getLod());
} else {
throw new IllegalStateException(
"Cannot add MultiSurface geometry with lod to WaterBody:" + geom.getLod());
}
} else { } else {
throw new IllegalStateException("Cannot add Solid geometry to WaterBody"); throw new IllegalStateException("Cannot add Solid geometry to WaterBody");
} }
...@@ -71,6 +69,44 @@ public class WaterObject extends CityObject { ...@@ -71,6 +69,44 @@ public class WaterObject extends CityObject {
removeEmptyBoundarySurfaces(); removeEmptyBoundarySurfaces();
} }
private void setMultiSurfaceAccordingToLod(WaterBody wb, MultiSurface ms, Lod lod) {
switch (lod) {
case LOD0:
wb.setLod0MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD1:
wb.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD2:
wb.setLod2MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD3:
wb.setLod3MultiSurface(new MultiSurfaceProperty(ms));
break;
default:
throw new IllegalStateException("Cannot set MultiSurface with lod to WaterBody:" + lod);
}
}
private void setSolidAccordingToLod(WaterBody wb, Solid solid, Lod lod) {
switch (lod) {
case LOD1:
wb.setLod1Solid(new SolidProperty(solid));
break;
case LOD2:
wb.setLod2Solid(new SolidProperty(solid));
break;
case LOD3:
wb.setLod3Solid(new SolidProperty(solid));
break;
case LOD4:
wb.getDeprecatedProperties().setLod4Solid(new SolidProperty(solid));
break;
default:
throw new IllegalStateException("Cannot set MultiSurface with lod to SolitaryVegetationObject:" + lod);
}
}
private void removeEmptyBoundarySurfaces() { private void removeEmptyBoundarySurfaces() {
for (BoundarySurface bs : boundarySurfaceList) { for (BoundarySurface bs : boundarySurfaceList) {
if (bs.getGeometries().isEmpty()) { if (bs.getGeometries().isEmpty()) {
...@@ -135,10 +171,6 @@ public class WaterObject extends CityObject { ...@@ -135,10 +171,6 @@ public class WaterObject extends CityObject {
gmlWater.setLod2Solid(null); gmlWater.setLod2Solid(null);
gmlWater.setLod3Solid(null); gmlWater.setLod3Solid(null);
gmlWater.getDeprecatedProperties().setLod4Solid(null); gmlWater.getDeprecatedProperties().setLod4Solid(null);
gmlWater.setLod0MultiCurve(null);
gmlWater.getDeprecatedProperties().setLod1MultiCurve(null);
gmlWater.setLod2MultiCurve(null);
gmlWater.setLod3MultiCurve(null);
} }
@Override @Override
......
...@@ -41,13 +41,7 @@ import org.citygml4j.core.util.geometry.GeometryFactory; ...@@ -41,13 +41,7 @@ import org.citygml4j.core.util.geometry.GeometryFactory;
import org.junit.Test; import org.junit.Test;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import org.xmlobjects.gml.model.geometry.primitives.AbstractRing;
import org.xmlobjects.gml.model.geometry.primitives.AbstractSolid;
import org.xmlobjects.gml.model.geometry.primitives.AbstractSurface;
import org.xmlobjects.gml.model.geometry.primitives.Shell;
import org.xmlobjects.gml.model.geometry.primitives.Solid;
import org.xmlobjects.gml.model.geometry.primitives.SolidProperty; import org.xmlobjects.gml.model.geometry.primitives.SolidProperty;
import org.xmlobjects.gml.model.geometry.primitives.SurfaceProperty;
import de.hft.stuttgart.citydoctor2.check.AbstractCheck; import de.hft.stuttgart.citydoctor2.check.AbstractCheck;
import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckError;
...@@ -178,46 +172,48 @@ public class AbstractBuildingTest { ...@@ -178,46 +172,48 @@ public class AbstractBuildingTest {
@Test @Test
public void testReCreateGeometriesSolid() { public void testReCreateGeometriesSolid() {
Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.SOLID);
AbstractBuilding ab = createAbstractBuilding(); AbstractBuilding ab = createAbstractBuilding();
org.citygml4j.core.model.building.AbstractBuilding gmlAb = new org.citygml4j.core.model.building.Building(); org.citygml4j.core.model.building.AbstractBuilding gmlAb = new org.citygml4j.core.model.building.Building();
ab.setCityGmlBuilding(gmlAb); ab.setCityGmlBuilding(gmlAb);
ab.addGeometry(geom); ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD1));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD2));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD3));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD4));
GeometryFactory factory = GeometryFactory.newInstance(); GeometryFactory factory = GeometryFactory.newInstance();
ParserConfiguration config = new ParserConfiguration(8, false); ParserConfiguration config = new ParserConfiguration(8, false);
ab.reCreateGeometries(factory, config); ab.reCreateGeometries(factory, config);
AbstractSolid aSolid = gmlAb.getLod2Solid().getObject(); GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAb.getLod1Solid().getObject());
assertTrue(aSolid instanceof Solid); GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAb.getLod2Solid().getObject());
Solid solid = (Solid) aSolid; GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAb.getLod3Solid().getObject());
Shell geometry = solid.getExterior().getObject(); GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAb.getDeprecatedProperties().getLod4Solid().getObject());
List<SurfaceProperty> surfaceMember = geometry.getSurfaceMembers();
assertEquals(1, surfaceMember.size());
AbstractSurface polySurface = surfaceMember.get(0).getObject();
assertTrue(polySurface instanceof org.xmlobjects.gml.model.geometry.primitives.Polygon);
var gmlPoly = (org.xmlobjects.gml.model.geometry.primitives.Polygon) polySurface;
AbstractRing ring = gmlPoly.getExterior().getObject();
var gmlRing = (org.xmlobjects.gml.model.geometry.primitives.LinearRing) ring;
List<Double> posList = gmlRing.toCoordinateList3D();
double[] expectedValues = GeometryTestUtils.getExpectedValues();
for (int i = 0; i < posList.size(); i++) {
assertEquals(expectedValues[i], posList.get(i), 0.00000001);
}
} }
@Test @Test
public void testReCreateGeometriesMultiSurface() { public void testReCreateGeometriesMultiSurface() {
Geometry geom = GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE);
AbstractBuilding ab = createAbstractBuilding(); AbstractBuilding ab = createAbstractBuilding();
org.citygml4j.core.model.building.AbstractBuilding gmlAb = new org.citygml4j.core.model.building.Building(); org.citygml4j.core.model.building.AbstractBuilding gmlAb = new org.citygml4j.core.model.building.Building();
ab.setCityGmlBuilding(gmlAb); ab.setCityGmlBuilding(gmlAb);
ab.addGeometry(geom); ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD0));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD1));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD2));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD3));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD4));
GeometryFactory factory = GeometryFactory.newInstance(); GeometryFactory factory = GeometryFactory.newInstance();
ParserConfiguration config = new ParserConfiguration(8, false); ParserConfiguration config = new ParserConfiguration(8, false);
ab.reCreateGeometries(factory, config); ab.reCreateGeometries(factory, config);
assertNotNull(gmlAb.getLod0MultiSurface());
assertNotNull(gmlAb.getLod0MultiSurface().getObject());
assertNotNull(gmlAb.getDeprecatedProperties().getLod1MultiSurface());
assertNotNull(gmlAb.getDeprecatedProperties().getLod1MultiSurface().getObject());
assertNotNull(gmlAb.getLod2MultiSurface()); assertNotNull(gmlAb.getLod2MultiSurface());
assertNotNull(gmlAb.getLod2MultiSurface().getObject()); assertNotNull(gmlAb.getLod2MultiSurface().getObject());
assertNotNull(gmlAb.getLod3MultiSurface());
assertNotNull(gmlAb.getLod3MultiSurface().getObject());
assertNotNull(gmlAb.getDeprecatedProperties().getLod4MultiSurface());
assertNotNull(gmlAb.getDeprecatedProperties().getLod4MultiSurface().getObject());
} }
@Test @Test
......
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.AbstractCheck;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import org.citygml4j.core.model.core.AbstractSpaceBoundary; import org.citygml4j.core.model.core.AbstractSpaceBoundary;
import org.citygml4j.core.util.geometry.GeometryFactory;
import org.citygml4j.core.visitor.ObjectVisitor; import org.citygml4j.core.visitor.ObjectVisitor;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
...@@ -10,12 +12,13 @@ import org.xmlobjects.gml.model.geometry.aggregates.MultiCurveProperty; ...@@ -10,12 +12,13 @@ import org.xmlobjects.gml.model.geometry.aggregates.MultiCurveProperty;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import org.xmlobjects.gml.model.geometry.primitives.SolidProperty; import org.xmlobjects.gml.model.geometry.primitives.SolidProperty;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
public class AbstractRoomTest { public class AbstractRoomTest {
//TODO: Add RecreateGeometries test
AbstractRoom ab; AbstractRoom ab;
@Before @Before
...@@ -33,9 +36,11 @@ public class AbstractRoomTest { ...@@ -33,9 +36,11 @@ public class AbstractRoomTest {
Installation mockInstallation = Mockito.mock(Installation.class); Installation mockInstallation = Mockito.mock(Installation.class);
BoundarySurface mockBoundarySurface = Mockito.mock(BoundarySurface.class); BoundarySurface mockBoundarySurface = Mockito.mock(BoundarySurface.class);
Geometry geometry = Mockito.mock(Geometry.class);
ab.addRoomInstallation(mockInstallation); ab.addRoomInstallation(mockInstallation);
ab.addBoundarySurface(mockBoundarySurface); ab.addBoundarySurface(mockBoundarySurface);
ab.addGeometry(geometry);
AbstractCheck c = new AbstractCheck() { AbstractCheck c = new AbstractCheck() {
}; };
...@@ -43,6 +48,7 @@ public class AbstractRoomTest { ...@@ -43,6 +48,7 @@ public class AbstractRoomTest {
Mockito.verify(mockInstallation).accept(c); Mockito.verify(mockInstallation).accept(c);
Mockito.verify(mockBoundarySurface).accept(c); Mockito.verify(mockBoundarySurface).accept(c);
Mockito.verify(geometry).accept(c);
} }
@Test @Test
...@@ -65,12 +71,8 @@ public class AbstractRoomTest { ...@@ -65,12 +71,8 @@ public class AbstractRoomTest {
gmlAUS.setLod0MultiSurface(new MultiSurfaceProperty()); gmlAUS.setLod0MultiSurface(new MultiSurfaceProperty());
gmlAUS.setLod2MultiSurface(new MultiSurfaceProperty()); gmlAUS.setLod2MultiSurface(new MultiSurfaceProperty());
gmlAUS.setLod3MultiSurface(new MultiSurfaceProperty()); gmlAUS.setLod3MultiSurface(new MultiSurfaceProperty());
gmlAUS.setLod0MultiCurve(new MultiCurveProperty());
gmlAUS.setLod2MultiCurve(new MultiCurveProperty());
gmlAUS.setLod3MultiCurve(new MultiCurveProperty());
ab.cgmlRoom = gmlAUS; ab.cgmlRoom = gmlAUS;
ab.clearGmlGeometries(); ab.clearGmlGeometries();
assertNull(gmlAUS.getLod1Solid()); assertNull(gmlAUS.getLod1Solid());
...@@ -79,11 +81,63 @@ public class AbstractRoomTest { ...@@ -79,11 +81,63 @@ public class AbstractRoomTest {
assertNull(gmlAUS.getLod0MultiSurface()); assertNull(gmlAUS.getLod0MultiSurface());
assertNull(gmlAUS.getLod2MultiSurface()); assertNull(gmlAUS.getLod2MultiSurface());
assertNull(gmlAUS.getLod3MultiSurface()); assertNull(gmlAUS.getLod3MultiSurface());
assertNull(gmlAUS.getLod0MultiCurve()); }
assertNull(gmlAUS.getLod2MultiCurve());
assertNull(gmlAUS.getLod3MultiCurve()); @Test
public void testReCreateGeometriesSolid() {
org.citygml4j.core.model.core.AbstractUnoccupiedSpace gmlAUS = new org.citygml4j.core.model.core.AbstractUnoccupiedSpace() {
@Override
public void accept(ObjectVisitor visitor) {
return;
}
@Override
public boolean isValidBoundary(Class<? extends AbstractSpaceBoundary> type) {
return false;
}
};
ab.cgmlRoom = gmlAUS;
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD1));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD2));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD3));
GeometryFactory factory = GeometryFactory.newInstance();
ParserConfiguration config = new ParserConfiguration(8, false);
ab.reCreateGeometries(factory, config);
GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAUS.getLod1Solid().getObject());
GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAUS.getLod2Solid().getObject());
GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAUS.getLod3Solid().getObject());
}
@Test
public void testReCreateGeometriesMultiSurface() {
org.citygml4j.core.model.core.AbstractUnoccupiedSpace gmlAUS = new org.citygml4j.core.model.core.AbstractUnoccupiedSpace() {
@Override
public void accept(ObjectVisitor visitor) {
return;
}
@Override
public boolean isValidBoundary(Class<? extends AbstractSpaceBoundary> type) {
return false;
}
};
ab.cgmlRoom = gmlAUS;
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD0));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD2));
ab.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD3));
GeometryFactory factory = GeometryFactory.newInstance();
ParserConfiguration config = new ParserConfiguration(8, false);
ab.reCreateGeometries(factory, config);
assertNotNull(gmlAUS.getLod0MultiSurface());
assertNotNull(gmlAUS.getLod0MultiSurface().getObject());
assertNotNull(gmlAUS.getLod2MultiSurface());
assertNotNull(gmlAUS.getLod2MultiSurface().getObject());
assertNotNull(gmlAUS.getLod3MultiSurface());
assertNotNull(gmlAUS.getLod3MultiSurface().getObject());
} }
} }
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.AbstractCheck;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import org.citygml4j.core.util.geometry.GeometryFactory;
import org.citygml4j.core.visitor.ObjectVisitor; import org.citygml4j.core.visitor.ObjectVisitor;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.xmlobjects.gml.model.geometry.aggregates.MultiCurveProperty;
import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty; import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import org.xmlobjects.gml.model.geometry.primitives.SolidProperty; import org.xmlobjects.gml.model.geometry.primitives.SolidProperty;
...@@ -14,8 +15,6 @@ import static org.mockito.Mockito.verify; ...@@ -14,8 +15,6 @@ import static org.mockito.Mockito.verify;
public class AbstractTunnelTest { public class AbstractTunnelTest {
// TODO: Implement recreateGeometriesTest
AbstractTunnel at; AbstractTunnel at;
@Before @Before
...@@ -67,13 +66,8 @@ public class AbstractTunnelTest { ...@@ -67,13 +66,8 @@ public class AbstractTunnelTest {
} }
}; };
at.setGmlObject(gmlAt); at.setGmlObject(gmlAt);
gmlAt.setLod0MultiCurve(new MultiCurveProperty());
gmlAt.setLod2MultiCurve(new MultiCurveProperty());
gmlAt.setLod3MultiCurve(new MultiCurveProperty());
gmlAt.getDeprecatedProperties().setLod4MultiCurve(new MultiCurveProperty());
gmlAt.setLod0MultiSurface(new MultiSurfaceProperty()); gmlAt.setLod0MultiSurface(new MultiSurfaceProperty());
gmlAt.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty()); gmlAt.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty());
gmlAt.setLod2MultiSurface(new MultiSurfaceProperty()); gmlAt.setLod2MultiSurface(new MultiSurfaceProperty());
...@@ -86,10 +80,6 @@ public class AbstractTunnelTest { ...@@ -86,10 +80,6 @@ public class AbstractTunnelTest {
at.clearGmlGeometries(); at.clearGmlGeometries();
assertNull(gmlAt.getLod0MultiCurve());
assertNull(gmlAt.getLod2MultiCurve());
assertNull(gmlAt.getLod3MultiCurve());
assertNull(gmlAt.getDeprecatedProperties().getLod4MultiCurve());
assertNull(gmlAt.getLod0MultiSurface()); assertNull(gmlAt.getLod0MultiSurface());
assertNull(gmlAt.getDeprecatedProperties().getLod1MultiSurface()); assertNull(gmlAt.getDeprecatedProperties().getLod1MultiSurface());
assertNull(gmlAt.getLod2MultiSurface()); assertNull(gmlAt.getLod2MultiSurface());
...@@ -102,8 +92,57 @@ public class AbstractTunnelTest { ...@@ -102,8 +92,57 @@ public class AbstractTunnelTest {
} }
@Test @Test
public void testReCreateGeometry() { public void testReCreateGeometriesSolid() {
org.citygml4j.core.model.tunnel.AbstractTunnel gmlAt = new org.citygml4j.core.model.tunnel.AbstractTunnel() {
@Override
public void accept(ObjectVisitor visitor) {
}
};
at.setGmlObject(gmlAt);
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD1));
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD2));
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD3));
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.SOLID, Lod.LOD4));
GeometryFactory factory = GeometryFactory.newInstance();
ParserConfiguration config = new ParserConfiguration(8, false);
at.reCreateGeometries(factory, config);
GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAt.getLod1Solid().getObject());
GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAt.getLod2Solid().getObject());
GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAt.getLod3Solid().getObject());
GeometryTestUtils.assertSolidMatchesExpectedValues(gmlAt.getDeprecatedProperties().getLod4Solid().getObject());
}
@Test
public void testReCreateGeometriesMultiSurface() {
org.citygml4j.core.model.tunnel.AbstractTunnel gmlAt = new org.citygml4j.core.model.tunnel.AbstractTunnel() {
@Override
public void accept(ObjectVisitor visitor) {
} }
};
at.setGmlObject(gmlAt);
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD0));
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD1));
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD2));
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD3));
at.addGeometry(GeometryTestUtils.createDummyGeometry(GeometryType.MULTI_SURFACE, Lod.LOD4));
GeometryFactory factory = GeometryFactory.newInstance();
ParserConfiguration config = new ParserConfiguration(8, false);
at.reCreateGeometries(factory, config);
assertNotNull(gmlAt.getLod0MultiSurface());
assertNotNull(gmlAt.getLod0MultiSurface().getObject());
assertNotNull(gmlAt.getDeprecatedProperties().getLod1MultiSurface());
assertNotNull(gmlAt.getDeprecatedProperties().getLod1MultiSurface().getObject());
assertNotNull(gmlAt.getLod2MultiSurface());
assertNotNull(gmlAt.getLod2MultiSurface().getObject());
assertNotNull(gmlAt.getLod3MultiSurface());
assertNotNull(gmlAt.getLod3MultiSurface().getObject());
assertNotNull(gmlAt.getDeprecatedProperties().getLod4MultiSurface());
assertNotNull(gmlAt.getDeprecatedProperties().getLod4MultiSurface().getObject());
}
} }
\ No newline at end of file
...@@ -24,6 +24,7 @@ import static org.junit.Assert.assertNotNull; ...@@ -24,6 +24,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -51,6 +52,19 @@ public class BoundarySurfaceTest { ...@@ -51,6 +52,19 @@ public class BoundarySurfaceTest {
//Todo: Check this class for rework potential with the new Visitors //Todo: Check this class for rework potential with the new Visitors
@Test
public void testVisitorPropagation() {
BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null);
Opening oMock = Mockito.mock(Opening.class);
bs.addOpening(oMock);
AbstractCheck c = new AbstractCheck() {
};
bs.accept(c);
verify(oMock).accept(c);
}
@Test @Test
public void testAccept() { public void testAccept() {
BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null); BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null);
...@@ -65,7 +79,7 @@ public class BoundarySurfaceTest { ...@@ -65,7 +79,7 @@ public class BoundarySurfaceTest {
} }
}; };
bs.accept(c); bs.accept(c);
Mockito.verify(oMock).accept(c); verify(oMock).accept(c);
assertEquals(1, bsCounter.intValue()); assertEquals(1, bsCounter.intValue());
} }
...@@ -83,7 +97,7 @@ public class BoundarySurfaceTest { ...@@ -83,7 +97,7 @@ public class BoundarySurfaceTest {
} }
}; };
bs.accept(c); bs.accept(c);
Mockito.verify(oMock).accept(c); verify(oMock).accept(c);
assertEquals(0, bsCounter.intValue()); assertEquals(0, bsCounter.intValue());
} }
...@@ -94,7 +108,7 @@ public class BoundarySurfaceTest { ...@@ -94,7 +108,7 @@ public class BoundarySurfaceTest {
Geometry spyGeom = Mockito.spy(geom); Geometry spyGeom = Mockito.spy(geom);
bs.addGeometry(spyGeom); bs.addGeometry(spyGeom);
bs.prepareForChecking(); bs.prepareForChecking();
Mockito.verify(spyGeom).updateEdgesAndVertices(); verify(spyGeom).updateEdgesAndVertices();
} }
@Test @Test
...@@ -128,7 +142,7 @@ public class BoundarySurfaceTest { ...@@ -128,7 +142,7 @@ public class BoundarySurfaceTest {
assertFalse(bs.getAllCheckResults().isEmpty()); assertFalse(bs.getAllCheckResults().isEmpty());
bs.addOpening(oMock); bs.addOpening(oMock);
bs.clearAllContainedCheckResults(); bs.clearAllContainedCheckResults();
Mockito.verify(oMock).accept(any(ClearCheckResultsVisitor.class)); verify(oMock).accept(any(ClearCheckResultsVisitor.class));
assertTrue(bs.getAllCheckResults().isEmpty()); assertTrue(bs.getAllCheckResults().isEmpty());
} }
...@@ -304,7 +318,7 @@ public class BoundarySurfaceTest { ...@@ -304,7 +318,7 @@ public class BoundarySurfaceTest {
GeometryFactory factory = GeometryFactory.newInstance(); GeometryFactory factory = GeometryFactory.newInstance();
ParserConfiguration config = new ParserConfiguration(8, false); ParserConfiguration config = new ParserConfiguration(8, false);
bs.reCreateGeometries(factory, config); bs.reCreateGeometries(factory, config);
Mockito.verify(oMock).accept(any(GmlGeometryRebuilder.class)); verify(oMock).accept(any(GmlGeometryRebuilder.class));
} }
@Test @Test
...@@ -327,7 +341,7 @@ public class BoundarySurfaceTest { ...@@ -327,7 +341,7 @@ public class BoundarySurfaceTest {
Opening oMock = Mockito.mock(Opening.class); Opening oMock = Mockito.mock(Opening.class);
bs.addOpening(oMock); bs.addOpening(oMock);
bs.accept(new UnsetGeometriesVisitor()); bs.accept(new UnsetGeometriesVisitor());
Mockito.verify(oMock).accept(any(UnsetGeometriesVisitor.class)); verify(oMock).accept(any(UnsetGeometriesVisitor.class));
assertNull(ws.getLod2MultiSurface()); assertNull(ws.getLod2MultiSurface());
assertNull(ws.getLod3MultiSurface()); assertNull(ws.getLod3MultiSurface());
assertNull(ws.getDeprecatedProperties().getLod4MultiSurface()); assertNull(ws.getDeprecatedProperties().getLod4MultiSurface());
......
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