package no.niths.domain.adapter; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import javax.xml.bind.annotation.adapters.XmlAdapter; import no.niths.application.rest.exception.CustomParseException; import no.niths.common.constants.MiscConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Class XmlCalendarAdapter used too parse a String too a Calendar (GregorianCalendar) * or a Calendar too a String */ public class XmlCalendarAdapter extends XmlAdapter<String, Calendar> { private DateFormat df = new SimpleDateFormat(MiscConstants.CALENDAR_FORMAT); private Logger logger = LoggerFactory .getLogger(XmlCalendarAdapter.class); @Override public Calendar unmarshal(String date) { Calendar calendar = new GregorianCalendar(); try { calendar.setTime(df.parse(date)); return calendar; } catch (ParseException px) { logger.error(px.getMessage(),px); throw new CustomParseException("Invalid syntacs! Valid syntax : " + MiscConstants.CALENDAR_FORMAT + " ErrorOffset:" + px.getErrorOffset()); } } @Override public String marshal(Calendar calendar) throws ParseException { return df.format(calendar.getTime()); } }