Commit ffdae21a authored by Riegel's avatar Riegel
Browse files

Open Source release of CityDoctor GUI

parent a5a82382
Pipeline #10029 failed with stage
in 8 seconds
set CLASSPATH=.\target\classes;..\CityDoctorModel\target\classes;..\CityDoctorHealer\target\classes
set PATH="c:\Program Files (x86)\Java\jdk1.8.0_25\bin"
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.AutoPro
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.AutoProSettingsExport
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.AutoProSettingsGeneral
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.AutoProSettingsBool
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.AutoProSettingsMerge
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.AutoProSettingsAdvancedSweep
pause
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId>
<version>3.14.1</version>
</parent>
<artifactId>CityDoctorAutoPro</artifactId>
<name>CityDoctorAutoPro</name>
<description>Automated Simplification Algorithms</description>
<dependencies>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorModel</artifactId>
</dependency>
<dependency>
<groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorValidation</artifactId>
</dependency>
<dependency>
<groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorHealer</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package de.hft.stuttgart.citydoctor2.connect.edge;
import de.hft.stuttgart.citydoctor2.connect.edge.CppFeature;
import de.hft.stuttgart.citydoctor2.connect.edge.CppReferenceHandlingBase;
import de.hft.stuttgart.citydoctor2.connect.edge.NativeException;
import de.hft.stuttgart.citydoctor2.connect.edge.NativePointerCastException;
/**
*
* @author PiR
* @version 1.0
*
*/
public class AutoPro extends CppReferenceHandlingBase
{
// ----- native methods
// create and release stored C++ polygon check object
private native long createCppAutoPro()
throws OutOfMemoryError;
private native void disposeCppAutoPro(long ptrToCppAutoPro)
throws NativePointerCastException;
// native methods
private native boolean addFeature(long ptrToCppAutoPro, long ptrToCppFeature)
throws NativeException, IllegalArgumentException;
private native boolean setSettingsExport(long ptrToCppAutoPro, long ptrToCppSettings)
throws NativeException, IllegalArgumentException;
private native boolean setSettingsGeneral(long ptrToCppAutoPro, long ptrToCppSettings)
throws NativeException, IllegalArgumentException;
private native boolean setSettingsBool(long ptrToCppAutoPro, long ptrToCppSettings)
throws NativeException, IllegalArgumentException;
private native boolean setSettingsMerge(long ptrToCppAutoPro, long ptrToCppSettings)
throws NativeException, IllegalArgumentException;
private native boolean setSettingsAdvancedSweep(long ptrToCppAutoPro, long ptrToCppSettings)
throws NativeException, IllegalArgumentException;
private native boolean applyAutoProMethods(long ptrToCppAutoPro)
throws NativeException, IllegalArgumentException;
public native long getHealResult(long ptrToCppAutoPro, long ptrToCppFeature)
throws NativeException, IllegalArgumentException;
/**
* Constructor that gets a VPDFeature. All check method will be invoked on this feature.
* Remember to use the createCppObject method
* @param feature All check methods will use the data of this feature
*
* @see {@link createCppObject} {@link disposeCppObject}
*/
public AutoPro()
{
}
/**
* Creates an C++ object to use the native methods.
*
* @throws IllegalStateException
* Thrown if the encapsulated "long-Pointer" isn't 0
* @throws NativeOutOfMemoryException
* If there is no more memory on the native side
*
* @see {@link disposeCppObject}
* @see de.hft.stuttgart.citydoctor.connect.edGe.CppReferenceHandlingBase#createCppObject()
*/
public void createCppObject()
throws OutOfMemoryError, IllegalStateException
{
if ( 0L != ptrToCppObject)
{
throw new IllegalStateException("Can't create new C++ object, there is allready one!");
}
// Maybe an exception is thrown and there should be no crap in ptrToCppObject
long tmpPointer = createCppAutoPro();
ptrToCppObject = tmpPointer;
}
@Override
public void disposeCppObject()
throws NativePointerCastException
{
if ( 0L != ptrToCppObject)
{
disposeCppAutoPro(this.ptrToCppObject);
ptrToCppObject = 0x0;
}
}
public void ap_addFeature(CppFeature feature)
throws NativeException, IllegalArgumentException
{
checkNullPointer();
addFeature(ptrToCppObject, feature.ptrToCppObject);
}
public void ap_setSettingsExport(AutoProSettingsExport settings)
throws NativeException, IllegalArgumentException
{
checkNullPointer();
setSettingsExport(ptrToCppObject, settings.ptrToCppObject);
}
public void ap_setSettingsGeneral(AutoProSettingsGeneral settings)
throws NativeException, IllegalArgumentException
{
checkNullPointer();
setSettingsGeneral(ptrToCppObject, settings.ptrToCppObject);
}
public void ap_setSettingsBool(AutoProSettingsBool settings)
throws NativeException, IllegalArgumentException
{
checkNullPointer();
setSettingsBool(ptrToCppObject, settings.ptrToCppObject);
}
public void ap_setSettingsMerge(AutoProSettingsMerge settings)
throws NativeException, IllegalArgumentException
{
checkNullPointer();
setSettingsMerge(ptrToCppObject, settings.ptrToCppObject);
}
public void ap_setSettingsAdvancedSweep(AutoProSettingsAdvancedSweep settings)
throws NativeException, IllegalArgumentException
{
checkNullPointer();
setSettingsAdvancedSweep(ptrToCppObject, settings.ptrToCppObject);
}
public void ap_applyAutoProMethods()
throws NativeException, IllegalArgumentException
{
checkNullPointer();
applyAutoProMethods(ptrToCppObject);
}
public long ap_getHealResult(CppFeature feature) {
checkNullPointer();
return getHealResult(ptrToCppObject, feature.ptrToCppObject);
}
}
package de.hft.stuttgart.citydoctor2.connect.edge;
import de.hft.stuttgart.citydoctor2.connect.edge.CppReferenceHandlingBase;
import de.hft.stuttgart.citydoctor2.connect.edge.NativePointerCastException;
public class AutoProSettingsAdvancedSweep extends CppReferenceHandlingBase {
private native long createCppClass(
boolean advancedSweep_General_printInfo,
boolean advancedSweep_General_printFilterReasonInfo,
boolean advancedSweep_General_exportIntermediateStages,
double advancedSweep_General_minEdgeLength,
double advancedSweep_General_maxEdgeLength,
double advancedSweep_General_minDistToSweep,
boolean advancedSweep_Planarity_Use,
boolean advancedSweep_Planarity_IgnoreMultiplePoints,
double advancedSweep_Planarity_PlanarityTolerance,
boolean advancedSweep_SweepPlane_Use,
boolean advancedSweep_SweepPlane_PushOnly,
boolean advancedSweep_SweepPlane_PullOnly,
boolean advancedSweep_SweepPlane_ShortestEdgeFirst,
boolean advancedSweep_SweepPlane_SmallestFaceFirst,
boolean advancedSweep_SweepPlane_SmallestDistFirst,
boolean advancedSweep_SweepRotate_Use,
double advancedSweep_SweepRotate_maxAngle,
boolean advancedSweep_SweepRotate_SmallestDistFirst,
boolean advancedSweep_SweepRotate_SmallestAngleFirst,
boolean advancedSweep_SweepRotate_SmallestFaceFirst
)
throws OutOfMemoryError;
private native void disposeCppClass(long ptrToCppAutoPro)
throws NativePointerCastException;
private boolean advancedSweep_General_printInfo;
private boolean advancedSweep_General_printFilterReasonInfo;
private boolean advancedSweep_General_exportIntermediateStages;
private double advancedSweep_General_minEdgeLength;
private double advancedSweep_General_maxEdgeLength;
private double advancedSweep_General_minDistToSweep;
private boolean advancedSweep_Planarity_Use;
private boolean advancedSweep_Planarity_IgnoreMultiplePoints;
private double advancedSweep_Planarity_PlanarityTolerance;
private boolean advancedSweep_SweepPlane_Use;
private boolean advancedSweep_SweepPlane_PushOnly;
private boolean advancedSweep_SweepPlane_PullOnly;
private boolean advancedSweep_SweepPlane_ShortestEdgeFirst;
private boolean advancedSweep_SweepPlane_SmallestFaceFirst;
private boolean advancedSweep_SweepPlane_SmallestDistFirst;
private boolean advancedSweep_SweepRotate_Use;
private double advancedSweep_SweepRotate_maxAngle;
private boolean advancedSweep_SweepRotate_SmallestDistFirst;
private boolean advancedSweep_SweepRotate_SmallestAngleFirst;
private boolean advancedSweep_SweepRotate_SmallestFaceFirst;
public AutoProSettingsAdvancedSweep() {
set_advancedSweep_General_printInfo(false);
set_advancedSweep_General_printFilterReasonInfo(false);
set_advancedSweep_General_exportIntermediateStages(false);
set_advancedSweep_General_minEdgeLength(2.0);
set_advancedSweep_General_maxEdgeLength(5.0);
set_advancedSweep_General_minDistToSweep(0);
set_advancedSweep_Planarity_Use(false);
set_advancedSweep_Planarity_IgnoreMultiplePoints(false);
set_advancedSweep_Planarity_PlanarityTolerance(0.001);
set_advancedSweep_SweepPlane_Use(false);
set_advancedSweep_SweepPlane_PushOnly(false);
set_advancedSweep_SweepPlane_PullOnly(false);
set_advancedSweep_SweepPlane_ShortestEdgeFirst(false);
set_advancedSweep_SweepPlane_SmallestFaceFirst(false);
set_advancedSweep_SweepPlane_SmallestDistFirst(false);
set_advancedSweep_SweepRotate_Use(false);
set_advancedSweep_SweepRotate_maxAngle(10);
set_advancedSweep_SweepRotate_SmallestDistFirst(false);
set_advancedSweep_SweepRotate_SmallestAngleFirst(false);
set_advancedSweep_SweepRotate_SmallestFaceFirst(false);
}
/**
* Creates an C++ feature object
*
* @throws IllegalStateException
* Thrown if the encapsulated "long-Pointer" isn't 0
* @throws NativeOutOfMemoryException
* If there is no more memory on the native side
*
* @see {@link disposeCppObject}
* @see de.hft.stuttgart.citydoctor.connect.edGe.CppReferenceHandlingBase#createCppObject()
*/
public void createCppObject() throws IllegalStateException,
OutOfMemoryError {
if (0L != ptrToCppObject) {
throw new IllegalStateException(
"Can't create new C++ object, there is allready one!");
}
// Maybe an exception is thrown
long tmpPointer = createCppClass(
is_advancedSweep_General_printInfo(),
is_advancedSweep_General_printFilterReasonInfo(),
is_advancedSweep_General_exportIntermediateStages(),
get_advancedSweep_General_minEdgeLength(),
get_advancedSweep_General_maxEdgeLength(),
get_advancedSweep_General_minDistToSweep(),
is_advancedSweep_Planarity_Use(),
is_advancedSweep_Planarity_IgnoreMultiplePoints(),
get_advancedSweep_Planarity_PlanarityTolerance(),
is_advancedSweep_SweepPlane_Use(),
is_advancedSweep_SweepPlane_PushOnly(),
is_advancedSweep_SweepPlane_PullOnly(),
is_advancedSweep_SweepPlane_ShortestEdgeFirst(),
is_advancedSweep_SweepPlane_SmallestFaceFirst(),
is_advancedSweep_SweepPlane_SmallestDistFirst(),
is_advancedSweep_SweepRotate_Use(),
get_advancedSweep_SweepRotate_maxAngle(),
is_advancedSweep_SweepRotate_SmallestDistFirst(),
is_advancedSweep_SweepRotate_SmallestAngleFirst(),
is_advancedSweep_SweepRotate_SmallestFaceFirst()
);
ptrToCppObject = tmpPointer;
}
@Override
public void disposeCppObject() throws NativePointerCastException {
if (0L != ptrToCppObject) {
disposeCppClass(ptrToCppObject);
ptrToCppObject = 0L;
}
}
public void set_advancedSweep_General_printInfo(boolean advancedSweep_General_printInfo)
{
this.advancedSweep_General_printInfo = advancedSweep_General_printInfo;
}
public void set_advancedSweep_General_printFilterReasonInfo(boolean advancedSweep_General_printFilterReasonInfo)
{
this.advancedSweep_General_printFilterReasonInfo = advancedSweep_General_printFilterReasonInfo;
}
public void set_advancedSweep_General_exportIntermediateStages(boolean advancedSweep_General_exportIntermediateStages)
{
this.advancedSweep_General_exportIntermediateStages = advancedSweep_General_exportIntermediateStages;
}
public void set_advancedSweep_General_minEdgeLength(double advancedSweep_General_minEdgeLength)
{
this.advancedSweep_General_minEdgeLength = advancedSweep_General_minEdgeLength;
}
public void set_advancedSweep_General_maxEdgeLength(double advancedSweep_General_maxEdgeLength)
{
this.advancedSweep_General_maxEdgeLength = advancedSweep_General_maxEdgeLength;
}
public void set_advancedSweep_General_minDistToSweep(double advancedSweep_General_minDistToSweep)
{
this.advancedSweep_General_minDistToSweep = advancedSweep_General_minDistToSweep;
}
public void set_advancedSweep_Planarity_Use(boolean advancedSweep_Planarity_Use)
{
this.advancedSweep_Planarity_Use = advancedSweep_Planarity_Use;
}
public void set_advancedSweep_Planarity_IgnoreMultiplePoints(boolean advancedSweep_Planarity_IgnoreMultiplePoints)
{
this.advancedSweep_Planarity_IgnoreMultiplePoints = advancedSweep_Planarity_IgnoreMultiplePoints;
}
public void set_advancedSweep_Planarity_PlanarityTolerance(double advancedSweep_Planarity_PlanarityTolerance)
{
this.advancedSweep_Planarity_PlanarityTolerance = advancedSweep_Planarity_PlanarityTolerance;
}
public void set_advancedSweep_SweepPlane_Use(boolean advancedSweep_SweepPlane_Use)
{
this.advancedSweep_SweepPlane_Use = advancedSweep_SweepPlane_Use;
}
public void set_advancedSweep_SweepPlane_PushOnly(boolean advancedSweep_SweepPlane_PushOnly)
{
this.advancedSweep_SweepPlane_PushOnly = advancedSweep_SweepPlane_PushOnly;
}
public void set_advancedSweep_SweepPlane_PullOnly(boolean advancedSweep_SweepPlane_PullOnly)
{
this.advancedSweep_SweepPlane_PullOnly = advancedSweep_SweepPlane_PullOnly;
}
public void set_advancedSweep_SweepPlane_ShortestEdgeFirst(boolean advancedSweep_SweepPlane_ShortestEdgeFirst)
{
this.advancedSweep_SweepPlane_ShortestEdgeFirst = advancedSweep_SweepPlane_ShortestEdgeFirst;
}
public void set_advancedSweep_SweepPlane_SmallestFaceFirst(boolean advancedSweep_SweepPlane_SmallestFaceFirst)
{
this.advancedSweep_SweepPlane_SmallestFaceFirst = advancedSweep_SweepPlane_SmallestFaceFirst;
}
public void set_advancedSweep_SweepPlane_SmallestDistFirst(boolean advancedSweep_SweepPlane_SmallestDistFirst)
{
this.advancedSweep_SweepPlane_SmallestDistFirst = advancedSweep_SweepPlane_SmallestDistFirst;
}
public void set_advancedSweep_SweepRotate_Use(boolean advancedSweep_SweepRotate_Use)
{
this.advancedSweep_SweepRotate_Use = advancedSweep_SweepRotate_Use;
}
public void set_advancedSweep_SweepRotate_maxAngle(double advancedSweep_SweepRotate_maxAngle)
{
this.advancedSweep_SweepRotate_maxAngle = advancedSweep_SweepRotate_maxAngle;
}
public void set_advancedSweep_SweepRotate_SmallestDistFirst(boolean advancedSweep_SweepRotate_SmallestDistFirst)
{
this.advancedSweep_SweepRotate_SmallestDistFirst = advancedSweep_SweepRotate_SmallestDistFirst;
}
public void set_advancedSweep_SweepRotate_SmallestAngleFirst(boolean advancedSweep_SweepRotate_SmallestAngleFirst)
{
this.advancedSweep_SweepRotate_SmallestAngleFirst = advancedSweep_SweepRotate_SmallestAngleFirst;
}
public void set_advancedSweep_SweepRotate_SmallestFaceFirst(boolean advancedSweep_SweepRotate_SmallestFaceFirst)
{
this.advancedSweep_SweepRotate_SmallestFaceFirst = advancedSweep_SweepRotate_SmallestFaceFirst;
}
public boolean is_advancedSweep_General_printInfo()
{
return this.advancedSweep_General_printInfo;
}
public boolean is_advancedSweep_General_printFilterReasonInfo()
{
return this.advancedSweep_General_printFilterReasonInfo;
}
public boolean is_advancedSweep_General_exportIntermediateStages()
{
return this.advancedSweep_General_exportIntermediateStages;
}
public double get_advancedSweep_General_minEdgeLength()
{
return this.advancedSweep_General_minEdgeLength;
}
public double get_advancedSweep_General_maxEdgeLength()
{
return this.advancedSweep_General_maxEdgeLength;
}
public double get_advancedSweep_General_minDistToSweep()
{
return this.advancedSweep_General_minDistToSweep;
}
public boolean is_advancedSweep_Planarity_Use()
{
return this.advancedSweep_Planarity_Use;
}
public boolean is_advancedSweep_Planarity_IgnoreMultiplePoints()
{
return this.advancedSweep_Planarity_IgnoreMultiplePoints;
}
public double get_advancedSweep_Planarity_PlanarityTolerance()
{
return this.advancedSweep_Planarity_PlanarityTolerance;
}
public boolean is_advancedSweep_SweepPlane_Use()
{
return this.advancedSweep_SweepPlane_Use;
}
public boolean is_advancedSweep_SweepPlane_PushOnly()
{
return this.advancedSweep_SweepPlane_PushOnly;
}
public boolean is_advancedSweep_SweepPlane_PullOnly()
{
return this.advancedSweep_SweepPlane_PullOnly;
}
public boolean is_advancedSweep_SweepPlane_ShortestEdgeFirst()
{
return this.advancedSweep_SweepPlane_ShortestEdgeFirst;
}
public boolean is_advancedSweep_SweepPlane_SmallestFaceFirst()
{
return this.advancedSweep_SweepPlane_SmallestFaceFirst;
}
public boolean is_advancedSweep_SweepPlane_SmallestDistFirst()
{
return this.advancedSweep_SweepPlane_SmallestDistFirst;
}
public boolean is_advancedSweep_SweepRotate_Use()
{
return this.advancedSweep_SweepRotate_Use;
}
public double get_advancedSweep_SweepRotate_maxAngle()
{
return this.advancedSweep_SweepRotate_maxAngle;
}
public boolean is_advancedSweep_SweepRotate_SmallestDistFirst()
{
return this.advancedSweep_SweepRotate_SmallestDistFirst;
}
public boolean is_advancedSweep_SweepRotate_SmallestAngleFirst()
{
return this.advancedSweep_SweepRotate_SmallestAngleFirst;
}
public boolean is_advancedSweep_SweepRotate_SmallestFaceFirst()
{
return this.advancedSweep_SweepRotate_SmallestFaceFirst;
}
}
package de.hft.stuttgart.citydoctor2.connect.edge;
import de.hft.stuttgart.citydoctor2.connect.edge.CppReferenceHandlingBase;
import de.hft.stuttgart.citydoctor2.connect.edge.NativePointerCastException;
public class AutoProSettingsBool extends CppReferenceHandlingBase {
private native long createCppClass(
boolean useBool,
boolean printBoolInfo,
boolean exportIntermediateStages,
boolean useMinkowski,
boolean printMinkowskiInfo,
double minkowksiCubeSize,
boolean rotateMinkowskiCube
)
throws OutOfMemoryError;
private native void disposeCppClass(long ptrToCppAutoPro)
throws NativePointerCastException;
private boolean useBool;
private boolean printBoolInfo;
private boolean exportIntermediateStages;
private boolean useMinkowski;
private boolean printMinkowskiInfo;
private double minkowskiCubeSize;
private boolean rotateMinkowskiCube;
public AutoProSettingsBool() {
setUseBool(false);
setPrintBoolInfo(false);
setExportIntermediateStages(false);
setUseMinkowski(false);
setPrintMinkowskiInfo(false);
setMinkowskiCubeSize(2.2);
setRotateMinkowskiCube(false);
}
/**
* Creates an C++ feature object
*
* @throws IllegalStateException
* Thrown if the encapsulated "long-Pointer" isn't 0
* @throws NativeOutOfMemoryException
* If there is no more memory on the native side
*
* @see {@link disposeCppObject}
* @see de.hft.stuttgart.citydoctor.connect.edGe.CppReferenceHandlingBase#createCppObject()
*/
public void createCppObject() throws IllegalStateException,
OutOfMemoryError {
if (0L != ptrToCppObject) {
throw new IllegalStateException(
"Can't create new C++ object, there is allready one!");
}
// Maybe an exception is thrown
long tmpPointer = createCppClass(
isUseBool(),
isPrintBoolInfo(),
isExportIntermediateStages(),
isUseMinkowski(),
isPrintMinkowskiInfo(),
getMinkowskiCubeSize(),
isRotateMinkowskiCube()
);
ptrToCppObject = tmpPointer;
}
@Override
public void disposeCppObject() throws NativePointerCastException {
if (0L != ptrToCppObject) {
disposeCppClass(ptrToCppObject);
ptrToCppObject = 0L;
}
}
public void setUseBool(boolean useBool) {
this.useBool = useBool;
}
public void setPrintBoolInfo(boolean printBoolInfo) {
this.printBoolInfo = printBoolInfo;
}
public void setExportIntermediateStages(boolean exportIntermediateStages) {
this.exportIntermediateStages = exportIntermediateStages;
}
public void setUseMinkowski(boolean useMinkowski) {
this.useMinkowski = useMinkowski;
}
public void setPrintMinkowskiInfo(boolean printMinkowskiInfo) {
this.printMinkowskiInfo = printMinkowskiInfo;
}
public void setMinkowskiCubeSize(double minkowskiCubeSize) {
this.minkowskiCubeSize = minkowskiCubeSize;
}
public void setRotateMinkowskiCube(boolean rotateMinkowskiCube) {
this.rotateMinkowskiCube = rotateMinkowskiCube;
}
public boolean isUseBool() {
return useBool;
}
public boolean isPrintBoolInfo() {
return printBoolInfo;
}
public boolean isExportIntermediateStages() {
return exportIntermediateStages;
}
public boolean isUseMinkowski() {
return useMinkowski;
}
public boolean isPrintMinkowskiInfo() {
return printMinkowskiInfo;
}
public double getMinkowskiCubeSize() {
return minkowskiCubeSize;
}
public boolean isRotateMinkowskiCube() {
return rotateMinkowskiCube;
}
}
package de.hft.stuttgart.citydoctor2.connect.edge;
import de.hft.stuttgart.citydoctor2.connect.edge.CppReferenceHandlingBase;
import de.hft.stuttgart.citydoctor2.connect.edge.NativePointerCastException;
public class AutoProSettingsExport extends CppReferenceHandlingBase {
private native long createCppClass(
boolean exportMesh,
String meshFileName,
String meshFilePath,
boolean exportIV,
String ivFileName,
String ivFilePath,
boolean exportSTEP,
String stepFileName,
String stepFilePath,
boolean exportCityGML,
String cityGMLFileName,
String cityGMLFilePath,
boolean exportValidBuildingsOnly,
boolean moveBuildingsToOrigin,
boolean exportIntermediateStagesComplete,
boolean oneSolidPerBuilding,
double minDistToOrigin_X,
double minDistToOrigin_Y,
double minDistToOrigin_Z
)
throws OutOfMemoryError;
private native void disposeCppClass(long ptrToCppAutoPro)
throws NativePointerCastException;
private boolean exportMesh;
private String meshFileName;
private String meshFilePath;
private boolean exportIV;
private String ivFileName;
private String ivFilePath;
private boolean exportSTEP;
private String stepFileName;
private String stepFilePath;
private boolean exportCityGML;
private String cityGMLFileName;
private String cityGMLFilePath;
private boolean exportValidBuildingsOnly;
private boolean moveBuildingsToOrigin;
private boolean exportIntermediateStagesComplete;
private boolean oneSolidPerBuilding;
double minDistToOrigin_X;
double minDistToOrigin_Y;
double minDistToOrigin_Z;
public AutoProSettingsExport() {
setExportMesh(false);
setMeshFileName("");
setMeshFilePath("");
setExportIV(false);
setIVFileName("");
setIVFilePath("");
setExportSTEP(false);
setSTEPFileName("");
setSTEPFilePath("");
setExportCityGML(false);
setCityGMLFileName("");
setCityGMLFilePath("");
setExportValidBuildingsOnly(false);
setMoveBuildingsToOrigin(false);
setExportIntermediateStagesComplete(false);
setExportStepWithOneSolidPerBuilding(false);
setMinDistToOrigin_X(0);
setMinDistToOrigin_Y(0);
setMinDistToOrigin_Z(0);
}
/**
* Creates an C++ feature object
*
* @throws IllegalStateException
* Thrown if the encapsulated "long-Pointer" isn't 0
* @throws NativeOutOfMemoryException
* If there is no more memory on the native side
*
* @see {@link disposeCppObject}
* @see de.hft.stuttgart.citydoctor.connect.edGe.CppReferenceHandlingBase#createCppObject()
*/
public void createCppObject() throws IllegalStateException,
OutOfMemoryError {
if (0L != ptrToCppObject) {
throw new IllegalStateException(
"Can't create new C++ object, there is allready one!");
}
// Maybe an exception is thrown
long tmpPointer = createCppClass(
isExportMesh(),
getMeshFileName(),
getMeshFilePath(),
isExportIV(),
getIVFileName(),
getIVFilePath(),
isExportSTEP(),
getSTEPFileName(),
getSTEPFilePath(),
isExportCityGML(),
getCityGMLFileName(),
getCityGMLFilePath(),
getExportValidBuildingsOnly(),
getMoveBuildingsToOrigin(),
getExportIntermediateStagesComplete(),
getExportStepWithOneSolidPerBuilding(),
getMinDistToOrigin_X(),
getMinDistToOrigin_Y(),
getMinDistToOrigin_Z()
);
ptrToCppObject = tmpPointer;
}
@Override
public void disposeCppObject() throws NativePointerCastException {
if (0L != ptrToCppObject) {
disposeCppClass(ptrToCppObject);
ptrToCppObject = 0L;
}
}
public void setExportMesh(boolean exportMesh) {
this.exportMesh = exportMesh;
}
public void setMeshFileName(String meshFileName) {
this.meshFileName = meshFileName;
}
public void setMeshFilePath (String meshFilePath) {
this.meshFilePath = meshFilePath;
}
public void setExportIV(boolean exportIV) {
this.exportIV = exportIV;
}
public void setIVFileName(String ivFileName) {
this.ivFileName = ivFileName;
}
public void setIVFilePath (String ivFilePath) {
this.ivFilePath = ivFilePath;
}
public void setExportSTEP(boolean exportSTEP) {
this.exportSTEP = exportSTEP;
}
public void setSTEPFileName(String stepFileName) {
this.stepFileName = stepFileName;
}
public void setSTEPFilePath (String stepFilePath) {
this.stepFilePath = stepFilePath;
}
public void setExportCityGML(boolean exportCityGML) {
this.exportCityGML = exportCityGML;
}
public void setCityGMLFileName(String cityGMLFileName) {
this.cityGMLFileName = cityGMLFileName;
}
public void setCityGMLFilePath(String cityGMLFilePath) {
this.cityGMLFilePath = cityGMLFilePath;
}
public void setExportValidBuildingsOnly(boolean exportValidBuildingsOnly) {
this.exportValidBuildingsOnly = exportValidBuildingsOnly;
}
public void setMoveBuildingsToOrigin(boolean moveBuildingsToOrigin) {
this.moveBuildingsToOrigin = moveBuildingsToOrigin;
}
public void setExportIntermediateStagesComplete(boolean exportIntermediateStagesComplete) {
this.exportIntermediateStagesComplete = exportIntermediateStagesComplete;
}
public void setExportStepWithOneSolidPerBuilding(boolean oneSolidPerBuilding) {
this.oneSolidPerBuilding = oneSolidPerBuilding;
}
public void setMinDistToOrigin_X(double minDistToOrigin_X) {
this.minDistToOrigin_X = minDistToOrigin_X;
}
public void setMinDistToOrigin_Y(double minDistToOrigin_Y) {
this.minDistToOrigin_Y = minDistToOrigin_Y;
}
public void setMinDistToOrigin_Z(double minDistToOrigin_Z) {
this.minDistToOrigin_Z = minDistToOrigin_Z;
}
public boolean isExportMesh() {
return exportMesh;
}
public String getMeshFileName() {
return meshFileName;
}
public String getMeshFilePath () {
return meshFilePath;
}
public boolean isExportIV() {
return exportIV;
}
public String getIVFileName() {
return ivFileName;
}
public String getIVFilePath () {
return ivFilePath;
}
public boolean isExportSTEP() {
return exportSTEP;
}
public String getSTEPFileName() {
return stepFileName;
}
public String getSTEPFilePath () {
return stepFilePath;
}
public boolean isExportCityGML() {
return exportCityGML;
}
public String getCityGMLFileName() {
return cityGMLFileName;
}
public String getCityGMLFilePath() {
return cityGMLFilePath;
}
public boolean getExportValidBuildingsOnly() {
return exportValidBuildingsOnly;
}
public boolean getMoveBuildingsToOrigin() {
return moveBuildingsToOrigin;
}
public boolean getExportIntermediateStagesComplete() {
return exportIntermediateStagesComplete;
}
public boolean getExportStepWithOneSolidPerBuilding() {
return oneSolidPerBuilding;
}
public double getMinDistToOrigin_X() {
return minDistToOrigin_X;
}
public double getMinDistToOrigin_Y() {
return minDistToOrigin_Y;
}
public double getMinDistToOrigin_Z() {
return minDistToOrigin_Z;
}
}
package de.hft.stuttgart.citydoctor2.connect.edge;
import de.hft.stuttgart.citydoctor2.connect.edge.CppReferenceHandlingBase;
import de.hft.stuttgart.citydoctor2.connect.edge.NativePointerCastException;
public class AutoProSettingsGeneral extends CppReferenceHandlingBase {
private native long createCppClass(
boolean printBuildingInfo,
boolean printStatus,
boolean printSmallestAngle,
boolean printNumberOFSmallAngles,
double smallAngleTolerance,
boolean printShortestEdge,
boolean printNumberOfShortEdges,
double shortEdgesTolerance,
boolean printVolume,
boolean printNumberOfFacesAndVertices
)
throws OutOfMemoryError;
private native void disposeCppClass(long ptrToCppAutoPro)
throws NativePointerCastException;
private boolean printBuildingInfo;
private boolean printStatus;
private boolean printSmallestAngle;
private boolean printNumberOfSmallAngles;
private double smallAngleTolerance;
private boolean printShortestEdge;
private boolean printNumberOfShortEdges;
private double shortEdgesTolerance;
private boolean printVolume;
private boolean printNumberOfFacesAndVertices;
public AutoProSettingsGeneral() {
setPrintBuildingInfo(false);
setPrintStatus(false);
setPrintSmallestAngle(false);
setPrintNumberOfSmallAngles(false);
setSmallAngleTolerance(0.1);
setPrintShortestEdge(false);
setPrintNumberOfShortEdges(false);
setShortEdgesTolerance(0.1);
setPrintVolume(false);
setPrintNumberOfFacesAndVertices(false);
}
/**
* Creates an C++ feature object
*
* @throws IllegalStateException
* Thrown if the encapsulated "long-Pointer" isn't 0
* @throws NativeOutOfMemoryException
* If there is no more memory on the native side
*
* @see {@link disposeCppObject}
* @see de.hft.stuttgart.citydoctor.connect.edGe.CppReferenceHandlingBase#createCppObject()
*/
public void createCppObject() throws IllegalStateException,
OutOfMemoryError {
if (0L != ptrToCppObject) {
throw new IllegalStateException(
"Can't create new C++ object, there is allready one!");
}
// Maybe an exception is thrown
long tmpPointer = createCppClass(
isPrintBuildingInfo(),
isPrintStatus(),
isPrintSmallestAngle(),
isPrintNumberOfSmallAngles(),
getSmallAngleTolerance(),
isPrintShortestEdge(),
isPrintNumberOfShortEdges(),
getShortEdgesTolerance(),
isPrintVolume(),
isPrintNumberOfFacesAndVertices()
);
ptrToCppObject = tmpPointer;
}
@Override
public void disposeCppObject() throws NativePointerCastException {
if (0L != ptrToCppObject) {
disposeCppClass(ptrToCppObject);
ptrToCppObject = 0L;
}
}
public void setPrintBuildingInfo(boolean printBuildingInfo) {
this.printBuildingInfo = printBuildingInfo;
}
public void setPrintStatus(boolean printStatus) {
this.printStatus = printStatus;
}
public void setPrintSmallestAngle(boolean printSmallestAngle) {
this.printSmallestAngle = printSmallestAngle;
}
public void setPrintNumberOfSmallAngles(boolean printNumberOfSmallAngles) {
this.printNumberOfSmallAngles = printNumberOfSmallAngles;
}
public void setSmallAngleTolerance(double smallAngleTolerance) {
this.smallAngleTolerance = smallAngleTolerance;
}
public void setPrintShortestEdge(boolean printShortestEdge) {
this.printShortestEdge = printShortestEdge;
}
public void setPrintNumberOfShortEdges(boolean printNumberOfShortEdges) {
this.printNumberOfShortEdges = printNumberOfShortEdges;
}
public void setShortEdgesTolerance(double shortEdgesTolerance) {
this.shortEdgesTolerance = shortEdgesTolerance;
}
public void setPrintVolume(boolean printVolume) {
this.printVolume = printVolume;
}
public void setPrintNumberOfFacesAndVertices(boolean printNumberOfFacesAndVertices) {
this.printNumberOfFacesAndVertices = printNumberOfFacesAndVertices;
}
public boolean isPrintBuildingInfo() {
return printBuildingInfo;
}
public boolean isPrintStatus() {
return printStatus;
}
public boolean isPrintSmallestAngle() {
return printSmallestAngle;
}
public boolean isPrintNumberOfSmallAngles() {
return printNumberOfSmallAngles;
}
public double getSmallAngleTolerance() {
return smallAngleTolerance;
}
public boolean isPrintShortestEdge() {
return printShortestEdge;
}
public boolean isPrintNumberOfShortEdges() {
return printNumberOfShortEdges;
}
public double getShortEdgesTolerance() {
return shortEdgesTolerance;
}
public boolean isPrintVolume() {
return printVolume;
}
public boolean isPrintNumberOfFacesAndVertices() {
return printNumberOfFacesAndVertices;
}
}
package de.hft.stuttgart.citydoctor2.connect.edge;
import de.hft.stuttgart.citydoctor2.connect.edge.CppReferenceHandlingBase;
import de.hft.stuttgart.citydoctor2.connect.edge.NativePointerCastException;
public class AutoProSettingsMerge extends CppReferenceHandlingBase {
private native long createCppClass(
boolean useMerge,
boolean exportIntermediateStages,
boolean printMergeInfo,
double eps_PointEquality,
double eps_Parallelity
)
throws OutOfMemoryError;
private native void disposeCppClass(long ptrToCppAutoPro)
throws NativePointerCastException;
private boolean useMerge;
private boolean exportIntermediateStages;
private boolean printMergeInfo;
private double eps_PointEquality;
private double eps_Parallelity;
public AutoProSettingsMerge() {
setUseMerge(false);
setExportIntermediateStages(false);
setPrintMergeInfo(false);
setEps_PointEquality(0.01);
setEps_Parallelity(0.01);
}
/**
* Creates an C++ feature object
*
* @throws IllegalStateException
* Thrown if the encapsulated "long-Pointer" isn't 0
* @throws NativeOutOfMemoryException
* If there is no more memory on the native side
*
* @see {@link disposeCppObject}
* @see de.hft.stuttgart.citydoctor.connect.edGe.CppReferenceHandlingBase#createCppObject()
*/
public void createCppObject() throws IllegalStateException,
OutOfMemoryError {
if (0L != ptrToCppObject) {
throw new IllegalStateException(
"Can't create new C++ object, there is allready one!");
}
// Maybe an exception is thrown
long tmpPointer = createCppClass(
isUseMerge(),
isExportIntermediateStages(),
isPrintMergeInfo(),
getEps_PointEquality(),
getEps_Parallelity()
);
ptrToCppObject = tmpPointer;
}
@Override
public void disposeCppObject() throws NativePointerCastException {
if (0L != ptrToCppObject) {
disposeCppClass(ptrToCppObject);
ptrToCppObject = 0L;
}
}
public void setUseMerge(boolean useMerge) {
this.useMerge = useMerge;
}
public void setExportIntermediateStages(boolean exportIntermediateStages) {
this.exportIntermediateStages = exportIntermediateStages;
}
public void setPrintMergeInfo(boolean printMergeInfo) {
this.printMergeInfo = printMergeInfo;
}
public void setEps_PointEquality(double eps_PointEquality) {
this.eps_PointEquality = eps_PointEquality;
}
public void setEps_Parallelity(double eps_Parallelity) {
this.eps_Parallelity = eps_Parallelity;
}
public boolean isUseMerge() {
return useMerge;
}
public boolean isExportIntermediateStages() {
return exportIntermediateStages;
}
public boolean isPrintMergeInfo() {
return printMergeInfo;
}
public double getEps_PointEquality() {
return eps_PointEquality;
}
public double getEps_Parallelity() {
return eps_Parallelity;
}
}
/** --------------------------------------------------
* Hochschule fuer Technik Stuttgart
* Fachbereich Vermessung , Informatik und Mathematik
* Schellingstr . 24
* D - 70174 Stuttgart
*
* Projekt CityDoktor
*
* Copyright (c) 2011 HFT Stuttgart. All rights reserved.
* HFT Stuttgart and its licensors retain all intellectual property and
* proprietary rights in and to this software and related documentation.
* Any use, reproduction, disclosure, or distribution of this software
* and related documentation without an express license agreement from
* HFT Stuttgart is strictly prohibited.
*
* Please refer to the applicable HFT Stuttgart end user license agreement (EULA)
* associated with this source code for terms and conditions that govern
* your use of this HFT Stuttgart software.
*
* @author PiR
* @version 1.0
* created: 17.12.2017
*/
package de.hft.stuttgart.citydoctor2.gui;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
/**
* Diese Klasse ermoeglicht den Zugriff auf das ResourceBundle mit den
* lokalisierten Strings.
*
*/
public class CDAutoProGuiMessages {
private static final String BUNDLE_NAME = "de.hft.stuttgart.citydoctor2.gui.cdautoproguimessages"; //$NON-NLS-1$
private CDAutoProGuiMessages() {
}
/**
* Diese Methode laedt einen String aus dem ResourceBundle.
*
* @param key der Schluessel des Strings
* @return der String
*/
public static String getString(String key) {
ResourceBundle RESOURCE_BUNDLE = ResourceBundle
.getBundle(BUNDLE_NAME, Locale.getDefault());
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return '!' + key + '!';
}
}
}
CityDoctorAutoProFrame.WindowTitle=CityDoctor Automated Processing Tool
CityDoctorAutoProFrame.autoProActionTitle=Automated Processing
CityDoctorAutoProFrame.autoProActionText=Automated Processing
AutoProWindow.PreferencesWindowTitle = Automated Processing Window
// EXPORT
AutoProWindow.exportMeshPanel = export Mesh File via CPP (only original model can be printed)
AutoProWindow.exportMeshButtonTitle = export Mesh
AutoProWindow.exportMeshButtonDescription = export Mesh File via CPP
AutoProWindow.meshExportFileNameDescription = Hier kann optional der Name fuer die Mesh Datei angegeben werden
AutoProWindow.meshExportPathDescription = Hier kann optional der Speicherort fuer die Mesh Datei angegeben werden
AutoProWindow.exportMeshReportDialogTitle = Export Mesh File to...
AutoProWindow.exportIVPanel = export IV File via CPP
AutoProWindow.exportIVButtonTitle = export IV
AutoProWindow.exportIVButtonDescription = export IV File via CPP
AutoProWindow.ivExportFileNameDescription = Hier kann optional der Name fuer die IV Datei angegeben werden
AutoProWindow.ivExportPathDescription = Hier kann optional der Speicherort fuer die IV Datei angegeben werden
AutoProWindow.exportIVReportDialogTitle = Export IV File to...
AutoProWindow.exportSTEPPanel = export STEP File via CPP
AutoProWindow.exportSTEPButtonTitle = export STEP
AutoProWindow.exportSTEPButtonDescription = export STEP File via CPP
AutoProWindow.stepExportFileNameDescription = Hier kann optional der Name fuer die STEP Datei angegeben werden
AutoProWindow.stepExportPathDescription = Hier kann optional der Speicherort fuer die STEP Datei angegeben werden
AutoProWindow.exportSTEPReportDialogTitle = Export STEP File to...
AutoProWindow.exportGMLPanel = export CityGML File via CPP
AutoProWindow.exportGMLButtonTitle = export CityGML
AutoProWindow.exportGMLButtonDescription = export CityGML File via CPP
AutoProWindow.gmlExportFileNameDescription = Hier kann optional der Name fuer die CityGML Datei angegeben werden
AutoProWindow.gmlExportPathDescription = Hier kann optional der Speicherort fuer die CityGML Datei angegeben werden
AutoProWindow.exportGMLReportDialogTitle = Export CityGML File to...
AutoProWindow.exportSettingsPanel = General Setting for Export
//
AutoProWindow.printInfoPanel = General Print Info Settings
AutoProWindow.comparisonPanel = Print Settings for validation/comparison
// BOOL
AutoProWindow.boolPanel = Bool and Minkowski settings
AutoProWindow.boolButtonTitle = use Bool
AutoProWindow.boolButtonDescription = uses CGALs union operator to merge houses
AutoProWindow.boolInfoButtonTitle = Print Bool info
AutoProWindow.boolInfoButtonDescription = Print Bool info into JAVA terminal
AutoProWindow.minkowskiPanel = Minkowski settings
AutoProWindow.minkowskiButtonTitle = use Minkowski
AutoProWindow.minkowskiButtonDescription = uses CGALs minkowski operations
AutoProWindow.minkowskiInfoButtonTitle = Print Minkowski info
AutoProWindow.minkowskiInfoButtonDescription = Print Minkowski info into JAVA terminal
AutoProWindow.minkowskiCubeDescription = Sets the size of the minkowski cube (size in meter)
AutoProWindow.minkowskiCubeSliderDescription = Sets the size of the minkowski cube (size in meter)
AutoProWindow.boolMinkowski_exportIntermediateStagesCheckBoxButtonTitle = export intermediate stages
AutoProWindow.boolMinkowski_exportIntermediateStagesCheckBoxButtonDescription = if selected writes the intermediate stages of the algorithm to .iv and .step
// MERGE
AutoProWindow.mergePanel = Merge settings
AutoProWindow.mergeButtonTitle = use Merge
AutoProWindow.mergeButtonDescription = merges parallel, connected faces and edges and collapses degenerated faces and edges
AutoProWindow.merge_exportIntermediateStagesCheckBoxButtonTitle = export intermediate stages
AutoProWindow.merge_exportIntermediateStagesCheckBoxButtonDescription = if selected writes the intermediate stages of the algorithm to .iv and .step
AutoProWindow.mergeInfoButtonTitle = Print Merge info
AutoProWindow.mergeInfoButtonDescription = Print Merge info into JAVA terminal
AutoProWindow.eps_PointEqualitySliderDescription = Point Equality Tolerance (size in meter)
AutoProWindow.eps_PointEqualityDescription = if an edge is shorter than this tolerance the edge degenerates to a vertex
AutoProWindow.eps_ParallelitySliderDescription = Parallelity Tolerance (angle in degrees)
AutoProWindow.eps_ParallelityDescription = two vectors v1, v2 or planes (v are the planes' normal) are (anti-)parallel if |(v1 % v2) - (v1.length * v1.length)| < eps
// OK CANCEL
AutoProWindow.OkButtonLabel = DO IT
AutoProWindow.CancelButtonLabel = Cancel
set CLASSPATH=.\target\classes;..\CityDoctorModel\target\classes
set PATH="c:\Program Files (x86)\Java\jdk1.8.0_25\bin"
javah -jni de.hft.stuttgart.citydoctor2.CppInitializer
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.CppPolygonHealing
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.CppHealResult
javah -jni de.hft.stuttgart.citydoctor2.connect.edge.CppFeature
pause
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2">
<ns prefix="gml" uri="http://www.opengis.net/gml"/>
<ns prefix="bldg" uri="http://www.opengis.net/citygml/building/2.0"/>
<pattern>
<rule context="//*:Building">
<assert test="count(descendant::*:lod1Solid) &gt; 0 or count(descendant::*:lod2Solid) &gt; 0 or count(descendant::*:lod3Solid) &gt; 0 or count(descendant::*:lod4Solid) &gt; 0"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||any solid</assert>
</rule>
<rule context="//*:BuildingPart">
<assert test="count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1"><value-of select="ancestor::*:Building/@*:id"/>||<value-of select="@gml:id | @id"/>||SE_ATTRIBUTE_MISSING||any solid</assert>
</rule>
</pattern>
</schema>
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId>
<version>3.14.1</version>
<relativePath></relativePath>
</parent>
<artifactId>CityDoctorHealer</artifactId>
<dependencies>
<dependency>
<groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorModel</artifactId>
</dependency>
<dependency>
<groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorValidation</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>1.0-alpha-11</version>
<extensions>true</extensions>
<configuration>
<javahClassNames>
<javahClassName>de.hft.stuttgart.citydoctor2.connect.edge.CppFeature</javahClassName>
<javahClassName>de.hft.stuttgart.citydoctor2.CppInitializer</javahClassName>
<javahClassName>de.hft.stuttgart.citydoctor2.connect.edge.CppHealResult</javahClassName>
</javahClassNames>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<core:CityModel xmlns:xAL="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:wtr="http://www.opengis.net/citygml/waterbody/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:tex="http://www.opengis.net/citygml/texturedsurface/2.0" xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:veg="http://www.opengis.net/citygml/vegetation/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:tran="http://www.opengis.net/citygml/transportation/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:grp="http://www.opengis.net/citygml/cityobjectgroup/2.0" xmlns:tun="http://www.opengis.net/citygml/tunnel/2.0" xmlns:frn="http://www.opengis.net/citygml/cityfurniture/2.0" xmlns:brid="http://www.opengis.net/citygml/bridge/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:luse="http://www.opengis.net/citygml/landuse/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/waterbody/2.0 http://schemas.opengis.net/citygml/waterbody/2.0/waterBody.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/texturedsurface/2.0 http://schemas.opengis.net/citygml/texturedsurface/2.0/texturedSurface.xsd http://www.opengis.net/citygml/vegetation/2.0 http://schemas.opengis.net/citygml/vegetation/2.0/vegetation.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/transportation/2.0 http://schemas.opengis.net/citygml/transportation/2.0/transportation.xsd http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/cityobjectgroup/2.0 http://schemas.opengis.net/citygml/cityobjectgroup/2.0/cityObjectGroup.xsd http://www.opengis.net/citygml/tunnel/2.0 http://schemas.opengis.net/citygml/tunnel/2.0/tunnel.xsd http://www.opengis.net/citygml/cityfurniture/2.0 http://schemas.opengis.net/citygml/cityfurniture/2.0/cityFurniture.xsd http://www.opengis.net/citygml/bridge/2.0 http://schemas.opengis.net/citygml/bridge/2.0/bridge.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd http://www.opengis.net/citygml/landuse/2.0 http://schemas.opengis.net/citygml/landuse/2.0/landUse.xsd">
<core:cityObjectMember>
<bldg:Building gml:id="CityDoctor_1554196053314_13">
<bldg:lod2Solid>
<gml:Solid>
<gml:exterior>
<gml:CompositeSurface>
<gml:surfaceMember>
<gml:Polygon gml:id="CityDoctor_1554196053313_1">
<gml:exterior>
<gml:LinearRing gml:id="CityDoctor_1554196053313_2">
<gml:posList srsDimension="3">4.160428746108475 7.172506867550141 10.540765429820073 4.160428746108475 7.172506867550141 10.540765429820073 9.714428746112201 8.075506867483085 10.540765429820073 9.714428746112201 8.075506867483085 10.540765429820073 8.88942874610056 13.090506867147809 10.540765429820073 8.88942874610056 13.090506867147809 10.540765429820073 3.3354287460968335 12.183506867490536 10.540765429820073 3.3354287460968335 12.183506867490536 10.540765429820073 4.160428746108475 7.172506867550141 10.540765429820073</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id="CityDoctor_1554196053313_3">
<gml:exterior>
<gml:LinearRing gml:id="CityDoctor_1554196053313_4">
<gml:posList srsDimension="3">3.3354287460968335 12.183506867490536 7.815765429820079 8.88942874610056 13.090506867147809 7.815765429820079 9.714428746112201 8.075506867483085 7.815765429820079 4.160428746108475 7.172506867550141 7.815765429820079 3.3354287460968335 12.183506867490536 7.815765429820079</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id="CityDoctor_1554196053313_5">
<gml:exterior>
<gml:LinearRing gml:id="CityDoctor_1554196053313_6">
<gml:posList srsDimension="3">4.160428746108475 7.172506867550141 10.540765429820073 4.160428746108475 7.172506867550141 10.540765429820073 4.160428746108475 7.172506867550141 7.815765429820079 9.714428746112201 8.075506867483085 7.815765429820079 9.714428746112201 8.075506867483085 10.540765429820073 9.714428746112201 8.075506867483085 10.540765429820073 4.160428746108475 7.172506867550141 10.540765429820073</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id="CityDoctor_1554196053313_7">
<gml:exterior>
<gml:LinearRing gml:id="CityDoctor_1554196053313_8">
<gml:posList srsDimension="3">9.714428746112201 8.075506867483085 10.540765429820073 9.714428746112201 8.075506867483085 10.540765429820073 9.714428746112201 8.075506867483085 7.815765429820079 8.88942874610056 13.090506867147809 7.815765429820079 8.88942874610056 13.090506867147809 10.540765429820073 8.88942874610056 13.090506867147809 10.540765429820073 9.714428746112201 8.075506867483085 10.540765429820073</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id="CityDoctor_1554196053313_9">
<gml:exterior>
<gml:LinearRing gml:id="CityDoctor_1554196053313_10">
<gml:posList srsDimension="3">8.88942874610056 13.090506867147809 10.540765429820073 8.88942874610056 13.090506867147809 10.540765429820073 8.88942874610056 13.090506867147809 7.815765429820079 3.3354287460968335 12.183506867490536 7.815765429820079 3.3354287460968335 12.183506867490536 10.540765429820073 3.3354287460968335 12.183506867490536 10.540765429820073 8.88942874610056 13.090506867147809 10.540765429820073</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
<gml:surfaceMember>
<gml:Polygon gml:id="CityDoctor_1554196053313_11">
<gml:exterior>
<gml:LinearRing gml:id="CityDoctor_1554196053313_12">
<gml:posList srsDimension="3">3.3354287460968335 12.183506867490536 10.540765429820073 3.3354287460968335 12.183506867490536 10.540765429820073 3.3354287460968335 12.183506867490536 7.815765429820079 4.160428746108475 7.172506867550141 7.815765429820079 4.160428746108475 7.172506867550141 10.540765429820073 4.160428746108475 7.172506867550141 10.540765429820073 3.3354287460968335 12.183506867490536 10.540765429820073</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:CompositeSurface>
</gml:exterior>
</gml:Solid>
</bldg:lod2Solid>
</bldg:Building>
</core:cityObjectMember>
</core:CityModel>
\ No newline at end of file
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>zip</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>libs</outputDirectory>
<excludes>
<exclude>${project.groupId}:${project.artifactId}:jar:*</exclude>
</excludes>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>./assets/</directory>
<useDefaultExcludes>true</useDefaultExcludes>
<outputDirectory>./assets</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>${project.artifactId}-${project.version}.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.basedir}/src/assembly</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>start.bat</include>
<include>streamingStandardConfig.yml</include>
<include>TestBuilding1.gml</include>
<include>checkForSolid.xml</include>
</includes>
<filtered>true</filtered>
</fileSet>
</fileSets>
</assembly>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2">
<ns prefix="gml" uri="http://www.opengis.net/gml"/>
<ns prefix="bldg" uri="http://www.opengis.net/citygml/building/2.0"/>
<pattern>
<rule context="//*:Building">
<assert test="count(descendant::*:lod1Solid) &gt; 0 or count(descendant::*:lod2Solid) &gt; 0 or count(descendant::*:lod3Solid) &gt; 0 or count(descendant::*:lod4Solid) &gt; 0"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||any solid</assert>
</rule>
<rule context="//*:BuildingPart">
<assert test="count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1"><value-of select="ancestor::*:Building/@*:id"/>||<value-of select="@gml:id | @id"/>||SE_ATTRIBUTE_MISSING||any solid</assert>
</rule>
</pattern>
</schema>
java -jar ${project.artifactId}-${project.version}.jar -in TestBuilding1.gml -out TestBuilding1Fixed.gml -config streamingStandardConfig.yml -xmlReport output.xml
pause
\ No newline at end of file
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