Commit 1745865f authored by Riegel's avatar Riegel
Browse files

Code cleaning Ref #69

parent 5a6f4b46
...@@ -30,6 +30,8 @@ import de.hft.stuttgart.citydoctor2.check.HealingMethod; ...@@ -30,6 +30,8 @@ import de.hft.stuttgart.citydoctor2.check.HealingMethod;
import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.check.ModificationListener;
import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
import java.io.Serial;
/** /**
* This error is created when an unexpected exception is thrown by the code. * This error is created when an unexpected exception is thrown by the code.
* *
...@@ -38,11 +40,12 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; ...@@ -38,11 +40,12 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlElement;
*/ */
public class UnknownCheckError implements CheckError { public class UnknownCheckError implements CheckError {
@Serial
private static final long serialVersionUID = -6554097632341055596L; private static final long serialVersionUID = -6554097632341055596L;
private Checkable c; private final Checkable c;
private Exception e; private final Exception e;
private CheckId checkId; private final CheckId checkId;
public UnknownCheckError(Checkable c, Exception e, Check check) { public UnknownCheckError(Checkable c, Exception e, Check check) {
this.c = c; this.c = c;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -47,12 +48,13 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -47,12 +48,13 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public abstract class AbstractBuilding extends CityObject { public abstract class AbstractBuilding extends CityObject {
@Serial
private static final long serialVersionUID = -2196414503088741206L; private static final long serialVersionUID = -2196414503088741206L;
private static final Logger logger = LogManager.getLogger(AbstractBuilding.class); private static final Logger logger = LogManager.getLogger(AbstractBuilding.class);
private List<Installation> buildingInstallations = new ArrayList<>(2); private final List<Installation> buildingInstallations = new ArrayList<>(2);
private List<BoundarySurface> boundarySurfaceList = new ArrayList<>(); private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
private org.citygml4j.core.model.building.AbstractBuilding ab; private org.citygml4j.core.model.building.AbstractBuilding ab;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -42,12 +43,13 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -42,12 +43,13 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public class BoundarySurface extends CityObject { public class BoundarySurface extends CityObject {
@Serial
private static final long serialVersionUID = 8793865135393496408L; private static final long serialVersionUID = 8793865135393496408L;
private SurfaceFeatureType featureType; private SurfaceFeatureType featureType;
private BoundarySurfaceType type; private BoundarySurfaceType type;
private List<Opening> openings = new ArrayList<>(2); private final List<Opening> openings = new ArrayList<>(2);
private CityObject parent; private CityObject parent;
private AbstractThematicSurface gmlObject; private AbstractThematicSurface gmlObject;
......
...@@ -32,7 +32,7 @@ import de.hft.stuttgart.citydoctor2.utils.BoundingBoxCalculator; ...@@ -32,7 +32,7 @@ import de.hft.stuttgart.citydoctor2.utils.BoundingBoxCalculator;
*/ */
public class BoundingBox { public class BoundingBox {
private Vector3d[] bbox; private final Vector3d[] bbox;
/** /**
* Creates an axis aligned bounding box containing all points of all polygons * Creates an axis aligned bounding box containing all points of all polygons
...@@ -142,11 +142,7 @@ public class BoundingBox { ...@@ -142,11 +142,7 @@ public class BoundingBox {
public double getLongestSide() { public double getLongestSide() {
double width = getWidth(); double width = getWidth();
double depth = getDepth(); double depth = getDepth();
if (width > depth) { return Math.max(width, depth);
return width;
} else {
return depth;
}
} }
/** /**
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -47,10 +48,11 @@ public class BridgeConstructiveElement extends CityObject { ...@@ -47,10 +48,11 @@ public class BridgeConstructiveElement extends CityObject {
private static final String CANNOT_ADD = "Cannot add "; private static final String CANNOT_ADD = "Cannot add ";
@Serial
private static final long serialVersionUID = 7353233899458901155L; private static final long serialVersionUID = 7353233899458901155L;
private org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlBridgeElement; private final org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlBridgeElement;
private List<BoundarySurface> boundarySurfaceList = new ArrayList<>(); private final List<BoundarySurface> boundarySurfaceList = new ArrayList<>();
public BridgeConstructiveElement(org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlObject) { public BridgeConstructiveElement(org.citygml4j.core.model.bridge.BridgeConstructiveElement gmlObject) {
......
...@@ -18,9 +18,13 @@ ...@@ -18,9 +18,13 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.util.ArrayList; import de.hft.stuttgart.citydoctor2.check.Check;
import java.util.List; import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import de.hft.stuttgart.citydoctor2.utils.CopyHandler;
import de.hft.stuttgart.citydoctor2.utils.Copyable;
import org.citygml4j.core.model.bridge.AbstractBridge; import org.citygml4j.core.model.bridge.AbstractBridge;
import org.citygml4j.core.model.bridge.BridgeInstallation; import org.citygml4j.core.model.bridge.BridgeInstallation;
import org.citygml4j.core.model.bridge.BridgeInstallationProperty; import org.citygml4j.core.model.bridge.BridgeInstallationProperty;
...@@ -31,37 +35,25 @@ import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty; ...@@ -31,37 +35,25 @@ import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import org.xmlobjects.gml.model.geometry.primitives.Solid; 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 de.hft.stuttgart.citydoctor2.check.Check; import java.io.Serial;
import de.hft.stuttgart.citydoctor2.check.CheckError; import java.util.ArrayList;
import de.hft.stuttgart.citydoctor2.check.CheckId; import java.util.List;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import de.hft.stuttgart.citydoctor2.utils.CopyHandler;
import de.hft.stuttgart.citydoctor2.utils.Copyable;
/** /**
* Bridge representation object of CityGML bridge objects * Bridge representation object of CityGML bridge objects
* *
* @author Matthias Betz * @author Matthias Betz
*
*/ */
public class BridgeObject extends CityObject { public class BridgeObject extends CityObject {
@Serial
private static final long serialVersionUID = 6301112640328373842L; private static final long serialVersionUID = 6301112640328373842L;
private final List<BridgeObject> parts = new ArrayList<>(2);
public enum BridgeType { private final List<BridgeConstructiveElement> elements = new ArrayList<>(2);
BRIDGE, BRIDGE_PART private final List<BoundarySurface> boundarySurfaces = new ArrayList<>(2);
} private final List<Installation> bridgeInstallations = new ArrayList<>(2);
private AbstractBridge ab; private AbstractBridge ab;
private BridgeType type; private BridgeType type;
private List<BridgeObject> parts = null;
private List<BridgeConstructiveElement> elements = null;
private List<BoundarySurface> boundarySurfaces = new ArrayList<>(2);
private List<Installation> bridgeInstallations = new ArrayList<>(2);
public BridgeObject(BridgeType type, AbstractBridge ab) { public BridgeObject(BridgeType type, AbstractBridge ab) {
this.ab = ab; this.ab = ab;
this.type = type; this.type = type;
...@@ -73,9 +65,6 @@ public class BridgeObject extends CityObject { ...@@ -73,9 +65,6 @@ public class BridgeObject extends CityObject {
} }
public List<BridgeConstructiveElement> getConstructiveElements() { public List<BridgeConstructiveElement> getConstructiveElements() {
if (elements == null) {
elements = new ArrayList<>(2);
}
return elements; return elements;
} }
...@@ -100,16 +89,13 @@ public class BridgeObject extends CityObject { ...@@ -100,16 +89,13 @@ public class BridgeObject extends CityObject {
for (Installation bi : bridgeInstallations) { for (Installation bi : bridgeInstallations) {
bi.reCreateGeometries(factory, config); bi.reCreateGeometries(factory, config);
} }
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
part.reCreateGeometries(factory, config); part.reCreateGeometries(factory, config);
} }
}
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
ele.reCreateGeometries(factory, config); ele.reCreateGeometries(factory, config);
} }
}
} }
private void setMultiSurfaceAccordingToLod(Geometry geom, MultiSurface ms) { private void setMultiSurfaceAccordingToLod(Geometry geom, MultiSurface ms) {
...@@ -149,7 +135,6 @@ public class BridgeObject extends CityObject { ...@@ -149,7 +135,6 @@ public class BridgeObject extends CityObject {
throw new IllegalStateException("Cannot add " + geom.getLod() + " solid to bridges"); throw new IllegalStateException("Cannot add " + geom.getLod() + " solid to bridges");
} }
} }
public void addBridgeInstallation(Installation coBi) { public void addBridgeInstallation(Installation coBi) {
bridgeInstallations.add(coBi); bridgeInstallations.add(coBi);
coBi.setParent(this); coBi.setParent(this);
...@@ -164,17 +149,13 @@ public class BridgeObject extends CityObject { ...@@ -164,17 +149,13 @@ public class BridgeObject extends CityObject {
for (Installation bi : bridgeInstallations) { for (Installation bi : bridgeInstallations) {
bi.clearAllContainedCheckResults(); bi.clearAllContainedCheckResults();
} }
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
part.clearAllContainedCheckResults(); part.clearAllContainedCheckResults();
} }
}
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
ele.clearAllContainedCheckResults(); ele.clearAllContainedCheckResults();
} }
} }
}
@Override @Override
public void collectContainedErrors(List<CheckError> errors) { public void collectContainedErrors(List<CheckError> errors) {
...@@ -185,16 +166,13 @@ public class BridgeObject extends CityObject { ...@@ -185,16 +166,13 @@ public class BridgeObject extends CityObject {
for (Installation bi : bridgeInstallations) { for (Installation bi : bridgeInstallations) {
bi.collectContainedErrors(errors); bi.collectContainedErrors(errors);
} }
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
part.collectContainedErrors(errors); part.collectContainedErrors(errors);
} }
}
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
ele.collectContainedErrors(errors); ele.collectContainedErrors(errors);
} }
}
} }
@Override @Override
...@@ -216,24 +194,21 @@ public class BridgeObject extends CityObject { ...@@ -216,24 +194,21 @@ public class BridgeObject extends CityObject {
if (doPartsContainAnyError()) { if (doPartsContainAnyError()) {
return true; return true;
} }
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
if (ele.containsAnyError()) { if (ele.containsAnyError()) {
return true; return true;
} }
} }
}
return false; return false;
} }
private boolean doPartsContainAnyError() { private boolean doPartsContainAnyError() {
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
if (part.containsAnyError()) { if (part.containsAnyError()) {
return true; return true;
} }
} }
}
return false; return false;
} }
...@@ -256,24 +231,21 @@ public class BridgeObject extends CityObject { ...@@ -256,24 +231,21 @@ public class BridgeObject extends CityObject {
if (doPartsContainError(checkIdentifier)) { if (doPartsContainError(checkIdentifier)) {
return true; return true;
} }
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
if (ele.containsError(checkIdentifier)) { if (ele.containsError(checkIdentifier)) {
return true; return true;
} }
} }
}
return false; return false;
} }
private boolean doPartsContainError(CheckId checkIdentifier) { private boolean doPartsContainError(CheckId checkIdentifier) {
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
if (part.containsError(checkIdentifier)) { if (part.containsError(checkIdentifier)) {
return true; return true;
} }
} }
}
return false; return false;
} }
...@@ -289,16 +261,13 @@ public class BridgeObject extends CityObject { ...@@ -289,16 +261,13 @@ public class BridgeObject extends CityObject {
for (Installation bi : bridgeInstallations) { for (Installation bi : bridgeInstallations) {
bi.accept(c); bi.accept(c);
} }
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
part.accept(c); part.accept(c);
} }
}
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
ele.accept(c); ele.accept(c);
} }
}
} }
/** /**
...@@ -329,6 +298,10 @@ public class BridgeObject extends CityObject { ...@@ -329,6 +298,10 @@ public class BridgeObject extends CityObject {
return ab; return ab;
} }
public void setGmlObject(AbstractBridge aBridge) {
ab = aBridge;
}
@Override @Override
public void unsetGmlGeometries() { public void unsetGmlGeometries() {
ab.setLod1Solid(null); ab.setLod1Solid(null);
...@@ -345,20 +318,13 @@ public class BridgeObject extends CityObject { ...@@ -345,20 +318,13 @@ public class BridgeObject extends CityObject {
for (Installation bi : bridgeInstallations) { for (Installation bi : bridgeInstallations) {
bi.unsetGmlGeometries(); bi.unsetGmlGeometries();
} }
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
part.unsetGmlGeometries(); part.unsetGmlGeometries();
} }
}
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
ele.unsetGmlGeometries(); ele.unsetGmlGeometries();
} }
}
}
public void setGmlObject(AbstractBridge aBridge) {
ab = aBridge;
} }
@Override @Override
...@@ -369,16 +335,13 @@ public class BridgeObject extends CityObject { ...@@ -369,16 +335,13 @@ public class BridgeObject extends CityObject {
@Override @Override
public void prepareForChecking() { public void prepareForChecking() {
super.prepareForChecking(); super.prepareForChecking();
if (elements != null) {
for (BridgeConstructiveElement e : elements) { for (BridgeConstructiveElement e : elements) {
e.prepareForChecking(); e.prepareForChecking();
} }
}
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
part.prepareForChecking(); part.prepareForChecking();
} }
}
for (BoundarySurface bs : boundarySurfaces) { for (BoundarySurface bs : boundarySurfaces) {
bs.prepareForChecking(); bs.prepareForChecking();
} }
...@@ -396,16 +359,16 @@ public class BridgeObject extends CityObject { ...@@ -396,16 +359,16 @@ public class BridgeObject extends CityObject {
for (Installation bi : bridgeInstallations) { for (Installation bi : bridgeInstallations) {
bi.clearMetaInformation(); bi.clearMetaInformation();
} }
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
part.clearMetaInformation(); part.clearMetaInformation();
} }
}
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
ele.clearMetaInformation(); ele.clearMetaInformation();
} }
}
} }
@Override @Override
...@@ -417,16 +380,16 @@ public class BridgeObject extends CityObject { ...@@ -417,16 +380,16 @@ public class BridgeObject extends CityObject {
for (Installation bi : bridgeInstallations) { for (Installation bi : bridgeInstallations) {
handler.addInstance(bi); handler.addInstance(bi);
} }
if (parts != null) {
for (BridgeObject part : parts) { for (BridgeObject part : parts) {
handler.addInstance(part); handler.addInstance(part);
} }
}
if (elements != null) {
for (BridgeConstructiveElement ele : elements) { for (BridgeConstructiveElement ele : elements) {
handler.addInstance(ele); handler.addInstance(ele);
} }
}
} }
public void anonymize() { public void anonymize() {
...@@ -446,7 +409,6 @@ public class BridgeObject extends CityObject { ...@@ -446,7 +409,6 @@ public class BridgeObject extends CityObject {
this.ab = gmlB; this.ab = gmlB;
} }
@Override @Override
public void fillValues(Copyable original, CopyHandler handler) { public void fillValues(Copyable original, CopyHandler handler) {
super.fillValues(original, handler); super.fillValues(original, handler);
...@@ -457,16 +419,16 @@ public class BridgeObject extends CityObject { ...@@ -457,16 +419,16 @@ public class BridgeObject extends CityObject {
for (Installation originalBi : originalBo.bridgeInstallations) { for (Installation originalBi : originalBo.bridgeInstallations) {
bridgeInstallations.add(handler.getCopyInstance(originalBi)); bridgeInstallations.add(handler.getCopyInstance(originalBi));
} }
if (originalBo.parts != null) {
for (BridgeObject part : originalBo.parts) { for (BridgeObject part : originalBo.parts) {
getParts().add(handler.getCopyInstance(part)); getParts().add(handler.getCopyInstance(part));
} }
}
if (originalBo.elements != null) {
for (BridgeConstructiveElement ele : originalBo.elements) { for (BridgeConstructiveElement ele : originalBo.elements) {
getConstructiveElements().add(handler.getCopyInstance(ele)); getConstructiveElements().add(handler.getCopyInstance(ele));
} }
}
} }
public List<BoundarySurface> getBoundarySurfaces() { public List<BoundarySurface> getBoundarySurfaces() {
...@@ -483,9 +445,6 @@ public class BridgeObject extends CityObject { ...@@ -483,9 +445,6 @@ public class BridgeObject extends CityObject {
} }
public List<BridgeObject> getParts() { public List<BridgeObject> getParts() {
if (parts == null) {
parts = new ArrayList<>(2);
}
return parts; return parts;
} }
...@@ -493,4 +452,8 @@ public class BridgeObject extends CityObject { ...@@ -493,4 +452,8 @@ public class BridgeObject extends CityObject {
getParts().add(bPart); getParts().add(bPart);
} }
public enum BridgeType {
BRIDGE, BRIDGE_PART
}
} }
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -35,9 +36,10 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -35,9 +36,10 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
public class Building extends AbstractBuilding { public class Building extends AbstractBuilding {
@Serial
private static final long serialVersionUID = 588480113268630052L; private static final long serialVersionUID = 588480113268630052L;
private List<BuildingPart> buildingParts = new ArrayList<>(2); private final List<BuildingPart> buildingParts = new ArrayList<>(2);
public List<BuildingPart> getBuildingParts() { public List<BuildingPart> getBuildingParts() {
return buildingParts; return buildingParts;
......
...@@ -21,8 +21,11 @@ package de.hft.stuttgart.citydoctor2.datastructure; ...@@ -21,8 +21,11 @@ package de.hft.stuttgart.citydoctor2.datastructure;
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 java.io.Serial;
public class BuildingPart extends AbstractBuilding { public class BuildingPart extends AbstractBuilding {
@Serial
private static final long serialVersionUID = 8200322261958679163L; private static final long serialVersionUID = 8200322261958679163L;
private Building parent; private Building parent;
......
...@@ -53,17 +53,17 @@ import de.hft.stuttgart.quality.model.types.ValidationPlan; ...@@ -53,17 +53,17 @@ import de.hft.stuttgart.quality.model.types.ValidationPlan;
public class CityDoctorModel { public class CityDoctorModel {
private static final String COULD_NOT_FIND_FEATURE = "Could not find feature: "; private static final String COULD_NOT_FIND_FEATURE = "Could not find feature: ";
private List<Building> buildings; private final List<Building> buildings;
private List<Vegetation> vegetation; private final List<Vegetation> vegetation;
private List<BridgeObject> bridges; private final List<BridgeObject> bridges;
private List<CityObject> land; private final List<CityObject> land;
private List<TransportationObject> roads; private final List<TransportationObject> roads;
private List<WaterObject> water; private final List<WaterObject> water;
private CityModel cModel; private CityModel cModel;
private ParserConfiguration config; private final ParserConfiguration config;
private String fileName; private final String fileName;
private File file; private final File file;
private List<CheckError> globalErrors; private final List<CheckError> globalErrors;
private boolean isValidated = false; private boolean isValidated = false;
private ValidationPlan plan; private ValidationPlan plan;
private CityGMLVersion cityGMLVersion; private CityGMLVersion cityGMLVersion;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
...@@ -43,9 +44,10 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -43,9 +44,10 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public abstract class CityObject extends GmlElement { public abstract class CityObject extends GmlElement {
@Serial
private static final long serialVersionUID = 651712070755024188L; private static final long serialVersionUID = 651712070755024188L;
private List<Geometry> geometryList = new ArrayList<>(); private final List<Geometry> geometryList = new ArrayList<>();
/** /**
* Recreates the CityGML4j geometry in this object. The CityGML4j geometry is * Recreates the CityGML4j geometry in this object. The CityGML4j geometry is
...@@ -83,23 +85,11 @@ public abstract class CityObject extends GmlElement { ...@@ -83,23 +85,11 @@ public abstract class CityObject extends GmlElement {
} }
public void removeGeometry(Lod lod) { public void removeGeometry(Lod lod) {
Iterator<Geometry> it = geometryList.iterator(); geometryList.removeIf(geom -> geom.getLod() == lod);
while (it.hasNext()) {
Geometry next = it.next();
if (next.getLod() == lod) {
it.remove();
}
}
} }
public void removeGeometry(Lod lod, GeometryType type) { public void removeGeometry(Lod lod, GeometryType type) {
Iterator<Geometry> it = geometryList.iterator(); geometryList.removeIf(geom -> geom.getLod() == lod && geom.getType() == type);
while (it.hasNext()) {
Geometry next = it.next();
if (next.getLod() == lod && next.getType() == type) {
it.remove();
}
}
} }
public Geometry getHighestLodGeometry() { public Geometry getHighestLodGeometry() {
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
...@@ -41,6 +42,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -41,6 +42,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public class ConcretePolygon extends Polygon { public class ConcretePolygon extends Polygon {
@Serial
private static final long serialVersionUID = -2208347892270418372L; private static final long serialVersionUID = -2208347892270418372L;
private LinearRing exterior; private LinearRing exterior;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -33,10 +34,11 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -33,10 +34,11 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public class Edge implements Serializable, Copyable { public class Edge implements Serializable, Copyable {
@Serial
private static final long serialVersionUID = -504694863498128296L; private static final long serialVersionUID = -504694863498128296L;
private List<Polygon> adjacentPolygons = new ArrayList<>(2); private final List<Polygon> adjacentPolygons = new ArrayList<>(2);
private List<LinearRing> adjacentRings = new ArrayList<>(2); private final List<LinearRing> adjacentRings = new ArrayList<>(2);
private Vertex from; private Vertex from;
private Vertex to; private Vertex to;
...@@ -78,15 +80,7 @@ public class Edge implements Serializable, Copyable { ...@@ -78,15 +80,7 @@ public class Edge implements Serializable, Copyable {
} }
private boolean isPointOfEdge(Vertex v0, Vertex edgePoint) { private boolean isPointOfEdge(Vertex v0, Vertex edgePoint) {
if (v0.equals(edgePoint)) { return v0.equals(edgePoint);
return true;
}
// for (Vertex v : v0.getNeighbors()) {
// if (v.equals(edgePoint)) {
// return true;
// }
// }
return false;
} }
public boolean formedByIgnoreDirection(Vertex v1, Vertex v2) { public boolean formedByIgnoreDirection(Vertex v1, Vertex v2) {
...@@ -146,13 +140,8 @@ public class Edge implements Serializable, Copyable { ...@@ -146,13 +140,8 @@ public class Edge implements Serializable, Copyable {
return false; return false;
} }
if (to == null) { if (to == null) {
if (other.to != null) { return other.to == null;
return false; } else return to.equals(other.to);
}
} else if (!to.equals(other.to)) {
return false;
}
return true;
} }
public void addAdjacentPolygon(Polygon p) { public void addAdjacentPolygon(Polygon p) {
......
...@@ -27,6 +27,6 @@ package de.hft.stuttgart.citydoctor2.datastructure; ...@@ -27,6 +27,6 @@ package de.hft.stuttgart.citydoctor2.datastructure;
public enum FeatureType { public enum FeatureType {
BUILDING, TRANSPORTATION, VEGETATION, BRIDGE, LAND, WATER, BOUNDARY_SURFACE, INSTALLATION, OPENING, BUILDING, TRANSPORTATION, VEGETATION, BRIDGE, LAND, WATER, BOUNDARY_SURFACE, INSTALLATION, OPENING,
BUILDING_PART, BRIDGE_CONSTRUCTION_ELEMENT, BRIDGE_INSTALLATION; BUILDING_PART, BRIDGE_CONSTRUCTION_ELEMENT, BRIDGE_INSTALLATION
} }
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
...@@ -48,16 +49,17 @@ public class Geometry extends GmlElement { ...@@ -48,16 +49,17 @@ public class Geometry extends GmlElement {
private static final String FAILED_REMOVING_POLYGON = "Removing polygon %s but polygon is not in geometry"; private static final String FAILED_REMOVING_POLYGON = "Removing polygon %s but polygon is not in geometry";
@Serial
private static final long serialVersionUID = 2539031030917731575L; private static final long serialVersionUID = 2539031030917731575L;
private static Random r = new Random(); private static final Random r = new Random();
private GeometryType type; private GeometryType type;
private Lod lod; private final Lod lod;
private CityObject parent; private CityObject parent;
private List<Polygon> polygons = new ArrayList<>(2); private final List<Polygon> polygons = new ArrayList<>(2);
private List<Edge> edges; private List<Edge> edges;
private Map<SerializablePair<Vertex, Vertex>, Edge> edgeMap; private Map<SerializablePair<Vertex, Vertex>, Edge> edgeMap;
private List<Vertex> vertices; private List<Vertex> vertices;
...@@ -153,7 +155,7 @@ public class Geometry extends GmlElement { ...@@ -153,7 +155,7 @@ public class Geometry extends GmlElement {
} }
// only go to size -1 as ring should be closed // only go to size -1 as ring should be closed
for (int i = 0; i < ring.getVertices().size() - 1; i++) { for (int i = 0; i < ring.getVertices().size() - 1; i++) {
Vertex v0 = ring.getVertices().get(i + 0); Vertex v0 = ring.getVertices().get(i);
Vertex v1 = ring.getVertices().get(i + 1); Vertex v1 = ring.getVertices().get(i + 1);
Edge tempEdge = new Edge(v0, v1); Edge tempEdge = new Edge(v0, v1);
Edge e = duplicacyMap.get(tempEdge); Edge e = duplicacyMap.get(tempEdge);
......
...@@ -22,6 +22,8 @@ import de.hft.stuttgart.citydoctor2.check.Checkable; ...@@ -22,6 +22,8 @@ import de.hft.stuttgart.citydoctor2.check.Checkable;
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 java.io.Serial;
/** /**
* A general GML element that has a gml id * A general GML element that has a gml id
* *
...@@ -30,6 +32,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -30,6 +32,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public abstract class GmlElement extends Checkable implements Copyable { public abstract class GmlElement extends Checkable implements Copyable {
@Serial
private static final long serialVersionUID = -3242505393303017359L; private static final long serialVersionUID = -3242505393303017359L;
private GmlId gmlId; private GmlId gmlId;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
...@@ -30,14 +31,15 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -30,14 +31,15 @@ import java.util.concurrent.atomic.AtomicInteger;
*/ */
public class GmlId implements Serializable { public class GmlId implements Serializable {
@Serial
private static final long serialVersionUID = 4273817255150972966L; private static final long serialVersionUID = 4273817255150972966L;
/* prefixes for generation */ /* prefixes for generation */
private static final String GENERAL_GEN = "CityDoctor_%d_%d"; private static final String GENERAL_GEN = "CityDoctor_%d_%d";
private static final AtomicInteger ID_COUNTER = new AtomicInteger(); private static final AtomicInteger ID_COUNTER = new AtomicInteger();
private String gmlString; private final String gmlString;
private boolean generated; private final boolean generated;
public GmlId(String gmlId) { public GmlId(String gmlId) {
this(gmlId, false); this(gmlId, false);
...@@ -85,13 +87,8 @@ public class GmlId implements Serializable { ...@@ -85,13 +87,8 @@ public class GmlId implements Serializable {
return false; return false;
} }
if (gmlString == null) { if (gmlString == null) {
if (other.gmlString != null) { return other.gmlString == null;
return false; } else return gmlString.equals(other.gmlString);
}
} else if (!gmlString.equals(other.gmlString)) {
return false;
}
return true;
} }
/** /**
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -41,6 +42,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -41,6 +42,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
public class Installation extends CityObject { public class Installation extends CityObject {
@Serial
private static final long serialVersionUID = 1576237433322680191L; private static final long serialVersionUID = 1576237433322680191L;
private List<BoundarySurface> boundarySurfaces = new ArrayList<>(4); private List<BoundarySurface> boundarySurfaces = new ArrayList<>(4);
......
...@@ -29,6 +29,8 @@ import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; ...@@ -29,6 +29,8 @@ import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils; import de.hft.stuttgart.citydoctor2.utils.CityGmlUtils;
import de.hft.stuttgart.citydoctor2.utils.Copyable; import de.hft.stuttgart.citydoctor2.utils.Copyable;
import java.io.Serial;
/** /**
* Represents a land use CityGML object. * Represents a land use CityGML object.
* *
...@@ -37,6 +39,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -37,6 +39,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public class LandObject extends CityObject { public class LandObject extends CityObject {
@Serial
private static final long serialVersionUID = 1887455662411087326L; private static final long serialVersionUID = 1887455662411087326L;
private LandUse lu; private LandUse lu;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -38,12 +39,13 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -38,12 +39,13 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public class LinearRing extends GmlElement { public class LinearRing extends GmlElement {
@Serial
private static final long serialVersionUID = -2488180830514940722L; private static final long serialVersionUID = -2488180830514940722L;
private LinearRingType type; private LinearRingType type;
private Polygon parent; private Polygon parent;
private List<Vertex> vertices = new ArrayList<>(); private final List<Vertex> vertices = new ArrayList<>();
public enum LinearRingType { public enum LinearRingType {
EXTERIOR, INTERIOR EXTERIOR, INTERIOR
...@@ -130,7 +132,7 @@ public class LinearRing extends GmlElement { ...@@ -130,7 +132,7 @@ public class LinearRing extends GmlElement {
public Vector3d calculateNormal() { public Vector3d calculateNormal() {
double[] coords = new double[3]; double[] coords = new double[3];
for (int i = 0; i < vertices.size() - 1; i++) { for (int i = 0; i < vertices.size() - 1; i++) {
Vertex current = vertices.get(i + 0); Vertex current = vertices.get(i);
Vertex next = vertices.get(i + 1); Vertex next = vertices.get(i + 1);
coords[0] += (current.getZ() + next.getZ()) * (current.getY() - next.getY()); coords[0] += (current.getZ() + next.getZ()) * (current.getY() - next.getY());
coords[1] += (current.getX() + next.getX()) * (current.getZ() - next.getZ()); coords[1] += (current.getX() + next.getX()) * (current.getZ() - next.getZ());
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.datastructure; package de.hft.stuttgart.citydoctor2.datastructure;
import java.io.Serial;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -39,6 +40,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable; ...@@ -39,6 +40,7 @@ import de.hft.stuttgart.citydoctor2.utils.Copyable;
*/ */
public class LinkedPolygon extends Polygon { public class LinkedPolygon extends Polygon {
@Serial
private static final long serialVersionUID = -4897578390280277931L; private static final long serialVersionUID = -4897578390280277931L;
private Geometry parent; private Geometry parent;
......
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