package org.odata4j.consumer.adapter;
/*
* #%L
* interaction-commands-odata-bridge
* %%
* Copyright (C) 2012 - 2013 Temenos Holdings N.V.
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.core4j.Enumerable;
import org.joda.time.LocalDateTime;
import org.odata4j.core.Guid;
import org.odata4j.core.OFunctionParameter;
import org.odata4j.core.OFunctionParameters;
import org.odata4j.core.OFunctionRequest;
import org.odata4j.core.OObject;
import org.odata4j.core.OSimpleObjects;
import org.odata4j.core.UnsignedByte;
import org.odata4j.edm.EdmSimpleType;
import org.odata4j.producer.ODataProducer;
import org.odata4j.exceptions.NotImplementedException;
public class CallFunctionRequestAdapter<T> extends
AbstractOQueryRequestAdapter<T> implements OFunctionRequest<T> {
private final List<OFunctionParameter> params = new LinkedList<OFunctionParameter>();
public CallFunctionRequestAdapter(ODataProducer producer,
String serviceRootUri, String functionName) {
super(producer, serviceRootUri);
}
@Override
public Enumerable<T> execute() {
throw new NotImplementedException("Not supported yet.");
}
// set parameters to the function call
@Override
public CallFunctionRequestAdapter<T> parameter(String name, OObject value) {
params.add(OFunctionParameters.create(name, value));
return this;
}
@Override
public OFunctionRequest<T> pBoolean(String name, boolean value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.BOOLEAN, value));
}
@Override
public OFunctionRequest<T> pByte(String name, UnsignedByte value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.BYTE, value));
}
@Override
public OFunctionRequest<T> pSByte(String name, byte value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.SBYTE, value));
}
@Override
public OFunctionRequest<T> pDateTime(String name, Calendar value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.DATETIME, value));
}
@Override
public OFunctionRequest<T> pDateTime(String name, Date value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.DATETIME, value));
}
@Override
public OFunctionRequest<T> pDateTime(String name, LocalDateTime value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.DATETIME, value));
}
@Override
public OFunctionRequest<T> pDecimal(String name, BigDecimal value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.DECIMAL, value));
}
@Override
public OFunctionRequest<T> pDouble(String name, double value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.DOUBLE, value));
}
@Override
public OFunctionRequest<T> pGuid(String name, Guid value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.GUID, value));
}
@Override
public OFunctionRequest<T> pInt16(String name, short value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.INT16, value));
}
@Override
public OFunctionRequest<T> pInt32(String name, int value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.INT32, value));
}
@Override
public OFunctionRequest<T> pInt64(String name, long value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.INT64, value));
}
@Override
public OFunctionRequest<T> pSingle(String name, float value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.SINGLE, value));
}
@Override
public OFunctionRequest<T> pTime(String name, Calendar value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.TIME, value));
}
@Override
public OFunctionRequest<T> pTime(String name, Date value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.TIME, value));
}
@Override
public OFunctionRequest<T> pTime(String name, LocalDateTime value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.TIME, value));
}
@Override
public OFunctionRequest<T> pString(String name, String value) {
return parameter(name, OSimpleObjects.create(EdmSimpleType.STRING, value));
}
}