All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.genability.client.api.service.ProfileService Maven / Gradle / Ivy

The newest version!
package com.genability.client.api.service;

import java.text.MessageFormat;

import com.fasterxml.jackson.core.type.TypeReference;

import com.genability.client.api.request.DeleteProfileRequest;
import com.genability.client.api.request.GetProfileRequest;
import com.genability.client.api.request.GetProfilesRequest;
import com.genability.client.api.request.ReadingDataRequest;
import com.genability.client.types.Profile;
import com.genability.client.types.ReadingData;
import com.genability.client.types.Response;


public class ProfileService extends BaseService {
	
    private static final TypeReference> PROFILE_RESPONSE_TYPEREF = new TypeReference>() {};
	private static final TypeReference> READING_DATA_RESPONSE_TYPEREF = new TypeReference>() {
	};

	/**
	 * Calls the REST service to get a Profile based on the arguments passed in.
	 * 
	 * @param request The request.
	 * @return The return value.
	 */
	public Response getProfile(GetProfileRequest request) {
		
		if(log.isDebugEnabled()) log.debug("getProfile called");

		// Set uri based on if providerProfileId was used
		String uri = "v1/profiles";
		if (request.getProviderProfileId() != null
				&& request.getProviderProfileId().length() != 0) {

			uri += "/pid/" + request.getProviderProfileId();

		} else if (request.getProfileId() != null
				&& request.getProfileId().length() != 0) {

			uri += "/" + request.getProfileId();
		}

		Response response = this.callGet(uri,
				request.getQueryParams(), PROFILE_RESPONSE_TYPEREF);

		if (log.isDebugEnabled())
			log.debug("getProfile completed");

		return response;

	}

	/**
	 * Calls the REST service to get Profiles based on the arguments passed in.
	 * 
	 * @param request The request.
	 * @return The return value.
	 */
	public Response getProfiles(GetProfilesRequest request) {
		
		if(log.isDebugEnabled()) log.debug("getProfiles called");
		
		String uri = "v1/profiles";
		
		Response response = this.callGet(
				uri,
				request.getQueryParams(),
				PROFILE_RESPONSE_TYPEREF);
		
		if(log.isDebugEnabled()) log.debug("getProfiles completed");
		
		return response;
		
	}
	
	public Response addProfile(Profile profile) {

		if (log.isDebugEnabled())
			log.debug("addProfile called");

		Response response = this.callPost("v1/usage/profiles",
				profile, PROFILE_RESPONSE_TYPEREF);

		if (log.isDebugEnabled())
			log.debug("addProfile completed");

		return response;

	}

	public Response updateProfile(Profile profile) {

		if (log.isDebugEnabled())
			log.debug("updateProfile called");

		String uri = "v1/profiles";

		Response response = this.callPut(uri, profile,
				PROFILE_RESPONSE_TYPEREF);

		if (log.isDebugEnabled())
			log.debug("updateProfile completed");

		return response;

	}

	/**
	 * Calls the REST service to delete a Profile based on the arguments passed in.
	 * 
	 * @param request The request.
	 * @return The return value.
	 */
	public Response deleteProfile(DeleteProfileRequest request) {
		if(log.isDebugEnabled()) log.debug("deleteProfile called");

		String profileId = request.getProfileId();

		if (profileId == null || profileId.isEmpty()) {
			throw new GenabilityException("profileId must be set");
		}

		String uri = "v1/profiles/" + profileId;

		Response response = this.callDelete(uri, request.getQueryParams(), PROFILE_RESPONSE_TYPEREF);

		if (log.isDebugEnabled()) log.debug("deleteProfile completed");

		return response;
	}

	public Response updateReadings(ReadingDataRequest request) {

		if (log.isDebugEnabled())
			log.debug("updateReadings called");

		String uri = "v1/profiles/{0}/readings";

		if (request.getUsageProfileId() != null) {
			uri = MessageFormat.format(uri, request.getUsageProfileId());
		}

		Response response = this.callPut(uri, request,
				READING_DATA_RESPONSE_TYPEREF);

		if (log.isDebugEnabled())
			log.debug("updateReadings completed");

		return response;

	}

	public Response addReadings(ReadingDataRequest request) {

		if (log.isDebugEnabled())
			log.debug("addReadings called");

		String uri = "v1/profiles/{0}/readings";

		if (request.getUsageProfileId() != null) {
			uri = MessageFormat.format(uri, request.getUsageProfileId());
		}

		Response response = this.callPost(uri, request,
				READING_DATA_RESPONSE_TYPEREF);

		if (log.isDebugEnabled())
			log.debug("addReadings completed");

		return response;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy