You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by df...@apache.org on 2004/06/24 17:12:13 UTC

cvs commit: jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/core DateFormatter.java

dflorey     2004/06/24 08:12:13

  Added:       proposals/projector/src/java/org/apache/slide/projector/processor/core
                        DateFormatter.java
  Log:
  
  
  Revision  Changes    Path
  1.1                  jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/core/DateFormatter.java
  
  Index: DateFormatter.java
  ===================================================================
  package org.apache.slide.projector.processor.core;
  
  import java.text.DateFormat;
  import java.util.Locale;
  import java.util.Map;
  
  import org.apache.slide.projector.ContentType;
  import org.apache.slide.projector.Context;
  import org.apache.slide.projector.Processor;
  import org.apache.slide.projector.Result;
  import org.apache.slide.projector.Store;
  import org.apache.slide.projector.descriptor.DateValueDescriptor;
  import org.apache.slide.projector.descriptor.LocaleValueDescriptor;
  import org.apache.slide.projector.descriptor.ParameterDescriptor;
  import org.apache.slide.projector.descriptor.RequiredEnvironmentDescriptor;
  import org.apache.slide.projector.descriptor.ResultDescriptor;
  import org.apache.slide.projector.descriptor.ResultEntryDescriptor;
  import org.apache.slide.projector.descriptor.StateDescriptor;
  import org.apache.slide.projector.descriptor.StringValueDescriptor;
  import org.apache.slide.projector.i18n.DefaultMessage;
  import org.apache.slide.projector.i18n.LocalizedMessage;
  import org.apache.slide.projector.i18n.ParameterMessage;
  import org.apache.slide.projector.processor.SimpleProcessor;
  import org.apache.slide.projector.value.DateValue;
  import org.apache.slide.projector.value.LocaleValue;
  import org.apache.slide.projector.value.StringValue;
  
  public class DateFormatter implements Processor {
  	private final static String DATE_FORMAT = "dateFormat";
  	private final static String TIME_FORMAT = "timeFormat";
      private final static String DATE = "date";
      private final static String LOCALE = "locale";
      private final static String HIDE = "hide";
      private final static String SHORT = "short";
      private final static String MEDIUM = "medium";
      private final static String LONG = "long";
      private final static String FULL = "full";
      private final static String[] STYLES = new String[] { HIDE, SHORT, MEDIUM, LONG, FULL }; 
      
      private final static ParameterDescriptor[] parameterDescriptors = new ParameterDescriptor[]{
      		new ParameterDescriptor(DATE, new ParameterMessage("dateFormatter/parameter/date"), new DateValueDescriptor()),
      		new ParameterDescriptor(DATE_FORMAT, new ParameterMessage("dateFormatter/parameter/dateFormat"), new StringValueDescriptor(STYLES), new StringValue(SHORT)),
      		new ParameterDescriptor(TIME_FORMAT, new ParameterMessage("dateFormatter/parameter/timeFormat"), new StringValueDescriptor(STYLES), new StringValue(SHORT)),
      };
  
      
      private final static ResultDescriptor resultDescriptor = new ResultDescriptor(
              new StateDescriptor[]{ StateDescriptor.OK_DESCRIPTOR },
              new ResultEntryDescriptor[]{new ResultEntryDescriptor(
                      SimpleProcessor.OUTPUT, new LocalizedMessage("dateFormatter/result/output"),
                      ContentType.PLAIN_TEXT, true)});
  
      private final static RequiredEnvironmentDescriptor[] requiredEnvironmentDescriptors = new RequiredEnvironmentDescriptor[] {
      		new RequiredEnvironmentDescriptor(LOCALE, Store.SESSION, new DefaultMessage("message/requiredEnvironment/locale"), new LocaleValueDescriptor(), new LocaleValue(Locale.getDefault()))
      };
  
  	public Result process(Map parameters, Context context) throws Exception {
  		DateValue date = (DateValue)parameters.get(DATE); 
  		String dateFormat = parameters.get(DATE_FORMAT).toString();
  		String timeFormat = parameters.get(TIME_FORMAT).toString();
  		Locale locale = ((LocaleValue)context.getStore(Store.SESSION).get(LOCALE)).getLocale();
  		String formattedDate = getDateFormatter(dateFormat, timeFormat, locale).format(date.getDate());
  		return new Result(StateDescriptor.OK, SimpleProcessor.OUTPUT, new StringValue(formattedDate));
  	}
  
  	public ParameterDescriptor[] getParameterDescriptors() {
  		return parameterDescriptors; 
  	}
  
  	public ResultDescriptor getResultDescriptor() {
  		return resultDescriptor;
  	}
  	
  	private DateFormat getDateFormatter(String dateFormat, String timeFormat, Locale locale) {
  		if ( dateFormat.equals(HIDE) ) {
  			return DateFormat.getTimeInstance(getStyleByName(timeFormat), locale);
  		} else if ( timeFormat.equals(HIDE) ) {
  			return DateFormat.getDateInstance(getStyleByName(dateFormat), locale);
  		} else {
  			return DateFormat.getDateTimeInstance(getStyleByName(timeFormat), getStyleByName(dateFormat), locale);
  		}
  	}
  	
  	private int getStyleByName(String styleName) {
  		if ( styleName.equals(SHORT) ) {
  			return DateFormat.SHORT;
  		} else if ( styleName.equals(MEDIUM) ) {
  			return DateFormat.MEDIUM;
  		} else if ( styleName.equals(LONG) ) {
  			return DateFormat.LONG;
  		}
  		return DateFormat.FULL;
  	}
  }
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org