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

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

package com.genability.client.api.service;

import java.text.MessageFormat;

import com.fasterxml.jackson.core.type.TypeReference;
import com.genability.client.api.request.DeleteAccountRequest;
import com.genability.client.api.request.GetAccountRatesRequest;
import com.genability.client.api.request.GetAccountRequest;
import com.genability.client.api.request.GetAccountTariffsRequest;
import com.genability.client.api.request.GetAccountsRequest;
import com.genability.client.types.Account;
import com.genability.client.types.PropertyData;
import com.genability.client.types.Response;
import com.genability.client.types.Tariff;
import com.genability.client.types.TariffRate;

public class AccountService extends BaseService {

    private static final TypeReference> ACCOUNT_RESPONSE_TYPEREF = new TypeReference>() {};

	private static final TypeReference> PROPERTY_DATA_RESPONSE_TYPEREF = new TypeReference>() {
	};
	
	private static final TypeReference> TARIFF_RATE_RESPONSE_TYPEREF = new TypeReference>() {
	};

	private static final TypeReference> TARIFF_RESPONSE_TYPEREF = new TypeReference>() {
	};

	public Response getAccounts(GetAccountsRequest request)
	{
		if(log.isDebugEnabled()) log.debug("getAccounts called");
		
		Response response = this.callGet(
"v1/accounts",
				request.getQueryParams(),
				ACCOUNT_RESPONSE_TYPEREF);
		
		if(log.isDebugEnabled()) log.debug("getAccounts completed");
		
		return response;
	}

	
	public Response getAccount(GetAccountRequest request)
	{

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

		String uri = "v1/accounts";
		if (request.getAccountId() != null && request.getAccountId().length() !=0) {
			uri += "/" + request.getAccountId();
		}

		Response response = this.callGet(
				uri,
				request.getQueryParams(),
				ACCOUNT_RESPONSE_TYPEREF);
		
		if(log.isDebugEnabled()) log.debug("getAccount completed");
		
		return response;
		
	}
	
	
	public Response deleteAccount(DeleteAccountRequest request) {

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

		String uri = "v1/accounts";
		if (request.getAccountId() != null
				&& request.getAccountId().length() != 0) {
			uri += "/" + request.getAccountId();
		}

		Response response = this.callDelete(uri,
				request.getQueryParams(), ACCOUNT_RESPONSE_TYPEREF);
		if (log.isDebugEnabled())
			log.debug("deleteAccount completed");

		return response;

	}

	public Response getAccountProperties(GetAccountRequest request) {

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

		String uri = "v1/accounts";
		if (request.getAccountId() != null
				&& request.getAccountId().length() != 0) {
			uri += "/" + request.getAccountId();
			uri += "/properties";
		}

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

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

		return response;

	}

	public Response addAccount(Account account) {
		

		if(log.isDebugEnabled()) log.debug("addAccount called");
	
		Response response = this.callPost("v1/accounts",
				account,
				ACCOUNT_RESPONSE_TYPEREF);
		
		if(log.isDebugEnabled()) log.debug("addAccount completed");
		
		return response;
		
	}

	public Response updateAccount(Account account) {

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

		String uri = "v1/accounts";

		if (account.getAccountId() != null
				&& account.getAccountId().length() != 0) {
			uri += "/" + account.getAccountId();
		}

		Response response = this.callPut(uri, account,
				ACCOUNT_RESPONSE_TYPEREF);

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

		return response;

	}
	
	public Response interviewAccount(String accountId,
			PropertyData interviewAnswer) {

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

		String uri = "v1/accounts/{0}/interview";

		if (accountId != null && accountId.length() != 0) {
			uri = MessageFormat.format(uri, accountId);
		}

		// Workaround so the route catches. A null request payload will hit the
		// wrong route.
		if (interviewAnswer == null) {
			interviewAnswer = new PropertyData();
		}

		Response response = this.callPut(uri, interviewAnswer,
				PROPERTY_DATA_RESPONSE_TYPEREF);

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

		return response;

	}

	public Response getAccountRates(GetAccountRatesRequest request) {

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

		String uri = "v1/accounts/{0}/rates";

		if (request.getAccountId() != null
				&& request.getAccountId().length() != 0) {
			uri = MessageFormat.format(uri, request.getAccountId());
		}

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

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

		return response;

	}

	public Response getAccountTariffs(GetAccountTariffsRequest request) {

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

		String uri = "v1/accounts/{0}/tariffs";

		if (request.getAccountId() != null
				&& request.getAccountId().length() != 0) {
			uri = MessageFormat.format(uri, request.getAccountId());
		}

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

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

		return response;

	}


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy