Package org.apache.olingo.odata2.fit.mapping

Source Code of org.apache.olingo.odata2.fit.mapping.MapProvider

/*******************************************************************************
* 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.odata2.fit.mapping;

import java.util.Arrays;
import java.util.List;

import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
import org.apache.olingo.odata2.api.edm.FullQualifiedName;
import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
import org.apache.olingo.odata2.api.edm.provider.EntityContainer;
import org.apache.olingo.odata2.api.edm.provider.EntityContainerInfo;
import org.apache.olingo.odata2.api.edm.provider.EntitySet;
import org.apache.olingo.odata2.api.edm.provider.EntityType;
import org.apache.olingo.odata2.api.edm.provider.Key;
import org.apache.olingo.odata2.api.edm.provider.Mapping;
import org.apache.olingo.odata2.api.edm.provider.Property;
import org.apache.olingo.odata2.api.edm.provider.PropertyRef;
import org.apache.olingo.odata2.api.edm.provider.Schema;
import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
import org.apache.olingo.odata2.api.exception.ODataException;

public class MapProvider extends EdmProvider {

  private static final String NAMESPACE = "map";
  private static int P1 = 0;
  private static int P2 = 1;
  private static int P3 = 2;
  private static int ENTITYTYPE = 3;
  private static int ENTITYSET = 4;
  private static String MAPPING_CONTAINER = "mappingContainer";

  private static int EDM = 0;
  private static int BACKEND = 1;

  private final String[][] mapping = {
      { "p1", "P01" },
      { "p2", "P02" },
      { "p3", "P03" },
      { "mapping", "MAPPING" },
      { "mappings", "MAPPINGS" }
  };

  public MapProvider() {
    buildSchema();
  }

  private List<Schema> schemas;
  private PropertyRef propertyRef;
  private Key key;
  private Property property1;
  private Property property2;
  private Property property3;
  private EntityType entityType;
  private EntitySet entitySet;
  private EntityContainer entityContainer;
  private Schema schema;

  @Override
  public List<Schema> getSchemas() throws ODataException {
    return schemas;
  }

  private void buildSchema() {
    propertyRef = new PropertyRef();
    propertyRef.setName("p1");

    key = new Key();
    key.setKeys(Arrays.asList(propertyRef));

    property1 =
        new SimpleProperty().setName(mapping[P1][EDM]).setType(EdmSimpleTypeKind.String).setMapping(
            new Mapping().setObject(mapping[P1][BACKEND]));
    property2 =
        new SimpleProperty().setName(mapping[P2][EDM]).setType(EdmSimpleTypeKind.String).setMapping(
            new Mapping().setObject(mapping[P2][BACKEND]));
    property3 =
        new SimpleProperty().setName(mapping[P3][EDM]).setType(EdmSimpleTypeKind.String).setMapping(
            new Mapping().setObject(mapping[P3][BACKEND]));

    entityType = new EntityType();
    entityType.setName(mapping[ENTITYTYPE][EDM]);
    entityType.setKey(key);
    entityType.setProperties(Arrays.asList(property1, property2, property3));
    entityType.setMapping(new Mapping().setObject(mapping[ENTITYTYPE][BACKEND]));

    entitySet = new EntitySet();
    entitySet.setName(mapping[ENTITYSET][EDM]);
    entitySet.setEntityType(new FullQualifiedName(NAMESPACE, mapping[ENTITYTYPE][EDM]));
    entitySet.setMapping(new Mapping().setObject(mapping[ENTITYSET][BACKEND]));

    entityContainer = new EntityContainer();
    entityContainer.setDefaultEntityContainer(true);
    entityContainer.setName(MAPPING_CONTAINER);
    entityContainer.setEntitySets(Arrays.asList(entitySet));

    schema = new Schema();
    schema.setNamespace("mapping");
    schema.setAlias(NAMESPACE);
    schema.setEntityContainers(Arrays.asList(entityContainer));
    schema.setEntityTypes(Arrays.asList(entityType));

    schemas = Arrays.asList(schema);
  }

  @Override
  public EntityType getEntityType(final FullQualifiedName edmFQName) throws ODataException {
    if (!NAMESPACE.equals(edmFQName.getNamespace()) || !mapping[ENTITYTYPE][EDM].equals(edmFQName.getName())) {
      throw new ODataException("not found: " + edmFQName);
    }

    return entityType;
  }

  @Override
  public EntitySet getEntitySet(final String entityContainer, final String name) throws ODataException {
    if (!MAPPING_CONTAINER.equals(entityContainer) || !mapping[ENTITYSET][EDM].equals(name)) {
      throw new ODataException("not found: " + entityContainer + ", " + name);
    }

    return entitySet;
  }

  @Override
  public EntityContainerInfo getEntityContainerInfo(final String name) throws ODataException {
    EntityContainerInfo entityContainerInfo = null;

    if (MAPPING_CONTAINER.equals(name) || (name == null)) {
      entityContainerInfo = new EntityContainerInfo().setName(MAPPING_CONTAINER).setDefaultEntityContainer(true);
    }

    return entityContainerInfo;
  }

}
TOP

Related Classes of org.apache.olingo.odata2.fit.mapping.MapProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.