/*
* (c) Copyright 2010-2011 AgileBirds
*
* This file is part of OpenFlexo.
*
* OpenFlexo is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* OpenFlexo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openflexo.foundation.ie.util;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.openflexo.foundation.FlexoObject;
import org.openflexo.kvc.ChoiceList;
import org.openflexo.xmlcode.StringConvertable;
import org.openflexo.xmlcode.StringEncoder;
import org.openflexo.xmlcode.StringEncoder.Converter;
/**
* Represents type of an hyperlink
*
* @author sguerin
*
*/
public abstract class DateFormatType extends FlexoObject implements StringConvertable, ChoiceList, Serializable {
private static final Logger logger = Logger.getLogger(DateFormatType.class.getPackage().getName());
public static final DateFormatType EUDEFAULT = new EUDefaultDateFormatType();
public static final DateFormatType DEFAULT = new DefaultDateFormatType();
public static final DateFormatType LONG = new LongDateFormatType();
public static final DateFormatType SHORT = new ShortDateFormatType();
public static final DateFormatType DAYLONG = new DayLongDateFormatType();
public static final DateFormatType DAYSHORT = new DayShortDateFormatType();
public static final DateFormatType DOTSHORT = new DotShortDateFormatType();
public static final DateFormatType LONG2 = new Long2DateFormatType();
public static final DateFormatType SHORT2 = new Short2DateFormatType();
public static final DateFormatType DAYLONG2 = new DayLong2DateFormatType();
public static final DateFormatType DAYSHORT2 = new DayShort2DateFormatType();
public static final DateFormatType DEFAULTSHORT = new DefaultShortFormatType();
public static final DateFormatType HOURS = new HoursFormatType();
public static final DateFormatType HOURSAMPM = new HoursAMPMFormatType();
public static final DateFormatType HOURSSHORT = new HoursShortFormatType();
public static final DateFormatType HOURSSHORTAMPM = new HoursShortAMPMFormatType();
public static final StringEncoder.Converter<DateFormatType> DateFormatTypeConverter = new Converter<DateFormatType>(
DateFormatType.class) {
@Override
public DateFormatType convertFromString(String value) {
return get(value);
}
@Override
public String convertToString(DateFormatType value) {
return value.getName();
}
};
public static class EUDefaultDateFormatType extends DateFormatType {
EUDefaultDateFormatType() {
}
@Override
public String getName() {
return "%d/%m/%y";
}
@Override
public String getDisplayString() {
return "14/01/05";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "d/M/yy";
}
}
public static class DefaultDateFormatType extends DateFormatType {
DefaultDateFormatType() {
}
@Override
public String getName() {
return "%m/%d/%y";
}
@Override
public String getDisplayString() {
return "01/14/05";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "M/d/yy";
}
}
public static class LongDateFormatType extends DateFormatType {
LongDateFormatType() {
}
@Override
public String getName() {
return "%B %d, %Y";
}
@Override
public String getDisplayString() {
return "January 14, 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "MMMMM d, yyyy";
}
}
public static class ShortDateFormatType extends DateFormatType {
ShortDateFormatType() {
}
@Override
public String getName() {
return "%b %d, %Y";
}
@Override
public String getDisplayString() {
return "Jan 14, 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "MMM d, yyyy";
}
}
public static class DayLongDateFormatType extends DateFormatType {
DayLongDateFormatType() {
}
@Override
public String getName() {
return "%A, %B %d, %Y";
}
@Override
public String getDisplayString() {
return "Friday, January 14, 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "EEEE, MMMMM, yyyy";
}
}
public static class DayShortDateFormatType extends DateFormatType {
DayShortDateFormatType() {
}
@Override
public String getName() {
return "%A, %b %d, %Y";
}
@Override
public String getDisplayString() {
return "Friday, Jan 14, 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "EEEE, MMM d, yyyy";
}
}
public static class DotShortDateFormatType extends DateFormatType {
DotShortDateFormatType() {
}
@Override
public String getName() {
return "%d.%m.%y";
}
@Override
public String getDisplayString() {
return "14.01.05";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "d.M.yy";
}
}
public static class Long2DateFormatType extends DateFormatType {
Long2DateFormatType() {
}
@Override
public String getName() {
return "%d %B %Y";
}
@Override
public String getDisplayString() {
return "14 January 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "d MMMMM yyyy";
}
}
public static class Short2DateFormatType extends DateFormatType {
Short2DateFormatType() {
}
@Override
public String getName() {
return "%d %b %Y";
}
@Override
public String getDisplayString() {
return "14 Jan 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "d MMM yyyy";
}
}
public static class DayLong2DateFormatType extends DateFormatType {
DayLong2DateFormatType() {
}
@Override
public String getName() {
return "%A %d %B %Y";
}
@Override
public String getDisplayString() {
return "Friday 14 January 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "EEEE d MMMMM yyyy";
}
}
public static class DayShort2DateFormatType extends DateFormatType {
DayShort2DateFormatType() {
}
@Override
public String getName() {
return "%A %d %b %Y";
}
@Override
public String getDisplayString() {
return "Friday 14 Jan 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "EEEE d MMM yyyy";
}
}
public static class DefaultShortFormatType extends DateFormatType {
DefaultShortFormatType() {
}
@Override
public String getName() {
return "%x";
}
@Override
public String getDisplayString() {
return "Fri Jan 14 2005";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "EEE MMM d yyyy";
}
}
public static class HoursFormatType extends DateFormatType {
HoursFormatType() {
}
@Override
public String getName() {
return "%H:%M:%S";
}
@Override
public String getDisplayString() {
return "16:45:12";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "H:m:s";
}
}
public static class HoursAMPMFormatType extends DateFormatType {
HoursAMPMFormatType() {
}
@Override
public String getName() {
return "%I:%M:%S %p";
}
@Override
public String getDisplayString() {
return "04:45:12 PM";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "h:m:s a";
}
}
public static class HoursShortFormatType extends DateFormatType {
HoursShortFormatType() {
}
@Override
public String getName() {
return "%H:%M";
}
@Override
public String getDisplayString() {
return "16:45";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "H:m";
}
}
public static class HoursShortAMPMFormatType extends DateFormatType {
HoursShortAMPMFormatType() {
}
@Override
public String getName() {
return "%I:%M %p";
}
@Override
public String getDisplayString() {
return "04:45 PM";
}
/**
* Overrides getJavaPattern
*
* @see org.openflexo.foundation.ie.util.DateFormatType#getJavaPattern()
*/
@Override
public String getJavaPattern() {
return "h:m a";
}
}
public abstract String getName();
public abstract String getDisplayString();
public abstract String getJavaPattern();
public static DateFormatType get(String typeName) {
for (Enumeration e = availableValues().elements(); e.hasMoreElements();) {
DateFormatType temp = (DateFormatType) e.nextElement();
if (temp.getName().equals(typeName)) {
return temp;
}
}
if (logger.isLoggable(Level.WARNING)) {
logger.warning("Could not find ClientSideEventType named " + typeName);
}
return null;
}
private Vector<DateFormatType> _availableValues = null;
@Override
public Vector getAvailableValues() {
if (_availableValues == null) {
_availableValues = new Vector<DateFormatType>();
_availableValues.add(EUDEFAULT);
_availableValues.add(DEFAULT);
_availableValues.add(LONG);
_availableValues.add(SHORT);
_availableValues.add(DAYLONG);
_availableValues.add(DAYSHORT);
_availableValues.add(DOTSHORT);
_availableValues.add(LONG2);
_availableValues.add(SHORT2);
_availableValues.add(DAYLONG2);
_availableValues.add(DAYSHORT2);
_availableValues.add(DEFAULTSHORT);
_availableValues.add(HOURS);
_availableValues.add(HOURSAMPM);
_availableValues.add(HOURSSHORT);
_availableValues.add(HOURSSHORTAMPM);
}
return _availableValues;
}
@Override
public StringEncoder.Converter getConverter() {
return DateFormatTypeConverter;
}
public static Vector availableValues() {
return DEFAULT.getAvailableValues();
}
}