Commit 026d05fe authored by Matthias Betz's avatar 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
......@@ -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>
......
......@@ -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() {
......
......@@ -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;
......
......@@ -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.createValidationType();
ValidationType dest = new ValidationType();
if (src.isSetDateTime()) {
dest.setValidationDate(src.getValidationDate());
......
......@@ -17,7 +17,7 @@ package de.hft.stuttgart.quality.model.jaxb;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "SEM_ATTRIBUTE_MISSING")
@XmlRootElement(name = "SE_ATTRIBUTE_MISSING")
public class AttributeMissingType extends ValidationErrorType {
private String childId;
......
......@@ -17,7 +17,7 @@ package de.hft.stuttgart.quality.model.jaxb;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "SEM_ATTRIBUTE_WRONG_VALUE")
@XmlRootElement(name = "SE_ATTRIBUTE_WRONG_VALUE")
public class AttributeWrongValueType extends ValidationErrorType {
private String childId;
......
......@@ -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, SEM_ATTRIBUTE_WRONG_VALUE, SEM_ATTRIBUTE_MISSING
GE_S_MULTIPLE_CONNECTED_COMPONENTS, SE_ATTRIBUTE_WRONG_VALUE, SE_ATTRIBUTE_MISSING
}
......@@ -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_SEM_ATTRIBUTES_EXISTING, R_SEM_ATTRIBUTES_CORRECT
R_SE_ATTRIBUTES_EXISTING, R_SE_ATTRIBUTES_CORRECT
}
......@@ -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;
<?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="SEM_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="SEM_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="SEM_ATTRIBUTE_WRONG_VALUE"
type="qual:SEM_ATTRIBUTE_WRONG_VALUE" minOccurs="0"
<element name="SE_ATTRIBUTE_WRONG_VALUE"
type="qual:SE_ATTRIBUTE_WRONG_VALUE" minOccurs="0"
maxOccurs="unbounded" />
<element name="SEM_ATTRIBUTE_MISSING"
type="qual:SEM_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_SEM_ATTRIBUTES_EXISTING" />
<enumeration value="R_SEM_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="SEM_ATTRIBUTE_WRONG_VALUE" />
<enumeration value="SEM_ATTRIBUTE_MISSING" />
<enumeration value="SE_ATTRIBUTE_WRONG_VALUE" />
<enumeration value="SE_ATTRIBUTE_MISSING" />
</restriction>
</simpleType>
......
......@@ -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();
......
<
<?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" />