"public/ar_main.js" did not exist on "0093d783687ce70d8485788536856f36c19803bc"
Commit ad2e1a75 authored by Riegel's avatar Riegel
Browse files

Merge branch 'refs/heads/dev' into dev_embedded_geodb

# Conflicts:
#	CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/GenericAttribute.java
parents aa17c02e 9c97175d
......@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.quality.model.properties.AbstractErrorProperty;
import de.hft.stuttgart.quality.model.properties.EdgeProperty;
import de.hft.stuttgart.quality.model.types.AbstractError;
......@@ -42,7 +43,7 @@ public class NonManifoldEdgeErrorTest {
@Test
public void testConvertToQualityAdeDatastructure() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
GmlId geomId = new GmlId("geomId");
geom.setGmlId(geomId);
......
......@@ -34,6 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.quality.model.properties.AbstractErrorProperty;
import de.hft.stuttgart.quality.model.types.AbstractError;
import de.hft.stuttgart.quality.model.types.ValidationResult;
......@@ -42,7 +43,7 @@ public class NonManifoldVertexErrorTest {
@Test
public void testConvertToQualityAdeDatastructure() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
GmlId geomId = new GmlId("geomId");
geom.setGmlId(geomId);
Polygon p1 = new ConcretePolygon();
......
......@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.quality.model.properties.AbstractErrorProperty;
import de.hft.stuttgart.quality.model.properties.EdgeProperty;
import de.hft.stuttgart.quality.model.types.AbstractError;
......@@ -42,7 +43,7 @@ public class PolygonWrongOrientationErrorTest {
@Test
public void testConvertToQualityAdeDatastructure() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
GmlId geomId = new GmlId("geomId");
geom.setGmlId(geomId);
......
......@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.quality.model.properties.AbstractErrorProperty;
import de.hft.stuttgart.quality.model.properties.EdgeProperty;
import de.hft.stuttgart.quality.model.types.AbstractError;
......@@ -42,7 +43,7 @@ public class SolidNotClosedErrorTest {
@Test
public void testConvertToQualityAdeDatastructure() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
GmlId geomId = new GmlId("geomId");
geom.setGmlId(geomId);
......
......@@ -33,6 +33,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection;
import de.hft.stuttgart.quality.model.properties.AbstractErrorProperty;
import de.hft.stuttgart.quality.model.types.AbstractError;
......@@ -43,7 +44,7 @@ public class SolidSelfIntErrorTest {
@Test
public void testConvertToQualityAdeDatastructure() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
GmlId geomId = new GmlId("geomId");
geom.setGmlId(geomId);
Polygon p1 = new ConcretePolygon();
......
......@@ -30,6 +30,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.quality.model.properties.AbstractErrorProperty;
import de.hft.stuttgart.quality.model.types.AbstractError;
import de.hft.stuttgart.quality.model.types.SolidTooFewPolygonsError;
......@@ -39,7 +40,7 @@ public class TooFewPolygonsErrorTest {
@Test
public void testConvertToQualityAdeDatastructure() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
GmlId geomId = new GmlId("geomId");
geom.setGmlId(geomId);
......
......@@ -92,6 +92,7 @@ public class AbstractBuildingTest {
AbstractBuilding ab = createAbstractBuilding();
BuildingRoom mockRoom = mock(BuildingRoom.class);
Installation mockInstallation = mock(Installation.class);
BuildingConstructiveElement mockConstructiveElement = mock(BuildingConstructiveElement.class);
BuildingRoomFurniture mockBuildingRoomFurniture = mock(BuildingRoomFurniture.class);
BuildingUnit mockBuildingUnit = mock(BuildingUnit.class);
Storey mockStorey = mock(Storey.class);
......@@ -100,6 +101,7 @@ public class AbstractBuildingTest {
ab.addBuildingRoom(mockRoom);
ab.addBuildingInstallation(mockInstallation);
ab.addConstructiveElement(mockConstructiveElement);
ab.addBuildingRoomFurniture(mockBuildingRoomFurniture);
ab.addBuildingUnit(mockBuildingUnit);
ab.addStorey(mockStorey);
......@@ -112,6 +114,7 @@ public class AbstractBuildingTest {
verify(mockRoom).accept(c);
verify(mockInstallation).accept(c);
verify(mockConstructiveElement).accept(c);
verify(mockBuildingRoomFurniture).accept(c);
verify(mockBuildingUnit).accept(c);
verify(mockStorey).accept(c);
......
......@@ -46,6 +46,7 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
public class BoundarySurfaceTest {
......@@ -104,7 +105,7 @@ public class BoundarySurfaceTest {
@Test
public void testPrepareForChecking() {
BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, null);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
Geometry spyGeom = Mockito.spy(geom);
bs.addGeometry(spyGeom);
bs.prepareForChecking();
......
......@@ -32,21 +32,22 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor;
import org.citygml4j.core.model.bridge.AbstractBridge;
import org.citygml4j.core.model.deprecated.bridge.DeprecatedPropertiesOfAbstractBridge;
import org.citygml4j.core.util.geometry.GeometryFactory;
import org.citygml4j.core.visitor.ObjectVisitor;
import org.junit.Test;
import org.mockito.Mockito;
import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor;
import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.datastructure.BridgeObject.BridgeType;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import org.mockito.Mockito;
import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor;
public class BridgeObjectTest {
......@@ -117,7 +118,7 @@ public class BridgeObjectTest {
@Test
public void testPrepareForChecking() {
BridgeObject bo = new BridgeObject(mock(AbstractBridge.class));
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
Geometry spyGeom = Mockito.spy(geom);
bo.addGeometry(spyGeom);
......
......@@ -32,6 +32,7 @@ import org.junit.Test;
import org.mockito.Mockito;
import org.xmlobjects.gml.model.basictypes.Code;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.utils.Copy;
......@@ -55,7 +56,7 @@ public class BuildingTest {
lr.addVertex(v1);
lr.addVertex(v2);
lr.addVertex(v1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
geom.addPolygon(p);
geom.updateEdgesAndVertices();
b.addGeometry(geom);
......@@ -64,7 +65,7 @@ public class BuildingTest {
RoofSurface rs = new RoofSurface();
rs.setId("testRoof");
BoundarySurface surface = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.ROOF, rs);
Geometry geomSurface = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geomSurface = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
geomSurface.addPolygon(new LinkedPolygon(p, geomSurface));
geomSurface.updateEdgesAndVertices();
surface.addGeometry(geomSurface);
......
package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import java.util.ArrayList;
import java.util.List;
import org.citygml4j.core.model.core.AbstractCityObject;
import org.citygml4j.core.util.geometry.GeometryFactory;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.CheckableUtilsVisitor;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.utils.visitors.GmlGeometryRebuilder;
import de.hft.stuttgart.citydoctor2.utils.visitors.UnsetGeometriesVisitor;
import org.citygml4j.core.model.core.AbstractCityObject;
import org.citygml4j.core.util.geometry.GeometryFactory;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class CityObjectTest {
......@@ -101,10 +106,10 @@ public class CityObjectTest {
@Test
public void testGetHighestLodGeometry() {
Geometry geometryLod1 = new Geometry(GeometryType.SOLID, Lod.LOD1);
Geometry geometryLod2 = new Geometry(GeometryType.SOLID, Lod.LOD2);
Geometry geometryLod3 = new Geometry(GeometryType.SOLID, Lod.LOD3);
Geometry geometryLod4 = new Geometry(GeometryType.SOLID, Lod.LOD4);
Geometry geometryLod1 = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Geometry geometryLod2 = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
Geometry geometryLod3 = new Geometry(GeometryType.SOLID, Lod.LOD3, Orientation.OUTWARD);
Geometry geometryLod4 = new Geometry(GeometryType.SOLID, Lod.LOD4, Orientation.OUTWARD);
assertNull(co.getHighestLodGeometry());
co.addGeometry(geometryLod1);
......
......@@ -44,6 +44,7 @@ import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.CheckResult;
import de.hft.stuttgart.citydoctor2.check.ResultStatus;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.math.Vector3d;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
......@@ -58,7 +59,7 @@ public class GeometryTest {
@Test
public void testVisitorPropagation() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
ConcretePolygon mockPolygon = mock(ConcretePolygon.class);
geom.addPolygon(mockPolygon);
......@@ -72,7 +73,7 @@ public class GeometryTest {
@Test
public void testCreate() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
assertNotNull(geom);
assertSame(GeometryType.SOLID, geom.getType());
......@@ -81,7 +82,7 @@ public class GeometryTest {
@Test
public void testAddPolygon() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
Polygon p = new ConcretePolygon();
geom.addPolygon(p);
......@@ -99,7 +100,7 @@ public class GeometryTest {
var gmlBi = new org.citygml4j.core.model.building.BuildingInstallation();
Installation bi = new Installation();
bi.setGmlObject(gmlBi);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
ConcretePolygon p = new ConcretePolygon();
LinearRing lr = new LinearRing(LinearRingType.EXTERIOR);
......@@ -112,7 +113,7 @@ public class GeometryTest {
bs.addGeometry(geom);
Geometry biGeom = new Geometry(GeometryType.COMPOSITE_SURFACE, Lod.LOD2);
Geometry biGeom = new Geometry(GeometryType.COMPOSITE_SURFACE, Lod.LOD2, Orientation.OUTWARD);
biGeom.addPolygon(new LinkedPolygon(p, biGeom));
bi.addGeometry(biGeom);
......@@ -133,7 +134,7 @@ public class GeometryTest {
ParserConfiguration config = new ParserConfiguration(4, false);
AbstractConstructionSurface abs = new WallSurface();
BoundarySurface bs = new BoundarySurface(SurfaceFeatureType.BUILDING, BoundarySurfaceType.WALL, abs);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
ConcretePolygon p = new ConcretePolygon();
LinearRing lr = new LinearRing(LinearRingType.EXTERIOR);
......@@ -159,7 +160,7 @@ public class GeometryTest {
var gmlBi = new org.citygml4j.core.model.building.BuildingInstallation();
Installation bi = new Installation();
bi.setGmlObject(gmlBi);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
ConcretePolygon p = new ConcretePolygon();
LinearRing lr = new LinearRing(LinearRingType.EXTERIOR);
......@@ -171,7 +172,7 @@ public class GeometryTest {
p.setPartOfSurface(bs);
p.setPartOfInstallation(bi);
Geometry biGeom = new Geometry(GeometryType.COMPOSITE_SURFACE, Lod.LOD2);
Geometry biGeom = new Geometry(GeometryType.COMPOSITE_SURFACE, Lod.LOD2, Orientation.OUTWARD);
LinkedPolygon linkedPolygon = new LinkedPolygon(p, biGeom);
biGeom.addPolygon(linkedPolygon);
bi.addGeometry(biGeom);
......@@ -197,7 +198,7 @@ public class GeometryTest {
Installation bi = new Installation();
bi.setGmlObject(gmlBi);
bi.addBoundarySurface(bs);
Geometry geom2 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geom2 = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
ConcretePolygon p = new ConcretePolygon();
geom2.addPolygon(p);
LinearRing lr = new LinearRing(LinearRingType.EXTERIOR);
......@@ -210,7 +211,7 @@ public class GeometryTest {
p.setPartOfInstallation(bi);
bs.addGeometry(geom2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD2, Orientation.OUTWARD);
Polygon linkedPoly = new LinkedPolygon(p, geom);
geom.addPolygon(linkedPoly);
......@@ -241,7 +242,7 @@ public class GeometryTest {
@Test
public void testSetParent() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
CityObject co = mock(CityObject.class);
geom.setParent(co);
assertEquals(co, geom.getParent());
......@@ -262,7 +263,7 @@ public class GeometryTest {
@Test
public void testSetType() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD2, Orientation.OUTWARD);
geom.setType(GeometryType.SOLID);
assertEquals(GeometryType.SOLID, geom.getType());
}
......@@ -278,7 +279,7 @@ public class GeometryTest {
@Test
public void testContainsError() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class)));
assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
......@@ -293,7 +294,7 @@ public class GeometryTest {
@Test
public void testClearAllContainedCheckResults() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class)));
assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
......@@ -306,7 +307,7 @@ public class GeometryTest {
@Test
public void testCollectContainedErrors() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
assertFalse(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class)));
assertTrue(geom.containsError(CheckId.C_GE_P_HOLE_OUTSIDE));
......@@ -324,7 +325,7 @@ public class GeometryTest {
@Test
public void testContainsAnyError() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
assertFalse(geom.containsAnyError());
geom.addCheckResult(new CheckResult(CheckId.C_GE_P_HOLE_OUTSIDE, ResultStatus.ERROR, mock(CheckError.class)));
assertTrue(geom.containsAnyError());
......@@ -343,7 +344,7 @@ public class GeometryTest {
@Test
public void testAccept() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Check c = mock(Check.class);
geom.accept(c);
when(c.canExecute(geom)).thenReturn(true);
......@@ -434,7 +435,7 @@ public class GeometryTest {
@Test
public void testContainsPolygon() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD0, Orientation.OUTWARD);
ConcretePolygon cdPoly = new ConcretePolygon();
geom.addPolygon(cdPoly);
cdPoly.setGmlId(new GmlId("test1"));
......
......@@ -18,6 +18,7 @@
*/
package de.hft.stuttgart.citydoctor2.datastructure;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import org.xmlobjects.gml.model.geometry.primitives.AbstractRing;
import org.xmlobjects.gml.model.geometry.primitives.AbstractSolid;
......@@ -48,7 +49,7 @@ public class GeometryTestUtils {
}
public static Geometry createDummyGeometry(GeometryType type, Lod lod) {
Geometry geom = new Geometry(type, lod);
Geometry geom = new Geometry(type, lod, Orientation.OUTWARD);
ConcretePolygon polygon = new ConcretePolygon();
geom.getPolygons().add(polygon);
polygon.setParent(geom);
......@@ -68,7 +69,7 @@ public class GeometryTestUtils {
}
public static Geometry createDummyGeometryWithInnerRingWithNeighboringPolygon(GeometryType type, Lod lod) {
Geometry geom = new Geometry(type, lod);
Geometry geom = new Geometry(type, lod, Orientation.OUTWARD);
ConcretePolygon polygon = new ConcretePolygon();
geom.getPolygons().add(polygon);
polygon.setParent(geom);
......
......@@ -25,6 +25,7 @@ import java.util.Set;
import org.junit.Test;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.math.Vector3d;
......@@ -46,7 +47,7 @@ public class VertexTest {
@Test
public void testGetAdjacentRings() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon();
geom.addPolygon(p);
......@@ -64,7 +65,7 @@ public class VertexTest {
@Test(expected = IllegalStateException.class)
public void testGetAdjacentRingsGeometryNotContainingVertex() {
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.SOLID, Lod.LOD1, Orientation.OUTWARD);
Polygon p = new ConcretePolygon();
......
......@@ -4,7 +4,7 @@
<parent>
<groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId>
<version>3.17.2</version>
<version>3.17.3</version>
</parent>
<artifactId>CityDoctorValidation</artifactId>
<name>CityDoctorValidation</name>
......
......@@ -264,6 +264,8 @@ public class Checker {
DefaultParameter defaultP = getDefaultParameter(e.getKey(), reqs, param.getKey());
if (defaultP != null) {
p.setUom(defaultP.getUnitType().getGmlRepresentation());
} else {
p.setUom("");
}
p.setName(param.getKey());
p.setValue(param.getValue());
......@@ -281,21 +283,28 @@ public class Checker {
plan.getRequirements().add(new RequirementProperty(missing));
plan.getRequirements().add(new RequirementProperty(correct));
de.hft.stuttgart.quality.model.types.GlobalParameters globParams = new de.hft.stuttgart.quality.model.types.GlobalParameters();
plan.setGlobalParameters(new GlobalParametersProperty(globParams));
Parameter numRounding = new Parameter();
numRounding.setName("numberOfRoundingPlaces");
numRounding.setUom("amount");
numRounding.setValue("" + config.getNumberOfRoundingPlaces());
globParams.getParameters().add(new ParameterProperty(numRounding));
Parameter minVertexDistance = new Parameter();
minVertexDistance.setName("minVertexDistance");
minVertexDistance.setUom("m");
minVertexDistance.setValue("" + config.getMinVertexDistance());
globParams.getParameters().add(new ParameterProperty(minVertexDistance));
if (config.getSchematronFilePath() != null) {
Parameter schematronFile = new Parameter();
schematronFile.setName("schematronFile");
schematronFile.setUom("path");
schematronFile.setValue(config.getSchematronFilePath());
de.hft.stuttgart.quality.model.types.GlobalParameters globParams = new de.hft.stuttgart.quality.model.types.GlobalParameters();
plan.setGlobalParameters(new GlobalParametersProperty(globParams));
globParams.getParameters().add(new ParameterProperty(numRounding));
globParams.getParameters().add(new ParameterProperty(minVertexDistance));
globParams.getParameters().add(new ParameterProperty(schematronFile));
}
return plan;
}
......@@ -620,6 +629,9 @@ public class Checker {
private void checkCityModel(CityDoctorModel model, ProgressListener l) {
Stream<CityObject> features = model.createFeatureStream();
float featureSum = model.getNumberOfFeatures();
// clear global errors
model.getGlobalErrors().clear();
// stupid lamda with final variable restrictions
int[] currentFeature = new int[1];
features.forEach(co -> {
......@@ -887,9 +899,6 @@ public class Checker {
* @param co the city object to be checked
*/
public void checkFeature(XmlStreamReporter xmlReporter, PdfStreamReporter pdfReporter, CityObject co) {
if (logger.isDebugEnabled()) {
logger.debug(Localization.getText("Checker.checkFeature"), co);
}
executeChecksForCityObject(co);
if (xmlReporter != null) {
xmlReporter.report(co);
......
......@@ -29,11 +29,6 @@ import java.util.Set;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractTunnel;
import de.hft.stuttgart.citydoctor2.datastructure.CityFurniture;
import de.hft.stuttgart.citydoctor2.datastructure.GenericCityObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.citygml4j.core.model.core.AbstractFeatureProperty;
import org.citygml4j.core.model.core.CityModel;
import org.citygml4j.core.util.geometry.GeometryFactory;
......@@ -42,9 +37,12 @@ import org.xmlobjects.gml.model.base.Reference;
import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
import de.hft.stuttgart.citydoctor2.checks.SvrlContentHandler;
import de.hft.stuttgart.citydoctor2.checks.util.FeatureCheckedListener;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractTunnel;
import de.hft.stuttgart.citydoctor2.datastructure.BridgeObject;
import de.hft.stuttgart.citydoctor2.datastructure.Building;
import de.hft.stuttgart.citydoctor2.datastructure.CityFurniture;
import de.hft.stuttgart.citydoctor2.datastructure.CityObject;
import de.hft.stuttgart.citydoctor2.datastructure.GenericCityObject;
import de.hft.stuttgart.citydoctor2.datastructure.LandObject;
import de.hft.stuttgart.citydoctor2.datastructure.TransportationObject;
import de.hft.stuttgart.citydoctor2.datastructure.Vegetation;
......@@ -64,8 +62,6 @@ import de.hft.stuttgart.quality.model.types.ValidationPlan;
public class StreamCityGmlConsumer implements CityGmlConsumer {
private static final Logger logger = LogManager.getLogger(StreamCityGmlConsumer.class);
private final Checker c;
private final XmlStreamReporter xmlReporter;
private final PdfStreamReporter pdfReporter;
......@@ -116,10 +112,6 @@ public class StreamCityGmlConsumer implements CityGmlConsumer {
@Override
public void accept(CityObject co) {
if (logger.isDebugEnabled()) {
logger.debug(Localization.getText("Checker.checkFeature"), co);
}
// check without reporters, nothing will be put into the reports like that
// this will also clear old check results if any (though in stream mode there
// won't be any)
......
......@@ -35,6 +35,7 @@ import de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.math.Ray;
import de.hft.stuttgart.citydoctor2.math.Triangle3d;
import de.hft.stuttgart.citydoctor2.math.Vector3d;
......@@ -76,6 +77,10 @@ public class AllPolygonsWrongOrientationCheck extends Check {
return;
}
boolean isOutwardOriented = geometryIsOutwardOrientedJava(g);
// invert outward direction for inward facing geometries
if (g.getOrientation() == Orientation.INWARD) {
isOutwardOriented = !isOutwardOriented;
}
CheckResult cr;
if (isOutwardOriented) {
cr = new CheckResult(this, ResultStatus.OK, null);
......
......@@ -41,6 +41,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.quality.model.enums.RequirementId;
......@@ -48,7 +49,7 @@ public class DegeneratedPolygonCheckTest {
@Test
public void testDegeneratedPolygon() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1, Orientation.OUTWARD);
ConcretePolygon polygon = new ConcretePolygon();
geom.getPolygons().add(polygon);
polygon.setParent(geom);
......
......@@ -34,6 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
/**
*
......@@ -90,7 +91,7 @@ public class DuplicatePointsCheckTest {
@Test
public void testCheckSelfInt() {
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1);
Geometry geom = new Geometry(GeometryType.MULTI_SURFACE, Lod.LOD1, Orientation.OUTWARD);
Vertex v0 = new Vertex(1, 1, 1);
Vertex v1 = new Vertex(2, 2, 2);
Vertex v2 = new Vertex(3, 3, 3);
......
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