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

org.milyn.javabean.decoders.CalendarDecoder Maven / Gradle / Ivy

The newest version!
package org.milyn.javabean.decoders;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.milyn.javabean.DataDecodeException;
import org.milyn.javabean.DataDecoder;
import org.milyn.javabean.DecodeType;

/**
 * {@link java.util.Calendar} data decoder.
 *
 * Decodes the supplied string into a {@link java.util.Calendar} value
 * based on the supplied "{@link java.text.SimpleDateFormat format}" parameter.
 *
 * This decoder is synchronized on its underlying {@link SimpleDateFormat} instance.
 *
 * @see org.milyn.javabean.decoders.LocaleAwareDateDecoder
 *
 * @author [email protected]
 * @author Pavel Kadlec
 * @author [email protected]
 *
 */
@DecodeType(Calendar.class)
public class CalendarDecoder extends LocaleAwareDateDecoder implements DataDecoder {

    public Object decode(String data) throws DataDecodeException {
        if (decoder == null) {
            throw new IllegalStateException("Calendar decoder not initialised.  A decoder for this type (" + getClass().getName() + ") must be explicitly configured (unlike the primitive type decoders) with a date 'format'. See Javadoc.");
        }
        try {
            // Must be sync'd - DateFormat is not synchronized.
            synchronized(decoder) {
                decoder.parse(data.trim());
                return decoder.getCalendar().clone();
            }
        } catch (ParseException e) {
            throw new DataDecodeException("Error decoding Date data value '" + data + "' with decode format '" + format + "'.", e);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy