Commit a6da3282 authored by Riegel's avatar Riegel
Browse files

Fix ImplicitGeometry double saving Geometry on export

Showing with 38 additions and 0 deletions
+38 -0
...@@ -114,6 +114,9 @@ public abstract class AbstractBuilding extends CityObject { ...@@ -114,6 +114,9 @@ public abstract class AbstractBuilding extends CityObject {
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
setMultiSurfaceAccordingToLod(geom, ms); setMultiSurfaceAccordingToLod(geom, ms);
......
...@@ -77,6 +77,9 @@ public abstract class AbstractBuildingSubdivision extends CityObject{ ...@@ -77,6 +77,9 @@ public abstract class AbstractBuildingSubdivision extends CityObject{
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
setMultiSurfaceAccordingToLod(geom, ms); setMultiSurfaceAccordingToLod(geom, ms);
......
...@@ -105,6 +105,9 @@ public abstract class AbstractFurniture extends CityObject{ ...@@ -105,6 +105,9 @@ public abstract class AbstractFurniture extends CityObject{
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
setMultiSurfaceAccordingToLod(geom, ms); setMultiSurfaceAccordingToLod(geom, ms);
......
...@@ -113,6 +113,9 @@ public abstract class AbstractRoom extends CityObject{ ...@@ -113,6 +113,9 @@ public abstract class AbstractRoom extends CityObject{
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
setMultiSurfaceAccordingToLod(geom, ms); setMultiSurfaceAccordingToLod(geom, ms);
......
...@@ -84,6 +84,9 @@ public abstract class AbstractTunnel extends CityObject{ ...@@ -84,6 +84,9 @@ public abstract class AbstractTunnel extends CityObject{
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
setMultiSurfaceAccordingToLod(geom, ms); setMultiSurfaceAccordingToLod(geom, ms);
......
...@@ -94,6 +94,9 @@ public class BoundarySurface extends CityObject { ...@@ -94,6 +94,9 @@ public class BoundarySurface extends CityObject {
gmlObject.setId(getGmlId().getGmlString()); gmlObject.setId(getGmlId().getGmlString());
} }
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
if (ms != null) { if (ms != null) {
......
...@@ -70,6 +70,9 @@ public class BridgeConstructiveElement extends CityObject { ...@@ -70,6 +70,9 @@ public class BridgeConstructiveElement extends CityObject {
// unknown which CityGML is handled here // unknown which CityGML is handled here
// need context information to decide // need context information to decide
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
switch (geom.getType()) { switch (geom.getType()) {
case SOLID: case SOLID:
Solid solid = CityGmlUtils.createSolid(geom, factory, config); Solid solid = CityGmlUtils.createSolid(geom, factory, config);
......
...@@ -80,6 +80,9 @@ public class BridgeObject extends CityObject { ...@@ -80,6 +80,9 @@ public class BridgeObject extends CityObject {
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
setMultiSurfaceAccordingToLod(geom, ms); setMultiSurfaceAccordingToLod(geom, ms);
......
...@@ -53,6 +53,9 @@ public class CityFurniture extends CityObject{ ...@@ -53,6 +53,9 @@ public class CityFurniture extends CityObject{
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
setMultiSurfaceAccordingToLod(geom, ms); setMultiSurfaceAccordingToLod(geom, ms);
......
...@@ -49,6 +49,9 @@ public class GenericCityObject extends CityObject{ ...@@ -49,6 +49,9 @@ public class GenericCityObject extends CityObject{
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
setMultiSurfaceAccordingToLod(geom, ms); setMultiSurfaceAccordingToLod(geom, ms);
......
...@@ -70,6 +70,9 @@ public class TransportationObject extends CityObject { ...@@ -70,6 +70,9 @@ public class TransportationObject extends CityObject {
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
switch (type) { switch (type) {
......
...@@ -68,6 +68,9 @@ public class Vegetation extends CityObject { ...@@ -68,6 +68,9 @@ public class Vegetation extends CityObject {
@Override @Override
public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) { public void reCreateGeometries(GeometryFactory factory, ParserConfiguration config) {
for (Geometry geom : getGeometries()) { for (Geometry geom : getGeometries()) {
if (geom instanceof ImplicitGeometryHolder){
continue;
}
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);
if (type == VegetationType.SOLITARY_VEGETATION_OBJECT) { if (type == VegetationType.SOLITARY_VEGETATION_OBJECT) {
......
...@@ -172,6 +172,7 @@ public class CityGMLWriterUtils { ...@@ -172,6 +172,7 @@ public class CityGMLWriterUtils {
if (model.isValidated() && val != null) { if (model.isValidated() && val != null) {
QualityADEUtils.writeQualityAde(co, val); QualityADEUtils.writeQualityAde(co, val);
} }
co.reCreateGeometries(gmlFactory, model.getParserConfig()); co.reCreateGeometries(gmlFactory, model.getParserConfig());
cModel.getCityObjectMembers().add(new AbstractCityObjectProperty(co.getGmlObject())); cModel.getCityObjectMembers().add(new AbstractCityObjectProperty(co.getGmlObject()));
} }
......
...@@ -1202,6 +1202,7 @@ public class CityDoctorController { ...@@ -1202,6 +1202,7 @@ public class CityDoctorController {
Settings.set(Settings.LAST_OPEN_FOLDER, f.getParent()); Settings.set(Settings.LAST_OPEN_FOLDER, f.getParent());
try { try {
storeModel(f, saveWithQualityAde); storeModel(f, saveWithQualityAde);
logger.info("Saving successful");
} catch (CityDoctorWriteException e) { } catch (CityDoctorWriteException e) {
mainWindow.showExceptionDialog(e); mainWindow.showExceptionDialog(e);
} }
......
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