Commit 05ebfd21 authored by Riegel's avatar Riegel
Browse files

Fix: Add missing LODs to switch case

Showing with 29 additions and 7 deletions
+29 -7
...@@ -8,7 +8,6 @@ import org.citygml4j.core.util.geometry.GeometryFactory; ...@@ -8,7 +8,6 @@ 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 java.util.List;
public class TrafficAreaObject extends TransportationObject { public class TrafficAreaObject extends TransportationObject {
...@@ -74,6 +73,12 @@ public class TrafficAreaObject extends TransportationObject { ...@@ -74,6 +73,12 @@ public class TrafficAreaObject extends TransportationObject {
private void setMultiSurfaceAccordingToLod(TrafficArea ta, MultiSurface ms, Lod lod) { private void setMultiSurfaceAccordingToLod(TrafficArea ta, MultiSurface ms, Lod lod) {
switch (lod) { switch (lod) {
case LOD0:
ta.setLod0MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD1:
ta.setLod1MultiSurface(new MultiSurfaceProperty(ms));
break;
case LOD2: case LOD2:
ta.setLod2MultiSurface(new MultiSurfaceProperty(ms)); ta.setLod2MultiSurface(new MultiSurfaceProperty(ms));
break; break;
......
...@@ -8,6 +8,7 @@ import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; ...@@ -8,6 +8,7 @@ import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import de.hft.stuttgart.citydoctor2.utils.CopyHandler; import de.hft.stuttgart.citydoctor2.utils.CopyHandler;
import de.hft.stuttgart.citydoctor2.utils.Copyable; import de.hft.stuttgart.citydoctor2.utils.Copyable;
import org.citygml4j.core.model.core.AbstractSpace; import org.citygml4j.core.model.core.AbstractSpace;
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;
...@@ -48,8 +49,12 @@ public abstract class TransportationSpace extends TransportationObject { ...@@ -48,8 +49,12 @@ public abstract class TransportationSpace extends TransportationObject {
} }
if (geom.getType() == GeometryType.MULTI_SURFACE) { if (geom.getType() == GeometryType.MULTI_SURFACE) {
MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config); MultiSurface ms = CityGmlUtils.createMultiSurface(geom, factory, config);
AbstractSpace ats = (AbstractSpace) super.getGmlObject(); if (super.getGmlObject() instanceof AbstractTransportationSpace ats) {
setMultiSurfaceAccordingToLod(ats, ms, geom.getLod()); setMultiSurfaceAccordingToLod(ats, ms, geom.getLod());
} else {
AbstractSpace as = (AbstractSpace) super.getGmlObject();
setMultiSurfaceAccordingToLod(as, ms, geom.getLod());
}
} 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()
+ ". Only MultiSurface allowed"); + ". Only MultiSurface allowed");
...@@ -63,16 +68,28 @@ public abstract class TransportationSpace extends TransportationObject { ...@@ -63,16 +68,28 @@ public abstract class TransportationSpace extends TransportationObject {
} }
} }
private void setMultiSurfaceAccordingToLod(AbstractSpace ats, MultiSurface ms, Lod lod) { private void setMultiSurfaceAccordingToLod(AbstractTransportationSpace ats, MultiSurface ms, Lod lod) {
switch (lod) {
case LOD0 -> ats.setLod0MultiSurface(new MultiSurfaceProperty(ms));
case LOD1 -> ats.getDeprecatedProperties().setLod1MultiSurface(new MultiSurfaceProperty(ms));
case LOD2 -> ats.setLod2MultiSurface(new MultiSurfaceProperty(ms));
case LOD3 -> ats.setLod3MultiSurface(new MultiSurfaceProperty(ms));
case LOD4 -> ats.getDeprecatedProperties().setLod4MultiSurface(new MultiSurfaceProperty(ms));
default ->
throw new IllegalStateException("cannot set geometry with LOD for AuxiliaryTrafficSpace: " + lod);
}
}
private void setMultiSurfaceAccordingToLod(AbstractSpace as, MultiSurface ms, Lod lod) {
switch (lod) { switch (lod) {
case LOD0: case LOD0:
ats.setLod0MultiSurface(new MultiSurfaceProperty(ms)); as.setLod0MultiSurface(new MultiSurfaceProperty(ms));
break; break;
case LOD2: case LOD2:
ats.setLod2MultiSurface(new MultiSurfaceProperty(ms)); as.setLod2MultiSurface(new MultiSurfaceProperty(ms));
break; break;
case LOD3: case LOD3:
ats.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("cannot set geometry with LOD for AuxiliaryTrafficSpace: " + lod);
......
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