Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
QualityADE
Commits
026d05fe
Commit
026d05fe
authored
Feb 25, 2021
by
Matthias Betz
Browse files
updating to quality ade 0.1.1
Renaming SEM to SE
parent
24ea0bbe
Pipeline
#2000
passed with stage
in 4 seconds
Changes
12
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
citygml4j-quality-ade/pom.xml
View file @
026d05fe
...
...
@@ -4,7 +4,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
de.hft.stuttgart
</groupId>
<artifactId>
citygml4j-quality-ade
</artifactId>
<version>
0.1.
0
</version>
<version>
0.1.
1
</version>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
...
...
citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java
View file @
026d05fe
...
...
@@ -28,7 +28,7 @@ import de.hft.stuttgart.quality.marshaller.QualityAdeUnmarshaller;
public
class
QualityADEContext
implements
ADEContext
{
private
final
List
<
ADEModule
>
modules
=
Collections
.
singletonList
(
QualityADEModule
.
V0_1
);
private
final
List
<
ADEModule
>
modules
=
Collections
.
singletonList
(
QualityADEModule
.
V0_1
_1
);
@Override
public
List
<
ADEModule
>
getADEModules
()
{
...
...
citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java
View file @
026d05fe
...
...
@@ -32,9 +32,9 @@ import de.hft.stuttgart.quality.model.Validation;
public
class
QualityADEModule
extends
ADEModule
{
public
static
final
String
NAMESPACE_URI
=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
;
public
static
final
String
NAMESPACE_URI
=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1
.1
"
;
public
static
final
QualityADEModule
V0_1
=
new
QualityADEModule
();
public
static
final
QualityADEModule
V0_1
_1
=
new
QualityADEModule
();
private
HashMap
<
String
,
Class
<?
extends
AbstractFeature
>>
features
;
private
HashSet
<
String
>
featureProperties
;
...
...
citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/marshaller/QualityAdeMarshaller.java
View file @
026d05fe
...
...
@@ -90,7 +90,8 @@ public class QualityAdeMarshaller implements ADEMarshaller {
lock
.
lock
();
try
{
if
(
elementMapper
==
null
)
{
elementMapper
=
TypeMapper
.<
JAXBElement
<?>>
create
().
with
(
Validation
.
class
,
this
::
createValidation
)
elementMapper
=
TypeMapper
.<
JAXBElement
<?>>
create
()
.
with
(
Validation
.
class
,
this
::
createValidation
)
.
with
(
ValidationResult
.
class
,
this
::
createValidationResult
);
}
}
finally
{
...
...
@@ -106,7 +107,8 @@ public class QualityAdeMarshaller implements ADEMarshaller {
lock
.
lock
();
try
{
if
(
typeMapper
==
null
)
{
typeMapper
=
TypeMapper
.
create
().
with
(
Validation
.
class
,
this
::
marshalValidation
)
typeMapper
=
TypeMapper
.
create
()
.
with
(
Validation
.
class
,
this
::
marshalValidation
)
.
with
(
ValidationResult
.
class
,
this
::
marshalValidationResult
)
.
with
(
ConsecutivePointsSame
.
class
,
this
::
marshalConsecutivePointsSame
)
.
with
(
TooFewPoints
.
class
,
this
::
marshalTooFewPoints
)
...
...
@@ -139,7 +141,7 @@ public class QualityAdeMarshaller implements ADEMarshaller {
}
private
ValidationType
marshalValidation
(
Validation
src
)
{
ValidationType
dest
=
factory
.
create
ValidationType
();
ValidationType
dest
=
new
ValidationType
();
if
(
src
.
isSetDateTime
())
{
dest
.
setValidationDate
(
src
.
getValidationDate
());
...
...
citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeMissingType.java
View file @
026d05fe
...
...
@@ -17,7 +17,7 @@ package de.hft.stuttgart.quality.model.jaxb;
import
javax.xml.bind.annotation.XmlRootElement
;
@XmlRootElement
(
name
=
"SE
M
_ATTRIBUTE_MISSING"
)
@XmlRootElement
(
name
=
"SE_ATTRIBUTE_MISSING"
)
public
class
AttributeMissingType
extends
ValidationErrorType
{
private
String
childId
;
...
...
citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/AttributeWrongValueType.java
View file @
026d05fe
...
...
@@ -17,7 +17,7 @@ package de.hft.stuttgart.quality.model.jaxb;
import
javax.xml.bind.annotation.XmlRootElement
;
@XmlRootElement
(
name
=
"SE
M
_ATTRIBUTE_WRONG_VALUE"
)
@XmlRootElement
(
name
=
"SE_ATTRIBUTE_WRONG_VALUE"
)
public
class
AttributeWrongValueType
extends
ValidationErrorType
{
private
String
childId
;
...
...
citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/ErrorId.java
View file @
026d05fe
...
...
@@ -25,6 +25,6 @@ public enum ErrorId {
GE_P_INTERSECTING_RINGS
,
GE_P_HOLE_OUTSIDE
,
GE_P_ORIENTATION_RINGS_SAME
,
GE_P_INNER_RINGS_NESTED
,
GE_S_TOO_FEW_POLYGONS
,
GE_S_NOT_CLOSED
,
GE_S_NON_MANIFOLD_EDGE
,
GE_S_POLYGON_WRONG_ORIENTATION
,
GE_S_ALL_POLYGONS_WRONG_ORIENTATION
,
GE_S_NON_MANIFOLD_VERTEX
,
GE_S_SELF_INTERSECTION
,
GE_S_MULTIPLE_CONNECTED_COMPONENTS
,
SE
M
_ATTRIBUTE_WRONG_VALUE
,
SE
M
_ATTRIBUTE_MISSING
GE_S_MULTIPLE_CONNECTED_COMPONENTS
,
SE_ATTRIBUTE_WRONG_VALUE
,
SE_ATTRIBUTE_MISSING
}
citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/RequirementId.java
View file @
026d05fe
...
...
@@ -25,6 +25,6 @@ public enum RequirementId {
R_GE_P_ORIENTATION_RINGS_SAME
,
R_GE_P_INNER_RINGS_NESTED
,
R_GE_S_TOO_FEW_POLYGONS
,
R_GE_S_NOT_CLOSED
,
R_GE_S_NON_MANIFOLD_EDGE
,
R_GE_S_POLYGON_WRONG_ORIENTATION
,
R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION
,
R_GE_S_NON_MANIFOLD_VERTEX
,
R_GE_S_SELF_INTERSECTION
,
R_GE_S_MULTIPLE_CONNECTED_COMPONENTS
,
R_SE
M
_ATTRIBUTES_EXISTING
,
R_SE
M
_ATTRIBUTES_CORRECT
R_SE_ATTRIBUTES_EXISTING
,
R_SE_ATTRIBUTES_CORRECT
}
citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/jaxb/package-info.java
View file @
026d05fe
...
...
@@ -13,6 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@javax
.
xml
.
bind
.
annotation
.
XmlSchema
(
namespace
=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
,
elementFormDefault
=
javax
.
xml
.
bind
.
annotation
.
XmlNsForm
.
QUALIFIED
,
xmlns
=
{
@javax
.
xml
.
bind
.
annotation
.
XmlNs
(
namespaceURI
=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
,
prefix
=
"qual"
)
})
@javax
.
xml
.
bind
.
annotation
.
XmlSchema
(
namespace
=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1
.1
"
,
elementFormDefault
=
javax
.
xml
.
bind
.
annotation
.
XmlNsForm
.
QUALIFIED
,
xmlns
=
{
@javax
.
xml
.
bind
.
annotation
.
XmlNs
(
namespaceURI
=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1
.1
"
,
prefix
=
"qual"
)
})
package
de.hft.stuttgart.quality.model.jaxb
;
citygml4j-quality-ade/src/main/resources/qualityAde.xsd
View file @
026d05fe
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<schema
xmlns=
"http://www.w3.org/2001/XMLSchema"
xmlns:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
targetNamespace=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1"
xmlns:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1
.1
"
targetNamespace=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1
.1
"
xmlns:core=
"http://www.opengis.net/citygml/2.0"
xmlns:bldg=
"http://www.opengis.net/citygml/building/2.0"
xmlns:gml=
"http://www.opengis.net/gml"
elementFormDefault=
"qualified"
...
...
@@ -228,7 +228,7 @@
</sequence>
</complexType>
<complexType
name=
"SE
M
_ATTRIBUTE_WRONG_VALUE"
>
<complexType
name=
"SE_ATTRIBUTE_WRONG_VALUE"
>
<sequence>
<element
name=
"childId"
type=
"string"
minOccurs=
"0"
/>
<element
name=
"attributeName"
type=
"string"
/>
...
...
@@ -236,7 +236,7 @@
</sequence>
</complexType>
<complexType
name=
"SE
M
_ATTRIBUTE_MISSING"
>
<complexType
name=
"SE_ATTRIBUTE_MISSING"
>
<sequence>
<element
name=
"childId"
type=
"string"
minOccurs=
"0"
/>
<element
name=
"attributeName"
type=
"string"
/>
...
...
@@ -307,11 +307,11 @@
type=
"qual:GE_S_MULTIPLE_CONNECTED_COMPONENTS"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"SE
M
_ATTRIBUTE_WRONG_VALUE"
type=
"qual:SE
M
_ATTRIBUTE_WRONG_VALUE"
minOccurs=
"0"
<element
name=
"SE_ATTRIBUTE_WRONG_VALUE"
type=
"qual:SE_ATTRIBUTE_WRONG_VALUE"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"SE
M
_ATTRIBUTE_MISSING"
type=
"qual:SE
M
_ATTRIBUTE_MISSING"
minOccurs=
"0"
<element
name=
"SE_ATTRIBUTE_MISSING"
type=
"qual:SE_ATTRIBUTE_MISSING"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
</sequence>
<attribute
name=
"result"
type=
"qual:result"
/>
...
...
@@ -341,8 +341,8 @@
<enumeration
value=
"R_GE_S_NON_MANIFOLD_VERTEX"
/>
<enumeration
value=
"R_GE_S_SELF_INTERSECTION"
/>
<enumeration
value=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
/>
<enumeration
value=
"R_SE
M
_ATTRIBUTES_EXISTING"
/>
<enumeration
value=
"R_SE
M
_ATTRIBUTES_CORRECT"
/>
<enumeration
value=
"R_SE_ATTRIBUTES_EXISTING"
/>
<enumeration
value=
"R_SE_ATTRIBUTES_CORRECT"
/>
</restriction>
</simpleType>
...
...
@@ -469,8 +469,8 @@
<enumeration
value=
"GE_S_NON_MANIFOLD_VERTEX"
/>
<enumeration
value=
"GE_S_SELF_INTERSECTION"
/>
<enumeration
value=
"GE_S_MULTIPLE_CONNECTED_COMPONENTS"
/>
<enumeration
value=
"SE
M
_ATTRIBUTE_WRONG_VALUE"
/>
<enumeration
value=
"SE
M
_ATTRIBUTE_MISSING"
/>
<enumeration
value=
"SE_ATTRIBUTE_WRONG_VALUE"
/>
<enumeration
value=
"SE_ATTRIBUTE_MISSING"
/>
</restriction>
</simpleType>
...
...
citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java
View file @
026d05fe
...
...
@@ -605,6 +605,7 @@ class QualityAdeTests {
error
.
setGeneric
(
true
);
result
.
getErrors
().
add
(
error
);
byte
[]
gml
=
writeCityGml
(
model
);
System
.
out
.
println
(
new
String
(
gml
));
model
=
readCityGml
(
gml
);
AbstractCityObject
co
=
model
.
getCityObjectMember
().
get
(
0
).
getCityObject
();
...
...
@@ -1287,7 +1288,7 @@ class QualityAdeTests {
throws
ADEException
,
CityGMLBuilderException
,
CityGMLReadException
{
CityGMLContext
context
=
CityGMLContext
.
getInstance
();
List
<
ADEContext
>
adeContexts
=
context
.
getADEContexts
();
if
(
adeContexts
==
null
||
adeContexts
.
isEmpty
())
{
if
(
adeContexts
.
isEmpty
())
{
for
(
ADEContext
adeContext
:
ServiceLoader
.
load
(
ADEContext
.
class
))
{
context
.
registerADEContext
(
adeContext
);
}
...
...
@@ -1301,7 +1302,7 @@ class QualityAdeTests {
System
.
out
.
print
(
"["
+
event
.
getLocator
().
getLineNumber
()
+
","
+
event
.
getLocator
().
getColumnNumber
()
+
"] "
);
System
.
out
.
println
(
event
.
getMessage
());
return
true
;
throw
new
IllegalStateException
(
event
.
getLinkedException
())
;
});
CityModel
cityModel
;
try
(
CityGMLReader
reader
=
in
.
createCityGMLReader
(
"?"
,
input
))
{
...
...
@@ -1399,7 +1400,7 @@ class QualityAdeTests {
writer
.
setPrefixes
(
CityGMLVersion
.
DEFAULT
);
writer
.
setPrefix
(
"qual"
,
QualityADEModule
.
NAMESPACE_URI
);
writer
.
setSchemaLocation
(
QualityADEModule
.
NAMESPACE_URI
,
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1/qualityAde.xsd"
);
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1
.1
/qualityAde.xsd"
);
writer
.
setSchemaLocations
(
CityGMLVersion
.
DEFAULT
);
writer
.
write
(
model
);
return
out
.
toByteArray
();
...
...
public/0.1.1/qualityAde.xsd
0 → 100644
View file @
026d05fe
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<schema
xmlns=
"http://www.w3.org/2001/XMLSchema"
xmlns:qual=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1.1"
targetNamespace=
"https://transfer.hft-stuttgart.de/pages/qualityade/0.1.1"
xmlns:core=
"http://www.opengis.net/citygml/2.0"
xmlns:bldg=
"http://www.opengis.net/citygml/building/2.0"
xmlns:gml=
"http://www.opengis.net/gml"
elementFormDefault=
"qualified"
version=
"1.0"
>
<import
namespace=
"http://www.opengis.net/citygml/2.0"
schemaLocation=
"http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd"
/>
<import
namespace=
"http://www.opengis.net/citygml/building/2.0"
schemaLocation=
"http://schemas.opengis.net/citygml/building/2.0/building.xsd"
/>
<import
namespace=
"http://www.opengis.net/citygml/appearance/2.0"
schemaLocation=
"http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd"
/>
<import
namespace=
"http://www.opengis.net/citygml/generics/2.0"
schemaLocation=
"http://schemas.opengis.net/citygml/generics/2.0/generics.xsd"
/>
<import
namespace=
"http://www.opengis.net/gml"
schemaLocation=
"http://schemas.opengis.net/gml/2.1.2/gml.xsd"
/>
<element
name=
"validationResult"
type=
"qual:validationResultType"
substitutionGroup=
"core:_GenericApplicationPropertyOfCityObject"
/>
<simpleType
name=
"result"
final=
"restriction"
>
<annotation>
<documentation>
Enumeration for status of check result
</documentation>
</annotation>
<restriction
base=
"string"
>
<enumeration
value=
"ERROR"
>
<annotation>
<documentation>
One or more errors were found
</documentation>
</annotation>
</enumeration>
<enumeration
value=
"NOT_CHECKED"
>
<annotation>
<documentation>
Feature was not checked
</documentation>
</annotation>
</enumeration>
<enumeration
value=
"OK"
>
<annotation>
<documentation>
No errors were found
</documentation>
</annotation>
</enumeration>
</restriction>
</simpleType>
<complexType
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
>
<annotation>
<documentation>
Consecutive point are the same
</documentation>
</annotation>
<sequence>
<element
name=
"linearRingId"
type=
"string"
/>
<element
name=
"vertex1"
type=
"gml:DirectPositionType"
/>
<element
name=
"vertex2"
type=
"gml:DirectPositionType"
/>
</sequence>
</complexType>
<complexType
name=
"GE_R_TOO_FEW_POINTS"
>
<sequence>
<element
name=
"linearRingId"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_R_SELF_INTERSECTION"
>
<sequence>
<element
name=
"linearRingId"
type=
"string"
/>
<element
name=
"type"
type=
"qual:ringSelfIntType"
/>
<element
name=
"edge1"
type=
"qual:edgeType"
minOccurs=
"0"
/>
<element
name=
"edge2"
type=
"qual:edgeType"
minOccurs=
"0"
/>
<element
name=
"vertex1"
type=
"gml:DirectPositionType"
minOccurs=
"0"
/>
<element
name=
"vertex2"
type=
"gml:DirectPositionType"
minOccurs=
"0"
/>
</sequence>
</complexType>
<simpleType
name=
"ringSelfIntType"
>
<restriction
base=
"string"
>
<enumeration
value=
"DUPLICATE_POINT"
/>
<enumeration
value=
"POINT_TOUCHES_EDGE"
/>
<enumeration
value=
"EDGE_INTERSECTS_EDGE"
/>
</restriction>
</simpleType>
<complexType
name=
"edgeType"
>
<sequence>
<element
name=
"from"
type=
"gml:DirectPositionType"
/>
<element
name=
"to"
type=
"gml:DirectPositionType"
/>
</sequence>
</complexType>
<complexType
name=
"GE_R_NOT_CLOSED"
>
<sequence>
<element
name=
"linearRingId"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_P_INTERIOR_DISCONNECTED"
>
<sequence>
<element
name=
"polygonId"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_P_INTERSECTING_RINGS"
>
<sequence>
<element
name=
"polygonId"
type=
"string"
/>
<element
name=
"linearRingId1"
type=
"string"
/>
<element
name=
"linearRingId2"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_P_INNER_RINGS_NESTED"
>
<sequence>
<element
name=
"polygonId"
type=
"string"
/>
<element
name=
"linearRingId1"
type=
"string"
/>
<element
name=
"linearRingId2"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_P_HOLE_OUTSIDE"
>
<sequence>
<element
name=
"polygonId"
type=
"string"
/>
<element
name=
"linearRingId"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"
>
<sequence>
<element
name=
"polygonId"
type=
"string"
/>
<element
name=
"deviation"
type=
"gml:AngleType"
></element>
</sequence>
</complexType>
<complexType
name=
"GE_P_ORIENTATION_RINGS_SAME"
>
<sequence>
<element
name=
"polygonId"
type=
"string"
/>
<element
name=
"linearRingId"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
>
<sequence>
<element
name=
"geometryId"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_S_POLYGON_WRONG_ORIENTATION"
>
<sequence>
<element
name=
"geometryId"
type=
"string"
/>
<element
name=
"edges"
type=
"qual:EdgeList"
/>
</sequence>
</complexType>
<complexType
name=
"EdgeList"
>
<sequence>
<element
name=
"edge"
type=
"qual:edgeType"
maxOccurs=
"unbounded"
/>
</sequence>
</complexType>
<complexType
name=
"GE_S_SELF_INTERSECTION"
>
<sequence>
<element
name=
"geometryId"
type=
"string"
/>
<element
name=
"polygonId1"
type=
"string"
/>
<element
name=
"polygonId2"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_S_NON_MANIFOLD_VERTEX"
>
<sequence>
<element
name=
"geometryId"
type=
"string"
/>
<element
name=
"vertex"
type=
"gml:DirectPositionType"
/>
</sequence>
</complexType>
<complexType
name=
"GE_S_NON_MANIFOLD_EDGE"
>
<sequence>
<element
name=
"geometryId"
type=
"string"
/>
<element
name=
"edges"
type=
"qual:EdgeList"
/>
</sequence>
</complexType>
<complexType
name=
"GE_S_NOT_CLOSED"
>
<sequence>
<element
name=
"geometryId"
type=
"string"
/>
<element
name=
"edges"
type=
"qual:EdgeList"
/>
</sequence>
</complexType>
<complexType
name=
"GE_S_TOO_FEW_POLYGONS"
>
<sequence>
<element
name=
"geometryId"
type=
"string"
/>
</sequence>
</complexType>
<complexType
name=
"GE_S_MULTIPLE_CONNECTED_COMPONENTS"
>
<sequence>
<element
name=
"geometryId"
type=
"string"
/>
<element
name=
"components"
type=
"qual:ComponentList"
/>
</sequence>
</complexType>
<complexType
name=
"ComponentList"
>
<sequence>
<element
name=
"component"
type=
"qual:componentType"
maxOccurs=
"unbounded"
/>
</sequence>
</complexType>
<complexType
name=
"componentType"
>
<sequence>
<element
name=
"polygonId"
type=
"string"
maxOccurs=
"unbounded"
/>
</sequence>
</complexType>
<complexType
name=
"GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"
>
<annotation>
<documentation>
A planarity error with a point too far from the
regression plane
</documentation>
</annotation>
<sequence>
<element
name=
"polygonId"
type=
"string"
/>
<element
name=
"vertex"
type=
"gml:DirectPositionType"
/>
<element
name=
"distance"
type=
"gml:LengthType"
/>
</sequence>
</complexType>
<complexType
name=
"SE_ATTRIBUTE_WRONG_VALUE"
>
<sequence>
<element
name=
"childId"
type=
"string"
minOccurs=
"0"
/>
<element
name=
"attributeName"
type=
"string"
/>
<element
name=
"generic"
type=
"boolean"
/>
</sequence>
</complexType>
<complexType
name=
"SE_ATTRIBUTE_MISSING"
>
<sequence>
<element
name=
"childId"
type=
"string"
minOccurs=
"0"
/>
<element
name=
"attributeName"
type=
"string"
/>
<element
name=
"generic"
type=
"boolean"
/>
</sequence>
</complexType>
<complexType
name=
"validationResultType"
>
<annotation>
<documentation>
Data structure containing validation results for
features
</documentation>
</annotation>
<sequence>
<element
name=
"GE_R_TOO_FEW_POINTS"
type=
"qual:GE_R_TOO_FEW_POINTS"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_R_SELF_INTERSECTION"
type=
"qual:GE_R_SELF_INTERSECTION"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_R_NOT_CLOSED"
type=
"qual:GE_R_NOT_CLOSED"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_R_CONSECUTIVE_POINTS_SAME"
type=
"qual:GE_R_CONSECUTIVE_POINTS_SAME"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_P_INTERIOR_DISCONNECTED"
type=
"qual:GE_P_INTERIOR_DISCONNECTED"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_P_INTERSECTING_RINGS"
type=
"qual:GE_P_INTERSECTING_RINGS"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"
type=
"qual:GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_P_INNER_RINGS_NESTED"
type=
"qual:GE_P_INNER_RINGS_NESTED"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_P_HOLE_OUTSIDE"
type=
"qual:GE_P_HOLE_OUTSIDE"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"
type=
"qual:GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_P_ORIENTATION_RINGS_SAME"
type=
"qual:GE_P_ORIENTATION_RINGS_SAME"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
type=
"qual:GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_S_POLYGON_WRONG_ORIENTATION"
type=
"qual:GE_S_POLYGON_WRONG_ORIENTATION"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_S_SELF_INTERSECTION"
type=
"qual:GE_S_SELF_INTERSECTION"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_S_NON_MANIFOLD_VERTEX"
type=
"qual:GE_S_NON_MANIFOLD_VERTEX"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_S_NON_MANIFOLD_EDGE"
type=
"qual:GE_S_NON_MANIFOLD_EDGE"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_S_NOT_CLOSED"
type=
"qual:GE_S_NOT_CLOSED"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_S_TOO_FEW_POLYGONS"
type=
"qual:GE_S_TOO_FEW_POLYGONS"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"GE_S_MULTIPLE_CONNECTED_COMPONENTS"
type=
"qual:GE_S_MULTIPLE_CONNECTED_COMPONENTS"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"SE_ATTRIBUTE_WRONG_VALUE"
type=
"qual:SE_ATTRIBUTE_WRONG_VALUE"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<element
name=
"SE_ATTRIBUTE_MISSING"
type=
"qual:SE_ATTRIBUTE_MISSING"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
</sequence>
<attribute
name=
"result"
type=
"qual:result"
/>
</complexType>
<simpleType
name=
"requirementID"
final=
"restriction"
>
<annotation>
<documentation>
Enumeration for available requirements
</documentation>
</annotation>
<restriction
base=
"string"
>
<enumeration
value=
"R_GE_R_TOO_FEW_POINTS"
/>
<enumeration
value=
"R_GE_R_NOT_CLOSED"
/>
<enumeration
value=
"R_GE_R_CONSECUTIVE_POINTS_SAME"
/>
<enumeration
value=
"R_GE_R_SELF_INTERSECTION"
/>
<enumeration
value=
"R_GE_P_NON_PLANAR"
/>
<enumeration
value=
"R_GE_P_INTERIOR_DISCONNECTED"
/>
<enumeration
value=
"R_GE_P_INTERSECTING_RINGS"
/>
<enumeration
value=
"R_GE_P_HOLE_OUTSIDE"
/>
<enumeration
value=
"R_GE_P_ORIENTATION_RINGS_SAME"
/>
<enumeration
value=
"R_GE_P_INNER_RINGS_NESTED"
/>
<enumeration
value=
"R_GE_S_TOO_FEW_POLYGONS"
/>
<enumeration
value=
"R_GE_S_NOT_CLOSED"
/>
<enumeration
value=
"R_GE_S_NON_MANIFOLD_EDGE"
/>
<enumeration
value=
"R_GE_S_POLYGON_WRONG_ORIENTATION"
/>
<enumeration
value=
"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"
/>
<enumeration
value=
"R_GE_S_NON_MANIFOLD_VERTEX"
/>
<enumeration
value=
"R_GE_S_SELF_INTERSECTION"
/>
<enumeration
value=
"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"
/>
<enumeration
value=
"R_SE_ATTRIBUTES_EXISTING"
/>
<enumeration
value=
"R_SE_ATTRIBUTES_CORRECT"
/>
</restriction>
</simpleType>
<complexType
name=
"parameter"
>
<simpleContent>
<extension
base=
"string"
>
<attribute
name=
"name"
type=
"string"
use=
"required"
/>
<attribute
name=
"uom"
type=
"string"
use=
"optional"
/>
</extension>
</simpleContent>
</complexType>
<complexType
name=
"requirementType"
>
<annotation>
<documentation>
Requirement structure for configuration purposes
</documentation>
</annotation>
<sequence>
<element
name=
"parameter"
type=
"qual:parameter"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
</sequence>
<attribute
name=
"name"
type=
"qual:requirementID"
/>
<attribute
name=
"enabled"
type=
"boolean"
/>
</complexType>
<complexType
name=
"validationPlanType"
>
<annotation>
<documentation>
Validation plan structure containing information about
the parameters used to perform the checks
</documentation>
</annotation>
<sequence>
<element
name=
"globalParameters"
type=
"qual:globalParameterType"
/>
<element
name=
"requirement"
type=
"qual:requirementType"
maxOccurs=
"unbounded"
/>
<element
name=
"filter"
type=
"qual:filterType"
minOccurs=
"1"
maxOccurs=
"1"
/>
</sequence>
</complexType>
<complexType
name=
"filterType"
>
<sequence>
<element
name=
"checking"
type=
"qual:featureType"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<