blob: f683a68e7551959636608b875ad28544410ac0f9 [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.client.core.edm;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmProvider;
import org.apache.olingo.commons.api.edm.provider.CsdlAction;
import org.apache.olingo.commons.api.edm.provider.CsdlActionImport;
import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo;
import org.apache.olingo.commons.api.edm.provider.CsdlAnnotations;
import org.apache.olingo.commons.api.edm.provider.CsdlComplexType;
import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainer;
import org.apache.olingo.commons.api.edm.provider.CsdlEntityContainerInfo;
import org.apache.olingo.commons.api.edm.provider.CsdlEntitySet;
import org.apache.olingo.commons.api.edm.provider.CsdlEntityType;
import org.apache.olingo.commons.api.edm.provider.CsdlEnumType;
import org.apache.olingo.commons.api.edm.provider.CsdlFunction;
import org.apache.olingo.commons.api.edm.provider.CsdlFunctionImport;
import org.apache.olingo.commons.api.edm.provider.CsdlSchema;
import org.apache.olingo.commons.api.edm.provider.CsdlSingleton;
import org.apache.olingo.commons.api.edm.provider.CsdlTerm;
import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition;
import org.apache.olingo.commons.api.ex.ODataException;
public class ClientCsdlEdmProvider extends CsdlAbstractEdmProvider {
private final Map<String, CsdlSchema> xmlSchemas;
public ClientCsdlEdmProvider(Map<String, CsdlSchema> xmlSchemas) {
this.xmlSchemas = xmlSchemas;
}
@Override
public CsdlEnumType getEnumType(final FullQualifiedName enumTypeName) throws ODataException {
CsdlSchema schema = xmlSchemas.get(enumTypeName.getNamespace());
if (schema != null) {
return schema.getEnumType(enumTypeName.getName());
}
return null;
}
@Override
public CsdlTypeDefinition getTypeDefinition(final FullQualifiedName typeDefinitionName) throws ODataException {
CsdlSchema schema = xmlSchemas.get(typeDefinitionName.getNamespace());
if (schema != null) {
return schema.getTypeDefinition(typeDefinitionName.getName());
}
return null;
}
@Override
public CsdlEntityType getEntityType(final FullQualifiedName entityTypeName) throws ODataException {
CsdlSchema schema = xmlSchemas.get(entityTypeName.getNamespace());
if (schema != null) {
return schema.getEntityType(entityTypeName.getName());
}
return null;
}
@Override
public CsdlComplexType getComplexType(final FullQualifiedName complexTypeName) throws ODataException {
CsdlSchema schema = xmlSchemas.get(complexTypeName.getNamespace());
if (schema != null) {
return schema.getComplexType(complexTypeName.getName());
}
return null;
}
@Override
public List<CsdlAction> getActions(final FullQualifiedName actionName) throws ODataException {
CsdlSchema schema = xmlSchemas.get(actionName.getNamespace());
if (schema != null) {
return schema.getActions(actionName.getName());
}
return null;
}
@Override
public List<CsdlFunction> getFunctions(final FullQualifiedName functionName) throws ODataException {
CsdlSchema schema = xmlSchemas.get(functionName.getNamespace());
if (schema != null) {
return schema.getFunctions(functionName.getName());
}
return null;
}
@Override
public CsdlTerm getTerm(final FullQualifiedName termName) throws ODataException {
CsdlSchema schema = xmlSchemas.get(termName.getNamespace());
if (schema != null) {
return schema.getTerm(termName.getName());
}
return null;
}
@Override
public CsdlEntitySet getEntitySet(final FullQualifiedName entityContainer, final String entitySetName)
throws ODataException {
CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace());
if (schema != null) {
return schema.getEntityContainer().getEntitySet(entitySetName);
}
return null;
}
@Override
public CsdlSingleton getSingleton(final FullQualifiedName entityContainer, final String singletonName)
throws ODataException {
CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace());
if (schema != null) {
return schema.getEntityContainer().getSingleton(singletonName);
}
return null;
}
@Override
public CsdlActionImport getActionImport(final FullQualifiedName entityContainer, final String actionImportName)
throws ODataException {
CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace());
if (schema != null) {
return schema.getEntityContainer().getActionImport(actionImportName);
}
return null;
}
@Override
public CsdlFunctionImport getFunctionImport(final FullQualifiedName entityContainer, final String functionImportName)
throws ODataException {
CsdlSchema schema = xmlSchemas.get(entityContainer.getNamespace());
if (schema != null) {
return schema.getEntityContainer().getFunctionImport(functionImportName);
}
return null;
}
@Override
public CsdlEntityContainerInfo getEntityContainerInfo(final FullQualifiedName entityContainerName)
throws ODataException {
for (CsdlSchema schema : xmlSchemas.values()) {
CsdlEntityContainer entityContainer = schema.getEntityContainer();
if (entityContainer != null) {
FullQualifiedName containerFQN;
if (entityContainerName == null) {
containerFQN = new FullQualifiedName(schema.getNamespace(), entityContainer.getName());
} else {
containerFQN = entityContainerName;
}
return new CsdlEntityContainerInfo().setContainerName(containerFQN).setExtendsContainer(
entityContainer.getExtendsContainerFQN());
}
}
return null;
}
@Override
public List<CsdlAliasInfo> getAliasInfos() throws ODataException {
ArrayList<CsdlAliasInfo> aliasInfo = new ArrayList<CsdlAliasInfo>();
for (CsdlSchema schema : xmlSchemas.values()) {
if (schema.getAlias() != null) {
aliasInfo.add(new CsdlAliasInfo().setNamespace(schema.getNamespace()).setAlias(schema.getAlias()));
}
}
return aliasInfo;
}
@Override
public List<CsdlSchema> getSchemas() throws ODataException {
return new ArrayList<CsdlSchema>(xmlSchemas.values());
}
@Override
public CsdlEntityContainer getEntityContainer() throws ODataException {
for (CsdlSchema schema : xmlSchemas.values()) {
if (schema.getEntityContainer() != null) {
return schema.getEntityContainer();
}
}
return null;
}
@Override
public CsdlAnnotations getAnnotationsGroup(FullQualifiedName targetName, String qualifier) throws ODataException {
CsdlSchema schema = xmlSchemas.get(targetName.getNamespace());
if (schema != null) {
return schema.getAnnotationGroup(targetName.getFullQualifiedNameAsString(), qualifier);
}
return null;
}
}