blob: 39244b315209a50b463fab230df33346f660de8a [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.provider;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.olingo.commons.api.ex.ODataException;
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.CsdlParameter;
import org.apache.olingo.commons.api.edm.provider.CsdlReturnType;
public class ActionProvider {
// Bound Actions
public static final FullQualifiedName nameBAESAllPrimRTETAllPrim =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BAESAllPrimRTETAllPrim");
public static final FullQualifiedName nameBAESTwoKeyNavRTESTwoKeyNav =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BAESTwoKeyNavRTESTwoKeyNav");
public static final FullQualifiedName nameBAESTwoKeyNavRTESKeyNav =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BAESTwoKeyNavRTESKeyNav");
public static final FullQualifiedName nameBAETBaseTwoKeyNavRTETBaseTwoKeyNav =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BAETBaseTwoKeyNavRTETBaseTwoKeyNav");
public static final FullQualifiedName nameBAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav");
public static final FullQualifiedName nameBAETTwoKeyNavRTETTwoKeyNav =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BAETTwoKeyNavRTETTwoKeyNav");
public static final FullQualifiedName nameBAESAllPrimRT =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BAESAllPrimRT");
public static final FullQualifiedName nameBAETAllPrimRT =
new FullQualifiedName(SchemaProvider.NAMESPACE, "BAETAllPrimRT");
// Unbound Actions
public static final FullQualifiedName nameUARTString = new FullQualifiedName(SchemaProvider.NAMESPACE,
"UARTString");
public static final FullQualifiedName nameUARTCollStringTwoParam = new FullQualifiedName(SchemaProvider.NAMESPACE,
"UARTCollStringTwoParam");
public static final FullQualifiedName nameUARTCollCTTwoPrimParam = new FullQualifiedName(SchemaProvider.NAMESPACE,
"UARTCollCTTwoPrimParam");
public static final FullQualifiedName nameUARTCTTwoPrimParam = new FullQualifiedName(SchemaProvider.NAMESPACE,
"UARTCTTwoPrimParam");
public static final FullQualifiedName nameUARTETTwoKeyTwoPrimParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UARTETTwoKeyTwoPrimParam");
public static final FullQualifiedName nameUARTCollETKeyNavParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UARTCollETKeyNavParam");
public static final FullQualifiedName nameUARTETAllPrimParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UARTETAllPrimParam");
public static final FullQualifiedName nameUARTCollETAllPrimParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UARTCollETAllPrimParam");
public static final FullQualifiedName nameUART = new FullQualifiedName(SchemaProvider.NAMESPACE, "UART");
public static final FullQualifiedName nameUARTParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UARTParam");
public static final FullQualifiedName nameUARTTwoParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UARTTwoParam");
public static final FullQualifiedName nameUARTByteNineParam =
new FullQualifiedName(SchemaProvider.NAMESPACE, "UARTByteNineParam");
public static List<CsdlAction> getBoundActionsForEntityType(FullQualifiedName entityType) throws ODataException {
FullQualifiedName[] actionNames = {nameBAESAllPrimRTETAllPrim,
nameBAESTwoKeyNavRTESTwoKeyNav, nameBAESTwoKeyNavRTESKeyNav, nameBAETBaseTwoKeyNavRTETBaseTwoKeyNav,
nameBAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav,nameBAETTwoKeyNavRTETTwoKeyNav,
nameBAESAllPrimRT,nameBAETAllPrimRT};
List<CsdlAction> actions = new ArrayList<CsdlAction>();
for (FullQualifiedName fqn:actionNames) {
List<CsdlAction> entityActions = getActions(fqn);
for (CsdlAction action:entityActions) {
CsdlParameter parameter = action.getParameters().get(0);
if (parameter.getTypeFQN().equals(entityType)) {
actions.add(action);
}
}
}
return actions;
}
public static List<CsdlAction> getActions(final FullQualifiedName actionName) throws ODataException {
if (actionName.equals(nameUARTString)) {
return Collections.singletonList(
new CsdlAction().setName(nameUARTString.getName())
.setReturnType(new CsdlReturnType().setType(PropertyProvider.nameString)));
} else if (actionName.equals(nameUARTCollStringTwoParam)) {
return Collections.singletonList(
new CsdlAction().setName(nameUARTCollStringTwoParam.getName())
.setParameters(Arrays.asList(
new CsdlParameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16),
new CsdlParameter().setName("ParameterDuration").setType(PropertyProvider.nameDuration)))
.setReturnType(new CsdlReturnType().setType(PropertyProvider.nameString).setCollection(true)));
} else if (actionName.equals(nameUARTCTTwoPrimParam)) {
return Collections.singletonList(
new CsdlAction().setName(nameUARTCTTwoPrimParam.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)
.setNullable(false)))
.setReturnType(
new CsdlReturnType().setType(ComplexTypeProvider.nameCTTwoPrim).setNullable(false)));
} else if (actionName.equals(nameUARTCollCTTwoPrimParam)) {
return Collections.singletonList(
new CsdlAction().setName(nameUARTCollCTTwoPrimParam.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
.setReturnType(
new CsdlReturnType().setType(ComplexTypeProvider.nameCTTwoPrim).setCollection(true)));
} else if (actionName.equals(nameUARTETTwoKeyTwoPrimParam)) {
return Collections.singletonList(
new CsdlAction().setName(nameUARTETTwoKeyTwoPrimParam.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
.setReturnType(
new CsdlReturnType().setType(EntityTypeProvider.nameETTwoKeyTwoPrim)));
} else if (actionName.equals(nameUARTCollETKeyNavParam)) {
return Collections.singletonList(
new CsdlAction().setName(nameUARTCollETKeyNavParam.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16)))
.setReturnType(
new CsdlReturnType().setType(EntityTypeProvider.nameETKeyNav).setCollection(true)));
} else if (actionName.equals(nameUARTETAllPrimParam)) {
return Collections.singletonList(
new CsdlAction().setName(nameUARTETAllPrimParam.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterDate").setType(PropertyProvider.nameDate)))
.setReturnType(
new CsdlReturnType().setType(EntityTypeProvider.nameETAllPrim)));
} else if (actionName.equals(nameUARTCollETAllPrimParam)) {
return Collections.singletonList(
new CsdlAction().setName(nameUARTCollETAllPrimParam.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterTimeOfDay")
.setType(PropertyProvider.nameTimeOfDay)))
.setReturnType(
new CsdlReturnType().setType(EntityTypeProvider.nameETAllPrim).setCollection(true)));
} else if (actionName.equals(nameUART)) {
return Collections.singletonList(new CsdlAction().setName(nameUART.getName()));
} else if (actionName.equals(nameUARTParam)) {
return Collections.singletonList(
new CsdlAction()
.setName(nameUARTParam.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16))));
} else if (actionName.equals(nameUARTTwoParam)) {
return Collections.singletonList(
new CsdlAction()
.setName(nameUARTTwoParam.getName())
.setParameters(Arrays.asList(
new CsdlParameter().setName("ParameterInt16").setType(PropertyProvider.nameInt16),
new CsdlParameter().setName("ParameterDuration").setType(PropertyProvider.nameDuration))));
} else if (actionName.equals(nameUARTByteNineParam)) {
return Collections.singletonList(
new CsdlAction()
.setName(nameUARTByteNineParam.getName())
.setParameters(Arrays.asList(
new CsdlParameter().setName("ParameterEnum").setType(EnumTypeProvider.nameENString),
new CsdlParameter().setName("ParameterDef").setType(TypeDefinitionProvider.nameTDString),
new CsdlParameter().setName("ParameterComp").setType(ComplexTypeProvider.nameCTTwoPrim),
new CsdlParameter().setName("ParameterETTwoPrim").setType(EntityTypeProvider.nameETTwoPrim),
new CsdlParameter().setName("CollParameterByte").setType(PropertyProvider.nameByte)
.setCollection(true),
new CsdlParameter().setName("CollParameterEnum").setType(EnumTypeProvider.nameENString)
.setCollection(true),
new CsdlParameter().setName("CollParameterDef").setType(TypeDefinitionProvider.nameTDString)
.setCollection(true),
new CsdlParameter().setName("CollParameterComp").setType(ComplexTypeProvider.nameCTTwoPrim)
.setCollection(true),
new CsdlParameter().setName("CollParameterETTwoPrim").setType(EntityTypeProvider.nameETTwoPrim)
.setCollection(true)))
.setReturnType(new CsdlReturnType().setType(PropertyProvider.nameByte)));
} else if (actionName.equals(nameBAETTwoKeyNavRTETTwoKeyNav)) {
return Arrays.asList(
new CsdlAction().setName(nameBAETTwoKeyNavRTETTwoKeyNav.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETTwoKeyNav)
.setNullable(false)))
.setBound(true)
.setReturnType(new CsdlReturnType().setType(EntityTypeProvider.nameETTwoKeyNav)),
new CsdlAction().setName(nameBAETTwoKeyNavRTETTwoKeyNav.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterETKeyNav").setType(EntityTypeProvider.nameETKeyNav)
.setNullable(false)))
.setBound(true)
.setReturnType(new CsdlReturnType().setType(EntityTypeProvider.nameETTwoKeyNav)));
} else if (actionName.equals(nameBAESAllPrimRTETAllPrim)) {
return Collections.singletonList(
new CsdlAction().setName(nameBAESAllPrimRTETAllPrim.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterESAllPrim").setType(EntityTypeProvider.nameETAllPrim)
.setCollection(true).setNullable(false)))
.setBound(true)
.setReturnType(new CsdlReturnType().setType(EntityTypeProvider.nameETAllPrim)));
} else if (actionName.equals(nameBAESTwoKeyNavRTESTwoKeyNav)) {
return Collections.singletonList(
new CsdlAction().setName(nameBAESTwoKeyNavRTESTwoKeyNav.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETTwoKeyNav)
.setCollection(true).setNullable(false)))
.setBound(true)
.setReturnType(
new CsdlReturnType().setType(EntityTypeProvider.nameETTwoKeyNav).setCollection(true)));
} else if (actionName.equals(nameBAESTwoKeyNavRTESKeyNav)) {
return Collections.singletonList(
new CsdlAction().setName(nameBAESTwoKeyNavRTESKeyNav.getName())
.setBound(true)
.setEntitySetPath("BindingParam/NavPropertyETKeyNavMany")
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterETTwoKeyNav")
.setType(EntityTypeProvider.nameETTwoKeyNav)
.setCollection(true)
.setNullable(false)))
.setReturnType(
new CsdlReturnType().setType(EntityTypeProvider.nameETKeyNav).setCollection(true)));
} else if (actionName.equals(nameBAETBaseTwoKeyNavRTETBaseTwoKeyNav)) {
return Collections.singletonList(
new CsdlAction().setName(nameBAETBaseTwoKeyNavRTETBaseTwoKeyNav.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterETTwoKeyNav").setType(EntityTypeProvider.nameETBaseTwoKeyNav)
.setNullable(false)))
.setBound(true)
.setReturnType(new CsdlReturnType().setType(EntityTypeProvider.nameETTwoKeyNav)));
} else if (actionName.equals(nameBAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav)) {
return Collections.singletonList(
new CsdlAction().setName(nameBAETTwoBaseTwoKeyNavRTETBaseTwoKeyNav.getName())
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterETTwoBaseTwoKeyNav")
.setType(EntityTypeProvider.nameETTwoBaseTwoKeyNav)
.setNullable(false)))
.setBound(true)
.setReturnType(new CsdlReturnType().setType(EntityTypeProvider.nameETBaseTwoKeyNav)));
} else if (actionName.equals(nameBAETAllPrimRT)) {
return Collections.singletonList(
new CsdlAction().setName(nameBAETAllPrimRT.getName())
.setBound(true)
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterETAllPrim")
.setNullable(false)
.setType(EntityTypeProvider.nameETAllPrim))));
} else if (actionName.equals(nameBAESAllPrimRT)) {
return Collections.singletonList(
new CsdlAction().setName(nameBAESAllPrimRT.getName())
.setBound(true)
.setParameters(Collections.singletonList(
new CsdlParameter().setName("ParameterETAllPrim")
.setNullable(false)
.setCollection(true)
.setType(EntityTypeProvider.nameETAllPrim))));
}
return null;
}
}