
com.plenigo.sdk.services.TransactionService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-sdk Show documentation
Show all versions of java-sdk Show documentation
Java SDK wrapping plenigo REST-API for easier usage.
package com.plenigo.sdk.services;
import com.plenigo.sdk.PlenigoException;
import com.plenigo.sdk.PlenigoManager;
import com.plenigo.sdk.internal.ApiParams;
import com.plenigo.sdk.internal.ApiResults;
import com.plenigo.sdk.internal.ApiURLs;
import com.plenigo.sdk.internal.util.HttpConfig;
import com.plenigo.sdk.internal.util.JWT;
import com.plenigo.sdk.internal.util.SdkUtils;
import com.plenigo.sdk.internal.util.ValidationUtils;
import com.plenigo.sdk.models.PaymentMethod;
import com.plenigo.sdk.models.Transaction;
import com.plenigo.sdk.models.TransactionList;
import com.plenigo.sdk.models.TransactionSearchRequest;
import com.plenigo.sdk.models.TransactionStatus;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import static com.plenigo.sdk.internal.util.SdkUtils.buildUrlQueryString;
import static com.plenigo.sdk.internal.util.SdkUtils.getValueIfNotNull;
import static com.plenigo.sdk.internal.util.SdkUtils.isNotBlank;
/**
*
* This contains the services related to transactions with plenigo,
*
*
* Thread safety: This class is thread safe and can be injected.
*
*/
public final class TransactionService {
private static final Logger LOGGER = Logger.getLogger(TransactionService.class.getName());
private static final String REQUEST_DATE_FORMAT = "yyyy-MM-dd";
public static final String RESPONSE_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
/**
* Default constructor.
*/
private TransactionService() {
}
/**
* Searches transactions with the provided criteria.
*
* @param request search criteria
*
* @return transaction list
*
* @throws PlenigoException if any error happens
*/
public static TransactionList searchTransactions(TransactionSearchRequest request) throws PlenigoException {
Map params = new HashMap();
ValidationUtils.validate(request);
ValidationUtils.validateDateRange(request);
DateFormat dateFormat = new SimpleDateFormat(REQUEST_DATE_FORMAT);
params.put(ApiParams.START_DATE, dateFormat.format(request.getStartDate()));
params.put(ApiParams.END_DATE, dateFormat.format(request.getEndDate()));
params.put(ApiParams.PAGE_NUMBER, request.getPageNumber());
params.put(ApiParams.PAGE_SIZE, request.getPageSize());
SdkUtils.addIfNotNull(params, ApiParams.TRANSACTION_STATUS, request.getTransactionStatus());
SdkUtils.addIfNotNull(params, ApiParams.PAYMENT_METHOD, request.getPaymentMethod());
params.put(ApiParams.TEST_MODE, PlenigoManager.get().isTestMode());
Map objectMap = HttpConfig.get().getClient().get(PlenigoManager.get().getUrl(), ApiURLs.TX_SEARCH, ApiURLs.TX_SEARCH,
buildUrlQueryString(params), JWT.generateJWTTokenHeader(PlenigoManager.get().getCompanyId(), PlenigoManager.get().getSecret()));
return buildTransactionList(objectMap, request);
}
/**
* Builds a transaction list from the json representation.
*
* @param objectMap json representation
* @param request search request
*
* @return transaction list
*/
private static TransactionList buildTransactionList(Map objectMap, TransactionSearchRequest request) {
String totalElementsStr = SdkUtils.getValueIfNotNull(objectMap, ApiResults.TOTAL_ELEMENTS);
long totalElements = 0;
if (!totalElementsStr.isEmpty()) {
totalElements = Long.parseLong(totalElementsStr);
}
String pageSizeStr = SdkUtils.getValueIfNotNull(objectMap, ApiResults.PAGE_SIZE);
int pageSize = 0;
if (!pageSizeStr.isEmpty()) {
pageSize = Integer.parseInt(pageSizeStr);
}
Object companyUsersObj = objectMap.get(ApiResults.ELEMENTS);
List transactionList = buildTransactionList(companyUsersObj);
return new TransactionList(request.getPageNumber(), pageSize, totalElements, transactionList, request.getStartDate(), request.getEndDate());
}
/**
* Builds a transaction list from the json representation.
*
* @param companyUsersObj json representation
*
* @return transaction list
*/
private static List buildTransactionList(Object companyUsersObj) {
List transactionList = new LinkedList();
if (companyUsersObj != null && companyUsersObj instanceof List) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy