/* * (c) Copyright Reserved EVRYTHNG Limited 2016. All rights reserved. * Use of this material is subject to license. * Copying and unauthorised use of this material strictly prohibited. */ package com.evrythng.java.wrapper.service; import com.evrythng.java.wrapper.ApiManager; import com.evrythng.java.wrapper.core.EvrythngApiBuilder.Builder; import com.evrythng.java.wrapper.core.EvrythngServiceBase; import com.evrythng.java.wrapper.exception.EvrythngClientException; import com.evrythng.thng.resource.model.store.Place; import com.fasterxml.jackson.core.type.TypeReference; import java.util.List; /** * Service wrapper for the {@code /places} endpoint of the EVRYTHNG API. */ public class PlaceService extends EvrythngServiceBase { public static final String PATH_PLACES = "/places"; public static final String PATH_PLACE = PATH_PLACES + "/%s"; /** * @param apiManager {@link ApiManager} instance */ public PlaceService(final ApiManager apiManager) { super(apiManager); } /* ***** Place ***** */ /** * Creates a new {@link Place}. * <p> * POST {@value #PATH_PLACES} * * @param place {@link Place} instance * @return a preconfigured {@link Builder} */ public Builder<Place> placeCreator(final Place place) throws EvrythngClientException { return post(PATH_PLACES, place, new TypeReference<Place>() { }); } /** * Retrieves list of all {@link Place} resources. * <p> * GET {@value #PATH_PLACES} * * @return a preconfigured {@link Builder} */ public Builder<List<Place>> placesReader() throws EvrythngClientException { return get(PATH_PLACES, new TypeReference<List<Place>>() { }); } /* ***** /places/{id} ***** */ /** * Retrieves the referenced {@link Place}. * <p> * GET {@value #PATH_PLACE} * * @param placeId place id * @return a preconfigured {@link Builder} */ public Builder<Place> placeReader(final String placeId) throws EvrythngClientException { return get(String.format(PATH_PLACE, placeId), new TypeReference<Place>() { }); } /** * Updates the referenced {@link Place}. * <p> * PUT {@value #PATH_PLACE} * * @param placeId place id * @param place {@link Place} instance * @return the updated place */ public Builder<Place> placeUpdater(final String placeId, final Place place) throws EvrythngClientException { return put(String.format(PATH_PLACE, placeId), place, new TypeReference<Place>() { }); } /** * Deletes the referenced {@link Place}. * <p> * DELETE {@value #PATH_PLACE} * * @param placeId place id * @return <tt>true</tt> if the place was successfully removed, otherwise <tt>false</tt> */ public Builder<Boolean> placeDeleter(final String placeId) throws EvrythngClientException { return delete(String.format(PATH_PLACE, placeId)); } }