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

com.genability.client.api.request.AbstractRequest Maven / Gradle / Ivy

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

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.genability.client.types.Fields;
import com.genability.client.util.EnumUtil;

public abstract class AbstractRequest {
	
	public static final String ISO_8601_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZZ";
	public static final DateTimeFormatter ISO_8601_DATE_TIME_FORMATTER = DateTimeFormat.forPattern(ISO_8601_DATE_TIME_FORMAT);
	
	public static final String ISO_8601_SHORT_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm";
	public static final DateTimeFormatter ISO_8601_SHORT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern(ISO_8601_SHORT_DATE_TIME_FORMAT);

	public static final String ISO_8601_SHORT_DATE_FORMAT = "yyyy-MM-dd";
	public static final DateTimeFormatter ISO_8601_SHORT_DATE_FORMATTER = DateTimeFormat.forPattern(ISO_8601_SHORT_DATE_FORMAT);
	
	// To avoid confusion with fields null/versus not returning - we will
	// default to extended fields.
	protected Fields fields = Fields.EXT;

	public Fields getFields() {
      return fields;
    }
	
	public void setFields(Fields fields) {
      this.fields = fields;
    }

	@JsonIgnore
	public List getQueryParams() {
	  List qparams = new ArrayList();
	  if (fields != null) {
	    addParam(qparams, "fields", fields.getValue());
	  }
	  
	  return qparams;
	}

	protected void addParam(List qparams, String paramName, Long paramValue) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName, paramValue.toString()));
		}
	}

	protected void addParam(List qparams, String paramName, Integer paramValue) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName, paramValue.toString()));
		}
	}

	protected void addParam(List qparams, String paramName, String paramValue) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName, paramValue));
		}
	}

	protected void addParam(List qparams, String paramName, BigDecimal paramValue) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName, paramValue.toPlainString()));
		}
	}

	protected void addParam(List qparams, String paramName, Double paramValue) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName, paramValue.toString()));
		}
	}
	
	protected void addParam(List qparams, String paramName, String[] paramValues) {
		if(paramValues != null) {
			for(String paramValue : paramValues)
			    qparams.add(new BasicNameValuePair(paramName, paramValue));
		}
	}

	protected > void addParam(List qparams, String paramName, E[] paramValues) {
		if(paramValues != null) {
			qparams.add(new BasicNameValuePair(paramName, EnumUtil.enumListString(paramValues)));
		}
	}

	protected > void addParam(List qparams, String paramName, E paramValue) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName,  paramValue.name()));
		}
	}

	protected void addParam(List qparams, String paramName, DateTime paramValue) {
		if(paramValue != null) {
			//TODO - update this with correct formatting
			qparams.add(new BasicNameValuePair(paramName, paramValue.toString()));
		}
	}
	
	protected void addParam(List qparams, String paramName, LocalDate paramValue) {
		if(paramValue != null) {
			//TODO - update this with correct formatting
			qparams.add(new BasicNameValuePair(paramName, paramValue.toString()));
		}
	}

	protected void addParam(List qparams, String paramName, DateTime paramValue, String format) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName, paramValue
					.toString(DateTimeFormat.forPattern(format))));
		}
	}

	protected void addParam(List qparams, String paramName, DateTime paramValue, DateTimeFormatter formatter) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName, paramValue.toString(formatter)));
		}
	}
	
	protected void addParam(List qparams, String paramName, Boolean paramValue) {
		if(paramValue != null) {
			qparams.add(new BasicNameValuePair(paramName, 
					(Boolean.FALSE.equals(paramValue) ? "false" : "true")));
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy