Commit 3dac795e authored by Riegel's avatar Riegel
Browse files

Merge branch 'dev' into 'master'

Version 3.17.0 Release

See merge request !28
1 merge request!28Version 3.17.0 Release
Pipeline #11012 passed with stage
in 1 minute and 10 seconds
Showing with 297 additions and 34 deletions
+297 -34
...@@ -4,3 +4,5 @@ ...@@ -4,3 +4,5 @@
/CityDoctorParent/.idea/jarRepositories.xml /CityDoctorParent/.idea/jarRepositories.xml
/CityDoctorParent/.idea/misc.xml /CityDoctorParent/.idea/misc.xml
/CityDoctorParent/.idea/vcs.xml /CityDoctorParent/.idea/vcs.xml
.idea
/GUISettings.properties
# Title: Summary, imperative, start upper case, don't end with a period # Title: Summary, imperative, start upper case, don't end with a period
# Follow the formatting of <type>:<description>
# No more than 50 chars. #### 50 chars is here: # # No more than 50 chars. #### 50 chars is here: #
# Types: Fix, Feat, Build, CI, Docs, Perf, Refactor, Style, Test
# See: https://www.conventionalcommits.org/en/v1.0.0/
# Remember blank line between title and body. # Remember blank line between title and body.
# Body: Explain *what* and *why* (not *how*). Include task ID (Jira issue). # Body: Explain *what* and *why* (not *how*). Include task ID (Jira issue).
# Wrap at 72 chars. ################################## which is here: # # Wrap at 72 chars. ################################## which is here: #
# At the end: Include Co-authored-by for all contributors. # Tell Git to use this template with: git config commit.template .gitlab/.gitmessage
# Include at least one empty line before it. Format:
# Co-authored-by: name <user@users.noreply.github.com>
#
# How to Write a Git Commit Message: # How to Write a Git Commit Message:
# https://chris.beams.io/posts/git-commit/ # https://chris.beams.io/posts/git-commit/
\ No newline at end of file
#
# 1. Separate subject from body with a blank line
# 2. Limit the subject line to 50 characters
# 3. Capitalize the subject line
# 4. Do not end the subject line with a period
# 5. Use the imperative mood in the subject line
# 6. Wrap the body at 72 characters
# 7. Use the body to explain what and why vs. how
\ No newline at end of file
...@@ -5,7 +5,24 @@ All notable changes to this project will be documented in this file. ...@@ -5,7 +5,24 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.16.0] ((2024-11-11)) ## [3.17.0] (2025-03-13)
### Added
- Checking of CityGml ZIP-archives with CityDoctor (#12)
### Changed
- Changed GUI to allow loading and checking of ZIP-archives. (#12)
### Fixes
- Reworked self-intersection calculations to eliminate false-positives (#65)
- CityGml objects added in 3.16.0 are now being recorded in error statistics and validation reports (#104)
- Envelope and CRS will now be included when exporting singular features
- Fixed various minor errors and bugs in CityDoctorGUI
## [3.16.0] (2024-11-11)
CityDoctor now supports the import, export and validation of CityGML 3.0 files. CityDoctor now supports the import, export and validation of CityGML 3.0 files.
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.16.0</version> <version>3.17.0</version>
</parent> </parent>
<artifactId>CityDoctorCheckResult</artifactId> <artifactId>CityDoctorCheckResult</artifactId>
<dependencies> <dependencies>
......
...@@ -105,6 +105,9 @@ public class CheckReport { ...@@ -105,6 +105,9 @@ public class CheckReport {
addFeatureReports(report, valResults.getTransportationReports()); addFeatureReports(report, valResults.getTransportationReports());
addFeatureReports(report, valResults.getVegetationReports()); addFeatureReports(report, valResults.getVegetationReports());
addFeatureReports(report, valResults.getWaterReports()); addFeatureReports(report, valResults.getWaterReports());
addFeatureReports(report, valResults.getTunnelReports());
addFeatureReports(report, valResults.getCityFurnitureReports());
addFeatureReports(report, valResults.getGenericCityObjectReports());
} }
} }
......
...@@ -43,6 +43,15 @@ public class GlobalErrorStatistics { ...@@ -43,6 +43,15 @@ public class GlobalErrorStatistics {
@XmlElement(name = "num_error_transportation") @XmlElement(name = "num_error_transportation")
private int numErrorTransportation; private int numErrorTransportation;
@XmlElement(name = "num_error_tunnel_objects")
private int numErrorTunnelObjects;
@XmlElement(name = "num_error_city_furniture")
private int numErrorCityFurniture;
@XmlElement(name = "num_error_generic_city_objects")
private int numErrorGenericCityObjects;
public int getNumErrorBuildings() { public int getNumErrorBuildings() {
return numErrorBuildings; return numErrorBuildings;
} }
...@@ -91,5 +100,27 @@ public class GlobalErrorStatistics { ...@@ -91,5 +100,27 @@ public class GlobalErrorStatistics {
this.numErrorTransportation = numErrorTransportation; this.numErrorTransportation = numErrorTransportation;
} }
public int getNumErrorTunnelObjects() {
return numErrorTunnelObjects;
}
public void setNumErrorTunnelObjects(int numErrorTunnelObjects) {
this.numErrorTunnelObjects = numErrorTunnelObjects;
}
public int getNumErrorCityFurniture() {
return numErrorCityFurniture;
}
public void setNumErrorCityFurniture(int numErrorCityFurniture) {
this.numErrorCityFurniture = numErrorCityFurniture;
}
public int getNumErrorGenericCityObjects() {
return numErrorGenericCityObjects;
}
public void setNumErrorGenericCityObjects(int numErrorGenericCityObjects) {
this.numErrorGenericCityObjects = numErrorGenericCityObjects;
}
} }
...@@ -43,6 +43,16 @@ public class ModelStatistics { ...@@ -43,6 +43,16 @@ public class ModelStatistics {
@XmlElement(name = "num_water_objects", required = true) @XmlElement(name = "num_water_objects", required = true)
private int numWaterObjects; private int numWaterObjects;
@XmlElement(name = "num_tunnel_objects", required = true)
private int numTunnelObjects;
@XmlElement(name = "num_city_furniture", required = true)
private int numCityFurniture;
@XmlElement(name = "num_generic_city_objects", required = true)
private int numGenericCityObjects;
public int getNumBuildings() { public int getNumBuildings() {
return numBuildings; return numBuildings;
} }
...@@ -91,4 +101,27 @@ public class ModelStatistics { ...@@ -91,4 +101,27 @@ public class ModelStatistics {
this.numWaterObjects = numWaterObjects; this.numWaterObjects = numWaterObjects;
} }
public int getNumTunnelObjects() {
return numTunnelObjects;
}
public void setNumTunnelObjects(int numTunnelObjects) {
this.numTunnelObjects = numTunnelObjects;
}
public int getNumCityFurniture() {
return numCityFurniture;
}
public void setNumCityFurniture(int numCityFurniture) {
this.numCityFurniture = numCityFurniture;
}
public int getNumGenericCityObjects() {
return numGenericCityObjects;
}
public void setNumGenericCityObjects(int numGenericCityObjects) {
this.numGenericCityObjects = numGenericCityObjects;
}
} }
...@@ -51,6 +51,14 @@ public class ValidationResults { ...@@ -51,6 +51,14 @@ public class ValidationResults {
@XmlElement(name = "water_object_report") @XmlElement(name = "water_object_report")
private List<FeatureReport> waterReports; private List<FeatureReport> waterReports;
@XmlElement(name = "tunnel_report")
private List<FeatureReport> tunnelReports;
@XmlElement(name = "city_furniture_report")
private List<FeatureReport> cityFurnitureReports;
@XmlElement(name = "generic_city_object_report")
private List<FeatureReport> genericCityObjectReports;
public List<FeatureReport> getBuildingReports() { public List<FeatureReport> getBuildingReports() {
if (buildingReports == null) { if (buildingReports == null) {
...@@ -129,6 +137,37 @@ public class ValidationResults { ...@@ -129,6 +137,37 @@ public class ValidationResults {
this.waterReports = waterReports; this.waterReports = waterReports;
} }
public List<FeatureReport> getTunnelReports() {
if (tunnelReports == null) {
tunnelReports = new ArrayList<>();
}
return tunnelReports;
}
public void setTunnelReports(List<FeatureReport> tunnelReports) {
this.tunnelReports = tunnelReports;
}
public List<FeatureReport> getCityFurnitureReports() {
if (cityFurnitureReports == null) {
cityFurnitureReports = new ArrayList<>();
}
return cityFurnitureReports;
}
public void setCityFurnitureReports(List<FeatureReport> cityFurnitureReports) {
this.cityFurnitureReports = cityFurnitureReports;
}
public List<FeatureReport> getGenericCityObjectReports() {
if (genericCityObjectReports == null) {
genericCityObjectReports = new ArrayList<>();
}
return genericCityObjectReports;
}
public void setGenericCityObjectReports(List<FeatureReport> genericCityObjectReports) {
this.genericCityObjectReports = genericCityObjectReports;
}
} }
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.16.0</version> <version>3.17.0</version>
</parent> </parent>
<artifactId>CityDoctorEdge</artifactId> <artifactId>CityDoctorEdge</artifactId>
<dependencies> <dependencies>
......
...@@ -29,7 +29,6 @@ public class Vector2d { ...@@ -29,7 +29,6 @@ public class Vector2d {
this.y = y; this.y = y;
} }
@SuppressWarnings("SuspiciousNameCombination")
public Vector2d getPerpendicularVector() { public Vector2d getPerpendicularVector() {
return new Vector2d(y, -x); return new Vector2d(y, -x);
} }
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.16.0</version> <version>3.17.0</version>
</parent> </parent>
<properties> <properties>
<versionString>${project.version}-${git.commit.id.abbrev}</versionString> <versionString>${project.version}-${git.commit.id.abbrev}</versionString>
...@@ -58,6 +60,24 @@ ...@@ -58,6 +60,24 @@
<groupId>org.locationtech.proj4j</groupId> <groupId>org.locationtech.proj4j</groupId>
<artifactId>proj4j</artifactId> <artifactId>proj4j</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.locationtech.proj4j</groupId>
<artifactId>proj4j-epsg</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.16.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
</dependency>
<dependency>
<groupId>io.github.earcut4j</groupId>
<artifactId>earcut4j</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
<resources> <resources>
...@@ -84,7 +104,8 @@ ...@@ -84,7 +104,8 @@
<prefix>git</prefix> <prefix>git</prefix>
<verbose>false</verbose> <verbose>false</verbose>
<generateGitPropertiesFile>true</generateGitPropertiesFile> <generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename> <generateGitPropertiesFilename>
${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
<gitDescribe> <gitDescribe>
<skip>false</skip> <skip>false</skip>
<always>false</always> <always>false</always>
......
...@@ -60,10 +60,8 @@ import de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError; ...@@ -60,10 +60,8 @@ import de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError;
* @author Matthias Betz * @author Matthias Betz
* *
*/ */
@SuppressWarnings("unused")
public interface HealingMethod { public interface HealingMethod {
public HealingID getID(); public HealingID getID();
default boolean visit(CheckError e, ModificationListener l) { default boolean visit(CheckError e, ModificationListener l) {
......
...@@ -374,10 +374,12 @@ public abstract class AbstractBuilding extends CityObject { ...@@ -374,10 +374,12 @@ public abstract class AbstractBuilding extends CityObject {
public void addStorey(Storey storey) { public void addStorey(Storey storey) {
buildingStoreys.add(storey); buildingStoreys.add(storey);
storey.setParent(this);
} }
public void addBuildingUnit(BuildingUnit buildingUnit) { public void addBuildingUnit(BuildingUnit buildingUnit) {
buildingUnits.add(buildingUnit); buildingUnits.add(buildingUnit);
buildingUnit.setParent(this);
} }
public void setGmlObject(org.citygml4j.core.model.building.AbstractBuilding ab) { public void setGmlObject(org.citygml4j.core.model.building.AbstractBuilding ab) {
......
...@@ -29,8 +29,9 @@ public abstract class AbstractBuildingSubdivision extends CityObject { ...@@ -29,8 +29,9 @@ public abstract class AbstractBuildingSubdivision extends CityObject {
private final List<Installation> buildingInstallations = new ArrayList<>(2); private final List<Installation> buildingInstallations = new ArrayList<>(2);
private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>(); private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
private final List<BuildingRoom> buildingRooms = new ArrayList<>(); private final List<BuildingRoom> buildingRooms = new ArrayList<>();
private final List<BuildingRoomFurniture> buildingRoomFurnitureList = new ArrayList<>(); private final List<BuildingRoomFurniture> buildingRoomFurnitureList = new ArrayList<>();
private AbstractBuilding parent;
protected org.citygml4j.core.model.building.AbstractBuildingSubdivision abs; protected org.citygml4j.core.model.building.AbstractBuildingSubdivision abs;
/** /**
...@@ -52,6 +53,19 @@ public abstract class AbstractBuildingSubdivision extends CityObject { ...@@ -52,6 +53,19 @@ public abstract class AbstractBuildingSubdivision extends CityObject {
return FeatureType.BUILDING_SUBDIVISION; 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 @Override
public void unsetGmlGeometries() { public void unsetGmlGeometries() {
abs.setLod1Solid(null); abs.setLod1Solid(null);
......
...@@ -92,6 +92,11 @@ public abstract class AbstractFurniture extends CityObject { ...@@ -92,6 +92,11 @@ public abstract class AbstractFurniture extends CityObject {
return af; return af;
} }
@Override
public CityObject getTopLevelCityObject(){
return parent;
}
public void addBoundarySurface(BoundarySurface boundarySurface) { public void addBoundarySurface(BoundarySurface boundarySurface) {
boundarySurfaceList.add(boundarySurface); boundarySurfaceList.add(boundarySurface);
boundarySurface.setParent(this); boundarySurface.setParent(this);
...@@ -125,6 +130,9 @@ public abstract class AbstractFurniture extends CityObject { ...@@ -125,6 +130,9 @@ public abstract class AbstractFurniture extends CityObject {
parent = co; parent = co;
} }
public CityObject getParent() {
return parent;
}
@Override @Override
public void unsetGmlGeometries() { public void unsetGmlGeometries() {
......
...@@ -350,6 +350,7 @@ public abstract class AbstractTunnel extends CityObject { ...@@ -350,6 +350,7 @@ public abstract class AbstractTunnel extends CityObject {
public void addTunnelConstructiveElement(TunnelConstructiveElement te) { public void addTunnelConstructiveElement(TunnelConstructiveElement te) {
tunnelConstructiveElements.add(te); tunnelConstructiveElements.add(te);
te.setParent(this);
} }
public void addTunnelPart(TunnelPart tunnelPart) { public void addTunnelPart(TunnelPart tunnelPart) {
...@@ -368,7 +369,7 @@ public abstract class AbstractTunnel extends CityObject { ...@@ -368,7 +369,7 @@ public abstract class AbstractTunnel extends CityObject {
return tunnelHollows; return tunnelHollows;
} }
public List<TunnelFurniture> getTunnelFurnitureList() { public List<TunnelFurniture> getTunnelFurniture() {
return tunnelFurnitureList; return tunnelFurnitureList;
} }
......
...@@ -207,6 +207,11 @@ public class BoundarySurface extends CityObject { ...@@ -207,6 +207,11 @@ public class BoundarySurface extends CityObject {
} }
} }
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
@Override @Override
public String toString() { public String toString() {
return "BoundarySurface [type=" + type + ", id=" + getGmlId() + "]"; return "BoundarySurface [type=" + type + ", id=" + getGmlId() + "]";
......
...@@ -52,12 +52,21 @@ public class BridgeConstructiveElement extends CityObject { ...@@ -52,12 +52,21 @@ public class BridgeConstructiveElement extends CityObject {
private final org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlBridgeElement; private final org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlBridgeElement;
private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>(); private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
private BridgeObject parent;
public BridgeConstructiveElement(org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlObject) { public BridgeConstructiveElement(org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlObject) {
this.gmlBridgeElement = gmlObject; this.gmlBridgeElement = gmlObject;
} }
public void setParent(BridgeObject parent) {
this.parent = parent;
}
public BridgeObject getParent() {
return parent;
}
@Override @Override
public Copyable createCopyInstance() { public Copyable createCopyInstance() {
return new BridgeConstructiveElement(gmlBridgeElement); return new BridgeConstructiveElement(gmlBridgeElement);
...@@ -244,6 +253,11 @@ public class BridgeConstructiveElement extends CityObject { ...@@ -244,6 +253,11 @@ public class BridgeConstructiveElement extends CityObject {
} }
} }
@Override
public CityObject getTopLevelCityObject() {
return getParent().getTopLevelCityObject();
}
@Override @Override
public FeatureType getFeatureType() { public FeatureType getFeatureType() {
return FeatureType.BRIDGE_CONSTRUCTION_ELEMENT; return FeatureType.BRIDGE_CONSTRUCTION_ELEMENT;
......
...@@ -52,13 +52,28 @@ public class BridgeObject extends CityObject { ...@@ -52,13 +52,28 @@ public class BridgeObject extends CityObject {
private final List<BridgeConstructiveElement> elements = new ArrayList<>(2); private final List<BridgeConstructiveElement> elements = new ArrayList<>(2);
private final List<BoundarySurface> boundarySurfaces = new ArrayList<>(2); private final List<BoundarySurface> boundarySurfaces = new ArrayList<>(2);
private final List<Installation> bridgeInstallations = new ArrayList<>(2); private final List<Installation> bridgeInstallations = new ArrayList<>(2);
private final List<BridgeRoomFurniture> bridgeFurniture = new ArrayList<>(2);
private final List<BridgeRoom> bridgeRooms = new ArrayList<>(2); private final List<BridgeRoom> bridgeRooms = new ArrayList<>(2);
private AbstractBridge ab; private AbstractBridge ab;
private BridgeType type; 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.ab = ab;
this.type = type; this.type = type;
this.parent = parent;
} }
@Override @Override
...@@ -78,6 +93,10 @@ public class BridgeObject extends CityObject { ...@@ -78,6 +93,10 @@ public class BridgeObject extends CityObject {
return bridgeRooms; return bridgeRooms;
} }
public List<BridgeRoomFurniture> getBridgeFurniture() {
return bridgeFurniture;
}
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
...@@ -107,6 +126,9 @@ public class BridgeObject extends CityObject { ...@@ -107,6 +126,9 @@ public class BridgeObject extends CityObject {
for (BridgeRoom br : bridgeRooms) { for (BridgeRoom br : bridgeRooms) {
br.reCreateGeometries(factory, config); br.reCreateGeometries(factory, config);
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
bri.reCreateGeometries(factory, config);
}
} }
...@@ -157,6 +179,11 @@ public class BridgeObject extends CityObject { ...@@ -157,6 +179,11 @@ public class BridgeObject extends CityObject {
bridgeRooms.add(room); bridgeRooms.add(room);
} }
public void addBridgeFurniture(BridgeRoomFurniture furniture){
bridgeFurniture.add(furniture);
furniture.setParent(this);
}
@Override @Override
public void clearAllContainedCheckResults() { public void clearAllContainedCheckResults() {
super.clearAllContainedCheckResults(); super.clearAllContainedCheckResults();
...@@ -175,6 +202,9 @@ public class BridgeObject extends CityObject { ...@@ -175,6 +202,9 @@ public class BridgeObject extends CityObject {
for (BridgeRoom br : bridgeRooms) { for (BridgeRoom br : bridgeRooms) {
br.clearAllContainedCheckResults(); br.clearAllContainedCheckResults();
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
bri.clearAllContainedCheckResults();
}
} }
@Override @Override
...@@ -195,6 +225,9 @@ public class BridgeObject extends CityObject { ...@@ -195,6 +225,9 @@ public class BridgeObject extends CityObject {
for (BridgeRoom br : bridgeRooms) { for (BridgeRoom br : bridgeRooms) {
br.collectContainedErrors(errors); br.collectContainedErrors(errors);
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
bri.collectContainedErrors(errors);
}
} }
...@@ -227,6 +260,11 @@ public class BridgeObject extends CityObject { ...@@ -227,6 +260,11 @@ public class BridgeObject extends CityObject {
return true; return true;
} }
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
if (bri.containsAnyError()) {
return true;
}
}
return false; return false;
} }
...@@ -269,6 +307,11 @@ public class BridgeObject extends CityObject { ...@@ -269,6 +307,11 @@ public class BridgeObject extends CityObject {
return true; return true;
} }
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
if (bri.containsError(checkIdentifier)) {
return true;
}
}
return false; return false;
} }
...@@ -303,6 +346,9 @@ public class BridgeObject extends CityObject { ...@@ -303,6 +346,9 @@ public class BridgeObject extends CityObject {
for (BridgeRoom br : bridgeRooms) { for (BridgeRoom br : bridgeRooms) {
br.accept(c); br.accept(c);
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
bri.accept(c);
}
} }
...@@ -363,9 +409,20 @@ public class BridgeObject extends CityObject { ...@@ -363,9 +409,20 @@ public class BridgeObject extends CityObject {
for (BridgeRoom br : bridgeRooms) { for (BridgeRoom br : bridgeRooms) {
br.unsetGmlGeometries(); br.unsetGmlGeometries();
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
bri.unsetGmlGeometries();
}
} }
@Override
public CityObject getTopLevelCityObject() {
if (parent != null){
return parent.getTopLevelCityObject();
}
return this;
}
@Override @Override
public String toString() { public String toString() {
return "BridgeObject [type=" + type + ", id=" + getGmlId() + "]"; return "BridgeObject [type=" + type + ", id=" + getGmlId() + "]";
...@@ -390,6 +447,12 @@ public class BridgeObject extends CityObject { ...@@ -390,6 +447,12 @@ public class BridgeObject extends CityObject {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
part.prepareForChecking(); part.prepareForChecking();
} }
for (BridgeRoom br : bridgeRooms) {
br.prepareForChecking();
}
for (BridgeRoomFurniture bri : bridgeFurniture) {
bri.prepareForChecking();
}
} }
@Override @Override
...@@ -414,6 +477,9 @@ public class BridgeObject extends CityObject { ...@@ -414,6 +477,9 @@ public class BridgeObject extends CityObject {
for (BridgeRoom br : bridgeRooms) { for (BridgeRoom br : bridgeRooms) {
br.clearMetaInformation(); br.clearMetaInformation();
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
bri.clearMetaInformation();
}
} }
...@@ -440,6 +506,10 @@ public class BridgeObject extends CityObject { ...@@ -440,6 +506,10 @@ public class BridgeObject extends CityObject {
handler.addInstance(br); handler.addInstance(br);
} }
for (BridgeRoomFurniture bri : bridgeFurniture) {
handler.addInstance(bri);
}
} }
public void anonymize() { public void anonymize() {
...@@ -483,6 +553,10 @@ public class BridgeObject extends CityObject { ...@@ -483,6 +553,10 @@ public class BridgeObject extends CityObject {
getBridgeRooms().add(handler.getCopyInstance(br)); getBridgeRooms().add(handler.getCopyInstance(br));
} }
for (BridgeRoomFurniture bri : originalBo.bridgeFurniture) {
getBridgeFurniture().add(handler.getCopyInstance(bri));
}
} }
public List<BoundarySurface> getBoundarySurfaces() { public List<BoundarySurface> getBoundarySurfaces() {
...@@ -491,11 +565,12 @@ public class BridgeObject extends CityObject { ...@@ -491,11 +565,12 @@ public class BridgeObject extends CityObject {
public void addConstructiveElement(BridgeConstructiveElement element) { public void addConstructiveElement(BridgeConstructiveElement element) {
getConstructiveElements().add(element); getConstructiveElements().add(element);
element.setParent(this);
} }
@Override @Override
public Copyable createCopyInstance() { public Copyable createCopyInstance() {
return new BridgeObject(type, ab); return new BridgeObject(type, ab, parent);
} }
public List<BridgeObject> getParts() { public List<BridgeObject> getParts() {
......
...@@ -37,6 +37,11 @@ public class BridgeRoom extends AbstractRoom { ...@@ -37,6 +37,11 @@ public class BridgeRoom extends AbstractRoom {
parent = handler.getCopyInstance(oRoom.getParent()); parent = handler.getCopyInstance(oRoom.getParent());
} }
@Override
public CityObject getTopLevelCityObject() {
return getParent();
}
@Override @Override
public void collectInstances(CopyHandler handler) { public void collectInstances(CopyHandler handler) {
super.collectInstances(handler); super.collectInstances(handler);
......
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