Package org.apache.log4j.lf5.util

Source Code of org.apache.log4j.lf5.util.DateFormatManager

/*
* Copyright 1999-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.log4j.lf5.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
* Date format manager.
* Utility class to help manage consistent date formatting and parsing.
* It may be advantageous to have multiple DateFormatManagers per
* application.  For example, one for handling the output (formatting) of
* dates, and another one for handling the input (parsing) of dates.
*
* @author Robert Shaw
* @author Michael J. Sikorsky
*/

// Contributed by ThoughtWorks Inc.
public class DateFormatManager {
  //--------------------------------------------------------------------------
  //   Constants:
  //--------------------------------------------------------------------------

  //--------------------------------------------------------------------------
  //   Protected Variables:
  //--------------------------------------------------------------------------

  //--------------------------------------------------------------------------
  //   Private Variables:
  //--------------------------------------------------------------------------
  private TimeZone _timeZone = null;
  private Locale _locale = null;

  private String _pattern = null;
  private DateFormat _dateFormat = null;

  //--------------------------------------------------------------------------
  //   Constructors:
  //--------------------------------------------------------------------------
  public DateFormatManager() {
    super();
    configure();
  }

  public DateFormatManager(TimeZone timeZone) {
    super();

    _timeZone = timeZone;
    configure();
  }

  public DateFormatManager(Locale locale) {
    super();

    _locale = locale;
    configure();
  }

  public DateFormatManager(String pattern) {
    super();

    _pattern = pattern;
    configure();
  }

  public DateFormatManager(TimeZone timeZone, Locale locale) {
    super();

    _timeZone = timeZone;
    _locale = locale;
    configure();
  }

  public DateFormatManager(TimeZone timeZone, String pattern) {
    super();

    _timeZone = timeZone;
    _pattern = pattern;
    configure();
  }

  public DateFormatManager(Locale locale, String pattern) {
    super();

    _locale = locale;
    _pattern = pattern;
    configure();
  }

  public DateFormatManager(TimeZone timeZone, Locale locale, String pattern) {
    super();

    _timeZone = timeZone;
    _locale = locale;
    _pattern = pattern;
    configure();
  }

  //--------------------------------------------------------------------------
  //   Public Methods:
  //--------------------------------------------------------------------------

  public synchronized TimeZone getTimeZone() {
    if (_timeZone == null) {
      return TimeZone.getDefault();
    } else {
      return _timeZone;
    }
  }

  public synchronized void setTimeZone(TimeZone timeZone) {
    _timeZone = timeZone;
    configure();
  }

  public synchronized Locale getLocale() {
    if (_locale == null) {
      return Locale.getDefault();
    } else {
      return _locale;
    }
  }

  public synchronized void setLocale(Locale locale) {
    _locale = locale;
    configure();
  }

  public synchronized String getPattern() {
    return _pattern;
  }

  /**
   * Set the pattern. i.e. "EEEEE, MMMMM d, yyyy hh:mm aaa"
   */
  public synchronized void setPattern(String pattern) {
    _pattern = pattern;
    configure();
  }


  /**
   * This method has been deprecated in favour of getPattern().
   * @deprecated Use getPattern().
   */
  public synchronized String getOutputFormat() {
    return _pattern;
  }

  /**
   * This method has been deprecated in favour of setPattern().
   * @deprecated Use setPattern().
   */
  public synchronized void setOutputFormat(String pattern) {
    _pattern = pattern;
    configure();
  }

  public synchronized DateFormat getDateFormatInstance() {
    return _dateFormat;
  }

  public synchronized void setDateFormatInstance(DateFormat dateFormat) {
    _dateFormat = dateFormat;
    // No reconfiguration necessary!
  }

  public String format(Date date) {
    return getDateFormatInstance().format(date);
  }

  public String format(Date date, String pattern) {
    DateFormat formatter = null;
    formatter = getDateFormatInstance();
    if (formatter instanceof SimpleDateFormat) {
      formatter = (SimpleDateFormat) (formatter.clone());
      ((SimpleDateFormat) formatter).applyPattern(pattern);
    }
    return formatter.format(date);
  }

  /**
   * @throws java.text.ParseException
   */
  public Date parse(String date) throws ParseException {
    return getDateFormatInstance().parse(date);
  }

  /**
   * @throws java.text.ParseException
   */
  public Date parse(String date, String pattern) throws ParseException {
    DateFormat formatter = null;
    formatter = getDateFormatInstance();
    if (formatter instanceof SimpleDateFormat) {
      formatter = (SimpleDateFormat) (formatter.clone());
      ((SimpleDateFormat) formatter).applyPattern(pattern);
    }
    return formatter.parse(date);
  }

  //--------------------------------------------------------------------------
  //   Protected Methods:
  //--------------------------------------------------------------------------

  //--------------------------------------------------------------------------
  //   Private Methods:
  //--------------------------------------------------------------------------
  private synchronized void configure() {
    _dateFormat = SimpleDateFormat.getDateTimeInstance(DateFormat.FULL,
        DateFormat.FULL,
        getLocale());
    _dateFormat.setTimeZone(getTimeZone());

    if (_pattern != null) {
      ((SimpleDateFormat) _dateFormat).applyPattern(_pattern);
    }
  }

  //--------------------------------------------------------------------------
  //   Nested Top-Level Classes or Interfaces:
  //--------------------------------------------------------------------------

}
TOP

Related Classes of org.apache.log4j.lf5.util.DateFormatManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.