001    package edu.nrao.sss.webapp.faces.converter;
002    
003    import javax.faces.convert.Converter;
004    import javax.faces.convert.ConverterException;
005    import javax.faces.context.FacesContext;
006    import javax.faces.component.UIComponent;
007    import javax.faces.application.FacesMessage;
008    
009    import edu.nrao.sss.measure.TimeOfDay;
010    
011    import org.apache.log4j.Logger;
012    
013    public class TimeOfDayConverter implements Converter
014    {
015            private static Logger log = Logger.getLogger(TimeOfDayConverter.class);
016            
017            public Object getAsObject(FacesContext context, UIComponent component, String value)
018            {
019                    log.debug("Trying to convert " + value + " to an object");
020                    try 
021                    {
022                            return TimeOfDay.parse(value);
023                    }
024                    catch (IllegalArgumentException iae)
025                    {
026                            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_WARN, "", "Value '" + value + "' is not in a recognized Time of Day format."), iae);
027                    }
028            }
029    
030            public String getAsString(FacesContext context, UIComponent component, Object value)
031            {
032                    log.debug("Trying to convert " + value + " to a string");
033                    
034                    if (value == null)
035                            return "";
036    
037                    else if (value instanceof TimeOfDay)
038                      return ((TimeOfDay)value).toString(0,0);
039    
040                    else
041                    {
042                            log.warn("Cannot Convert objects of type: " + value.getClass());
043                            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_WARN, "", "Cannot Convert objects of type: " + value.getClass()));
044                    }
045            }
046    }