// Copyright (c) 2003-2013, LogMeIn, Inc. All rights reserved.
// This is part of Xively4J library, it is under the BSD 3-Clause license.
package com.xively.client.http.impl;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import com.xively.client.http.DefaultRequestHandler;
import com.xively.client.http.DefaultRequestHandler.HttpMethod;
import com.xively.client.http.api.DatapointRequester;
import com.xively.client.http.exception.HttpException;
import com.xively.client.model.Datapoint;
/**
* Class for making requests for datapoint(s) from XIVELY API
*
* {@link https ://xively.com/docs/v2/datapoint/}
*
* @author s0pau
*
*/
public class DatapointRequesterImpl extends AbstractRequester<String, Datapoint> implements DatapointRequester
{
private int feedId;
private String dataStreamId;
public DatapointRequesterImpl(int feedId, String dataStreamId)
{
this.feedId = feedId;
this.dataStreamId = dataStreamId;
}
@Override
public Collection<Datapoint> create(Datapoint... toCreate) throws HttpException
{
DefaultRequestHandler.getInstance().doRequest(HttpMethod.POST, getResourcesPath(), toCreate);
return Arrays.asList(toCreate);
}
@Override
public void deleteMultiple(String startAt) throws HttpException
{
Map<String, Object> params = new HashMap<String, Object>();
params.put("start", startAt);
DefaultRequestHandler.getInstance().doRequest(HttpMethod.DELETE, getResourcesPath(), params);
}
@Override
protected String getResourcePath(String datapointAt)
{
StringBuilder sb = new StringBuilder();
sb.append(getResourcesPath()).append("/").append(datapointAt);
return sb.toString();
}
@Override
protected String getResourcesPath()
{
StringBuilder sb = new StringBuilder();
sb.append("feeds").append("/").append(feedId);
sb.append("/").append("datastreams").append("/").append(dataStreamId);
sb.append("/").append("datapoints");
return sb.toString();
}
@Override
protected Class<Datapoint> getObjectClass()
{
return Datapoint.class;
}
}