Commit 0b280dc5 authored by Riegel's avatar Riegel
Browse files

Add getTopLevelCityObject method to CityObjects

2 merge requests!28Version 3.17.0 Release,!26Add ZIP-archive support
Showing with 133 additions and 4 deletions
+133 -4
......@@ -374,10 +374,12 @@ public abstract class AbstractBuilding extends CityObject {
public void addStorey(Storey storey) {
buildingStoreys.add(storey);
storey.setParent(this);
}
public void addBuildingUnit(BuildingUnit buildingUnit) {
buildingUnits.add(buildingUnit);
buildingUnit.setParent(this);
}
public void setGmlObject(org.citygml4j.core.model.building.AbstractBuilding ab) {
......
......@@ -29,8 +29,9 @@ public abstract class AbstractBuildingSubdivision extends CityObject {
private final List<Installation> buildingInstallations = new ArrayList<>(2);
private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
private final List<BuildingRoom> buildingRooms = new ArrayList<>();
private final List<BuildingRoomFurniture> buildingRoomFurnitureList = new ArrayList<>();
private AbstractBuilding parent;
protected org.citygml4j.core.model.building.AbstractBuildingSubdivision abs;
/**
......@@ -52,6 +53,19 @@ public abstract class AbstractBuildingSubdivision extends CityObject {
return FeatureType.BUILDING_SUBDIVISION;
}
public void setParent(AbstractBuilding parent) {
this.parent = parent;
}
public AbstractBuilding getParent() {
return parent;
}
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
@Override
public void unsetGmlGeometries() {
abs.setLod1Solid(null);
......
......@@ -92,6 +92,11 @@ public abstract class AbstractFurniture extends CityObject {
return af;
}
@Override
public CityObject getTopLevelCityObject(){
return parent;
}
public void addBoundarySurface(BoundarySurface boundarySurface) {
boundarySurfaceList.add(boundarySurface);
boundarySurface.setParent(this);
......
......@@ -350,6 +350,7 @@ public abstract class AbstractTunnel extends CityObject {
public void addTunnelConstructiveElement(TunnelConstructiveElement te) {
tunnelConstructiveElements.add(te);
te.setParent(this);
}
public void addTunnelPart(TunnelPart tunnelPart) {
......
......@@ -207,6 +207,11 @@ public class BoundarySurface extends CityObject {
}
}
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
@Override
public String toString() {
return "BoundarySurface [type=" + type + ", id=" + getGmlId() + "]";
......
......@@ -52,12 +52,21 @@ public class BridgeConstructiveElement extends CityObject {
private final org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlBridgeElement;
private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
private BridgeObject parent;
public BridgeConstructiveElement(org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlObject) {
this.gmlBridgeElement = gmlObject;
}
public void setParent(BridgeObject parent) {
this.parent = parent;
}
public BridgeObject getParent() {
return parent;
}
@Override
public Copyable createCopyInstance() {
return new BridgeConstructiveElement(gmlBridgeElement);
......@@ -244,6 +253,11 @@ public class BridgeConstructiveElement extends CityObject {
}
}
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
@Override
public FeatureType getFeatureType() {
return FeatureType.BRIDGE_CONSTRUCTION_ELEMENT;
......
......@@ -56,10 +56,24 @@ public class BridgeObject extends CityObject {
private final List<BridgeRoom> bridgeRooms = new ArrayList<>(2);
private AbstractBridge ab;
private BridgeType type;
private BridgeObject parent;
public BridgeObject(BridgeType type, AbstractBridge ab) {
public BridgeObject(AbstractBridge ab) {
this.ab = ab;
this.type = BridgeType.BRIDGE;
this.parent = null;
}
public BridgeObject(AbstractBridge ab, BridgeObject parent) {
this.ab = ab;
this.type = BridgeType.BRIDGE_PART;
this.parent = parent;
}
private BridgeObject(BridgeType type, AbstractBridge ab, BridgeObject parent) {
this.ab = ab;
this.type = type;
this.parent = parent;
}
@Override
......@@ -401,6 +415,14 @@ public class BridgeObject extends CityObject {
}
@Override
public CityObject getTopLevelCityObject() {
if (parent != null){
return parent.getTopLevelCityObject();
}
return this;
}
@Override
public String toString() {
return "BridgeObject [type=" + type + ", id=" + getGmlId() + "]";
......@@ -543,11 +565,12 @@ public class BridgeObject extends CityObject {
public void addConstructiveElement(BridgeConstructiveElement element) {
getConstructiveElements().add(element);
element.setParent(this);
}
@Override
public Copyable createCopyInstance() {
return new BridgeObject(type, ab);
return new BridgeObject(type, ab, parent);
}
public List<BridgeObject> getParts() {
......
......@@ -37,6 +37,11 @@ public class BridgeRoom extends AbstractRoom {
parent = handler.getCopyInstance(oRoom.getParent());
}
@Override
public CityObject getTopLevelCityObject() {
return getParent();
}
@Override
public void collectInstances(CopyHandler handler) {
super.collectInstances(handler);
......
......@@ -52,6 +52,11 @@ public class Building extends AbstractBuilding {
}
}
@Override
public CityObject getTopLevelCityObject() {
return this;
}
@Override
public void accept(Check c) {
super.accept(c);
......
......@@ -42,6 +42,11 @@ public class BuildingPart extends AbstractBuilding {
return parent;
}
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
@Override
public FeatureType getFeatureType() {
return FeatureType.BUILDING_PART;
......
......@@ -50,6 +50,11 @@ public class BuildingRoom extends AbstractRoom {
parent = handler.getCopyInstance(oRoom.getParent());
}
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
@Override
public void collectInstances(CopyHandler handler) {
super.collectInstances(handler);
......
......@@ -50,6 +50,11 @@ public class CityFurniture extends CityObject {
cgmlCityFurniture.getDeprecatedProperties().setLod4Geometry(null);
}
@Override
public CityObject getTopLevelCityObject() {
return this;
}
@Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) {
......
......@@ -102,6 +102,11 @@ public abstract class CityObject extends GmlElement {
return highestLodGeometry;
}
/**
* Returns the top-level CityObject (like Building or Tunnel) belonging to this object.
*/
public abstract CityObject getTopLevelCityObject();
public void addGenericAttribute(GenericAttribute genericAttribute) {
genericAttributeList.add(genericAttribute);
}
......
......@@ -213,6 +213,11 @@ public class GenericCityObject extends CityObject {
}
}
@Override
public CityObject getTopLevelCityObject() {
return this;
}
public void setGmlObject(org.citygml4j.core.model.generics.GenericOccupiedSpace gos) {
this.cgmlGos = gos;
}
......
......@@ -195,6 +195,11 @@ public class Installation extends CityObject {
}
}
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
private void removeGeometriesFromBridgeInstallation(BridgeInstallation localBi) {
localBi.getDeprecatedProperties().setLod2Geometry(null);
localBi.getDeprecatedProperties().setLod3Geometry(null);
......
......@@ -105,6 +105,11 @@ public class LandObject extends CityObject {
lu.getDeprecatedProperties().setLod4MultiSurface(null);
}
@Override
public CityObject getTopLevelCityObject() {
return this;
}
public void setGmlObject(LandUse landUse) {
lu = landUse;
}
......
......@@ -135,6 +135,11 @@ public class Opening extends CityObject {
ao.getDeprecatedProperties().setLod4MultiSurface(null);
}
@Override
public CityObject getTopLevelCityObject() {
return partOf.getTopLevelCityObject();
}
@Override
public String toString() {
return "Opening [type=" + type + ", id=" + getGmlId() + "]";
......
......@@ -146,6 +146,11 @@ public class ReliefObject extends CityObject {
// no geometries
}
@Override
public CityObject getTopLevelCityObject() {
return this;
}
@Override
public FeatureType getFeatureType() {
return FeatureType.LAND;
......
......@@ -91,6 +91,11 @@ public class TinObject extends CityObject {
gmlRelief.setTin(null);
}
@Override
public CityObject getTopLevelCityObject() {
return this;
}
@Override
public FeatureType getFeatureType() {
return FeatureType.LAND;
......
......@@ -267,6 +267,11 @@ public class TransportationObject extends CityObject {
}
}
@Override
public CityObject getTopLevelCityObject() {
return this;
}
public void setGmlObject(AbstractCityObject tc) {
ato = tc;
}
......
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