blob: 7007b89fbb1feddc3003a10773d5b5d9bb39279b [file] [log] [blame]
/*
* 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.
*/
package org.apache.olingo.server.tecsvc.data;
import java.math.BigDecimal;
import java.net.URI;
import java.nio.charset.Charset;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.UUID;
import org.apache.olingo.commons.api.Constants;
import org.apache.olingo.commons.api.data.ComplexValue;
import org.apache.olingo.commons.api.data.Entity;
import org.apache.olingo.commons.api.data.EntityCollection;
import org.apache.olingo.commons.api.data.Link;
import org.apache.olingo.commons.api.data.Operation;
import org.apache.olingo.commons.api.data.Property;
import org.apache.olingo.commons.api.data.ValueType;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.provider.CsdlAction;
import org.apache.olingo.commons.api.edm.provider.CsdlFunction;
import org.apache.olingo.commons.api.edm.provider.CsdlParameter;
import org.apache.olingo.commons.api.ex.ODataException;
import org.apache.olingo.server.api.OData;
import org.apache.olingo.server.api.serializer.SerializerException;
import org.apache.olingo.server.api.uri.UriHelper;
import org.apache.olingo.server.tecsvc.provider.ActionProvider;
import org.apache.olingo.server.tecsvc.provider.ComplexTypeProvider;
import org.apache.olingo.server.tecsvc.provider.EntityTypeProvider;
import org.apache.olingo.server.tecsvc.provider.FunctionProvider;
import org.apache.olingo.server.tecsvc.provider.SchemaProvider;
public class DataCreator {
private static final UUID GUID = UUID.fromString("01234567-89ab-cdef-0123-456789abcdef");
private final Map<String, EntityCollection> data;
public DataCreator(final OData odata, final Edm edm) {
data = new HashMap<String, EntityCollection>();
data.put("ESTwoPrim", createESTwoPrim(edm, odata));
data.put("ESAllPrim", createESAllPrim(edm, odata));
data.put("ESCompAllPrim", createESCompAllPrim(edm, odata));
data.put("ESCollAllPrim", createESCollAllPrim(edm, odata));
data.put("ESMixPrimCollComp", createESMixPrimCollComp(edm, odata));
data.put("ESAllKey", createESAllKey(edm, odata));
data.put("ESCompComp", createESCompComp(edm, odata));
data.put("ESMedia", createESMedia(edm, odata));
data.put("ESKeyNav", createESKeyNav(edm, odata));
data.put("ESTwoKeyNav", createESTwoKeyNav(edm, odata));
data.put("ESCompCollComp", createESCompCollComp(edm, odata));
data.put("ESServerSidePaging", createESServerSidePaging(edm, odata));
data.put("ESStreamServerSidePaging", createESStreamServerSidePaging(edm, odata));
data.put("ESTwoKeyTwoPrim", createESTwoKeyTwoPrim(edm, odata));
data.put("ESAllNullable", createESAllNullable(edm, odata));
data.put("ESTwoBase", createESTwoBase(edm, odata));
data.put("ESBaseTwoKeyNav", createESBaseTwoKeyNav(edm, odata));
data.put("ESCompCollAllPrim", createESCompCollAllPrim(edm, odata));
data.put("ESFourKeyAlias", createESFourKeyAlias(edm, odata));
data.put("ESBase", createESBase(edm, odata));
data.put("ESCompMixPrimCollComp", createESCompMixPrimCollComp(edm, odata));
data.put("ESMixEnumDefCollComp", createESMixEnumDefCollComp(edm, odata));
data.put("ESStream", createESStream(edm, odata));
data.put("ESWithStream", createESWithStream(edm, odata));
data.put("ESPeople", createESPeople(edm, odata));
data.put("SINav", createSINav(edm, odata));
data.put("SI", createESTwoPrim(edm, odata));
data.put("ESCompCollDerived", createESCompCollDerived(edm, odata));
data.put("ESTwoPrimDerived", createESTwoPrimDerived(edm, odata));
data.put("ESAllPrimDerived", createESAllPrimDerived(edm, odata));
data.put("ESDelta", createESDelta(edm, odata));
data.put("ESKeyNavCont", createESKeyNavCont(edm, odata));
data.put("ETCont", createETCont(edm, odata));
data.put("ETBaseCont", createETBaseCont(edm, odata));
data.put("ETTwoCont", createETTwoCont(edm, odata));
data.put("ESStreamOnComplexProp", createETStreamOnComplexProp(edm, odata));
linkSINav(data);
linkESTwoPrim(data);
linkESAllPrim(data);
linkESAllPrimDerived(data);
linkESKeyNav(data);
linkESTwoKeyNav(data);
linkESPeople(data);
linkESDelta(data);
linkESKeyNavCont(data);
linkETBaseCont(data);
linkPropCompInESCompMixPrimCollCompToETTwoKeyNav(data);
linkCollPropCompInESCompMixPrimCollCompToETTwoKeyNav(data);
linkPropCompInESCompMixPrimCollCompToETMedia(data);
linkPropMixPrimCompInESCompMixPrimCollCompToETTwoKeyNav(data);
linkPropMixPrimCompInESCompMixPrimCollCompToCollETTwoKeyNav(data);
linkColPropCompInESMixPrimCollCompToETTwoKeyNav(data);
linkETStreamOnComplexPropWithNavigationProperty(data);
linkETStreamOnComplexPropWithNavigationPropertyMany(data);
}
private void linkETStreamOnComplexPropWithNavigationProperty(Map<String, EntityCollection> data) {
EntityCollection collection = data.get("ESStreamOnComplexProp");
Entity entity = collection.getEntities().get(1);
ComplexValue complexValue = entity.getProperties().get(3).asComplex();
final List<Entity> esStreamTargets = data.get("ESWithStream").getEntities();
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETStreamOnComplexPropOne");
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETStreamOnComplexPropOne");
link.setInlineEntity(esStreamTargets.get(1));
link.setHref(esStreamTargets.get(1).getId().toASCIIString());
complexValue.getNavigationLinks().add(link);
}
private void linkETStreamOnComplexPropWithNavigationPropertyMany(
Map<String, EntityCollection> data) {
EntityCollection collection = data.get("ESStreamOnComplexProp");
Entity entity = collection.getEntities().get(1);
ComplexValue complexValue = entity.getProperties().get(3).asComplex();
final List<Entity> esStreamTargets = data.get("ESWithStream").getEntities();
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETStreamOnComplexPropMany");
link.setType(Constants.ENTITY_SET_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETStreamOnComplexPropMany");
EntityCollection target = new EntityCollection();
target.setCount(2);
target.getEntities().addAll(Arrays.asList(esStreamTargets.get(0), esStreamTargets.get(1)));
link.setInlineEntitySet(target);
link.setHref(entity.getId().toASCIIString() + "/" +
entity.getProperties().get(3).getName() + "/"
+ "NavPropertyETStreamOnComplexPropMany");
complexValue.getNavigationLinks().add(link);
}
private EntityCollection createETStreamOnComplexProp(Edm edm, OData odata) {
EntityCollection entityCollection = new EntityCollection();
Link readLink = new Link();
readLink.setRel(Constants.NS_MEDIA_READ_LINK_REL);
readLink.setHref("readLink");
Entity entity = new Entity();
entity.addProperty(createPrimitive("PropertyStream", createImage("darkturquoise")));
readLink.setInlineEntity(entity);
Link readLink1 = new Link();
readLink1.setRel(Constants.NS_MEDIA_READ_LINK_REL);
readLink1.setHref("readLink");
entity = new Entity();
entity.addProperty(createPrimitive("PropertyEntityStream", createImage("darkturquoise")));
readLink1.setInlineEntity(entity);
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MAX_VALUE))
.addProperty(new Property(null, "PropertyEntityStream", ValueType.PRIMITIVE, readLink1))
.addProperty(createComplex("PropertyCompWithStream",
ComplexTypeProvider.nameCTWithStreamProp.getFullQualifiedNameAsString(),
new Property(null, "PropertyStream", ValueType.PRIMITIVE, readLink),
createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 333),
createPrimitive("PropertyString", "TEST123")))));
Link editLink = new Link();
editLink.setRel(Constants.NS_MEDIA_EDIT_LINK_REL);
editLink.setHref("http://mediaserver:1234/editLink");
editLink.setMediaETag("eTag");
editLink.setType("image/jpeg");
entity = new Entity();
entity.addProperty(createPrimitive("PropertyStream", createImage("royalblue")));
editLink.setInlineEntity(entity);
Link editLink2 = new Link();
editLink2.setRel(Constants.NS_MEDIA_EDIT_LINK_REL);
editLink2.setHref("http://mediaserver:1234/editLink");
editLink2.setMediaETag("eTag");
editLink2.setType("image/jpeg");
entity = new Entity();
entity.addProperty(createPrimitive("PropertyEntityStream", createImage("royalblue")));
editLink2.setInlineEntity(entity);
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 7))
.addProperty(createPrimitive("PropertyInt32", (Integer) 10))
.addProperty(new Property(null, "PropertyEntityStream", ValueType.PRIMITIVE, editLink2))
.addProperty(createComplex("PropertyCompWithStream",
ComplexTypeProvider.nameCTWithStreamProp.getFullQualifiedNameAsString(),
new Property(null, "PropertyStream", ValueType.PRIMITIVE, editLink),
createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 333),
createPrimitive("PropertyString", "TEST123")))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETStreamOnComplexProp));
createEntityId(edm, odata, "ESStreamOnComplexProp", entityCollection);
createOperations("ESStreamOnComplexProp", entityCollection, EntityTypeProvider.nameETStreamOnComplexProp);
return entityCollection;
}
@SuppressWarnings("unchecked")
private void linkCollPropCompInESCompMixPrimCollCompToETTwoKeyNav(Map<String, EntityCollection> data2) {
EntityCollection collection = data.get("ESCompMixPrimCollComp");
Entity entity = collection.getEntities().get(0);
ComplexValue complexValue = entity.getProperties().get(1).asComplex();
List<ComplexValue> innerComplexValue = (List<ComplexValue>) complexValue.getValue().get(3).asCollection();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
for (ComplexValue innerValue : innerComplexValue) {
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETTwoKeyNavOne");
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETTwoKeyNavOne");
link.setHref(esTwoKeyNavTargets.get(1).getId().toASCIIString());
innerValue.getNavigationLinks().add(link);
link.setInlineEntity(esTwoKeyNavTargets.get(1));
}
}
@SuppressWarnings("unchecked")
private void linkColPropCompInESMixPrimCollCompToETTwoKeyNav(Map<String, EntityCollection> data2) {
EntityCollection collection = data.get("ESMixPrimCollComp");
Entity entity = collection.getEntities().get(0);
List<ComplexValue> list = (List<ComplexValue>) entity.getProperties().get(3).asCollection();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
for (ComplexValue complexValue : list) {
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETTwoKeyNavOne");
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETTwoKeyNavOne");
link.setHref(esTwoKeyNavTargets.get(1).getId().toASCIIString());
complexValue.getNavigationLinks().add(link);
link.setInlineEntity(esTwoKeyNavTargets.get(1));
}
ComplexValue complexValue = (ComplexValue) entity.getProperties().get(2).asComplex();
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETTwoKeyNavOne");
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETTwoKeyNavOne");
link.setHref(esTwoKeyNavTargets.get(0).getId().toASCIIString());
complexValue.getNavigationLinks().add(link);
link.setInlineEntity(esTwoKeyNavTargets.get(0));
}
private void linkPropMixPrimCompInESCompMixPrimCollCompToETTwoKeyNav(
Map<String, EntityCollection> data) {
EntityCollection collection = data.get("ESCompMixPrimCollComp");
Entity entity = collection.getEntities().get(0);
ComplexValue complexValue = entity.getProperties().get(1).asComplex();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETTwoKeyNavOne");
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETTwoKeyNavOne");
link.setInlineEntity(esTwoKeyNavTargets.get(1));
link.setHref(esTwoKeyNavTargets.get(1).getId().toASCIIString());
complexValue.getNavigationLinks().add(link);
}
private void linkPropMixPrimCompInESCompMixPrimCollCompToCollETTwoKeyNav(
Map<String, EntityCollection> data) {
EntityCollection collection = data.get("ESCompMixPrimCollComp");
Entity entity = collection.getEntities().get(0);
ComplexValue complexValue = entity.getProperties().get(1).asComplex();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETTwoKeyNavMany");
link.setType(Constants.ENTITY_SET_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETTwoKeyNavMany");
EntityCollection target = new EntityCollection();
target.setCount(2);
target.getEntities().addAll(Arrays.asList(esTwoKeyNavTargets.get(0), esTwoKeyNavTargets.get(2)));
link.setInlineEntitySet(target);
link.setHref(entity.getId().toASCIIString() + "/" +
entity.getProperties().get(1).getName() + "/"
+ "NavPropertyETTwoKeyNavMany");
complexValue.getNavigationLinks().add(link);
}
private void linkPropCompInESCompMixPrimCollCompToETMedia(Map<String, EntityCollection> data) {
EntityCollection collection = data.get("ESCompMixPrimCollComp");
Entity entity = collection.getEntities().get(0);
ComplexValue complexValue = entity.getProperties().get(1).asComplex();
ComplexValue innerComplexValue = complexValue.getValue().get(2).asComplex();
final List<Entity> esMediaTargets = data.get("ESMedia").getEntities();
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETMediaOne");
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETMediaOne");
link.setHref(esMediaTargets.get(1).getId().toASCIIString());
innerComplexValue.getNavigationLinks().add(link);
link.setInlineEntity(esMediaTargets.get(1));
}
private void linkPropCompInESCompMixPrimCollCompToETTwoKeyNav(Map<String, EntityCollection> data) {
EntityCollection collection = data.get("ESCompMixPrimCollComp");
Entity entity = collection.getEntities().get(0);
ComplexValue complexValue = entity.getProperties().get(1).asComplex();
ComplexValue innerComplexValue = complexValue.getValue().get(2).asComplex();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
Link link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + "NavPropertyETTwoKeyNavOne");
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle("NavPropertyETTwoKeyNavOne");
link.setHref(esTwoKeyNavTargets.get(1).getId().toASCIIString());
innerComplexValue.getNavigationLinks().add(link);
link.setInlineEntity(esTwoKeyNavTargets.get(1));
}
private EntityCollection createESDelta(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "Number:" + Short.MAX_VALUE)));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MIN_VALUE))
.addProperty(createPrimitive("PropertyString", "Number:" + Short.MIN_VALUE)));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", 0))
.addProperty(createPrimitive("PropertyString", "Number:" + 0)));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", 100))
.addProperty(createPrimitive("PropertyString", "Number:" + 100)));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", -1))
.addProperty(createPrimitive("PropertyString", "Number:" + -1)));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETDelta));
createEntityId(edm, odata, "ESDelta", entityCollection);
createOperations("ESDelta", entityCollection, EntityTypeProvider.nameETDelta);
return entityCollection;
}
private EntityCollection createSINav(Edm edm, OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(createESTwoKeyNavEntity((short) 1, "1"));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETTwoKeyNav));
createEntityId(edm, odata, "ESTwoKeyNav", entityCollection);
createOperations("ESTwoKeyNav", entityCollection, EntityTypeProvider.nameETTwoKeyNav);
return entityCollection;
}
@SuppressWarnings("unchecked")
private EntityCollection createESCompCollDerived(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
Property derivedComplexProperty =
createComplex("PropertyCompAno",
ComplexTypeProvider.nameCTBaseAno.getFullQualifiedNameAsString(),
createPrimitive("PropertyString", "Num111"),
createPrimitive("AdditionalPropString", "Test123")
);
((ComplexValue)derivedComplexProperty.getValue()).setTypeName(
ComplexTypeProvider.nameCTBaseAno.getFullQualifiedNameAsString());
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(
createComplexCollection("CollPropertyCompAno",
ComplexTypeProvider.nameCTTwoPrimAno.getFullQualifiedNameAsString(),
Arrays.asList(new Property[] {
createDerived("PropertyString",
ComplexTypeProvider.nameCTTwoPrimAno.getFullQualifiedNameAsString(),
"TEST9876")
}))
)
);
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", 12345))
.addProperty(derivedComplexProperty)
.addProperty(createComplexDerievedCollection("CollPropertyCompAno",
ComplexTypeProvider.nameCTTwoPrimAno.getFullQualifiedNameAsString(),
Arrays.asList(new ComplexValue[] {
createComplexValue(ComplexTypeProvider.nameCTBaseAno.getFullQualifiedNameAsString(),
"CollPropertyCompAno", Arrays.asList(new Property[] {
createDerived("AdditionalPropString",
ComplexTypeProvider.nameCTBaseAno.getFullQualifiedNameAsString(),
"Additional12345"),
createDerived("PropertyString",
ComplexTypeProvider.nameCTBaseAno.getFullQualifiedNameAsString(),
"TEST12345")
}
)),
createComplexValue(ComplexTypeProvider.nameCTTwoPrimAno.getFullQualifiedNameAsString(),
"CollPropertyCompAno", Arrays.asList(new Property[] {
createDerived("PropertyString",
ComplexTypeProvider.nameCTTwoPrimAno.getFullQualifiedNameAsString(),
"TESTabcd")
}
))}
))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETDeriveCollComp));
createEntityId(edm, odata, "ESCompCollDerived", entityCollection);
createOperations("ESCompCollDerived", entityCollection, EntityTypeProvider.nameETDeriveCollComp);
return entityCollection;
}
private ComplexValue createComplexValue(String type, String name, List<Property> properties) {
ComplexValue complexValue = new ComplexValue();
complexValue.getValue().addAll(properties);
complexValue.setTypeName(type);
complexValue.setId(URI.create(name));
return complexValue;
}
private Property createComplexDerievedCollection(final String name,
String type, final List<ComplexValue> list) {
List<ComplexValue> complexCollection = new ArrayList<ComplexValue>();
complexCollection.addAll(list);
Property property = new Property(type, name, ValueType.COLLECTION_COMPLEX, complexCollection);
createOperations(name, type, property);
return property;
}
private EntityCollection createESMixEnumDefCollComp(Edm edm, OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(createETMixEnumDefCollComp("key1", (short) 1));
entityCollection.getEntities().add(createETMixEnumDefCollComp("key1", (short) 3));
entityCollection.getEntities().add(createETMixEnumDefCollComp("key1", (short) 4));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETMixEnumDefCollComp));
createEntityId(edm, odata, "ESMixEnumDefCollComp", entityCollection);
createOperations("ESMixEnumDefCollComp", entityCollection, EntityTypeProvider.nameETMixEnumDefCollComp);
return entityCollection;
}
private Entity createETMixEnumDefCollComp(String typeDefString, Short enumValue) {
return new Entity()
.addProperty(createPrimitive("PropertyEnumString", enumValue))
.addProperty(createPrimitive("PropertyDefString", typeDefString))
.addProperty(createPrimitiveCollection("CollPropertyEnumString", enumValue))
.addProperty(createPrimitiveCollection("CollPropertyDefString", typeDefString));
}
private EntityCollection createESCompMixPrimCollComp(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(createETCompMixPrimCollComp((short) 1));
entityCollection.getEntities().add(createETCompMixPrimCollComp((short) 2));
entityCollection.getEntities().add(createETCompMixPrimCollComp((short) 3));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETCompMixPrimCollComp));
createEntityId(edm, odata, "ESCompMixPrimCollComp", entityCollection);
createOperations("ESCompMixPrimCollComp", entityCollection, EntityTypeProvider.nameETCompMixPrimCollComp);
return entityCollection;
}
@SuppressWarnings("unchecked")
private Entity createETCompMixPrimCollComp(final Short propertyInt16) {
return new Entity()
.addProperty(createPrimitive("PropertyInt16", propertyInt16))
.addProperty(createComplex("PropertyMixedPrimCollComp",
ComplexTypeProvider.nameCTMixPrimCollComp.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 1),
createPrimitiveCollection("CollPropertyString",
"Employee1@company.example",
"Employee2@company.example",
"Employee3@company.example"
),
createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 333),
createPrimitive("PropertyString", "TEST123")
),
createComplexCollection("CollPropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
Arrays.asList(new Property[] {
createPrimitive("PropertyInt16", (short) 222),
createPrimitive("PropertyString", "TEST9876")
}),
Arrays.asList(new Property[] {
createPrimitive("PropertyInt16", (short) 333),
createPrimitive("PropertyString", "TEST123")
})
)
));
}
private EntityCollection createESBase(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 111))
.addProperty(createPrimitive("PropertyString", "TEST A"))
.addProperty(createPrimitive("AdditionalPropertyString_5", "TEST A 0815")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 222))
.addProperty(createPrimitive("PropertyString", "TEST B"))
.addProperty(createPrimitive("AdditionalPropertyString_5", "TEST C 0815")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 333))
.addProperty(createPrimitive("PropertyString", "TEST C"))
.addProperty(createPrimitive("AdditionalPropertyString_5", "TEST E 0815")));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETBase));
createEntityId(edm, odata, "ESBase", entityCollection);
createOperations("ESBase", entityCollection, EntityTypeProvider.nameETBase);
return entityCollection;
}
private EntityCollection createESFourKeyAlias(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 1))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 11),
createPrimitive("PropertyString", "Num11")
))
.addProperty(createComplex("PropertyCompComp",
ComplexTypeProvider.nameCTCompComp.getFullQualifiedNameAsString(),
createComplex("PropertyComp",
ComplexTypeProvider.nameCTBase.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 111),
createPrimitive("PropertyString", "Num111"),
createPrimitive("AdditionalPropString", "Test123")
)
))
);
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETFourKeyAlias));
createEntityId(edm, odata, "ESFourKeyAlias", entityCollection);
createOperations("ESFourKeyAlias", entityCollection, EntityTypeProvider.nameETFourKeyAlias);
return entityCollection;
}
private EntityCollection createESCompCollAllPrim(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(createETCompCollAllPrim((short) 5678));
entityCollection.getEntities().add(createETCompCollAllPrim((short) 12326));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETCompCollAllPrim));
createEntityId(edm, odata, "ESCompCollAllPrim", entityCollection);
createOperations("ESCompCollAllPrim", entityCollection, EntityTypeProvider.nameETCompCollAllPrim);
return entityCollection;
}
private Entity createETCompCollAllPrim(short propertyInt16) {
return new Entity()
.addProperty(createPrimitive("PropertyInt16", propertyInt16))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTCollAllPrim.getFullQualifiedNameAsString(),
createPrimitiveCollection("CollPropertyString",
"Employee1@company.example",
"Employee2@company.example",
"Employee3@company.example"),
createPrimitiveCollection("CollPropertyBoolean",
true,
false,
true),
createPrimitiveCollection("CollPropertyByte",
(short) 50,
(short) 200,
(short) 249),
createPrimitiveCollection("CollPropertySByte",
(byte) -120,
(byte) 120,
(byte) 126),
createPrimitiveCollection("CollPropertyInt16",
(short) 1000,
(short) 2000,
(short) 30112),
createPrimitiveCollection("CollPropertyInt32",
23232323,
11223355,
10000001),
createPrimitiveCollection("CollPropertyInt64",
929292929292L,
333333333333L,
444444444444L),
createPrimitiveCollection("CollPropertySingle",
(float) 1790,
(float) 26600,
(float) 3210),
createPrimitiveCollection("CollPropertyDouble",
-17900D,
-27800000D,
3210D),
createPrimitiveCollection("CollPropertyDecimal",
BigDecimal.valueOf(12),
BigDecimal.valueOf(-2),
BigDecimal.valueOf(1234)),
createPrimitiveCollection("CollPropertyByte",
(short) 50,
(short) 200,
(short) 249),
createPrimitiveCollection("CollPropertyBinary",
new byte[] { -85, -51, -17 },
new byte[] { 1, 35, 69 },
new byte[] { 84, 103, -119 }
),
createPrimitiveCollection("CollPropertyDate",
getDate(1958, 12, 3),
getDate(1999, 8, 5),
getDate(2013, 6, 25)
),
createPrimitiveCollection("CollPropertyDateTimeOffset",
getDateTime(2015, 8, 12, 3, 8, 34),
getDateTime(1970, 3, 28, 12, 11, 10),
getDateTime(1948, 2, 17, 9, 9, 9)
),
createPrimitiveCollection("CollPropertyDuration",
getDuration(0, 0, 0, 13),
getDuration(0, 5, 28, 20),
getDuration(0, 1, 0, 0)
),
createPrimitiveCollection("CollPropertyGuid",
UUID.fromString("ffffff67-89ab-cdef-0123-456789aaaaaa"),
UUID.fromString("eeeeee67-89ab-cdef-0123-456789bbbbbb"),
UUID.fromString("cccccc67-89ab-cdef-0123-456789cccccc")
),
createPrimitiveCollection("CollPropertyTimeOfDay",
getTime(4, 14, 13),
getTime(23, 59, 59),
getTime(1, 12, 33)
)
));
}
private EntityCollection createESBaseTwoKeyNav(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(
createESTwoKeyNavEntity((short) 1, "1")
.addProperty(createPrimitive("PropertyDate", getDate(2013, 12, 12))));
entityCollection.getEntities().add(
createESTwoKeyNavEntity((short) 1, "2")
.addProperty(createPrimitive("PropertyDate", getDate(2013, 12, 12))));
entityCollection.getEntities().add(
createESTwoKeyNavEntity((short) 2, "1")
.addProperty(createPrimitive("PropertyDate", getDate(2013, 12, 12))));
entityCollection.getEntities().add(
createESTwoKeyNavEntity((short) 3, "1")
.addProperty(createPrimitive("PropertyDate", getDate(2013, 12, 12))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETBaseTwoKeyNav));
createEntityId(edm, odata, "ESBaseTwoKeyNav", entityCollection);
createOperations("ESBaseTwoKeyNav", entityCollection, EntityTypeProvider.nameETBaseTwoKeyNav);
return entityCollection;
}
private EntityCollection createESTwoBase(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 111))
.addProperty(createPrimitive("PropertyString", "TEST A"))
.addProperty(createPrimitive("AdditionalPropertyString_5", "TEST A 0815"))
.addProperty(createPrimitive("AdditionalPropertyString_6", "TEST B 0815")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 222))
.addProperty(createPrimitive("PropertyString", "TEST B"))
.addProperty(createPrimitive("AdditionalPropertyString_5", "TEST C 0815"))
.addProperty(createPrimitive("AdditionalPropertyString_6", "TEST D 0815")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 333))
.addProperty(createPrimitive("PropertyString", "TEST C"))
.addProperty(createPrimitive("AdditionalPropertyString_5", "TEST E 0815"))
.addProperty(createPrimitive("AdditionalPropertyString_6", "TEST F 0815")));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETTwoBase));
createEntityId(edm, odata, "ESTwoBase", entityCollection);
createOperations("ESTwoBase", entityCollection, EntityTypeProvider.nameETTwoBase);
return entityCollection;
}
private EntityCollection createESAllNullable(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(
new Entity()
.addProperty(createPrimitive("PropertyKey", (short) 1))
.addProperty(createPrimitive("PropertyInt16", null))
.addProperty(createPrimitive("PropertyString", null))
.addProperty(createPrimitive("PropertyBoolean", null))
.addProperty(createPrimitive("PropertyByte", null))
.addProperty(createPrimitive("PropertySByte", null))
.addProperty(createPrimitive("PropertyInt32", null))
.addProperty(createPrimitive("PropertyInt64", null))
.addProperty(createPrimitive("PropertySingle", null))
.addProperty(createPrimitive("PropertyDouble", null))
.addProperty(createPrimitive("PropertyDecimal", null))
.addProperty(createPrimitive("PropertyBinary", null))
.addProperty(createPrimitive("PropertyDate", null))
.addProperty(createPrimitive("PropertyDateTimeOffset", null))
.addProperty(createPrimitive("PropertyDuration", null))
.addProperty(createPrimitive("PropertyGuid", null))
.addProperty(createPrimitive("PropertyTimeOfDay", null))
.addProperty(createPrimitiveCollection("CollPropertyString",
"spiderman@comic.com",
null,
"spidergirl@comic.com"))
.addProperty(createPrimitiveCollection("CollPropertyBoolean",
true,
null,
false))
.addProperty(createPrimitiveCollection("CollPropertyByte",
(short) 50,
null,
(short) 249))
.addProperty(createPrimitiveCollection("CollPropertySByte",
(byte) -120,
null,
(byte) 126))
.addProperty(createPrimitiveCollection("CollPropertyInt16",
(short) 1000,
null,
(short) 30112))
.addProperty(createPrimitiveCollection("CollPropertyInt32",
23232323,
null,
10000001))
.addProperty(createPrimitiveCollection("CollPropertyInt64",
929292929292L,
null,
444444444444L))
.addProperty(createPrimitiveCollection("CollPropertySingle",
(float) 1790,
null,
(float) 3210))
.addProperty(createPrimitiveCollection("CollPropertyDouble",
-17900D,
null,
3210D))
.addProperty(createPrimitiveCollection("CollPropertyDecimal",
BigDecimal.valueOf(12),
null,
BigDecimal.valueOf(1234)))
.addProperty(createPrimitiveCollection("CollPropertyBinary",
new byte[] { -85, -51, -17 },
null,
new byte[] { 84, 103, -119 }))
.addProperty(createPrimitiveCollection("CollPropertyDate",
getDate(1958, 12, 3),
null,
getDate(2013, 6, 25)))
.addProperty(createPrimitiveCollection("CollPropertyDateTimeOffset",
getDateTime(2015, 8, 12, 3, 8, 34),
null,
getDateTime(1948, 2, 17, 9, 9, 9)))
.addProperty(createPrimitiveCollection("CollPropertyDuration",
getDuration(0, 0, 0, 13),
null,
getDuration(0, 1, 0, 0)))
.addProperty(createPrimitiveCollection("CollPropertyGuid",
UUID.fromString("ffffff67-89ab-cdef-0123-456789aaaaaa"),
null,
UUID.fromString("cccccc67-89ab-cdef-0123-456789cccccc")))
.addProperty(createPrimitiveCollection("CollPropertyTimeOfDay",
getTime(4, 14, 13),
null,
getTime(0, 37, 13))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETAllNullable));
createEntityId(edm, odata, "ESAllNullable", entityCollection);
createOperations("ESAllNullable", entityCollection, EntityTypeProvider.nameETAllNullable);
return entityCollection;
}
protected Map<String, EntityCollection> getData() {
return data;
}
private EntityCollection createESTwoKeyTwoPrim(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(createETTwoKeyTwoPrimEntity((short) 32767, "Test String1"));
entityCollection.getEntities().add(createETTwoKeyTwoPrimEntity((short) -365, "Test String2"));
entityCollection.getEntities().add(createETTwoKeyTwoPrimEntity((short) -32766, "Test String3"));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETTwoKeyTwoPrim));
createEntityId(edm, odata, "ESTwoKeyTwoPrim", entityCollection);
createOperations("ESTwoKeyTwoPrim", entityCollection, EntityTypeProvider.nameETTwoKeyTwoPrim);
return entityCollection;
}
private Entity createETTwoKeyTwoPrimEntity(final short propertyInt16, final String propertyString) {
return new Entity()
.addProperty(createPrimitive("PropertyInt16", propertyInt16))
.addProperty(createPrimitive("PropertyString", propertyString));
}
private EntityCollection createESServerSidePaging(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
for (short i = 1; i <= 503; i++) {
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", i))
.addProperty(createPrimitive("PropertyString", "Number:" + i)));
}
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETServerSidePaging));
createEntityId(edm, odata, "ESServerSidePaging", entityCollection);
createOperations("ESServerSidePaging", entityCollection, EntityTypeProvider.nameETServerSidePaging);
return entityCollection;
}
private EntityCollection createESStreamServerSidePaging(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
for (short i = 1; i <= 503; i++) {
Link readLink = new Link();
readLink.setRel(Constants.NS_MEDIA_READ_LINK_REL);
readLink.setHref("readLink");
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", i))
.addProperty(new Property(null, "PropertyStream", ValueType.PRIMITIVE, readLink)));
Link editLink = new Link();
editLink.setRel(Constants.NS_MEDIA_EDIT_LINK_REL);
editLink.setHref("http://mediaserver:1234/editLink");
editLink.setMediaETag("eTag");
editLink.setType("image/jpeg");
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", ++i))
.addProperty(new Property(null, "PropertyStream", ValueType.PRIMITIVE, editLink)));
}
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETStreamServerSidePaging));
createEntityId(edm, odata, "ESStreamServerSidePaging", entityCollection);
createOperations("ESStreamServerSidePaging", entityCollection, EntityTypeProvider.nameETStreamServerSidePaging);
return entityCollection;
}
private EntityCollection createESKeyNav(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(createETKeyNavEntity((short) 1, "I am String Property 1"));
entityCollection.getEntities().add(createETKeyNavEntity((short) 2, "I am String Property 2"));
entityCollection.getEntities().add(createETKeyNavEntity((short) 3, "I am String Property 3"));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETKeyNav));
createEntityId(edm, odata, "ESKeyNav", entityCollection);
createOperations("ESKeyNav", entityCollection, EntityTypeProvider.nameETKeyNav);
return entityCollection;
}
@SuppressWarnings("unchecked")
private Entity createETKeyNavEntity(final short propertyInt16, final String propertyString) {
return new Entity()
.addProperty(createPrimitive("PropertyInt16", propertyInt16))
.addProperty(createPrimitive("PropertyString", propertyString))
.addProperty(createComplex("PropertyCompNav",
ComplexTypeProvider.nameCTNavFiveProp.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", 1)))
.addProperty(createKeyNavAllPrimComplexValue("PropertyCompAllPrim"))
.addProperty(createComplex("PropertyCompTwoPrim",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 16),
createPrimitive("PropertyString", "Test123")))
.addProperty(createPrimitiveCollection("CollPropertyString",
"Employee1@company.example",
"Employee2@company.example",
"Employee3@company.example"))
.addProperty(createPrimitiveCollection("CollPropertyInt16",
(short) 1000,
(short) 2000,
(short) 30112))
.addProperty(createComplexCollection("CollPropertyComp",
ComplexTypeProvider.nameCTPrimComp.getFullQualifiedNameAsString(),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 1),
createKeyNavAllPrimComplexValue("PropertyComp")),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 2),
createKeyNavAllPrimComplexValue("PropertyComp")),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 3),
createKeyNavAllPrimComplexValue("PropertyComp"))))
.addProperty(createComplex("PropertyCompCompNav",
ComplexTypeProvider.nameCTCompNav.getFullQualifiedNameAsString(),
createPrimitive("PropertyString", "1"),
createComplex("PropertyCompNav",
ComplexTypeProvider.nameCTNavFiveProp.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 1))));
}
private EntityCollection createESTwoKeyNav(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(createESTwoKeyNavEntity((short) 1, "1"));
entityCollection.getEntities().add(createESTwoKeyNavEntity((short) 1, "2"));
entityCollection.getEntities().add(createESTwoKeyNavEntity((short) 2, "1"));
entityCollection.getEntities().add(createESTwoKeyNavEntity((short) 3, "1"));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETTwoKeyNav));
createEntityId(edm, odata, "ESTwoKeyNav", entityCollection);
createOperations("ESTwoKeyNav", entityCollection, EntityTypeProvider.nameETTwoKeyNav);
return entityCollection;
}
@SuppressWarnings("unchecked")
private Entity createESTwoKeyNavEntity(final short propertyInt16, final String propertyString) {
return new Entity()
.addProperty(createPrimitive("PropertyInt16", propertyInt16))
.addProperty(createPrimitive("PropertyString", propertyString))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTPrimComp.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", 11),
createComplex("PropertyComp",
ComplexTypeProvider.nameCTAllPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyString", "StringValue"),
createPrimitive("PropertyBinary", new byte[] { 1, 35, 69, 103, -119, -85, -51, -17 }),
createPrimitive("PropertyBoolean", true),
createPrimitive("PropertyByte", (short) 255),
createPrimitive("PropertyDate", getDate(2012, 12, 3)),
createPrimitive("PropertyDecimal", BigDecimal.valueOf(34)),
createPrimitive("PropertySingle", (float) 179000000000000000000D),
createPrimitive("PropertyDouble", -179000000000000000000D),
createPrimitive("PropertyDuration", BigDecimal.valueOf(6)),
createPrimitive("PropertyGuid", UUID.fromString("01234567-89ab-cdef-0123-456789abcdef")),
createPrimitive("PropertyInt16", Short.MAX_VALUE),
createPrimitive("PropertyInt32", Integer.MAX_VALUE),
createPrimitive("PropertyInt64", Long.MAX_VALUE),
createPrimitive("PropertySByte", Byte.MAX_VALUE),
createPrimitive("PropertyTimeOfDay", getTime(21, 5, 59)))))
.addProperty(createComplex("PropertyCompNav",
ComplexTypeProvider.nameCTBasePrimCompNav.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 1),
createKeyNavAllPrimComplexValue("PropertyComp")))
.addProperty(createComplexCollection("CollPropertyComp", null))
.addProperty(createComplexCollection("CollPropertyCompNav",
ComplexTypeProvider.nameCTNavFiveProp.getFullQualifiedNameAsString(),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 1))))
.addProperty(createPrimitiveCollection("CollPropertyString",
"1",
"2"))
.addProperty(createComplex("PropertyCompTwoPrim",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 11),
createPrimitive("PropertyString", "11")));
}
protected Property createKeyNavAllPrimComplexValue(final String name) {
return createComplex(name,
ComplexTypeProvider.nameCTAllPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyString", "First Resource - positive values"),
createPrimitive("PropertyBinary", new byte[] { 1, 35, 69, 103, -119, -85, -51, -17 }),
createPrimitive("PropertyBoolean", true),
createPrimitive("PropertyByte", (short) 255),
createPrimitive("PropertyDate", getDate(2012, 12, 3)),
createPrimitive("PropertyDateTimeOffset", getTimestamp(2012, 12, 3, 7, 16, 23, 0)),
createPrimitive("PropertyDecimal", 34),
createPrimitive("PropertySingle", (float) 179000000000000000000D),
createPrimitive("PropertyDouble", -179000000000000000000D),
createPrimitive("PropertyDuration", BigDecimal.valueOf(6)),
createPrimitive("PropertyGuid", UUID.fromString("01234567-89ab-cdef-0123-456789abcdef")),
createPrimitive("PropertyInt16", Short.MAX_VALUE), createPrimitive("PropertyInt32", Integer.MAX_VALUE),
createPrimitive("PropertyInt64", Long.MAX_VALUE), createPrimitive("PropertySByte", Byte.MAX_VALUE),
createPrimitive("PropertyTimeOfDay", getTime(21, 5, 59)));
}
@SuppressWarnings("unchecked")
private EntityCollection createESCompCollComp(final Edm edm, final OData odata) {
final EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTCompCollComp.getFullQualifiedNameAsString(),
createComplexCollection("CollPropertyComp",
ComplexTypeProvider.nameCTCompCollComp.getFullQualifiedNameAsString(),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 555),
createPrimitive("PropertyString", "1 Test Complex in Complex Property")),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 666),
createPrimitive("PropertyString", "2 Test Complex in Complex Property")),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 777),
createPrimitive("PropertyString", "3 Test Complex in Complex Property"))))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", 12345))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTCompCollComp.getFullQualifiedNameAsString(),
createComplexCollection("CollPropertyComp",
ComplexTypeProvider.nameCTCompCollComp.getFullQualifiedNameAsString(),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 888),
createPrimitive("PropertyString", "11 Test Complex in Complex Property")),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 999),
createPrimitive("PropertyString", "12 Test Complex in Complex Property")),
Arrays.asList(
createPrimitive("PropertyInt16", (short) 0),
createPrimitive("PropertyString", "13 Test Complex in Complex Property"))))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETCompCollComp));
createEntityId(edm, odata, "ESCompCollComp", entityCollection);
createOperations("ESCompCollComp", entityCollection, EntityTypeProvider.nameETCompCollComp);
return entityCollection;
}
private EntityCollection createESTwoPrim(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 32766))
.addProperty(createPrimitive("PropertyString", "Test String1")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) -365))
.addProperty(createPrimitive("PropertyString", "Test String2")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) -32766))
.addProperty(createPrimitive("PropertyString", null)));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "Test String4")));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETTwoPrim));
createEntityId(edm, odata, "ESTwoPrim", entityCollection);
createOperations("ESTwoPrim", entityCollection, EntityTypeProvider.nameETTwoPrim);
return entityCollection;
}
private EntityCollection createESTwoPrimDerived(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) -365))
.addProperty(createPrimitive("PropertyString", "Test String2")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) -32766))
.addProperty(createPrimitive("PropertyString", null)));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "Test String4")));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETTwoPrim));
Entity derivedEntity = new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 32766))
.addProperty(createPrimitive("PropertyString", "Test String1"))
.addProperty(createPrimitive("AdditionalPropertyString_5", "Additional String1"));
derivedEntity.setType(EntityTypeProvider.nameETBase.getFullQualifiedNameAsString());
entityCollection.getEntities().add(derivedEntity);
createEntityId(edm, odata, "ESTwoPrimDerived", entityCollection);
createOperations("ESTwoPrimDerived", entityCollection, EntityTypeProvider.nameETTwoPrim);
return entityCollection;
}
private void setEntityType(EntityCollection entityCollection, final EdmEntityType type) {
for (Entity entity : entityCollection.getEntities()) {
entity.setType(type.getFullQualifiedName().getFullQualifiedNameAsString());
}
}
private EntityCollection createESAllPrim(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "First Resource - positive values"))
.addProperty(createPrimitive("PropertyBoolean", true))
.addProperty(createPrimitive("PropertyByte", (short) 255))
.addProperty(createPrimitive("PropertySByte", Byte.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MAX_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) 1.79000000E+20))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+19))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2012, 12, 3)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2012, 12, 3, 7, 16, 23)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(6)))
.addProperty(createPrimitive("PropertyGuid", GUID))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(3, 26, 5))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MIN_VALUE))
.addProperty(createPrimitive("PropertyString", "Second Resource - negative values"))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", Byte.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MIN_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) -1.79000000E+08))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+05))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(-34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2015, 11, 5)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 7, 17, 8)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(9)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789dddfff")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(23, 49, 14))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 0))
.addProperty(createPrimitive("PropertyString", ""))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", 0))
.addProperty(createPrimitive("PropertyInt32", 0))
.addProperty(createPrimitive("PropertyInt64", 0L))
.addProperty(createPrimitive("PropertySingle", (float) 0))
.addProperty(createPrimitive("PropertyDouble", 0D))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyBinary", new byte[] {}))
.addProperty(createPrimitive("PropertyDate", getDate(1970, 1, 1)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 0, 0, 0)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789cccddd")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(0, 1, 1))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 10))
.addProperty(createPrimitive("PropertyString", "Employee1@company.example"))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", 0))
.addProperty(createPrimitive("PropertyInt32", 0))
.addProperty(createPrimitive("PropertyInt64", 0L))
.addProperty(createPrimitive("PropertySingle", (float) 0))
.addProperty(createPrimitive("PropertyDouble", 0D))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyBinary", new byte[] {}))
.addProperty(createPrimitive("PropertyDate", getDate(1970, 1, 1)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 0, 0, 0)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789cccddd")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(0, 1, 1))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETAllPrim));
createEntityId(edm, odata, "ESAllPrim", entityCollection);
createOperations("ESAllPrim", entityCollection, EntityTypeProvider.nameETAllPrim);
return entityCollection;
}
private EntityCollection createESAllPrimDerived(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "First Resource - positive values"))
.addProperty(createPrimitive("PropertyBoolean", true))
.addProperty(createPrimitive("PropertyByte", (short) 255))
.addProperty(createPrimitive("PropertySByte", Byte.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MAX_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) 1.79000000E+20))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+19))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2012, 12, 3)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2012, 12, 3, 7, 16, 23)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(6)))
.addProperty(createPrimitive("PropertyGuid", GUID))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(3, 26, 5))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MIN_VALUE))
.addProperty(createPrimitive("PropertyString", "Second Resource - negative values"))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", Byte.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MIN_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) -1.79000000E+08))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+05))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(-34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2015, 11, 5)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 7, 17, 8)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(9)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789dddfff")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(23, 49, 14))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 0))
.addProperty(createPrimitive("PropertyString", ""))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", 0))
.addProperty(createPrimitive("PropertyInt32", 0))
.addProperty(createPrimitive("PropertyInt64", 0L))
.addProperty(createPrimitive("PropertySingle", (float) 0))
.addProperty(createPrimitive("PropertyDouble", 0D))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyBinary", new byte[] {}))
.addProperty(createPrimitive("PropertyDate", getDate(1970, 1, 1)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 0, 0, 0)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789cccddd")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(0, 1, 1))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETAllPrim));
createEntityId(edm, odata, "ESAllPrim", entityCollection);
createOperations("ESAllPrim", entityCollection, EntityTypeProvider.nameETAllPrim);
return entityCollection;
}
private void createOperations(String entitySetName,
EntityCollection entityCollection, FullQualifiedName entityTypeName) {
try {
List<CsdlAction> actions = ActionProvider.getBoundActionsForEntityType(entityTypeName);
for (CsdlAction action : actions) {
if (action.getParameters().get(0).isCollection()) {
Operation operation = buildOperation(action, entitySetName);
entityCollection.getOperations().add(operation);
} else {
for (Entity entity:entityCollection.getEntities()) {
Operation operation = buildOperation(action, entity.getId().toASCIIString());
entity.getOperations().add(operation);
}
}
}
List<CsdlFunction> functions = FunctionProvider.getBoundFunctionsForType(entityTypeName);
for (CsdlFunction func : functions) {
if (func.getParameters().get(0).isCollection()) {
Operation operation = buildOperation(func, entitySetName);
entityCollection.getOperations().add(operation);
} else {
for (Entity entity:entityCollection.getEntities()) {
Operation operation = buildOperation(func, entity.getId().toASCIIString());
entity.getOperations().add(operation);
}
}
}
} catch (ODataException e) {
e.printStackTrace();
}
}
private static Operation buildOperation(CsdlFunction function, String id) {
String fqn = SchemaProvider.NAMESPACE+"."+function.getName();
Operation operation = new Operation();
operation.setType(Operation.Type.FUNCTION);
operation.setTitle(fqn);
StringBuilder params = new StringBuilder();
StringBuilder nameFQN = new StringBuilder();
params.append(fqn);
nameFQN.append(fqn);
if (!function.getParameters().isEmpty() && function.getParameters().size() > 1) {
params.append("(");
nameFQN.append("(");
boolean first = true;
for (int i = 1; i < function.getParameters().size(); i++) {
CsdlParameter p = function.getParameters().get(i);
if (first) {
first = false;
} else {
params.append(",");
nameFQN.append(",");
}
params.append(p.getName()).append("=").append("@").append(p.getName());
nameFQN.append(p.getName());
}
params.append(")");
nameFQN.append(")");
}
operation.setMetadataAnchor("#"+nameFQN);
operation.setTarget(URI.create(id+"/"+params.toString()));
return operation;
}
private Operation buildOperation(CsdlAction action, String id) {
String fqn = SchemaProvider.NAMESPACE+"."+action.getName();
Operation operation = new Operation();
operation.setMetadataAnchor("#"+fqn);
operation.setType(Operation.Type.ACTION);
operation.setTitle(fqn);
operation.setTarget(URI.create(id+"/"+fqn));
return operation;
}
private EntityCollection createESCompAllPrim(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
Entity entity = new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTAllPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyString", "First Resource - first"),
createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }),
createPrimitive("PropertyBoolean", true),
createPrimitive("PropertyByte", (short) 255),
createPrimitive("PropertyDate", getDate(2012, 10, 3)),
createPrimitive("PropertyDateTimeOffset", getTimestamp(2012, 10, 3, 7, 16, 23, 123456700)),
createPrimitive("PropertyDecimal", BigDecimal.valueOf(34.27)),
createPrimitive("PropertySingle", (float) 1.79000000E+20),
createPrimitive("PropertyDouble", -1.7900000000000000E+19),
createPrimitive("PropertyDuration", BigDecimal.valueOf(6)),
createPrimitive("PropertyGuid", GUID),
createPrimitive("PropertyInt16", Short.MAX_VALUE),
createPrimitive("PropertyInt32", Integer.MAX_VALUE),
createPrimitive("PropertyInt64", Long.MAX_VALUE),
createPrimitive("PropertySByte", Byte.MAX_VALUE),
createPrimitive("PropertyTimeOfDay", getTime(1, 0, 1))));
entity.setETag("W/\"" + Short.MAX_VALUE + '\"');
entityCollection.getEntities().add(entity);
entity = new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 7))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTAllPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyString", "Second Resource - second"),
createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }),
createPrimitive("PropertyBoolean", true),
createPrimitive("PropertyByte", (short) 255),
createPrimitive("PropertyDate", getDate(2013, 11, 4)),
createPrimitive("PropertyDateTimeOffset", getDateTime(2013, 11, 4, 7, 16, 23)),
createPrimitive("PropertyDecimal", BigDecimal.valueOf(34.27)),
createPrimitive("PropertySingle", (float) 1.79000000E+20),
createPrimitive("PropertyDouble", -1.7900000000000000E+02),
createPrimitive("PropertyDuration", BigDecimal.valueOf(6)),
createPrimitive("PropertyGuid", GUID),
createPrimitive("PropertyInt16", (short) 25),
createPrimitive("PropertyInt32", Integer.MAX_VALUE),
createPrimitive("PropertyInt64", Long.MAX_VALUE),
createPrimitive("PropertySByte", Byte.MAX_VALUE),
createPrimitive("PropertyTimeOfDay", getTimestamp(1970, 1, 1, 7, 45, 12, 765432100))));
entity.setETag("W/\"7\"");
entityCollection.getEntities().add(entity);
entity = new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 0))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTAllPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyString", "Third Resource - third"),
createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }),
createPrimitive("PropertyBoolean", true),
createPrimitive("PropertyByte", (short) 255),
createPrimitive("PropertyDate", getDate(2014, 12, 5)),
createPrimitive("PropertyDateTimeOffset", getTimestamp(2014, 12, 5, 8, 17, 45, 123456700)),
createPrimitive("PropertyDecimal", BigDecimal.valueOf(17.98)),
createPrimitive("PropertySingle", 1.79000000E+20),
createPrimitive("PropertyDouble", -1.7900000000000000E+02),
createPrimitive("PropertyDuration", BigDecimal.valueOf(6)),
createPrimitive("PropertyGuid", GUID),
createPrimitive("PropertyInt16", (short) -25),
createPrimitive("PropertyInt32", Integer.MAX_VALUE),
createPrimitive("PropertyInt64", Long.MAX_VALUE),
createPrimitive("PropertySByte", Byte.MAX_VALUE),
createPrimitive("PropertyTimeOfDay", getTime(13, 27, 45))));
entity.setETag("W/\"0\"");
entityCollection.getEntities().add(entity);
entity = new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) -32768))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTAllPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyString", null),
createPrimitive("PropertyBinary", null),
createPrimitive("PropertyBoolean", null),
createPrimitive("PropertyByte", null),
createPrimitive("PropertyDate", null),
createPrimitive("PropertyDateTimeOffset", null),
createPrimitive("PropertyDecimal", null),
createPrimitive("PropertySingle", null),
createPrimitive("PropertyDouble", null),
createPrimitive("PropertyDuration", null),
createPrimitive("PropertyGuid", null),
createPrimitive("PropertyInt16", null),
createPrimitive("PropertyInt32", null),
createPrimitive("PropertyInt64", null),
createPrimitive("PropertySByte", null),
createPrimitive("PropertyTimeOfDay", null)));
entity.setETag("W/\"-32768\"");
entityCollection.getEntities().add(entity);
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETCompAllPrim));
createEntityId(edm, odata, "ESCompAllPrim", entityCollection);
createOperations("ESCompAllPrim", entityCollection, EntityTypeProvider.nameETCompAllPrim);
return entityCollection;
}
private EntityCollection createESCollAllPrim(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(createETCollAllPrim((short) 1));
entityCollection.getEntities().add(createETCollAllPrim((short) 2));
entityCollection.getEntities().add(createETCollAllPrim((short) 3));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETCollAllPrim));
createEntityId(edm, odata, "ESCollAllPrim", entityCollection);
createOperations("ESCollAllPrim", entityCollection, EntityTypeProvider.nameETCollAllPrim);
return entityCollection;
}
private Entity createETCollAllPrim(final Short propertyInt16) {
return new Entity()
.addProperty(createPrimitive("PropertyInt16", propertyInt16))
.addProperty(createPrimitiveCollection("CollPropertyString",
"Employee1@company.example",
"Employee2@company.example",
"Employee3@company.example"))
.addProperty(createPrimitiveCollection("CollPropertyBoolean",
true,
false,
true))
.addProperty(createPrimitiveCollection("CollPropertyByte",
(short) 50,
(short) 200,
(short) 249))
.addProperty(createPrimitiveCollection("CollPropertySByte",
-120,
120,
126))
.addProperty(createPrimitiveCollection("CollPropertyInt16",
(short) 1000,
(short) 2000,
(short) 30112))
.addProperty(createPrimitiveCollection("CollPropertyInt32",
23232323,
11223355,
10000001))
.addProperty(createPrimitiveCollection("CollPropertyInt64",
929292929292L,
333333333333L,
444444444444L))
.addProperty(createPrimitiveCollection("CollPropertySingle",
1.79000000E+03,
2.66000000E+04,
3.21000000E+03))
.addProperty(createPrimitiveCollection("CollPropertyDouble",
-1.7900000000000000E+04,
-2.7800000000000000E+07,
3.2100000000000000E+03))
.addProperty(createPrimitiveCollection("CollPropertyDecimal",
BigDecimal.valueOf(12),
BigDecimal.valueOf(-2),
BigDecimal.valueOf(1234)))
.addProperty(createPrimitiveCollection("CollPropertyBinary",
new byte[] { (byte) 0xAB, (byte) 0xCD, (byte) 0xEF },
new byte[] { 0x01, 0x23, 0x45 },
new byte[] { 0x54, 0x67, (byte) 0x89 }))
.addProperty(createPrimitiveCollection("CollPropertyDate",
getDate(1958, 12, 3),
getDate(1999, 8, 5),
getDate(2013, 6, 25)))
.addProperty(createPrimitiveCollection("CollPropertyDateTimeOffset",
getDateTime(2015, 8, 12, 3, 8, 34),
getDateTime(1970, 3, 28, 12, 11, 10),
getDateTime(1948, 2, 17, 9, 9, 9)))
.addProperty(createPrimitiveCollection("CollPropertyDuration",
BigDecimal.valueOf(13),
BigDecimal.valueOf(19680),
BigDecimal.valueOf(3600)))
.addProperty(createPrimitiveCollection("CollPropertyGuid",
UUID.fromString("ffffff67-89ab-cdef-0123-456789aaaaaa"),
UUID.fromString("eeeeee67-89ab-cdef-0123-456789bbbbbb"),
UUID.fromString("cccccc67-89ab-cdef-0123-456789cccccc")))
.addProperty(createPrimitiveCollection("CollPropertyTimeOfDay",
getTime(4, 14, 13),
getTime(23, 59, 59),
getTime(1, 12, 33)));
}
private EntityCollection createESMixPrimCollComp(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitiveCollection("CollPropertyString",
"Employee1@company.example",
"Employee2@company.example",
"Employee3@company.example"))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 111),
createPrimitive("PropertyString", "TEST A")))
.addProperty(createCollPropertyComp()));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 7))
.addProperty(createPrimitiveCollection("CollPropertyString",
"Employee1@company.example",
"Employee2@company.example",
"Employee3@company.example"))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 222),
createPrimitive("PropertyString", "TEST B")))
.addProperty(createCollPropertyComp()));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 0))
.addProperty(createPrimitiveCollection("CollPropertyString",
"Employee1@company.example",
"Employee2@company.example",
"Employee3@company.example"))
.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 333),
createPrimitive("PropertyString", "TEST C")))
.addProperty(createCollPropertyComp()));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETMixPrimCollComp));
createEntityId(edm, odata, "ESMixPrimCollComp", entityCollection);
createOperations("ESMixPrimCollComp", entityCollection, EntityTypeProvider.nameETMixPrimCollComp);
return entityCollection;
}
private EntityCollection createESStream(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitiveCollection("CollPropertyString",
"Streamed-Employee1@company.example",
"Streamed-Employee2@company.example",
"Streamed-Employee3@company.example"))
.addProperty(createComplex("PropertyComp",
null,
createPrimitive("PropertyInt16", (short) 111),
createPrimitive("PropertyString", "TEST A")))
.addProperty(createCollPropertyComp()));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 7))
.addProperty(createPrimitiveCollection("CollPropertyString",
"Streamed-Employee1@company.example",
"Streamed-Employee2@company.example",
"Streamed-Employee3@company.example"))
.addProperty(createComplex("PropertyComp",
null,
createPrimitive("PropertyInt16", (short) 222),
createPrimitive("PropertyString", "TEST B")))
.addProperty(createCollPropertyComp()));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 0))
.addProperty(createPrimitiveCollection("CollPropertyString",
"Streamed-Employee1@company.example",
"Streamed-Employee2@company.example",
"Streamed-Employee3@company.example"))
.addProperty(createComplex("PropertyComp",
null,
createPrimitive("PropertyInt16", (short) 333),
createPrimitive("PropertyString", "TEST C")))
.addProperty(createCollPropertyComp()));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETMixPrimCollComp));
createEntityId(edm, odata, "ESStream", entityCollection);
createOperations("ESStream", entityCollection, EntityTypeProvider.nameETMixPrimCollComp);
return entityCollection;
}
private EntityCollection createESPeople(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("id", 0))
.addProperty(createPrimitive("name", "A")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("id", 1))
.addProperty(createPrimitive("name", "B")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("id", 2))
.addProperty(createPrimitive("name", "C")));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("id", 3))
.addProperty(createPrimitive("name", "D")));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETPeople));
createEntityId(edm, odata, "ESPeople", entityCollection);
return entityCollection;
}
private EntityCollection createESWithStream(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
Link readLink = new Link();
readLink.setRel(Constants.NS_MEDIA_READ_LINK_REL);
readLink.setHref("readLink");
Entity entity = new Entity();
entity.addProperty(createPrimitive("PropertyStream", createImage("darkturquoise")));
readLink.setInlineEntity(entity);
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(new Property(null, "PropertyStream", ValueType.PRIMITIVE, readLink)));
Link editLink = new Link();
editLink.setRel(Constants.NS_MEDIA_EDIT_LINK_REL);
editLink.setHref("http://mediaserver:1234/editLink");
editLink.setMediaETag("eTag");
editLink.setType("image/jpeg");
entity = new Entity();
entity.addProperty(createPrimitive("PropertyStream", createImage("royalblue")));
editLink.setInlineEntity(entity);
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 7))
.addProperty(new Property(null, "PropertyStream", ValueType.PRIMITIVE, editLink)));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETStream));
createEntityId(edm, odata, "ESWithStream", entityCollection);
createOperations("ESWithStream", entityCollection, EntityTypeProvider.nameETStream);
return entityCollection;
}
private Property createCollPropertyComp() {
return createComplexDerievedCollection("CollPropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
Arrays.asList(new ComplexValue[] {
createComplexValue(ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
"CollPropertyComp", Arrays.asList(new Property[] {
createPrimitive("PropertyInt16", (short) 123),
createPrimitive("PropertyString", "TEST 1")
}
)),
createComplexValue(ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
"CollPropertyComp", Arrays.asList(new Property[] {
createPrimitive("PropertyInt16", (short) 456),
createPrimitive("PropertyString", "TEST 2")
}
)),
createComplexValue(ComplexTypeProvider.nameCTBase.getFullQualifiedNameAsString(),
"CollPropertyComp", Arrays.asList(new Property[] {
createPrimitive("PropertyInt16", (short) 789),
createPrimitive("PropertyString", "TEST 3"),
createPrimitive("AdditionalPropString", "ADD TEST")
}
))}));
}
private EntityCollection createESAllKey(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyString", "First"))
.addProperty(createPrimitive("PropertyBoolean", true))
.addProperty(createPrimitive("PropertyByte", (short) 255))
.addProperty(createPrimitive("PropertySByte", Byte.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MAX_VALUE))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(34)))
.addProperty(createPrimitive("PropertyDate", getDate(2012, 12, 3)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2012, 12, 3, 7, 16, 23)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(6)))
.addProperty(createPrimitive("PropertyGuid", GUID))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(2, 48, 21))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyString", "Second"))
.addProperty(createPrimitive("PropertyBoolean", true))
.addProperty(createPrimitive("PropertyByte", (short) 254))
.addProperty(createPrimitive("PropertySByte", (byte) 124))
.addProperty(createPrimitive("PropertyInt16", (short) 32764))
.addProperty(createPrimitive("PropertyInt32", 2147483644))
.addProperty(createPrimitive("PropertyInt64", 9223372036854775804L))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(34)))
.addProperty(createPrimitive("PropertyDate", getDate(2012, 12, 3)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2012, 12, 3, 7, 16, 23)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(6)))
.addProperty(createPrimitive("PropertyGuid", GUID))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(2, 48, 21))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETAllKey));
createEntityId(edm, odata, "ESAllKey", entityCollection);
createOperations( "ESAllKey", entityCollection, EntityTypeProvider.nameETAllKey);
return entityCollection;
}
private EntityCollection createESCompComp(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
Entity entity = new Entity();
entity.addProperty(createPrimitive("PropertyInt16", (short) 1));
entity.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTCompComp.getFullQualifiedNameAsString(),
createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 123),
createPrimitive("PropertyString", "String 1"))));
entityCollection.getEntities().add(entity);
entity = new Entity();
entity.addProperty(createPrimitive("PropertyInt16", (short) 2));
entity.addProperty(createComplex("PropertyComp",
ComplexTypeProvider.nameCTCompComp.getFullQualifiedNameAsString(),
createComplex("PropertyComp",
ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(),
createPrimitive("PropertyInt16", (short) 987),
createPrimitive("PropertyString", "String 2"))));
entityCollection.getEntities().add(entity);
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETCompComp));
createEntityId(edm, odata, "ESCompComp", entityCollection);
createOperations("ESCompComp", entityCollection, EntityTypeProvider.nameETCompComp);
return entityCollection;
}
private EntityCollection createESMedia(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
Entity entity = new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 1))
.addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("darkturquoise")));
entity.setMediaContentType("image/svg+xml");
entity.setMediaETag("W/\"1\"");
entity.getMediaEditLinks().add(buildMediaLink("ESMedia", "ESMedia(1)/$value"));
entityCollection.getEntities().add(entity);
entity = new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 2))
.addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("royalblue")));
entity.setMediaContentType("image/svg+xml");
entity.setMediaETag("W/\"2\"");
entity.getMediaEditLinks().add(buildMediaLink("ESMedia", "ESMedia(2)/$value"));
entityCollection.getEntities().add(entity);
entity = new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 3))
.addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("crimson")));
entity.setMediaContentType("image/svg+xml");
entity.setMediaETag("W/\"3\"");
entity.getMediaEditLinks().add(buildMediaLink("ESMedia", "ESMedia(3)/$value"));
entityCollection.getEntities().add(entity);
entity = new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 4))
.addProperty(createPrimitive(DataProvider.MEDIA_PROPERTY_NAME, createImage("black")));
entity.setMediaContentType("image/svg+xml");
entity.setMediaETag("W/\"4\"");
entity.getMediaEditLinks().add(buildMediaLink("ESMedia", "ESMedia(4)/$value"));
entityCollection.getEntities().add(entity);
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETMedia));
createEntityId(edm, odata, "ESMedia", entityCollection);
createOperations("ESMedia", entityCollection, EntityTypeProvider.nameETMedia);
return entityCollection;
}
private byte[] createImage(final String color) {
return ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 100 100\">\n"
+ " <g stroke=\"darkmagenta\" stroke-width=\"16\" fill=\"" + color + "\">\n"
+ " <circle cx=\"50\" cy=\"50\" r=\"42\"/>\n" + " </g>\n" + "</svg>\n").getBytes(Charset.forName("UTF-8"));
}
private void linkESDelta(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ESDelta");
final List<Entity> targetEntities = data.get("ESAllPrim").getEntities();
setLinks(entityCollection.getEntities().get(0), "NavPropertyETAllPrimMany", targetEntities.get(1),
targetEntities.get(2));
setLink(entityCollection.getEntities().get(3), "NavPropertyETAllPrimOne", targetEntities.get(0));
setLinkForDelta(entityCollection.getEntities().get(1), "NavPropertyETAllPrimOne");
setLinksForDelta(entityCollection.getEntities().get(2), "NavPropertyETAllPrimMany");
final List<Entity> targetEntities1 = data.get("ESTwoBase").getEntities();
setLinkWithoutEntityID(entityCollection.getEntities().get(0),
"NavPropertyETBaseContTwoContOne", targetEntities1.get(0));
setLinksWithoutEntityID(entityCollection.getEntities().get(1), "NavPropertyETBaseContTwoContMany",
targetEntities1.get(1), targetEntities1.get(2));
}
private void setLinksWithoutEntityID(Entity entity, String navigationPropertyName, final Entity... targets) {
Link link = entity.getNavigationLink(navigationPropertyName);
for (Entity target : targets) {
target.setId(null);
}
if (link == null) {
link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + navigationPropertyName);
link.setType(Constants.ENTITY_SET_NAVIGATION_LINK_TYPE);
link.setTitle(navigationPropertyName);
EntityCollection target = new EntityCollection();
target.getEntities().addAll(Arrays.asList(targets));
link.setInlineEntitySet(target);
link.setHref(entity.getId().toASCIIString() + "/" + navigationPropertyName);
entity.getNavigationLinks().add(link);
} else {
link.getInlineEntitySet().getEntities().addAll(Arrays.asList(targets));
}
}
private void setLinkWithoutEntityID(Entity entity, String navigationPropertyName, Entity target) {
Link link = entity.getNavigationLink(navigationPropertyName);
target.setId(null);
if (link == null) {
link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + navigationPropertyName);
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle(navigationPropertyName);
link.setHref(target.getId() != null ? target.getId().toASCIIString() : null);
entity.getNavigationLinks().add(link);
}
link.setInlineEntity(target);
}
protected static void setLinkForDelta(final Entity entity, final String navigationPropertyName) {
Link link = entity.getNavigationLink(navigationPropertyName);
if (link == null) {
link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + navigationPropertyName);
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle(navigationPropertyName);
link.setHref(null);
entity.getNavigationLinks().add(link);
}
link.setInlineEntity(null);
}
protected static void setLinksForDelta(final Entity entity, final String navigationPropertyName) {
Link link = entity.getNavigationLink(navigationPropertyName);
if (link == null) {
link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + navigationPropertyName);
link.setType(Constants.ENTITY_SET_NAVIGATION_LINK_TYPE);
link.setTitle(navigationPropertyName);
link.setInlineEntitySet(null);
link.setHref(entity.getId().toASCIIString() + "/" + navigationPropertyName);
entity.getNavigationLinks().add(link);
} else {
link.getInlineEntitySet().getEntities().addAll(null);
}
}
private void linkESPeople(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ESPeople");
final List<Entity> targetEntities = data.get("ESPeople").getEntities();
setLinks(entityCollection.getEntities().get(0), "friends", targetEntities.get(1),
targetEntities.get(2));
setLinks(entityCollection.getEntities().get(1), "friends", targetEntities.get(0),
targetEntities.get(2));
setLinks(entityCollection.getEntities().get(2), "friends", targetEntities.get(0),
targetEntities.get(3));
}
private void linkESTwoPrim(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ESTwoPrim");
final List<Entity> targetEntities = data.get("ESAllPrim").getEntities();
setLinks(entityCollection.getEntities().get(1), "NavPropertyETAllPrimMany", targetEntities.get(1),
targetEntities.get(2));
setLink(entityCollection.getEntities().get(3), "NavPropertyETAllPrimOne", targetEntities.get(0));
}
private void linkESAllPrim(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ESAllPrim");
final List<Entity> targetEntities = data.get("ESTwoPrim").getEntities();
final List<Entity> targetESBaseEntities = data.get("ESBase").getEntities();
setLinks(entityCollection.getEntities().get(0), "NavPropertyETTwoPrimMany", targetEntities.get(1));
setLink(entityCollection.getEntities().get(0), "NavPropertyETTwoPrimOne", targetEntities.get(3));
setLinks(entityCollection.getEntities().get(2), "NavPropertyETTwoPrimMany", targetEntities.get(0),
targetEntities.get(2),
targetEntities.get(3));
setLink(entityCollection.getEntities().get(2), "NavPropertyETTwoPrimOne", targetESBaseEntities.get(0));
}
private void linkESAllPrimDerived(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ESAllPrimDerived");
final List<Entity> targetEntities = data.get("ESTwoPrimDerived").getEntities();
setLinks(entityCollection.getEntities().get(0), "NavPropertyETTwoPrimMany", targetEntities.get(1));
setLink(entityCollection.getEntities().get(0), "NavPropertyETTwoPrimOne", targetEntities.get(3));
setLinks(entityCollection.getEntities().get(2), "NavPropertyETTwoPrimMany", targetEntities.get(0),
targetEntities.get(2),
targetEntities.get(3));
}
private void linkESKeyNav(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ESKeyNav");
final List<Entity> esKeyNavTargets = data.get("ESKeyNav").getEntities();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
final List<Entity> esMediaTargets = data.get("ESMedia").getEntities();
// NavPropertyETKeyNavMany
setLinks(entityCollection.getEntities().get(0), "NavPropertyETKeyNavMany", esKeyNavTargets.get(0),
esKeyNavTargets.get(1));
setLinks(entityCollection.getEntities().get(1), "NavPropertyETKeyNavMany", esKeyNavTargets.get(1),
esKeyNavTargets.get(2));
// NavPropertyETKeyNavOne
setLink(entityCollection.getEntities().get(0), "NavPropertyETKeyNavOne", esKeyNavTargets.get(1));
setLink(entityCollection.getEntities().get(1), "NavPropertyETKeyNavOne", esKeyNavTargets.get(2));
// NavPropertyETTwoKeyNavOne
setLink(entityCollection.getEntities().get(0), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(0));
setLink(entityCollection.getEntities().get(1), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(1));
setLink(entityCollection.getEntities().get(2), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(2));
// NavPropertyETTwoKeyNavMany
setLinks(entityCollection.getEntities().get(0), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(0),
esTwoKeyNavTargets.get(1));
setLinks(entityCollection.getEntities().get(1), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(2));
setLinks(entityCollection.getEntities().get(2), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(3));
// NavPropertyETMediaOne
setLink(entityCollection.getEntities().get(0), "NavPropertyETMediaOne", esMediaTargets.get(0));
setLink(entityCollection.getEntities().get(1), "NavPropertyETMediaOne", esMediaTargets.get(1));
setLink(entityCollection.getEntities().get(2), "NavPropertyETMediaOne", esMediaTargets.get(2));
// NavPropertyETMediaMany
setLinks(entityCollection.getEntities().get(0), "NavPropertyETMediaMany", esMediaTargets.get(0),
esMediaTargets.get(2));
setLinks(entityCollection.getEntities().get(1), "NavPropertyETMediaMany", esMediaTargets.get(2));
setLinks(entityCollection.getEntities().get(2), "NavPropertyETMediaMany", esMediaTargets.get(0),
esMediaTargets.get(1));
}
private void linkESTwoKeyNav(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ESTwoKeyNav");
final List<Entity> esKeyNavTargets = data.get("ESKeyNav").getEntities();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
final List<Entity> SINav = data.get("SINav").getEntities();
// NavPropertyETKeyNavOne
setLink(entityCollection.getEntities().get(0), "NavPropertyETKeyNavOne", esKeyNavTargets.get(0));
setLink(entityCollection.getEntities().get(1), "NavPropertyETKeyNavOne", esKeyNavTargets.get(0));
setLink(entityCollection.getEntities().get(2), "NavPropertyETKeyNavOne", esKeyNavTargets.get(1));
setLink(entityCollection.getEntities().get(3), "NavPropertyETKeyNavOne", esKeyNavTargets.get(2));
// NavPropertyETKeyNavMany
setLinks(entityCollection.getEntities().get(0), "NavPropertyETKeyNavMany", esKeyNavTargets.get(0),
esKeyNavTargets.get(1));
setLinks(entityCollection.getEntities().get(1), "NavPropertyETKeyNavMany", esKeyNavTargets.get(0),
esKeyNavTargets.get(1));
setLinks(entityCollection.getEntities().get(2), "NavPropertyETKeyNavMany", esKeyNavTargets.get(1),
esKeyNavTargets.get(2));
// NavPropertyETTwoKeyNavOne
setLink(entityCollection.getEntities().get(0), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(0));
setLink(entityCollection.getEntities().get(2), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(1));
setLink(entityCollection.getEntities().get(3), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(2));
// NavPropertyETTwoKeyNavMany
setLinks(entityCollection.getEntities().get(0), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(0),
esTwoKeyNavTargets.get(1));
setLinks(entityCollection.getEntities().get(1), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(0));
setLinks(entityCollection.getEntities().get(2), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(1));
// NavPropertySINav
setLink(entityCollection.getEntities().get(0), "NavPropertySINav", SINav.get(0));
setLink(entityCollection.getEntities().get(1), "NavPropertySINav", SINav.get(0));
setLink(entityCollection.getEntities().get(2), "NavPropertySINav", SINav.get(0));
}
private void linkSINav(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("SINav");
final List<Entity> esKeyNavTargets = data.get("ESKeyNav").getEntities();
final List<Entity> esTwoKeyNavTargets = data.get("ESTwoKeyNav").getEntities();
// NavPropertyETKeyNavOne
setLink(entityCollection.getEntities().get(0), "NavPropertyETKeyNavOne", esKeyNavTargets.get(0));
// NavPropertyETTwoKeyNavOne
setLink(entityCollection.getEntities().get(0), "NavPropertyETTwoKeyNavOne", esTwoKeyNavTargets.get(0));
// NavPropertyETTwoKeyNavMany
setLinks(entityCollection.getEntities().get(0), "NavPropertyETTwoKeyNavMany", esTwoKeyNavTargets.get(0),
esTwoKeyNavTargets.get(1));
}
private void linkESKeyNavCont(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ESKeyNavCont");
final List<Entity> targetEntities = data.get("ETCont").getEntities();
final List<Entity> etBaseContEntities = data.get("ETBaseCont").getEntities();
final List<Entity> etTwoKeyNav = data.get("ESTwoKeyNav").getEntities();
setLinks(entityCollection.getEntities().get(1), "NavPropertyETContMany", targetEntities.get(1),
targetEntities.get(2));
setLinkForContNav(entityCollection.getEntities().get(3), "NavPropertyETContOne", targetEntities.get(0));
setLinks(entityCollection.getEntities().get(2), "NavPropertyETBaseContMany", etBaseContEntities.get(1),
etBaseContEntities.get(2));
setLinks(entityCollection.getEntities().get(4), "NavPropertyETTwoKeyNavMany", etTwoKeyNav.get(0),
etTwoKeyNav.get(2));
setLinkForContNav(entityCollection.getEntities().get(4), "NavPropertyETTwoKeyNavOne", etTwoKeyNav.get(0));
}
protected static void setLinkForContNav(final Entity entity,
final String navigationPropertyName, final Entity target) {
Link link = entity.getNavigationLink(navigationPropertyName);
if (link == null) {
link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + navigationPropertyName);
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle(navigationPropertyName);
link.setHref(entity.getId().toASCIIString() +
(navigationPropertyName != null && navigationPropertyName.length() > 0 ? "/" + navigationPropertyName: ""));
entity.getNavigationLinks().add(link);
}
link.setInlineEntity(target);
}
protected static Property createPrimitive(final String name, final Object value) {
return new Property(null, name, ValueType.PRIMITIVE, value);
}
protected static Property createPrimitiveCollection(final String name, final Object... values) {
List<Object> propertyValues = new ArrayList<Object>();
for (final Object value : values) {
propertyValues.add(value);
}
return new Property(null, name, ValueType.COLLECTION_PRIMITIVE, propertyValues);
}
protected static Property createDerived(final String name, final String type, final Object value) {
return new Property(type, name, ValueType.PRIMITIVE, value);
}
protected static Property createComplex(final String name, final String type, final Property... properties) {
ComplexValue complexValue = new ComplexValue();
for (final Property property : properties) {
complexValue.getValue().add(property);
}
if (null != name) {
complexValue.setId(URI.create(name));
}
Property property = new Property(type, name, ValueType.COMPLEX, complexValue);
createOperations(name, type, property);
return property;
}
private static void createOperations(final String name, final String type,
Property property) {
if (type != null) {
try {
List<CsdlFunction> functions = FunctionProvider.getBoundFunctionsForType(new FullQualifiedName(type));
for (CsdlFunction func : functions) {
if (func.getParameters().get(0).isCollection() && property.isCollection()) {
Operation operation = buildOperation(func, name);
property.getOperations().add(operation);
} else {
Operation operation = buildOperation(func, name);
property.getOperations().add(operation);
}
}
} catch (ODataException e) {
// ignore
}
}
}
protected static Property createComplexCollection(final String name,
String type, final List<Property>... propertiesList) {
List<ComplexValue> complexCollection = new ArrayList<ComplexValue>();
for (final List<Property> properties : propertiesList) {
ComplexValue complexValue = new ComplexValue();
complexValue.getValue().addAll(properties);
if (null != name) {
complexValue.setId(URI.create(name));
}
complexCollection.add(complexValue);
}
Property property = new Property(type, name, ValueType.COLLECTION_COMPLEX, complexCollection);
createOperations(name, type, property);
return property;
}
private static Calendar getDateTime(final int year, final int month, final int day,
final int hour, final int minute, final int second) {
// Date/Time values are serialized with a timezone offset, so we choose a predictable timezone.
ZonedDateTime zdt = ZonedDateTime.of(year, month, day, hour, minute, second, 0, ZoneId.of("Z"));
return GregorianCalendar.from(zdt);
}
private static int getDuration(final int days, final int hours, final int minutes, final int seconds) {
return days * 24 * 60 * 60
+ hours * 60 * 60
+ minutes * 60
+ seconds;
}
private static Calendar getDate(final int year, final int month, final int day) {
// Date values are always in the local timezone.
LocalDate date = LocalDate.of(year, month, day);
ZonedDateTime zdt = LocalDateTime.of(date, LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault());
return GregorianCalendar.from(zdt);
}
private static Calendar getTime(final int hour, final int minute, final int second) {
// Time values are always in the local timezone.
LocalTime time = LocalTime.of(hour, minute, second);
LocalDate EPOCH = LocalDate.ofEpochDay(0l);
ZonedDateTime zdt = LocalDateTime.of(EPOCH, time).atZone(ZoneId.systemDefault());
return GregorianCalendar.from(zdt);
}
private static Timestamp getTimestamp(final int year, final int month, final int day,
final int hour, final int minute, final int second, final int nanosecond) {
Timestamp timestamp = new Timestamp(getDateTime(year, month, day, hour, minute, second).getTimeInMillis());
timestamp.setNanos(nanosecond);
return timestamp;
}
protected static Link buildMediaLink(String title, String href) {
Link link = new Link();
link.setRel("edit-media");
link.setTitle(title);
link.setHref(href);
return link;
}
protected static void setLink(final Entity entity, final String navigationPropertyName, final Entity target) {
Link link = entity.getNavigationLink(navigationPropertyName);
if (link == null) {
link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + navigationPropertyName);
link.setType(Constants.ENTITY_NAVIGATION_LINK_TYPE);
link.setTitle(navigationPropertyName);
link.setHref(target.getId() != null ? target.getId().toASCIIString() : null);
entity.getNavigationLinks().add(link);
}
link.setInlineEntity(target);
}
protected static void setLinks(final Entity entity, final String navigationPropertyName, final Entity... targets) {
Link link = entity.getNavigationLink(navigationPropertyName);
if (link == null) {
link = new Link();
link.setRel(Constants.NS_NAVIGATION_LINK_REL + navigationPropertyName);
link.setType(Constants.ENTITY_SET_NAVIGATION_LINK_TYPE);
link.setTitle(navigationPropertyName);
EntityCollection target = new EntityCollection();
target.getEntities().addAll(Arrays.asList(targets));
link.setInlineEntitySet(target);
link.setHref(entity.getId().toASCIIString() + "/" + navigationPropertyName);
entity.getNavigationLinks().add(link);
} else {
link.getInlineEntitySet().getEntities().addAll(Arrays.asList(targets));
}
}
private void createEntityId(final Edm edm, final OData odata,
final String entitySetName, final EntityCollection entities) {
final EdmEntitySet entitySet = edm.getEntityContainer().getEntitySet(entitySetName);
final UriHelper helper = odata.createUriHelper();
for (Entity entity : entities.getEntities()) {
try {
entity.setId(URI.create(helper.buildCanonicalURL(entitySet, entity)));
} catch (final SerializerException e) {
entity.setId(null);
}
}
}
private EntityCollection createESKeyNavCont(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 32766))
.addProperty(createPrimitive("PropertyString", "Test String1"))
.addProperty(createComplex("PropertyCompNavCont",
ComplexTypeProvider.nameCTNavCont.getFullQualifiedNameAsString())));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) -365))
.addProperty(createPrimitive("PropertyString", "Test String2"))
.addProperty(createComplex("PropertyCompNavCont",
ComplexTypeProvider.nameCTNavCont.getFullQualifiedNameAsString())));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) -32766))
.addProperty(createPrimitive("PropertyString", "Test String3"))
.addProperty(createComplex("PropertyCompNavCont",
ComplexTypeProvider.nameCTNavCont.getFullQualifiedNameAsString())));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "Test String4"))
.addProperty(createComplex("PropertyCompNavCont",
ComplexTypeProvider.nameCTNavCont.getFullQualifiedNameAsString())));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 1))
.addProperty(createPrimitive("PropertyString", "Test String1"))
.addProperty(createComplex("PropertyCompNavCont",
ComplexTypeProvider.nameCTNavCont.getFullQualifiedNameAsString())));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETKeyNavCont));
createEntityId(edm, odata, "ESKeyNavCont", entityCollection);
createOperations("ESKeyNavCont", entityCollection, EntityTypeProvider.nameETKeyNavCont);
return entityCollection;
}
private EntityCollection createETCont(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "First Resource - positive values"))
.addProperty(createPrimitive("PropertyBoolean", true))
.addProperty(createPrimitive("PropertyByte", (short) 255))
.addProperty(createPrimitive("PropertySByte", Byte.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MAX_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) 1.79000000E+20))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+19))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2012, 12, 3)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2012, 12, 3, 7, 16, 23)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(6)))
.addProperty(createPrimitive("PropertyGuid", GUID))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(3, 26, 5))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MIN_VALUE))
.addProperty(createPrimitive("PropertyString", "Second Resource - negative values"))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", Byte.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MIN_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) -1.79000000E+08))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+05))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(-34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2015, 11, 5)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 7, 17, 8)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(9)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789dddfff")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(23, 49, 14))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 0))
.addProperty(createPrimitive("PropertyString", ""))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", 0))
.addProperty(createPrimitive("PropertyInt32", 0))
.addProperty(createPrimitive("PropertyInt64", 0L))
.addProperty(createPrimitive("PropertySingle", (float) 0))
.addProperty(createPrimitive("PropertyDouble", 0D))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyBinary", new byte[] {}))
.addProperty(createPrimitive("PropertyDate", getDate(1970, 1, 1)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 0, 0, 0)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789cccddd")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(0, 1, 1))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETCont));
createEntityId(edm, odata, "ESKeyNavCont", entityCollection);
String id = "ESKeyNavCont(-365)";
id = id + "/NavPropertyETContMany(" +
entityCollection.getEntities().get(1).getProperty("PropertyInt16").getValue() + ")";
entityCollection.getEntities().get(1).setId(URI.create(id));
id = "ESKeyNavCont(-365)";
id = id + "/NavPropertyETContMany(" +
entityCollection.getEntities().get(2).getProperty("PropertyInt16").getValue() + ")";
entityCollection.getEntities().get(2).setId(URI.create(id));
id = "ESKeyNavCont(32766)";
id = id + "/NavPropertyETContOne(" +
entityCollection.getEntities().get(0).getProperty("PropertyInt16").getValue() + ")";
entityCollection.getEntities().get(0).setId(URI.create(id));
return entityCollection;
}
private EntityCollection createETBaseCont(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "First Resource - positive values"))
.addProperty(createPrimitive("PropertyInt32", Integer.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MAX_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) 1.79000000E+20))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+19))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2012, 12, 3)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2012, 12, 3, 7, 16, 23)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(6)))
.addProperty(createPrimitive("PropertyGuid", GUID))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(3, 26, 5))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MIN_VALUE))
.addProperty(createPrimitive("PropertyString", "Second Resource - negative values"))
.addProperty(createPrimitive("PropertyInt32", Integer.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MIN_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) -1.79000000E+08))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+05))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(-34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2015, 11, 5)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 7, 17, 8)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(9)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789dddfff")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(23, 49, 14))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 0))
.addProperty(createPrimitive("PropertyString", ""))
.addProperty(createPrimitive("PropertyInt32", 0))
.addProperty(createPrimitive("PropertyInt64", 0L))
.addProperty(createPrimitive("PropertySingle", (float) 0))
.addProperty(createPrimitive("PropertyDouble", 0D))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyBinary", new byte[] {}))
.addProperty(createPrimitive("PropertyDate", getDate(1970, 1, 1)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 0, 0, 0)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789cccddd")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(0, 1, 1))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETBaseCont));
createEntityId(edm, odata, "ESKeyNavCont", entityCollection);
String id = "ESKeyNavCont(-32766)";
id = id + "/NavPropertyETBaseContMany(" +
entityCollection.getEntities().get(1).getProperty("PropertyInt16").getValue() + ")";
entityCollection.getEntities().get(1).setId(URI.create(id));
id = "ESKeyNavCont(-32766)";
id = id + "/NavPropertyETBaseContMany(" +
entityCollection.getEntities().get(2).getProperty("PropertyInt16").getValue() + ")";
entityCollection.getEntities().get(2).setId(URI.create(id));
return entityCollection;
}
private void linkETBaseCont(final Map<String, EntityCollection> data) {
final EntityCollection entityCollection = data.get("ETBaseCont");
final List<Entity> etTwoContEntities = data.get("ETTwoCont").getEntities();
setLinkForContNav(entityCollection.getEntities().get(1),
"NavPropertyETBaseContTwoContOne", etTwoContEntities.get(0));
setLinks(entityCollection.getEntities().get(2), "NavPropertyETBaseContTwoContMany", etTwoContEntities.get(1),
etTwoContEntities.get(2));
}
private EntityCollection createETTwoCont(final Edm edm, final OData odata) {
EntityCollection entityCollection = new EntityCollection();
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MAX_VALUE))
.addProperty(createPrimitive("PropertyString", "First Resource - positive values"))
.addProperty(createPrimitive("PropertyBoolean", true))
.addProperty(createPrimitive("PropertyByte", (short) 255))
.addProperty(createPrimitive("PropertySByte", Byte.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MAX_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MAX_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) 1.79000000E+20))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+19))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2012, 12, 3)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2012, 12, 3, 7, 16, 23)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(6)))
.addProperty(createPrimitive("PropertyGuid", GUID))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(3, 26, 5))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", Short.MIN_VALUE))
.addProperty(createPrimitive("PropertyString", "Second Resource - negative values"))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", Byte.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt32", Integer.MIN_VALUE))
.addProperty(createPrimitive("PropertyInt64", Long.MIN_VALUE))
.addProperty(createPrimitive("PropertySingle", (float) -1.79000000E+08))
.addProperty(createPrimitive("PropertyDouble", -1.7900000000000000E+05))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(-34)))
.addProperty(createPrimitive("PropertyBinary",
new byte[] { 0x01, 0x23, 0x45, 0x67, (byte) 0x89, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }))
.addProperty(createPrimitive("PropertyDate", getDate(2015, 11, 5)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 7, 17, 8)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(9)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789dddfff")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(23, 49, 14))));
entityCollection.getEntities().add(new Entity()
.addProperty(createPrimitive("PropertyInt16", (short) 0))
.addProperty(createPrimitive("PropertyString", ""))
.addProperty(createPrimitive("PropertyBoolean", false))
.addProperty(createPrimitive("PropertyByte", (short) 0))
.addProperty(createPrimitive("PropertySByte", 0))
.addProperty(createPrimitive("PropertyInt32", 0))
.addProperty(createPrimitive("PropertyInt64", 0L))
.addProperty(createPrimitive("PropertySingle", (float) 0))
.addProperty(createPrimitive("PropertyDouble", 0D))
.addProperty(createPrimitive("PropertyDecimal", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyBinary", new byte[] {}))
.addProperty(createPrimitive("PropertyDate", getDate(1970, 1, 1)))
.addProperty(createPrimitive("PropertyDateTimeOffset", getDateTime(2005, 12, 3, 0, 0, 0)))
.addProperty(createPrimitive("PropertyDuration", BigDecimal.valueOf(0)))
.addProperty(createPrimitive("PropertyGuid", UUID.fromString("76543201-23ab-cdef-0123-456789cccddd")))
.addProperty(createPrimitive("PropertyTimeOfDay", getTime(0, 1, 1))));
setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETTwoCont));
createEntityId(edm, odata, "ESKeyNavCont", entityCollection);
String id = "ESKeyNavCont(-32766)/NavPropertyETBaseContMany(-32768)";
id = id + "/NavPropertyETBaseContTwoContOne(" +
entityCollection.getEntities().get(0).getProperty("PropertyInt16").getValue() + ")";
entityCollection.getEntities().get(0).setId(URI.create(id));
id = "ESKeyNavCont(-32766)/NavPropertyETBaseContMany(0)";
id = id + "/NavPropertyETBaseContTwoContMany(" +
entityCollection.getEntities().get(1).getProperty("PropertyInt16").getValue() + ")";
entityCollection.getEntities().get(1).setId(URI.create(id));
id = "ESKeyNavCont(-32766)/NavPropertyETBaseContMany(0)";
id = id + "/NavPropertyETBaseContTwoContMany(" +
entityCollection.getEntities().get(2).getProperty("PropertyInt16").getValue() + ")";
entityCollection.getEntities().get(2).setId(URI.create(id));
return entityCollection;
}
}