001/* Copyright (C) 2014 konik.io
002 *
003 * This file is part of the Konik library.
004 *
005 * The Konik library is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Affero General Public License as
007 * published by the Free Software Foundation, either version 3 of the
008 * License, or (at your option) any later version.
009 *
010 * The Konik library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013 * GNU Affero General Public License for more details.
014 *
015 * You should have received a copy of the GNU Affero General Public License
016 * along with the Konik library. If not, see <http://www.gnu.org/licenses/>.
017 */
018package io.konik.jaxb.adapter;
019
020import io.konik.util.Strings;
021
022import java.text.SimpleDateFormat;
023import java.util.Date;
024
025import javax.xml.bind.annotation.adapters.XmlAdapter;
026
027/**
028 * = The Issue Date Time Adapter.
029 * 
030 * Two types are allowed:
031 * 
032 */
033public class IssueDateTimeAdapter extends XmlAdapter<String, Date> {
034
035   private final ThreadLocal<SimpleDateFormat> dateTimeFormatter = new ThreadLocal<SimpleDateFormat>() {
036      @Override
037      protected SimpleDateFormat initialValue() {
038         return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");// 2013-08-05T00:00:00
039      }
040   };
041
042   @Override
043   public Date unmarshal(String date) throws Exception {
044      if (Strings.isNullOrEmpty(date)) { return null; }
045      return dateTimeFormatter.get().parse(date.trim());
046   }
047
048   @Override
049   public String marshal(Date date) throws Exception {
050      if (date == null) { return null; }
051      return dateTimeFormatter.get().format(date);
052   }
053
054}