package br.com.caelum.stella.feriado.entity;
import java.util.Date;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import br.com.caelum.stella.feriado.adapter.TipoAdapter;
import br.com.caelum.stella.feriado.enums.Tipo;
import br.com.caelum.stella.feriado.util.DateUtil;
import br.com.caelum.stella.feriado.util.ResourceUtil;
@XmlRootElement(name="Feriado")
public class Feriado {
private String key;
private Date data;
private Tipo tipo;
private int dia;
private int mes;
private String local;
public Feriado(String key, Date data, Tipo tipo,String local) {
this.key = key;
this.data = data;
this.tipo = tipo;
this.dia = DateUtil.getDiaDoMes(data);
this.mes = DateUtil.getMes(data);
this.local = local;
}
@SuppressWarnings("unused")
private Feriado(){}
public Feriado(String key, int dia, int ano, Tipo tipo,String local) {
this.key = key;
this.tipo = tipo;
this.dia = dia;
this.mes =ano;
this.local = local;
}
@XmlAttribute(name="key")
public String getKey() {
return key;
}
public Date getData() {
return data;
}
public String getNome() {
return ResourceUtil.getValue(key);
}
@XmlAttribute(name="tipo")
@XmlJavaTypeAdapter(TipoAdapter.class)
public Tipo getTipo() {
return tipo;
}
@XmlAttribute(name="dia")
public int getDia() {
return dia;
}
@XmlAttribute(name="mes")
public int getMes() {
return mes;
}
@XmlAttribute(name="local")
public String getLocal() {
return local;
}
@SuppressWarnings("unused")
private void setKey(String key) {
this.key = key;
}
@SuppressWarnings("unused")
private void setData(Date data) {
this.data = data;
}
@SuppressWarnings("unused")
private void setTipo(Tipo tipo) {
this.tipo = tipo;
}
@SuppressWarnings("unused")
private void setDia(int dia) {
this.dia = dia;
}
@SuppressWarnings("unused")
private void setMes(int mes) {
this.mes = mes;
}
@SuppressWarnings("unused")
private void setLocal(String local) {
this.local = local;
}
public void ajustarData(Date data){
this.data = DateUtil.zerarHora(data).getTime();
}
@Override
public String toString() {
String oc = new Date().before(data) ? " ocorrerá no dia " : " ocorreu no dia ";
return getNome() + oc + DateUtil.formatterExtenso.format(data) + " em " + getLocal();
}
}