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

mx.emite.sdk.enums.sat.adaptadores.ImporteAdapter Maven / Gradle / Ivy

Go to download

Este kit de consumo provee a los integradores de Apis de Java para construir software que consuma los diferentes servicios web publicados por Emite Facturacion

The newest version!
package mx.emite.sdk.enums.sat.adaptadores;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

import javax.xml.bind.annotation.adapters.XmlAdapter;

import org.apache.commons.lang3.StringUtils;
import org.beanio.types.TypeConversionException;
import org.beanio.types.TypeHandler;

import lombok.extern.slf4j.Slf4j;
import mx.emite.sdk.errores.ApiException;
import mx.emite.sdk.errores.I_Api_Errores;

@Slf4j
public class ImporteAdapter extends XmlAdapter implements TypeHandler{

	static ThreadLocal nf = new ThreadLocal() {
	    @Override
	    public DecimalFormat initialValue() {
	    	final DecimalFormat df = new DecimalFormat();
	    	df.setMinimumFractionDigits(2);
	    	df.setMaximumFractionDigits(6);
	    	df.setGroupingUsed(false);
	        return df;
	    }
	};	
	
	@Override
	public BigDecimal unmarshal(String importe) throws ApiException {
		if(StringUtils.isEmpty(importe))
			return null;
		try{
			final BigDecimal res = new BigDecimal(importe);
			return res.setScale(6,RoundingMode.HALF_UP);
			
		}
		catch(Exception ex){
			throw new ApiException(I_Api_Errores.DESERIALIZANDO,importe+" no es un importe valido",ex);
		}
	}
	@Override
	public Class getType() {
		return BigDecimal.class;
	}
	
	@Override
	public Object parse(String text) throws TypeConversionException, ApiException {
		return unmarshal(text);
	}



	@Override
	public String format(Object value){
		try{
		if(value instanceof BigDecimal)
			return marshal((BigDecimal)value);
		return null;
		}catch(Exception ex){
			log.error("error formateando",ex);
			return null;
		}
	}



	@Override
	public String marshal(BigDecimal v) throws Exception {
		if(v==null)
			return null;
		return nf.get().format(v);
	}
	
	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy