package com.ejie.ad74a.xmlparser;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

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

import org.springframework.context.i18n.LocaleContextHolder;

public class DateAdapterTexto extends XmlAdapter<String, Date> {

	@Override
	public String marshal(Date v) throws Exception {
		Locale locale = LocaleContextHolder.getLocale();
		if (locale.getLanguage().equalsIgnoreCase(com.ejie.ad74a.constantes.Constantes.EU)) {
			return this.traducirFecha(v).get(1);
		} else {
			return this.traducirFecha(v).get(0);
		}

	}

	@Override
	public Date unmarshal(String v) throws Exception {
		return new Date();

	}

	private List<String> traducirFecha(Date fecha) {
		List<String> fechasString = new ArrayList<String>();
		// Formato de dia, mes y año
		SimpleDateFormat dateFormatDia = new SimpleDateFormat("dd");
		SimpleDateFormat dateFormatMes = new SimpleDateFormat("MM");
		SimpleDateFormat dateFormatAnyo = new SimpleDateFormat("yyyy");

		Integer dia = Integer.parseInt(dateFormatDia.format(fecha));
		Integer mes = Integer.parseInt(dateFormatMes.format(fecha));
		Integer anyo = Integer.parseInt(dateFormatAnyo.format(fecha));

		// Construccion de la fecha para la tabla 60 en string
		String fechaCas = dia + " de ";
		String fechaEus = anyo + "ko ";
		switch (mes) {
		case 1:
			fechaCas += "enero ";
			fechaEus += "urtarrila";
			break;
		case 2:
			fechaCas += "febrero ";
			fechaEus += "otsaila";
			break;
		case 3:
			fechaCas += "marzo ";
			fechaEus += "martxoa";
			break;
		case 4:
			fechaCas += "abril ";
			fechaEus += "apirila";
			break;
		case 5:
			fechaCas += "mayo ";
			fechaEus += "maiatza";
			break;
		case 6:
			fechaCas += "junio ";
			fechaEus += "ekaina";
			break;
		case 7:
			fechaCas += "julio ";
			fechaEus += "uztaila";
			break;
		case 8:
			fechaCas += "agosto ";
			fechaEus += "abuztua";
			break;
		case 9:
			fechaCas += "septiembre ";
			fechaEus += "iraila";
			break;
		case 10:
			fechaCas += "octubre ";
			fechaEus += "urria";
			break;
		case 11:
			fechaCas += "noviembre ";
			fechaEus += "azaroa";
			break;

		case 12:
			fechaCas += "diciembre ";
			fechaEus += "abendua";
			break;

		default:
			break;
		}
		fechaCas += "de " + anyo;
		fechaEus += "ren " + dia + "a";

		// asignamos el primero a castellano y el segundo a euskera
		fechasString.add(fechaCas);
		fechasString.add(fechaEus);

		return fechasString;
	}
}
