X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar_unused%2Forg%2Fapache%2Flog4j%2Fhelpers%2FDateLayout.java;fp=srcjar_unused%2Forg%2Fapache%2Flog4j%2Fhelpers%2FDateLayout.java;h=383ef38c5af173778f1cff61ab3f9b99444da567;hb=4f30214e8098748469c6a4269ac2ed6c5750e4b0;hp=0000000000000000000000000000000000000000;hpb=9dabc02511e3a334a5749a504f57f69d6c9017bd;p=jalview.git diff --git a/srcjar_unused/org/apache/log4j/helpers/DateLayout.java b/srcjar_unused/org/apache/log4j/helpers/DateLayout.java new file mode 100644 index 0000000..383ef38 --- /dev/null +++ b/srcjar_unused/org/apache/log4j/helpers/DateLayout.java @@ -0,0 +1,200 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.helpers; + +import org.apache.log4j.Layout; +import org.apache.log4j.spi.LoggingEvent; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; +import java.text.FieldPosition; + + +/** + This abstract layout takes care of all the date related options and + formatting work. + + + @author Ceki Gülcü + */ +abstract public class DateLayout extends Layout { + + /** + String constant designating no time information. Current value of + this constant is NULL. + + */ + public final static String NULL_DATE_FORMAT = "NULL"; + + /** + String constant designating relative time. Current value of + this constant is RELATIVE. + */ + public final static String RELATIVE_TIME_DATE_FORMAT = "RELATIVE"; + + protected FieldPosition pos = new FieldPosition(0); + + /** + @deprecated Options are now handled using the JavaBeans paradigm. + This constant is not longer needed and will be removed in the + near term. + */ + final static public String DATE_FORMAT_OPTION = "DateFormat"; + + /** + @deprecated Options are now handled using the JavaBeans paradigm. + This constant is not longer needed and will be removed in the + near term. + */ + final static public String TIMEZONE_OPTION = "TimeZone"; + + private String timeZoneID; + private String dateFormatOption; + + protected DateFormat dateFormat; + protected Date date = new Date(); + + /** + @deprecated Use the setter method for the option directly instead + of the generic setOption method. + */ + public + String[] getOptionStrings() { + return new String[] {DATE_FORMAT_OPTION, TIMEZONE_OPTION}; + } + + /** + @deprecated Use the setter method for the option directly instead + of the generic setOption method. + */ + public + void setOption(String option, String value) { + if(option.equalsIgnoreCase(DATE_FORMAT_OPTION)) { + dateFormatOption = value.toUpperCase(); + } else if(option.equalsIgnoreCase(TIMEZONE_OPTION)) { + timeZoneID = value; + } + } + + + /** + The value of the DateFormat option should be either an + argument to the constructor of {@link SimpleDateFormat} or one of + the srings "NULL", "RELATIVE", "ABSOLUTE", "DATE" or "ISO8601. + */ + public + void setDateFormat(String dateFormat) { + if (dateFormat != null) { + dateFormatOption = dateFormat; + } + setDateFormat(dateFormatOption, TimeZone.getDefault()); + } + + /** + Returns value of the DateFormat option. + */ + public + String getDateFormat() { + return dateFormatOption; + } + + /** + The TimeZoneID option is a time zone ID string in the format + expected by the {@link TimeZone#getTimeZone} method. + */ + public + void setTimeZone(String timeZone) { + this.timeZoneID = timeZone; + } + + /** + Returns value of the TimeZone option. + */ + public + String getTimeZone() { + return timeZoneID; + } + + public + void activateOptions() { + setDateFormat(dateFormatOption); + if(timeZoneID != null && dateFormat != null) { + dateFormat.setTimeZone(TimeZone.getTimeZone(timeZoneID)); + } + } + + public + void dateFormat(StringBuffer buf, LoggingEvent event) { + if(dateFormat != null) { + date.setTime(event.timeStamp); + dateFormat.format(date, buf, this.pos); + buf.append(' '); + } + } + + /** + Sets the {@link DateFormat} used to format time and date in the + zone determined by timeZone. + */ + public + void setDateFormat(DateFormat dateFormat, TimeZone timeZone) { + this.dateFormat = dateFormat; + this.dateFormat.setTimeZone(timeZone); + } + + /** + Sets the DateFormat used to format date and time in the time zone + determined by timeZone parameter. The {@link DateFormat} used + will depend on the dateFormatType. + +

The recognized types are {@link #NULL_DATE_FORMAT}, {@link + #RELATIVE_TIME_DATE_FORMAT} {@link + AbsoluteTimeDateFormat#ABS_TIME_DATE_FORMAT}, {@link + AbsoluteTimeDateFormat#DATE_AND_TIME_DATE_FORMAT} and {@link + AbsoluteTimeDateFormat#ISO8601_DATE_FORMAT}. If the + dateFormatType is not one of the above, then the + argument is assumed to be a date pattern for {@link + SimpleDateFormat}. + */ + public + void setDateFormat(String dateFormatType, TimeZone timeZone) { + if(dateFormatType == null) { + this.dateFormat = null; + return; + } + + if(dateFormatType.equalsIgnoreCase(NULL_DATE_FORMAT)) { + this.dateFormat = null; + } else if (dateFormatType.equalsIgnoreCase(RELATIVE_TIME_DATE_FORMAT)) { + this.dateFormat = new RelativeTimeDateFormat(); + } else if(dateFormatType.equalsIgnoreCase( + AbsoluteTimeDateFormat.ABS_TIME_DATE_FORMAT)) { + this.dateFormat = new AbsoluteTimeDateFormat(timeZone); + } else if(dateFormatType.equalsIgnoreCase( + AbsoluteTimeDateFormat.DATE_AND_TIME_DATE_FORMAT)) { + this.dateFormat = new DateTimeDateFormat(timeZone); + } else if(dateFormatType.equalsIgnoreCase( + AbsoluteTimeDateFormat.ISO8601_DATE_FORMAT)) { + this.dateFormat = new ISO8601DateFormat(timeZone); + } else { + this.dateFormat = new SimpleDateFormat(dateFormatType); + this.dateFormat.setTimeZone(timeZone); + } + } +}