All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.odata4j.edm.EdmSchema Maven / Gradle / Ivy

The newest version!
package org.odata4j.edm;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import org.odata4j.core.ImmutableList;

/**
 * A CSDL Schema element.
 *
 * 

The Schema element is the root element of a conceptual model definition. It contains definitions * for the objects, functions, and containers that make up a conceptual model. * * @see [msdn] Schema Element (CSDL) */ public class EdmSchema extends EdmItem { private final String namespace; private final String alias; private final ImmutableList entityTypes; private final ImmutableList complexTypes; private final ImmutableList associations; private final ImmutableList entityContainers; private EdmSchema(String namespace, String alias, ImmutableList entityTypes, ImmutableList complexTypes, ImmutableList associations, ImmutableList entityContainers, EdmDocumentation doc, ImmutableList> annots) { super(doc, annots); this.namespace = namespace; this.alias = alias; this.entityTypes = entityTypes; this.complexTypes = complexTypes; this.associations = associations; this.entityContainers = entityContainers; } public String getNamespace() { return namespace; } public String getAlias() { return alias; } public List getEntityTypes() { return entityTypes; } public List getComplexTypes() { return complexTypes; } public List getAssociations() { return associations; } public List getEntityContainers() { return entityContainers; } public EdmEntityContainer findEntityContainer(String name) { for (EdmEntityContainer ec : entityContainers) { if (ec.getName().equals(name)) { return ec; } } return null; } public static Builder newBuilder() { return new Builder(); } static Builder newBuilder(EdmSchema schema, BuilderContext context) { return context.newBuilder(schema, new Builder()); } /** Mutable builder for {@link EdmSchema} objects. */ public static class Builder extends EdmItem.Builder { private String namespace; private String alias; private final List entityTypes = new ArrayList(); private final List complexTypes = new ArrayList(); private final List associations = new ArrayList(); private final List entityContainers = new ArrayList(); @Override Builder newBuilder(EdmSchema schema, BuilderContext context) { List entityContainers = new ArrayList(); for (EdmEntityContainer entityContainer : schema.entityContainers) entityContainers.add(EdmEntityContainer.newBuilder(entityContainer, context)); List complexTypes = new ArrayList(); for (EdmComplexType complexType : schema.complexTypes) complexTypes.add(EdmComplexType.newBuilder(complexType, context)); List entityTypes = new ArrayList(); for (EdmEntityType entityType : schema.entityTypes) entityTypes.add(EdmEntityType.newBuilder(entityType, context)); List associations = new ArrayList(); for (EdmAssociation association : schema.associations) associations.add(EdmAssociation.newBuilder(association, context)); return new Builder() .setNamespace(schema.namespace) .setAlias(schema.alias) .addEntityTypes(entityTypes) .addComplexTypes(complexTypes) .addAssociations(associations) .addEntityContainers(entityContainers); } public EdmSchema build() { List entityContainers = new ArrayList(this.entityContainers.size()); for (EdmEntityContainer.Builder entityContainer : this.entityContainers) entityContainers.add(entityContainer.build()); List complexTypes = new ArrayList(this.complexTypes.size()); for (EdmComplexType.Builder complexType : this.complexTypes) complexTypes.add(complexType.build()); List entityTypes = new ArrayList(this.entityTypes.size()); for (EdmEntityType.Builder entityType : this.entityTypes) entityTypes.add(entityType.build()); List associations = new ArrayList(this.associations.size()); for (EdmAssociation.Builder association : this.associations) associations.add(association.build()); return new EdmSchema(namespace, alias, ImmutableList.copyOf(entityTypes), ImmutableList.copyOf(complexTypes), ImmutableList.copyOf(associations), ImmutableList.copyOf(entityContainers), getDocumentation(), ImmutableList.copyOf(getAnnotations())); } public Builder setNamespace(String namespace) { this.namespace = namespace; return this; } public Builder setAlias(String alias) { this.alias = alias; return this; } public Builder addEntityTypes(Collection entityTypes) { this.entityTypes.addAll(entityTypes); return this; } public Builder addEntityTypes(EdmEntityType.Builder... entityTypes) { this.entityTypes.addAll(Arrays.asList(entityTypes)); return this; } public Builder addComplexTypes(Collection complexTypes) { this.complexTypes.addAll(complexTypes); return this; } public Builder addAssociations(Collection associations) { this.associations.addAll(associations); return this; } public Builder addEntityContainers(EdmEntityContainer.Builder... entityContainers) { this.entityContainers.addAll(Arrays.asList(entityContainers)); return this; } public Builder addEntityContainers(Collection entityContainers) { this.entityContainers.addAll(entityContainers); return this; } public Iterable getComplexTypes() { return complexTypes; } public List getEntityTypes() { return entityTypes; } public List getAssociations() { return associations; } public List getEntityContainers() { return entityContainers; } public String getNamespace() { return namespace; } public EdmEntityContainer.Builder findEntityContainer(String name) { // TODO share or remove for (EdmEntityContainer.Builder ec : entityContainers) { if (ec.getName().equals(name)) { return ec; } } return null; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy