package com.gx.obe.server.common.test;

 
import java.io.Serializable;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
 
/**  
 * @Title:  RequestBodyEntity   
 * @Package com.gx.obe.server.controllers.details   
 * @Description:    标准返回对象结构体  
 * @author: XiaoMaPro     
 * @date:   2019年4月25日 下午1:46:02   
 * @version V1.0 
 * @Copyright: 2018 - 2019 www.myspro.com Inc. All rights reserved. 
 *  
 */
public class RequestBody<T> implements Serializable{
 
	
	private static final long serialVersionUID = 1L;
	private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	
	private T entity;
	
	private List<T> entityList;
	
	private List<Object> list;
	
	
	
	private Map<String, Object> params;
	

	public RequestBody() {
		super();	
	}
	
	public T getEntity() {
		return entity;
	}


	public void setEntity(T entity) {
		this.entity = entity;
	}


	public List<Object> getList() {
		return list;
	}



	public void setList(List<Object> list) {
		this.list = list;
	}

	
	public List<T> getEntityList() {
		return entityList;
	}

	public void setEntityList(List<T> entityList) {
		this.entityList = entityList;
	}

	public Map<String, Object> getParams() {
		return params;
	}

	
	public void setParams(Map<String, Object> params) {
		this.params = params;
	}

	
	public Object getParam(String key){
		if(null != params){
			return params.get(key);
		}
		return null;
	}
	
 
	public RequestBody(T data) {
		super();
		this.entity = data;
	}

	public RequestBody(T data, List<Object> list) {
		super();
		this.entity = data;
		this.list = list;
	}

	public RequestBody(Throwable e) {
		super();
 	}

	public String getParamsString(String key, String defaultValue) {
		if (null == params || null == params.get(key)) {
			return defaultValue;
		}
		Object paramValue = params.get(key);
		if (paramValue instanceof String) {
			return (String) paramValue;
		} else {
			return paramValue.toString();
		}
	}
	
	public boolean getParamsBoolean(String key) {
		return getParamsBoolean(key, false);
	}
	
	public boolean getParamsBoolean(String key, boolean defaultValue) {
		if(null == params || null == params.get(key)){
			return defaultValue;
		}
		Object paramValue = params.get(key);
		if(paramValue instanceof Boolean){
			return (Boolean) paramValue;
		}else {
			if(paramValue.toString().equals("1")){
				return true;
			}else {
				return  false;
			}
		}
	}
	
	
	public Integer getParamsInteger(String key) {
		return getParamsInteger(key, 0);
	}
	
	
	public Integer getParamsInteger(String key ,Integer defaultValue) {
		if(null == params || null == params.get(key)){
			return defaultValue;
		}
		Object paramValue = params.get(key);
		try {
			if(paramValue instanceof Integer){
				return (Integer) paramValue;
			}else {
				return Integer.valueOf(paramValue.toString());
			}			
		} catch (Exception e) {
			return Integer.valueOf(0);
		}
	}
	
	
	public Double getParamsDouble(String key) {
		return getParamsDouble(key,0.0);
	}
	
	public Double getParamsDouble(String key,Double defaultValue) {
		if(null == params || null == params.get(key)){
			return defaultValue;
		}
		Object paramValue = params.get(key);
		try {
			if(paramValue instanceof Integer){
				return (Double) paramValue;
			}else {
				return Double.valueOf(paramValue.toString());
			}			
		} catch (Exception e) {
			return Double.valueOf(0);
		}
	}
	
	
	
	public BigDecimal getParamsBigDecimal(String key) {
		return getParamsBigDecimal(key ,BigDecimal.ZERO);
	}
	
	public BigDecimal getParamsBigDecimal(String key , BigDecimal defaultValue) {
		if(null == params || null == params.get(key)){
			return defaultValue;
		}
		try {
			Object paramValue = params.get(key);
			if(paramValue instanceof BigDecimal){
				return (BigDecimal) paramValue;
			}else {
				return (BigDecimal)new BigDecimal(paramValue.toString());
			}			
		} catch (Exception e) {
			return BigDecimal.ZERO;
		}
	}
}