You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ar...@apache.org on 2018/08/20 06:01:27 UTC
[3/3] olingo-odata4 git commit: [OLINGO-1062]Cannot consume Odata
Reference Services with Annotations
[OLINGO-1062]Cannot consume Odata Reference Services with Annotations
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/8cbe468c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/8cbe468c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/8cbe468c
Branch: refs/heads/master
Commit: 8cbe468c2a9c9063c41aba46726f744843ca127d
Parents: 58ec035
Author: Archana Rai <ar...@sap.com>
Authored: Mon Aug 20 11:31:08 2018 +0530
Committer: Archana Rai <ar...@sap.com>
Committed: Mon Aug 20 11:31:08 2018 +0530
----------------------------------------------------------------------
.../apache/olingo/client/core/MetadataTest.java | 242 ++++
.../org/apache/olingo/client/core/$metadata.xml | 779 +++++++++++
.../org/apache/olingo/client/core/UI.xml | 467 +++++++
.../apache/olingo/client/core/annotations.xml | 1276 ++++++++++++++++++
.../org/apache/olingo/commons/api/edm/Edm.java | 20 +
.../commons/api/edm/EdmBindingTarget.java | 7 +
.../commons/api/edm/EdmEntityContainer.java | 8 +
.../olingo/commons/api/edm/EdmProperty.java | 7 +
.../api/edm/provider/CsdlAnnotation.java | 47 +
.../provider/annotation/CsdlAnnotationPath.java | 22 +
.../api/edm/provider/annotation/CsdlApply.java | 59 +
.../api/edm/provider/annotation/CsdlCast.java | 55 +
.../edm/provider/annotation/CsdlCollection.java | 37 +
.../annotation/CsdlConstantExpression.java | 24 +
.../api/edm/provider/annotation/CsdlIf.java | 46 +
.../api/edm/provider/annotation/CsdlIsOf.java | 54 +
.../provider/annotation/CsdlLabeledElement.java | 44 +
.../annotation/CsdlLabeledElementReference.java | 21 +
.../CsdlLogicalOrComparisonExpression.java | 47 +
.../annotation/CsdlNavigationPropertyPath.java | 21 +
.../api/edm/provider/annotation/CsdlNull.java | 38 +
.../api/edm/provider/annotation/CsdlPath.java | 21 +
.../provider/annotation/CsdlPropertyPath.java | 21 +
.../provider/annotation/CsdlPropertyValue.java | 46 +
.../api/edm/provider/annotation/CsdlRecord.java | 62 +
.../api/edm/provider/annotation/CsdlUrlRef.java | 40 +
.../olingo/commons/core/edm/AbstractEdm.java | 95 ++
.../core/edm/AbstractEdmBindingTarget.java | 11 +
.../core/edm/EdmEntityContainerImpl.java | 432 +++++-
.../commons/core/edm/EdmPropertyImpl.java | 23 +
.../commons/core/edm/EdmProviderImpl.java | 291 +++-
.../olingo/commons/core/edm/EdmTypeInfo.java | 17 +-
.../commons/core/edm/EdmImplCallCreateTest.java | 41 +
.../core/edm/provider/EdmSchemaImplTest.java | 2 +-
.../uri/queryoption/apply/DynamicProperty.java | 5 +
35 files changed, 4407 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
index 0e2dd0f..3fc21d9 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
@@ -32,6 +32,7 @@ import org.apache.olingo.client.api.edm.xml.XMLMetadata;
import org.apache.olingo.commons.api.Constants;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmAction;
+import org.apache.olingo.commons.api.edm.EdmActionImport;
import org.apache.olingo.commons.api.edm.EdmAnnotation;
import org.apache.olingo.commons.api.edm.EdmAnnotations;
import org.apache.olingo.commons.api.edm.EdmComplexType;
@@ -41,13 +42,17 @@ import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.edm.EdmEnumType;
import org.apache.olingo.commons.api.edm.EdmFunction;
import org.apache.olingo.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmProperty;
import org.apache.olingo.commons.api.edm.EdmSchema;
+import org.apache.olingo.commons.api.edm.EdmSingleton;
import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.annotation.EdmExpression;
+import org.apache.olingo.commons.api.edm.annotation.EdmPropertyValue;
+import org.apache.olingo.commons.api.edm.annotation.EdmRecord;
import org.apache.olingo.commons.api.edm.annotation.EdmUrlRef;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation;
@@ -525,4 +530,241 @@ public class MetadataTest extends AbstractTest {
assertEquals("AnnotationPath", expression.asDynamic().getExpressionName());
}
}
+
+ @Test
+ public void readAnnotationOnAnEntityType() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmEntityType entity = edm.getEntityTypeWithAnnotations(
+ new FullQualifiedName("SEPMRA_SO_MAN2", "SEPMRA_C_CountryVHType"));
+ assertEquals(1, entity.getAnnotations().size());
+ assertNotNull(entity.getAnnotations().get(0).getTerm());
+ assertEquals("HeaderInfo", entity.getAnnotations().get(0).getTerm().getName());
+ assertNotNull(entity.getAnnotations().get(0).getExpression());
+
+ EdmEntityType entity1 = edm.getEntityTypeWithAnnotations(
+ new FullQualifiedName("SEPMRA_SO_MAN2", "SEPMRA_C_SalesOrderCustCntctVHType"));
+ EdmAnnotation annotation = entity1.getAnnotations().get(0);
+ assertNotNull(annotation);
+ assertEquals(5, entity1.getAnnotations().size());
+ assertEquals("FieldGroup", annotation.getTerm().getName());
+ assertEquals("ContactPerson", annotation.getQualifier());
+ EdmExpression expression = annotation.getExpression();
+ assertNotNull(expression);
+ assertTrue(expression.isDynamic());
+ EdmRecord record = expression.asDynamic().asRecord();
+ assertNotNull(record);
+ assertEquals(2, record.asRecord().getPropertyValues().size());
+ List<EdmPropertyValue> propertyValues = record.asRecord().getPropertyValues();
+ assertEquals("Data", propertyValues.get(0).getProperty());
+ assertTrue(propertyValues.get(0).getValue().isDynamic());
+ List<EdmExpression> items = propertyValues.get(0).getValue().asDynamic().asCollection().getItems();
+ assertEquals(4, items.size());
+ assertEquals("Label", propertyValues.get(1).getProperty());
+ assertEquals("Contact Person", propertyValues.get(1).getValue().asConstant().asPrimitive());
+
+ assertEquals(1, entity1.getNavigationProperty("to_Customer").getAnnotations().size());
+ EdmNavigationProperty navProperty = entity1.getNavigationProperty("to_Customer");
+ assertEquals("ThingPerspective", navProperty.
+ getAnnotations().get(0).getTerm().getName());
+ }
+
+ @Test
+ public void readAnnotationOnAProperty() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmEntityType entity = edm.getEntityTypeWithAnnotations(
+ new FullQualifiedName("SEPMRA_SO_MAN2", "I_DraftAdministrativeDataType"));
+ EdmProperty property = (EdmProperty) entity.getProperty("DraftUUID");
+ assertNotNull(property.getAnnotations());
+ assertEquals(1, property.getAnnotations().size());
+ assertEquals("UI.HeaderInfo", property.getAnnotations().get(0).getTerm().
+ getFullQualifiedName().getFullQualifiedNameAsString());
+ }
+
+ @Test
+ public void readAnnotationOnActionImport() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmEntityContainer container = edm.getEntityContainer();
+ EdmActionImport actionImport = container.getActionImport("AIRTString");
+ assertEquals(3, actionImport.getAnnotations().size());
+ assertEquals("Description", actionImport.getAnnotations().get(0).getTerm().getName());
+ assertEquals("HeaderInfo", actionImport.getAnnotations().get(2).getTerm().getName());
+ }
+
+ @Test
+ public void readAnnotationOnASingleton() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmEntityContainer container = edm.getEntityContainer();
+ EdmSingleton singleton = container.getSingleton("SINav");
+ assertEquals(1, singleton.getAnnotations().size());
+ assertEquals("HeaderInfo", singleton.getAnnotations().get(0).getTerm().getName());
+
+ EdmEntityType singletonET = singleton.getEntityType();
+ EdmProperty singlComplexProp = (EdmProperty)singletonET.getProperty("ComplexProperty");
+ EdmComplexType singlCompType = (EdmComplexType) singlComplexProp.getTypeWithAnnotations();
+ EdmNavigationProperty singlNavProp = (EdmNavigationProperty) singlCompType.
+ getNavigationProperty("NavPropertyDraftAdministrativeDataType");
+ assertEquals(1, singlNavProp.getAnnotations().size());
+ assertEquals("AdditionalInfo", singlNavProp.getAnnotations().get(0).getTerm().getName());
+ }
+
+ @Test
+ public void readAnnotationOnBoundFunction() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ List<String> parameterNames = new ArrayList<String>();
+ EdmFunction function = edm.getBoundFunction(new FullQualifiedName("SEPMRA_SO_MAN2", "_FC_RTTimeOfDay_"),
+ new FullQualifiedName("Edm","TimeOfDay"), false, parameterNames);
+ assertEquals(1, function.getAnnotations().size());
+ assertEquals("HeaderInfo", function.getAnnotations().get(0).getTerm().getName());
+
+ // Annotations on Bound Function parameter
+ assertEquals(1, function.getParameter("ParameterTimeOfDay").getAnnotations().size());
+ assertEquals("HeaderInfo", function.getParameter("ParameterTimeOfDay")
+ .getAnnotations().get(0).getTerm().getName());
+ }
+
+ @Test
+ public void readAnnotationOnSchema() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmSchema schema = edm.getSchema("sepmra_so_man2_anno_mdl.v1");
+ assertNotNull(schema);
+ assertEquals(112, schema.getAnnotationGroups().size());
+
+ EdmAnnotations annotations = edm.getSchema("SEPMRA_SO_MAN2").getAnnotationGroups().get(22);
+ assertEquals("SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType", annotations.getTargetPath());
+ assertEquals(1, annotations.getAnnotations().size());
+ assertEquals("SelectionFields", annotations.getAnnotations()
+ .get(0).getTerm().getName());
+ assertTrue(annotations.getAnnotations().get(0).getExpression().isDynamic());
+ }
+
+ @Test
+ public void readAnnotationOnContainer() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmEntityContainer container = edm.getEntityContainer();
+ assertEquals(1, container.getAnnotations().size());
+ assertEquals("HeaderInfo", container.getAnnotations().get(0).getTerm().getName());
+ }
+
+ @Test
+ public void readAnnotationOnComplexType() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmComplexType complexType = edm.getComplexTypeWithAnnotations(
+ new FullQualifiedName("SEPMRA_SO_MAN2", "CTPrim"));
+ assertEquals(1, complexType.getAnnotations().size());
+ assertEquals("HeaderInfo", complexType.getAnnotations().get(0).getTerm().getName());
+ // Annotations on complex type property
+ EdmProperty complexTypeProp = (EdmProperty) complexType.getProperty("PropertyInt16");
+ assertEquals(1, complexTypeProp.getAnnotations().size());
+ assertEquals("HeaderInfo", complexTypeProp.getAnnotations().get(0).getTerm().getName());
+ // Annotations on complex type navigation property
+ EdmNavigationProperty complexTypeNavProp = complexType.
+ getNavigationProperty("NavPropertyDraftAdministrativeDataType");
+ assertEquals(1, complexTypeNavProp.getAnnotations().size());
+ assertEquals("HeaderInfo", complexTypeNavProp.getAnnotations().get(0).getTerm().getName());
+ }
+
+ @Test
+ public void readAnnotationOnTypeDefinitions() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmTypeDefinition typeDefn = edm.getTypeDefinition(new FullQualifiedName("SEPMRA_SO_MAN2", "TDString"));
+ assertEquals(1, typeDefn.getAnnotations().size());
+ assertEquals("HeaderInfo", typeDefn.getAnnotations().get(0).getTerm().getName());
+ }
+
+ @Test
+ public void readAnnotationOnBoundActions() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmAction action = edm.getBoundAction(new FullQualifiedName("SEPMRA_SO_MAN2", "BA_RTCountryVHType"),
+ new FullQualifiedName("SEPMRA_SO_MAN2","I_DraftAdministrativeDataType"), false);
+ assertEquals(1, action.getAnnotations().size());
+ assertEquals("HeaderInfo", action.getAnnotations().get(0).getTerm().getName());
+
+ //Annotations on Bound Action parameter
+ assertEquals(1, action.getParameter("ParameterCTPrim").getAnnotations().size());
+ assertEquals("HeaderInfo", action.getParameter("ParameterCTPrim")
+ .getAnnotations().get(0).getTerm().getName());
+ }
+
+ @Test
+ public void readAnnotationOnEntitySet() {
+ final Edm edm = fetchEdm();
+ assertNotNull(edm);
+ EdmEntityContainer container = edm.getEntityContainer();
+ EdmEntitySet entitySet = container.getEntitySet("I_DraftAdministrativeData");
+ assertEquals(1, entitySet.getAnnotations().size());
+ assertEquals("HeaderInfo", entitySet.getAnnotations().get(0).getTerm().getName());
+
+
+
+ EdmEntityType entityType50 = edm.getEntityTypeWithAnnotations(
+ new FullQualifiedName("SEPMRA_SO_MAN2", "I_DraftAdministrativeDataType"));
+ assertEquals(1, ((EdmProperty)entityType50.getProperty("DraftUUID")).getAnnotations().size());
+ assertEquals("UI.HeaderInfo", ((EdmProperty)entityType50.getProperty("DraftUUID")).
+ getAnnotations().get(0).getTerm().getFullQualifiedName().getFullQualifiedNameAsString());
+
+
+
+ // Annotations on properties of entity type included in EntitySet
+ EdmEntityType entityType3 = entitySet.getEntityTypeWithAnnotations();
+ assertEquals(2, ((EdmProperty)entityType3.getProperty("DraftUUID")).getAnnotations().size());
+ assertEquals("AdditionalInfo", ((EdmProperty)entityType3.getProperty("DraftUUID"))
+ .getAnnotations().get(0).getTerm().getName());
+ assertEquals("HeaderInfo", ((EdmProperty)entityType3.getProperty("DraftUUID"))
+ .getAnnotations().get(1).getTerm().getName());
+
+ // Annotations on navigation properties of entity type included in EntitySet
+ EdmEntitySet entitySet1 = container.getEntitySet("SEPMRA_C_SalesOrderCustCntctVH");
+ EdmEntityType entityType5 = entitySet1.getEntityTypeWithAnnotations();
+ assertEquals(2, ((EdmNavigationProperty)entityType5.getNavigationProperty("to_Customer"))
+ .getAnnotations().size());
+ assertEquals("AdditionalInfo", ((EdmNavigationProperty)entityType5
+ .getNavigationProperty("to_Customer"))
+ .getAnnotations().get(0).getTerm().getName());
+ assertEquals("HeaderInfo", ((EdmNavigationProperty)entityType5
+ .getNavigationProperty("to_Customer"))
+ .getAnnotations().get(1).getTerm().getName());
+
+
+
+ EdmComplexType complexType = edm.getComplexTypeWithAnnotations(
+ new FullQualifiedName("SEPMRA_SO_MAN2", "CTPrim"));
+ EdmProperty complexTypeProp = (EdmProperty) complexType.getProperty("PropertyInt16");
+ assertEquals(1, complexTypeProp.getAnnotations().size());
+ assertEquals("HeaderInfo", complexTypeProp.getAnnotations().get(0).getTerm().getName());
+
+
+
+ // Annotations on properties of complex properties of entity type included in EntitySet
+ EdmProperty complexProp = (EdmProperty) entityType3.getProperty("ComplexProperty");
+ EdmComplexType compType = (EdmComplexType) complexProp.getTypeWithAnnotations();
+ EdmProperty prop = (EdmProperty) compType.getProperty("PropertyInt16");
+ assertEquals(1, prop.getAnnotations().size());
+ assertEquals("AdditionalInfo", prop.getAnnotations().get(0).getTerm().getName());
+
+ // Annotations on navigation properties of complex properties of entity type included in EntitySet
+ EdmNavigationProperty navProp = (EdmNavigationProperty) compType
+ .getProperty("NavPropertyDraftAdministrativeDataType");
+ assertEquals(1, navProp.getAnnotations().size());
+ assertEquals("AdditionalInfo", navProp.getAnnotations().get(0).getTerm().getName());
+ }
+
+ private Edm fetchEdm() {
+ List<InputStream> streams = new ArrayList<InputStream>();
+ streams.add(getClass().getResourceAsStream("annotations.xml"));
+ streams.add(getClass().getResourceAsStream("VOC_Core.xml"));
+ streams.add(getClass().getResourceAsStream("UI.xml"));
+ final Edm edm = client.getReader().readMetadata(getClass().getResourceAsStream("$metadata.xml"),
+ streams);
+ return edm;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/resources/org/apache/olingo/client/core/$metadata.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/$metadata.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/$metadata.xml
new file mode 100644
index 0000000..4a29589
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/$metadata.xml
@@ -0,0 +1,779 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" Version="1.0">
+ <edmx:Reference xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Uri="../v4.0/cs02/vocabularies/Org.OData.Common.V1.xml">
+ <edmx:Include Namespace="com.vocabularies.Common.v1" Alias="Common"/>
+ </edmx:Reference>
+ <edmx:Reference xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Uri="../v4.0/cs02/vocabularies/Org.OData.Core.V1.xml">
+ <edmx:Include Namespace="Org.OData.Core.V1" Alias="Core"/>
+ </edmx:Reference>
+ <edmx:DataServices m:DataServiceVersion="2.0">
+ <Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="SEPMRA_SO_MAN2" xml:lang="en">
+ <EnumType Name="ENString" IsFlags="true" UnderlyingType="Edm.Int16">
+ <Member Name="String1" Value="1"/>
+ <Member Name="String2" Value="2"/>
+ <Member Name="String3" Value="4"/>
+ </EnumType>
+ <TypeDefinition Name="TDString" UnderlyingType="Edm.String" MaxLength="15"/>
+ <ComplexType Name="CTPrim">
+ <Property Name="PropertyInt16" Type="Edm.Int16"/>
+ <NavigationProperty Name="NavPropertyDraftAdministrativeDataType" Type="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType"/>
+ </ComplexType>
+ <EntityType Name="I_DraftAdministrativeDataType">
+ <Key>
+ <PropertyRef Name="DraftUUID"/>
+ </Key>
+ <Property Name="DraftUUID" Type="Edm.Guid" Nullable="false"/>
+ <Property Name="ComplexProperty" Type="SEPMRA_SO_MAN2.CTPrim" Nullable="true"/>
+ <Property Name="DraftEntityType" Type="Edm.String" MaxLength="30"/>
+ <Property Name="CreationDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
+ <Property Name="CreatedByUser" Type="Edm.String" MaxLength="12"/>
+ <Property Name="LastChangeDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
+ <Property Name="LastChangedByUser" Type="Edm.String" MaxLength="12"/>
+ <Property Name="DraftAccessType" Type="Edm.String" MaxLength="1"/>
+ <Property Name="ProcessingStartDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
+ <Property Name="InProcessByUser" Type="Edm.String" MaxLength="12"/>
+ <Property Name="DraftIsKeptByUser" Type="Edm.Boolean"/>
+ <Property Name="EnqueueStartDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
+ <Property Name="DraftIsCreatedByMe" Type="Edm.Boolean"/>
+ <Property Name="DraftIsLastChangedByMe" Type="Edm.Boolean"/>
+ <Property Name="DraftIsProcessedByMe" Type="Edm.Boolean"/>
+ <Property Name="CreatedByUserDescription" Type="Edm.String" MaxLength="80"/>
+ <Property Name="LastChangedByUserDescription" Type="Edm.String" MaxLength="80"/>
+ <Property Name="InProcessByUserDescription" Type="Edm.String" MaxLength="80"/>
+ </EntityType>
+ <EntityType Name="SEPMRA_C_SalesOrderCustCntctVHType">
+ <Key>
+ <PropertyRef Name="ContactPerson"/>
+ </Key>
+ <Property Name="ContactPerson" Type="Edm.String" Nullable="false" MaxLength="10"/>
+ <Property Name="Customer" Type="Edm.String" MaxLength="10"/>
+ <Property Name="FirstName" Type="Edm.String" MaxLength="40"/>
+ <Property Name="LastName" Type="Edm.String" MaxLength="40"/>
+ <Property Name="EmailAddress" Type="Edm.String" MaxLength="255"/>
+ <NavigationProperty Name="to_Customer" Type="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType"/>
+ </EntityType>
+ <EntityType Name="SEPMRA_C_CountryVHType">
+ <Key>
+ <PropertyRef Name="Country"/>
+ </Key>
+ <Property Name="Country" Type="Edm.String" Nullable="false" MaxLength="3"/>
+ <Property Name="CountryT" Type="Edm.String" MaxLength="50"/>
+ </EntityType>
+ <Action Name="BA_RTCountryVHType" IsBound="true">
+ <Parameter Name="ParameterCountryType" Type="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType" Nullable="false"/>
+ <ReturnType Type="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType"/>
+ </Action>
+ <Action Name="BA_RTCountryVHType" IsBound="true">
+ <Parameter Name="ParameterSalesOrder" Type="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType" Nullable="false"/>
+ <Parameter Name="ParameterCTPrim" Type="SEPMRA_SO_MAN2.CTPrim" Nullable="false"/>
+ <ReturnType Type="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType"/>
+ </Action>
+ <Action Name="BA_RTCountryVHType" IsBound="true">
+ <Parameter Name="ParameterDraftAdministrativeDataType" Type="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType" Nullable="false"/>
+ <Parameter Name="ParameterCTPrim" Type="SEPMRA_SO_MAN2.CTPrim" Nullable="false"/>
+ <ReturnType Type="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType"/>
+ </Action>
+ <Function Name="_FC_RTTimeOfDay_" IsBound="true" IsComposable="true">
+ <Parameter Name="ParameterTimeOfDay" Type="Edm.TimeOfDay" Nullable="false"/>
+ <ReturnType Type="Edm.TimeOfDay"/>
+ </Function>
+ <Function Name="_FC_RTTimeOfDay_" IsBound="true" IsComposable="true">
+ <Parameter Name="ParameterTimeOfDay" Type="Edm.TimeOfDay" Nullable="false"/>
+ <Parameter Name="ParameterAny" Type="Edm.String" Nullable="false"/>
+ <ReturnType Type="Edm.TimeOfDay"/>
+ </Function>
+ <EntityContainer Name="SEPMRA_SO_MAN2_Entities" m:IsDefaultEntityContainer="true">
+ <EntitySet Name="I_DraftAdministrativeData" EntityType="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType"/>
+ <EntitySet Name="SEPMRA_C_SalesOrderCustCntctVH" EntityType="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType">
+ <NavigationPropertyBinding Path="Customer" Target="SEPMRA_C_CountryVH" />
+ </EntitySet>
+ <EntitySet Name="SEPMRA_C_CountryVH" EntityType="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType"/>
+ <ActionImport Name="AIRTString" Action="Namespace1_Alias.UARTString">
+ <Annotation Term="Core.Description">
+ <String>Action Import returns a simple String</String>
+ </Annotation>
+ <Annotation Term="SEPMRA_SO_MAN2.Data">
+ <Bool>true</Bool>
+ </Annotation>
+ </ActionImport>
+ <Singleton Name="SINav" Type="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType">
+ <NavigationPropertyBinding Path="NavPropertyDraftAdministrativeDataType" Target="I_DraftAdministrativeData"/>
+ </Singleton>
+ </EntityContainer>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTP">
+ <Annotation Term="Common.DraftRoot">
+ <Record>
+ <PropertyValue Property="ActivationAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPActivation"/>
+ <PropertyValue Property="EditAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPEdit"/>
+ <PropertyValue Property="PreparationAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPPreparation"/>
+ <PropertyValue Property="ValidationFunction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPValidation"/>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_ScheduleLineTP">
+ <Annotation Term="Common.DraftNode">
+ <Record>
+ <PropertyValue Property="PreparationAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_ScheduleLineTPPreparation"/>
+ <PropertyValue Property="ValidationFunction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_ScheduleLineTPValidation"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Common.DraftActivationVia">
+ <Collection>
+ <String>SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTP</String>
+ </Collection>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderItemTP">
+ <Annotation Term="Common.DraftNode">
+ <Record>
+ <PropertyValue Property="PreparationAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderItemTPPreparation"/>
+ <PropertyValue Property="ValidationFunction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderItemTPValidation"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Common.DraftActivationVia">
+ <Collection>
+ <String>SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTP</String>
+ </Collection>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType/Customer">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Sales Order Customer"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderCustomer"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="Customer"/>
+ <PropertyValue Property="ValueListProperty" String="Customer"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CompanyName"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerVHType/Country">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Country"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_CountryVH"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="Country"/>
+ <PropertyValue Property="ValueListProperty" String="Country"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CountryT"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/SalesOrder">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Sales Order"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderTP"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrder"/>
+ <PropertyValue Property="ValueListProperty" String="SalesOrder"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/Product">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Product Value Help"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderProductVH"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="Product"/>
+ <PropertyValue Property="ValueListProperty" String="Product"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="Name"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="MainProductCategory"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="Supplier"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="SupplierName"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/TransactionCurrency">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Currency"/>
+ <PropertyValue Property="CollectionPath" String="I_Currency"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="TransactionCurrency"/>
+ <PropertyValue Property="ValueListProperty" String="Currency"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="Currency_Text"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyVHType/Country">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Country"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_CountryVH"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="Country"/>
+ <PropertyValue Property="ValueListProperty" String="Country"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CountryT"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/CustomerContact">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Customer Contact Person"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderCustCntctVH"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SoldToParty"/>
+ <PropertyValue Property="ValueListProperty" String="Customer"/>
+ </Record>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="CustomerContact"/>
+ <PropertyValue Property="ValueListProperty" String="ContactPerson"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="FirstName"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="LastName"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="EmailAddress"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SoldToParty">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Customer"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderCustomerVH"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SoldToParty"/>
+ <PropertyValue Property="ValueListProperty" String="Customer"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CompanyName"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CityName"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="Country"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CountryT"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/BillToParty">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Party"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderPartyVH"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="BillToParty"/>
+ <PropertyValue Property="ValueListProperty" String="Party"/>
+ </Record>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SoldToParty"/>
+ <PropertyValue Property="ValueListProperty" String="Customer"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="PartyName"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CityName"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="Country"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CountryT"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/ShipToParty">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Party"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderPartyVH"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="ShipToParty"/>
+ <PropertyValue Property="ValueListProperty" String="Party"/>
+ </Record>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SoldToParty"/>
+ <PropertyValue Property="ValueListProperty" String="Customer"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="PartyName"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CityName"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="Country"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="CountryT"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/CreatedByUser">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Sales Order Reviser"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderReviser"/>
+ <PropertyValue Property="SearchSupported" Bool="false"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="CreatedByUser"/>
+ <PropertyValue Property="ValueListProperty" String="UserID"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/LastChangedByUser">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Sales Order Reviser"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderReviser"/>
+ <PropertyValue Property="SearchSupported" Bool="false"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="LastChangedByUser"/>
+ <PropertyValue Property="ValueListProperty" String="UserID"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/TransactionCurrency">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Currency"/>
+ <PropertyValue Property="CollectionPath" String="I_Currency"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="TransactionCurrency"/>
+ <PropertyValue Property="ValueListProperty" String="Currency"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="Currency_Text"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SalesOrderOverallStatus">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Status"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderStatus"/>
+ <PropertyValue Property="SearchSupported" Bool="false"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrderOverallStatus"/>
+ <PropertyValue Property="ValueListProperty" String="SalesOrderOverallStatus"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="SalesOrderOverallStatus_Text"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SalesOrderPaymentMethod">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="EPM Demo: Sales Order Payment Method Values"/>
+ <PropertyValue Property="CollectionPath" String="Sepm_I_SlsordPaymentMethod"/>
+ <PropertyValue Property="SearchSupported" Bool="false"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrderPaymentMethod"/>
+ <PropertyValue Property="ValueListProperty" String="SalesOrderPaymentMethod"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="SalesOrderPaymentMethod_Text"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SalesOrderPaymentTerms">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="EPM Demo: Sales Order Payment Terms"/>
+ <PropertyValue Property="CollectionPath" String="Sepm_I_SlsordPaymentTerms"/>
+ <PropertyValue Property="SearchSupported" Bool="false"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrderPaymentTerms"/>
+ <PropertyValue Property="ValueListProperty" String="SalesOrderPaymentTerms"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="SalesOrderPaymentTerms_Text"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/SalesOrder">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Sales Order"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderTP"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrder"/>
+ <PropertyValue Property="ValueListProperty" String="SalesOrder"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/SalesOrderItem">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Sales Order Item"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderItemTP"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrder"/>
+ <PropertyValue Property="ValueListProperty" String="SalesOrder"/>
+ </Record>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrderItem"/>
+ <PropertyValue Property="ValueListProperty" String="SalesOrderItem"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/QuantityUnit">
+ <Annotation Term="Common.ValueList">
+ <Record>
+ <PropertyValue Property="Label" String="Quantity Unit"/>
+ <PropertyValue Property="CollectionPath" String="SEPMRA_I_QuantityUnit"/>
+ <PropertyValue Property="SearchSupported" Bool="true"/>
+ <PropertyValue Property="Parameters">
+ <Collection>
+ <Record Type="Common.ValueListParameterInOut">
+ <PropertyValue Property="LocalDataProperty" PropertyPath="QuantityUnit"/>
+ <PropertyValue Property="ValueListProperty" String="UnitOfMeasure"/>
+ </Record>
+ <Record Type="Common.ValueListParameterDisplayOnly">
+ <PropertyValue Property="ValueListProperty" String="UnitOfMeasure_Text"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType">
+ <Annotation Term="UI.SelectionFields">
+ <Collection>
+ <PropertyPath>ContactPerson</PropertyPath>
+ </Collection>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType">
+ <Annotation Term="Common.SemanticKey">
+ <Collection>
+ <PropertyPath>SalesOrderItem</PropertyPath>
+ <PropertyPath>SalesOrder</PropertyPath>
+ </Collection>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyVHType">
+ <Annotation Term="Common.SemanticKey">
+ <Collection>
+ <PropertyPath>Party</PropertyPath>
+ </Collection>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType">
+ <Annotation Term="Common.SemanticKey">
+ <Collection>
+ <PropertyPath>SalesOrder</PropertyPath>
+ </Collection>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType">
+ <Annotation Term="Common.SemanticKey">
+ <Collection>
+ <PropertyPath>ScheduleLine</PropertyPath>
+ <PropertyPath>SalesOrderItem</PropertyPath>
+ <PropertyPath>SalesOrder</PropertyPath>
+ </Collection>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderCustomer">
+ <Annotation Term="Capabilities.FilterRestrictions">
+ <Record>
+ <PropertyValue Property="FilterExpressionRestrictions">
+ <Collection>
+ <Record>
+ <PropertyValue Property="Property" PropertyPath="URL"/>
+ <PropertyValue Property="AllowedExpressions" String="SearchExpression"/>
+ </Record>
+ </Collection>
+ </PropertyValue>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType">
+ <Annotation Term="Common.SideEffects" Qualifier="AdminData">
+ <Record>
+ <PropertyValue Property="SourceEntities">
+ <Collection>
+ <NavigationPropertyPath/>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetProperties">
+ <Collection>
+ <PropertyPath>LastChangedByUser</PropertyPath>
+ <PropertyPath>LastChangedDateTime</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Common.SideEffects" Qualifier="SoldToPartyChange">
+ <Record>
+ <PropertyValue Property="SourceProperties">
+ <Collection>
+ <PropertyPath>SoldToParty</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetEntities">
+ <Collection>
+ <NavigationPropertyPath>to_Customer</NavigationPropertyPath>
+ <NavigationPropertyPath>to_CustomerContact</NavigationPropertyPath>
+ <NavigationPropertyPath>to_BillToParty</NavigationPropertyPath>
+ <NavigationPropertyPath>to_ShipToParty</NavigationPropertyPath>
+ <NavigationPropertyPath>to_TransactionCurrency</NavigationPropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetProperties">
+ <Collection>
+ <PropertyPath>CustomerContact</PropertyPath>
+ <PropertyPath>BillToParty</PropertyPath>
+ <PropertyPath>ShipToParty</PropertyPath>
+ <PropertyPath>NetAmountInTransactionCurrency</PropertyPath>
+ <PropertyPath>TransactionCurrency</PropertyPath>
+ <PropertyPath>CustomerContact_fc</PropertyPath>
+ <PropertyPath>BillToParty_fc</PropertyPath>
+ <PropertyPath>ShipToParty_fc</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Common.SideEffects" Qualifier="BillToPartyChange">
+ <Record>
+ <PropertyValue Property="SourceProperties">
+ <Collection>
+ <PropertyPath>BillToParty</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetEntities">
+ <Collection>
+ <NavigationPropertyPath>to_BillToParty</NavigationPropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Common.SideEffects" Qualifier="ShipToPartyChange">
+ <Record>
+ <PropertyValue Property="SourceProperties">
+ <Collection>
+ <PropertyPath>ShipToParty</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetEntities">
+ <Collection>
+ <NavigationPropertyPath>to_ShipToParty</NavigationPropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Common.SideEffects" Qualifier="CustomerContactChange">
+ <Record>
+ <PropertyValue Property="SourceProperties">
+ <Collection>
+ <PropertyPath>CustomerContact</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetEntities">
+ <Collection>
+ <NavigationPropertyPath>to_CustomerContact</NavigationPropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType">
+ <Annotation Term="Common.SideEffects" Qualifier="ProductChange">
+ <Record>
+ <PropertyValue Property="SourceProperties">
+ <Collection>
+ <PropertyPath>Product</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetEntities">
+ <Collection>
+ <NavigationPropertyPath>to_Product</NavigationPropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetProperties">
+ <Collection>
+ <PropertyPath>GrossAmountInTransacCurrency</PropertyPath>
+ <PropertyPath>NetAmountInTransactionCurrency</PropertyPath>
+ <PropertyPath>TaxAmountInTransactionCurrency</PropertyPath>
+ <PropertyPath>to_SalesOrder/GrossAmountInTransacCurrency</PropertyPath>
+ <PropertyPath>to_SalesOrder/NetAmountInTransactionCurrency</PropertyPath>
+ <PropertyPath>to_SalesOrder/TaxAmountInTransactionCurrency</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+ </Record>
+ </Annotation>
+ </Annotations>
+ <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType">
+ <Annotation Term="Common.SideEffects" Qualifier="QuantityChange">
+ <Record>
+ <PropertyValue Property="SourceProperties">
+ <Collection>
+ <PropertyPath>Quantity</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="TargetProperties">
+ <Collection>
+ <PropertyPath>to_SalesOrderItem/GrossAmountInTransacCurrency</PropertyPath>
+ <PropertyPath>to_SalesOrderItem/TaxAmountInTransactionCurrency</PropertyPath>
+ <PropertyPath>to_SalesOrderItem/NetAmountInTransactionCurrency</PropertyPath>
+ <PropertyPath>to_SalesOrder/GrossAmountInTransacCurrency</PropertyPath>
+ <PropertyPath>to_SalesOrder/NetAmountInTransactionCurrency</PropertyPath>
+ <PropertyPath>to_SalesOrder/TaxAmountInTransactionCurrency</PropertyPath>
+ </Collection>
+ </PropertyValue>
+ <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+ </Record>
+ </Annotation>
+ </Annotations>
+ </Schema>
+ </edmx:DataServices>
+</edmx:Edmx>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/resources/org/apache/olingo/client/core/UI.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/UI.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/UI.xml
new file mode 100644
index 0000000..6a084d7
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/UI.xml
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
+ <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/os/vocabularies/Org.OData.Core.V1.xml">
+ <edmx:Include Namespace="Org.OData.Core.V1" Alias="Core" />
+ </edmx:Reference>
+ <edmx:Reference Uri="/coco/vocabularies/Communication.xml">
+ <edmx:Include Namespace="Org.OData.Communication.V1" Alias="vCard" />
+ </edmx:Reference>
+ <edmx:Reference Uri="/coco/vocabularies/Common.xml">
+ <edmx:Include Namespace="Org.OData.Common.V1" Alias="Common" />
+ </edmx:Reference>
+ <edmx:DataServices>
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Alias="UI" Namespace="com.vocabularies.UI.v1">
+ <Annotation Term="Core.Description">
+ <String>Terms for presenting data in user interfaces</String>
+ </Annotation>
+ <Annotation Term="Core.Description" Qualifier="Published">
+ <String>2013-10-16 © Copyright 2013</String>
+ </Annotation>
+
+ <!-- Semantic Views / Perspectives -->
+
+ <Term Name="HeaderInfo" Type="UI.HeaderInfoType" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ <Annotation Term="Core.Description">
+ <String>HeaderInfos are mandatory and must be exposed on every thing of the model</String>
+ </Annotation>
+ </Term>
+ <ComplexType Name="HeaderInfoType">
+ <Property Name="TypeName" Type="Edm.String">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="TypeNamePlural" Type="Edm.String" Nullable="false">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="TypeImageUrl" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsURL" />
+ </Property>
+ <Property Name="Title" Type="UI.DataField" Nullable="false" />
+ <Property Name="Description" Type="UI.DataField" Nullable="true" />
+ <Property Name="ImageUrl" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsURL" />
+ </Property>
+ </ComplexType>
+
+ <Term Name="Identification" Type="Collection(UI.DataFieldAbstract)" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ <Annotation Term="Core.Description">
+ <String>HeaderInfo plus this set of attributes identifies the object</String>
+ </Annotation>
+ </Term>
+
+ <Term Name="Badge" Type="UI.BadgeType" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ <Annotation Term="Core.Description">
+ <String>Badge is similar to a business card view</String>
+ </Annotation>
+ </Term>
+ <ComplexType Name="BadgeType">
+ <Property Name="HeadLine" Type="UI.DataField" Nullable="false" />
+ <Property Name="Title" Type="UI.DataField" Nullable="false" />
+ <Property Name="ImageUrl" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsURL" />
+ </Property>
+ <Property Name="TypeImageUrl" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsURL" />
+ </Property>
+ <Property Name="MainInfo" Type="UI.DataField" Nullable="true" />
+ <Property Name="SecondaryInfo" Type="UI.DataField" Nullable="true" />
+ </ComplexType>
+
+ <Term Name="LineItem" Type="Collection(UI.DataFieldAbstract)" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+
+ <Term Name="StatusInfo" Type="Collection(UI.DataFieldAbstract)" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+
+ <Term Name="FieldGroup" Type="UI.FieldGroupType" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+ <ComplexType Name="FieldGroupType">
+ <Property Name="Label" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="Data" Type="Collection(UI.DataFieldAbstract)" />
+ </ComplexType>
+
+ <!-- To be discussed, please don't deliver -->
+ <Term Name="GeoPoints" Type="Collection(Edm.AnnotationPath)" AppliesTo="EntityType">
+ <Annotation Term="Core.Description">
+ <String>
+ Each collection element MUST reference an annotation of a
+ vCard.Contact or
+ collection of vCard.ContactData or
+ UI.Contacts or
+ UI.GeoLocation or
+ of UI.GeoLocationType
+ </String>
+ </Annotation>
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+ <!-- To be discussed, please don't deliver -->
+
+ <Term Name="GeoLocations" Type="Collection(UI.GeoLocationType)" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+ <Term Name="GeoLocation" Type="UI.GeoLocationType" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+ <ComplexType Name="GeoLocationType">
+ <Annotation Term="Core.Description">
+ <String>Set of Attributes which defines the Localization of the object</String>
+ </Annotation>
+ <Property Name="Latitude" Type="Edm.Double" Nullable="true" />
+ <Property Name="Longitude" Type="Edm.Double" Nullable="true" />
+ <Property Name="Location" Type="Edm.GeographyPoint" Nullable="true" />
+ <Property Name="Address" Type="vCard.AddressType" Nullable="true" />
+ </ComplexType>
+
+ <Term Name="Contacts" Type="Collection(Edm.AnnotationPath)" AppliesTo="EntityType">
+ <Annotation Term="Core.Description" String="Each collection element MUST reference an annotation of a vCard.Contact" />
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+
+ <!-- To be discussed, please don't deliver -->
+ <Term Name="MediaResource" Type="UI.MediaResourceType" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ <Annotation Term="Core.Description" String="Properties that are relevant for Media Resources" />
+ </Term>
+ <ComplexType Name="MediaResourceType">
+ <Property Name="Url" Type="Edm.String" Nullable="false">
+ <Annotation Term="Core.IsURL" />
+ </Property>
+ <Property Name="ContentType" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsMediaType" />
+ </Property>
+ <Property Name="ByteSize" Type="Edm.Int64" Nullable="true" />
+ <Property Name="ChangedAt" Type="Edm.DateTimeOffset" Nullable="true" />
+ <Property Name="Thumbnail" Type="UI.ImageType" Nullable="true" />
+ <Property Name="Title" Type="UI.DataField" Nullable="false" />
+ <Property Name="Description" Type="UI.DataField" Nullable="true" />
+ </ComplexType>
+ <ComplexType Name="ImageType">
+ <Property Name="Url" Type="Edm.String" Nullable="false">
+ <Annotation Term="Core.IsURL" />
+ </Property>
+ <Property Name="Width" Type="Edm.String" Nullable="true" />
+ <Property Name="Height" Type="Edm.String" Nullable="true" />
+ </ComplexType>
+ <!-- To be discussed, please don't deliver -->
+
+ <!-- To be discussed, please don't deliver -->
+ <Term Name="AdditionalInfo" Type="Edm.AnnotationPath" AppliesTo="Annotation">
+ <Annotation Term="Core.Description">
+ <String>
+ Applies to UI.GeoLocation and vCard.Contact annotations only
+ Provides additional related information for a UI.GeoLocation or vCard.Contact
+ Reference to UI.HeaderInfo, UI.Badge, a qualified UI.FieldGroup, or a dedicated property tagged with Core.IsUrl
+ </String>
+ </Annotation>
+ </Term>
+ <!-- To be discussed, please don't deliver -->
+
+ <Term Name="DataPoint" Type="UI.DataPointType" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+ <ComplexType Name="DataPointType">
+ <Property Name="Title" Type="Edm.String" Nullable="false">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="Description" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="LongDescription" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="Value" Type="Edm.PrimitiveType" Nullable="false">
+ <Annotation Term="Core.Description" String="The numeric value of the DataPoint" />
+ <Annotation Term="Core.LongDescription">
+ <String>
+ It could be annotated with either UoM.ISOCurrency or UoM.Unit.
+ Percentage values are annotated with UoM.Unit = '%'.
+ A renderer should take an optional Common.Text annotation into consideration.
+ </String>
+ </Annotation>
+ </Property>
+ <Property Name="ValueFormat" Type="UI.NumberFormat" Nullable="true" />
+ <Property Name="ReferencePeriod" Type="UI.ReferencePeriod" Nullable="true" />
+ <Property Name="Criticality" Type="UI.CriticalityType" Nullable="true" />
+ <Property Name="CriticalityCalculation" Type="UI.CriticalityCalculationType" Nullable="true" />
+ <Property Name="Trend" Type="UI.TrendType" Nullable="true" />
+ <Property Name="TrendCalculation" Type="UI.TrendCalculationType" Nullable="true" />
+ <Property Name="Responsible" Type="vCard.ContactType" Nullable="true" />
+ </ComplexType>
+
+ <ComplexType Name="NumberFormat">
+ <Property Name="ScaleFactor" Type="Edm.Decimal" Scale="variable" Nullable="true" />
+ <Property Name="NumberOfFractionalDigits" Type="Edm.Byte" Nullable="true" />
+ </ComplexType>
+
+ <ComplexType Name="ReferencePeriod">
+ <Property Name="Description" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="Start" Type="Edm.DateTimeOffset" Nullable="true" />
+ <Property Name="End" Type="Edm.DateTimeOffset" Nullable="true" />
+ </ComplexType>
+
+ <EnumType Name="CriticalityType">
+ <Member Name="Negative" />
+ <Member Name="Critical" />
+ <Member Name="Positive" />
+ </EnumType>
+
+ <ComplexType Name="CriticalityCalculationType">
+ <Annotation Term="Core.Description">
+ <String>
+ Direction: Target
+ - Positive: ge ToleranceRangeLowValue and le ToleranceRangeHighValue
+ - Critical: ge DeviationRangeLowValue and lt ToleranceRangeLowValue or
+ gt ToleranceRangeHighValue and le DeviationRangeHighValue
+ - Negative: lt DeviationRangeLowValue and gt DeviationRangeHighValue
+ Direction: Minimize
+ - Positive: le ToleranceRangeHighValue
+ - Critical: gt ToleranceRangeHighValue and le DeviationRangeHighValue
+ - Negative: gt DeviationRangeHighValue
+ Direction: Maximize
+ - Positive: ge ToleranceRangeLowValue
+ - Critical: lt ToleranceRangeLowValue and ge DeviationRangeLowValue
+ - Negative: lt DeviationRangeLowValue
+ </String>
+ </Annotation>
+ <Property Name="ImprovementDirection" Type="UI.ImprovementDirectionType" Nullable="false">
+ </Property>
+ <Property Name="ToleranceRangeLowValue" Type="Edm.PrimitiveType" Nullable="true" />
+ <Property Name="ToleranceRangeHighValue" Type="Edm.PrimitiveType" Nullable="true" />
+ <Property Name="DeviationRangeLowValue" Type="Edm.PrimitiveType" Nullable="true" />
+ <Property Name="DeviationRangeHighValue" Type="Edm.PrimitiveType" Nullable="true" />
+ </ComplexType>
+
+ <EnumType Name="ImprovementDirectionType">
+ <Member Name="Minimize" />
+ <Member Name="Target" />
+ <Member Name="Maximize" />
+ </EnumType>
+
+ <EnumType Name="TrendType">
+ <Member Name="StrongUp" />
+ <Member Name="Up" />
+ <Member Name="Sideways" />
+ <Member Name="Down" />
+ <Member Name="StrongDown" />
+ </EnumType>
+
+ <ComplexType Name="TrendCalculationType">
+ <Annotation Term="Core.Description">
+ <String>
+ Value sub ReferenceValue ( div ReferenceValue if IsRelativeDifference ) must be
+ - StrongUp: ge StrongUpDifference
+ - Up: lt StrongUpDifference and ge UpDifference
+ - Sideways: lt UpDifference and gt DownDifference
+ - Down: gt StrongDownDifference and le DownDifference
+ - StrongDown: le StrongDownDifference
+ </String>
+ </Annotation>
+ <Property Name="ReferenceValue" Type="Edm.PrimitiveType" Nullable="false" />
+ <Property Name="IsRelativeDifference" Type="Edm.Boolean" DefaultValue="false" />
+ <Property Name="UpDifference" Type="Edm.Decimal" Nullable="false" />
+ <Property Name="StrongUpDifference" Type="Edm.Decimal" Nullable="false" />
+ <Property Name="DownDifference" Type="Edm.Decimal" Nullable="false" />
+ <Property Name="StrongDownDifference" Type="Edm.Decimal" Nullable="false" />
+ </ComplexType>
+
+ <Term Name="Chart" Type="UI.ChartDefinitionType" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ </Term>
+ <ComplexType Name="ChartDefinitionType">
+ <Property Name="Title" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="Description" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ <Property Name="ChartType" Type="UI.ChartType" Nullable="false" />
+ <Property Name="Measures" Type="Collection(Edm.PropertyPath)" />
+ <Property Name="Dimensions" Type="Collection(Edm.PropertyPath)" />
+ </ComplexType>
+
+ <EnumType Name="ChartType">
+ <Member Name="Column" />
+ <Member Name="ColumnStacked" />
+ <Member Name="ColumnStacked100" />
+ <Member Name="Bar" />
+ <Member Name="BarStacked" />
+ <Member Name="BarStacked100" />
+ <Member Name="Area" />
+ <Member Name="AreaStacked" />
+ <Member Name="AreaStacked100" />
+ <Member Name="HorizontalArea" />
+ <Member Name="HorizontalAreaStacked" />
+ <Member Name="HorizontalAreaStacked100" />
+ <Member Name="Line" />
+ <Member Name="Pie" />
+ <Member Name="Donut" />
+ <Member Name="Scatter" />
+ <Member Name="Bubble" />
+ <Member Name="Radar" />
+ <Member Name="HeatMap" />
+ <Member Name="TreeMap" />
+ <Member Name="Waterfall" />
+ <!-- Future: GeoPie, GeoBubble, ChoroplethMap -->
+ </EnumType>
+
+ <Term Name="SelectionFields" Type="Collection(Edm.PropertyPath)" AppliesTo="EntityType">
+ <Annotation Term="UI.ThingPerspective" />
+ <Annotation Term="Core.Description" String="Properties that might be relevant for filtering a listof entity instances" />
+ </Term>
+
+ <!-- Segmentation of content according to facets of the Object -->
+
+ <Term Name="Facets" Type="Collection(UI.Facet)" AppliesTo="EntityType">
+ </Term>
+
+ <ComplexType Name="Facet" Abstract="true">
+ <Annotation Term="Core.Description" String="Base type for facets" />
+ <Property Name="Label" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ </ComplexType>
+ <ComplexType Name="CollectionFacet" BaseType="UI.Facet">
+ <Annotation Term="Core.Description" String="Collection of Facets" />
+ <Property Name="Facets" Type="Collection(UI.Facet)" />
+ </ComplexType>
+ <ComplexType Name="ReferenceFacet" BaseType="UI.Facet">
+ <Annotation Term="Core.Description" String="Facet that refers to a thing perspective, e.g. LineItem" />
+ <Property Name="Target" Type="Edm.AnnotationPath" Nullable="false">
+ <Annotation Term="Core.Description">
+ <String>Path MUST end in vCard.Contact or vCard.Address or a term that is tagged with UI.ThingPerspective, e.g. UI.StatusInfo, UI.LineItem, UI.Identification, UI.FieldGroup, UI.Badge</String>
+ </Annotation>
+ </Property>
+ </ComplexType>
+ <ComplexType Name="ReferenceURLFacet" BaseType="UI.Facet">
+ <Property Name="Url" Type="Edm.String" Nullable="false">
+ <Annotation Term="Core.IsURL" />
+ </Property>
+ <Property Name="UrlContentType" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsMediaType" />
+ </Property>
+ </ComplexType>
+
+
+ <!-- basic type definitions for reuse goes here -->
+
+ <Term Name="ThingPerspective" Type="Core.Tag" DefaultValue="true" AppliesTo="Term">
+ <Annotation Term="Core.Description" String="This Term is a Thing Perspective" />
+ </Term>
+ <Term Name="IsSummary" Type="Core.Tag" DefaultValue="true" AppliesTo="Record">
+ <Annotation Term="Core.Description"
+ String="This Facet and all included Facets are the summary of the thing. At most one Facet of a thing can be tagged with this term" />
+ <Annotation Term="Core.RequiresType" String="UI.Facet" />
+ </Term>
+ <Term Name="PartOfPreview" Type="Core.Tag" DefaultValue="true" AppliesTo="Record">
+ <Annotation Term="Core.Description" String="This Facet and all included Facets are part of the Thing preview" />
+ <Annotation Term="Core.RequiresType" String="UI.Facet" />
+ </Term>
+ <Term Name="Map" Type="Core.Tag" DefaultValue="true" AppliesTo="Record">
+ <Annotation Term="Core.Description" String="Target MUST reference a UI.GeoLocation, vCard.Address or a collection of these" />
+ <Annotation Term="Core.RequiresType" String="UI.ReferenceFacet" />
+ </Term>
+ <!-- To be discussed, please don't deliver -->
+ <Term Name="Gallery" Type="Core.Tag" DefaultValue="true" AppliesTo="Record">
+ <Annotation Term="Core.Description" String="Target MUST reference a UI.MediaResource" />
+ <Annotation Term="Core.RequiresType" String="UI.ReferenceFacet" />
+ </Term>
+ <!-- To be discussed, please don't deliver -->
+
+ <Term Name="IsImageURL" Type="Core.Tag" DefaultValue="true" AppliesTo="Property Term">
+ <Annotation Term="Core.Description"
+ String="Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image" />
+ <Annotation Term="Core.RequiresType" String="Edm.String" />
+ </Term>
+ <Term Name="MultiLineText" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
+ <Annotation Term="Core.Description"
+ String="Properties annotated with this annotation should be rendered as multi-line text (e.g. text area)" />
+ <Annotation Term="Core.RequiresType" String="Edm.String" />
+ </Term>
+ <!-- To be discussed, please don't deliver -->
+ <!-- not ready yet, wait for UI5 concerning the format of that value -->
+ <Term Name="DisplayTimeZone" Type="Edm.Int32" AppliesTo="Property">
+ <Annotation Term="Core.Description">
+ <String>Contains information for time- or date-time-fields in which time zone the time value should be displayed.</String>
+ </Annotation>
+ </Term>
+ <!-- To be discussed, please don't deliver -->
+
+ <Term Name="Importance" Type="UI.ImportanceType" AppliesTo="Annotation Record">
+ <Annotation Term="Core.Description"
+ String="Expresses the importance, e.g. importance of a DataField or a the importance of a annotation" />
+ </Term>
+ <EnumType Name="ImportanceType">
+ <Member Name="High" />
+ <Member Name="Medium" />
+ <Member Name="Low" />
+ </EnumType>
+
+ <ComplexType Name="DataFieldAbstract" Abstract="true">
+ <Property Name="Label" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ </ComplexType>
+
+ <ComplexType Name="DataFieldForAnnotation" BaseType="UI.DataFieldAbstract">
+ <Property Name="Target" Type="Edm.AnnotationPath">
+ <Annotation Term="Core.Description" String="Annotation path MUST end in vCard.Address or UI.DataPoint" />
+ </Property>
+ </ComplexType>
+ <ComplexType Name="DataFieldForAction" BaseType="UI.DataFieldAbstract">
+ <Property Name="Action" Type="Common.QualifiedName">
+ <Annotation Term="Core.Description" String="Qualified name of an Action, Function, ActionImport or FunctionImport in scope" />
+ </Property>
+ </ComplexType>
+ <ComplexType Name="DataField" BaseType="UI.DataFieldAbstract">
+ <Property Name="Value" Type="Edm.PrimitiveType" Nullable="false">
+ <Annotation Term="Core.IsLanguageDependent" />
+ </Property>
+ </ComplexType>
+ <ComplexType Name="DataFieldWithNavigationPath" BaseType="UI.DataField">
+ <Property Name="Target" Type="Edm.NavigationPropertyPath" Nullable="false">
+ <Annotation Term="Core.Description">
+ <String>Contains either a navigation property or a term cast, where term is of type Edm.EntityType or a concrete entity type or a collection of these types</String>
+ </Annotation>
+ </Property>
+ </ComplexType>
+ <ComplexType Name="DataFieldWithUrl" BaseType="UI.DataField">
+ <Property Name="Url" Type="Edm.String" Nullable="false">
+ <Annotation Term="Core.IsURL" />
+ </Property>
+ <Property Name="UrlContentType" Type="Edm.String" Nullable="true">
+ <Annotation Term="Core.IsMediaType" />
+ </Property>
+ </ComplexType>
+
+ </Schema>
+ </edmx:DataServices>
+</edmx:Edmx>
\ No newline at end of file