org.odata4j.examples.AbstractExample Maven / Gradle / Ivy
The newest version!
package org.odata4j.examples;
import org.core4j.Enumerable;
import org.odata4j.consumer.ODataConsumer;
import org.odata4j.core.OEntity;
import org.odata4j.core.OError;
import org.odata4j.core.OProperty;
import org.odata4j.edm.EdmAssociation;
import org.odata4j.edm.EdmAssociationSet;
import org.odata4j.edm.EdmComplexType;
import org.odata4j.edm.EdmDataServices;
import org.odata4j.edm.EdmEntityContainer;
import org.odata4j.edm.EdmEntitySet;
import org.odata4j.edm.EdmEntityType;
import org.odata4j.edm.EdmFunctionImport;
import org.odata4j.edm.EdmFunctionParameter;
import org.odata4j.edm.EdmNavigationProperty;
import org.odata4j.edm.EdmProperty;
import org.odata4j.edm.EdmSchema;
import org.odata4j.edm.EdmSimpleType;
public abstract class AbstractExample {
protected static void report(String msg) {
System.out.println(msg);
}
protected static void report(String msg, Object... args) {
System.out.println(String.format(msg, args));
}
protected static void reportEntity(String caption, OEntity entity) {
report(caption);
if (entity.getEntityTag() != null)
report(" ETag: %s", entity.getEntityTag());
for (OProperty> p : entity.getProperties()) {
Object v = p.getValue();
if (p.getType().equals(EdmSimpleType.BINARY) && v != null)
v = org.odata4j.repack.org.apache.commons.codec.binary.Base64.encodeBase64String((byte[]) v).trim();
report(" %s: %s", p.getName(), v);
}
}
protected static int reportEntities(ODataConsumer c, String entitySetHref, int limit) {
report("entitySetHref: " + entitySetHref);
Enumerable entities = c.getEntities(entitySetHref).execute().take(limit);
return reportEntities(entitySetHref, entities);
}
protected static int reportEntities(String entitySetHref, Enumerable entities) {
int count = 0;
for (OEntity e : entities) {
reportEntity(entitySetHref + " entity" + count, e);
count++;
}
report("total count: %s \n\n", count);
return count;
}
private static void reportProperties(Iterable properties) {
for (EdmProperty property : properties) {
String p = String.format("Property Name=%s Type=%s Nullable=%s", property.getName(), property.getType(), property.isNullable());
if (property.getMaxLength() != null)
p = p + " MaxLength=" + property.getMaxLength();
if (property.getUnicode() != null)
p = p + " Unicode=" + property.getUnicode();
if (property.getFixedLength() != null)
p = p + " FixedLength=" + property.getFixedLength();
if (property.getStoreGeneratedPattern() != null)
p = p + " StoreGeneratedPattern=" + property.getStoreGeneratedPattern();
if (property.getConcurrencyMode() != null)
p = p + " ConcurrencyMode=" + property.getConcurrencyMode();
if (property.getFcTargetPath() != null)
p = p + " TargetPath=" + property.getFcTargetPath();
if (property.getFcContentKind() != null)
p = p + " ContentKind=" + property.getFcContentKind();
if (property.getFcKeepInContent() != null)
p = p + " KeepInContent=" + property.getFcKeepInContent();
if (property.getFcContentKind() != null)
p = p + " EpmContentKind=" + property.getFcContentKind();
if (property.getFcEpmKeepInContent() != null)
p = p + " EpmKeepInContent=" + property.getFcEpmKeepInContent();
report(" " + p);
}
}
protected static void reportMetadata(EdmDataServices services) {
for (EdmSchema schema : services.getSchemas()) {
report("Schema Namespace=%s, Alias=%s", schema.getNamespace(), schema.getAlias());
for (EdmEntityType et : schema.getEntityTypes()) {
String ets = String.format(" EntityType Name=%s", et.getName());
if (et.getHasStream() != null)
ets = ets + " HasStream=" + et.getHasStream();
report(ets);
for (String key : et.getKeys()) {
report(" Key PropertyRef Name=%s", key);
}
reportProperties(et.getDeclaredProperties());
for (EdmNavigationProperty np : et.getDeclaredNavigationProperties()) {
report(" NavigationProperty Name=%s Relationship=%s FromRole=%s ToRole=%s",
np.getName(), np.getRelationship().getFQNamespaceName(), np.getFromRole().getRole(), np.getToRole().getRole());
}
}
for (EdmComplexType ct : schema.getComplexTypes()) {
report(" ComplexType Name=%s", ct.getName());
reportProperties(ct.getProperties());
}
for (EdmAssociation assoc : schema.getAssociations()) {
report(" Association Name=%s", assoc.getName());
report(" End Role=%s Type=%s Multiplicity=%s", assoc.getEnd1().getRole(), assoc.getEnd1().getType().getFullyQualifiedTypeName(), assoc.getEnd1().getMultiplicity());
report(" End Role=%s Type=%s Multiplicity=%s", assoc.getEnd2().getRole(), assoc.getEnd2().getType().getFullyQualifiedTypeName(), assoc.getEnd2().getMultiplicity());
}
for (EdmEntityContainer ec : schema.getEntityContainers()) {
report(" EntityContainer Name=%s IsDefault=%s LazyLoadingEnabled=%s", ec.getName(), ec.isDefault(), ec.getLazyLoadingEnabled());
for (EdmEntitySet ees : ec.getEntitySets()) {
report(" EntitySet Name=%s EntityType=%s", ees.getName(), ees.getType().getFullyQualifiedTypeName());
}
for (EdmAssociationSet eas : ec.getAssociationSets()) {
report(" AssociationSet Name=%s Association=%s", eas.getName(), eas.getAssociation().getFQNamespaceName());
report(" End Role=%s EntitySet=%s", eas.getEnd1().getRole().getRole(), eas.getEnd1().getEntitySet().getName());
report(" End Role=%s EntitySet=%s", eas.getEnd2().getRole().getRole(), eas.getEnd2().getEntitySet().getName());
}
for (EdmFunctionImport efi : ec.getFunctionImports()) {
report(" FunctionImport Name=%s EntitySet=%s ReturnType=%s HttpMethod=%s",
efi.getName(), efi.getEntitySet() == null ? null : efi.getEntitySet().getName(), efi.getReturnType(), efi.getHttpMethod());
for (EdmFunctionParameter efp : efi.getParameters()) {
report(" Parameter Name=%s Type=%s Mode=%s", efp.getName(), efp.getType(), efp.getMode());
}
}
}
}
}
protected static void reportError(OError error) {
report("Error code=%s", error.getCode());
report("Error message=%s", error.getMessage());
if (error.getInnerError() != null)
report("Inner error=%s", error.getInnerError());
}
}