1bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/**************************************************************** 2bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Licensed to the Apache Software Foundation (ASF) under one * 3bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * or more contributor license agreements. See the NOTICE file * 4bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * distributed with this work for additional information * 5bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * regarding copyright ownership. The ASF licenses this file * 6bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * to you under the Apache License, Version 2.0 (the * 7bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * "License"); you may not use this file except in compliance * 8bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * with the License. You may obtain a copy of the License at * 9bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * * 10bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * http://www.apache.org/licenses/LICENSE-2.0 * 11bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * * 12bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Unless required by applicable law or agreed to in writing, * 13bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * software distributed under the License is distributed on an * 14bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * 15bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * KIND, either express or implied. See the License for the * 16bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * specific language governing permissions and limitations * 17bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * under the License. * 18bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ****************************************************************/ 19bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 20bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpackage org.apache.james.mime4j.field; 21bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 22bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook//BEGIN android-changed: Stubbing out logging 23bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 24bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport com.android.mail.utils.LogUtils; 25bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 26bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport org.apache.james.mime4j.Log; 27bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport org.apache.james.mime4j.LogFactory; 28bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook//END 29bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport org.apache.james.mime4j.field.datetime.DateTime; 30bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport org.apache.james.mime4j.field.datetime.parser.ParseException; 31bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 32bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport java.util.Date; 33bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 34bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpublic class DateTimeField extends Field { 35bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private Date date; 36bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private ParseException parseException; 37bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 38bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook protected DateTimeField(String name, String body, String raw, Date date, ParseException parseException) { 39bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook super(name, body, raw); 40bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this.date = date; 41bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this.parseException = parseException; 42bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 43bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 44bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public Date getDate() { 45bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return date; 46bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 47bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 48bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public ParseException getParseException() { 49bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return parseException; 50bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 51bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 52bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public static class Parser implements FieldParser { 53bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private static Log log = LogFactory.getLog(Parser.class); 54bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 55bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public Field parse(final String name, String body, final String raw) { 56bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook Date date = null; 57bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook ParseException parseException = null; 58bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook //BEGIN android-changed 59bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook body = LogUtils.cleanUpMimeDate(body); 60bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook //END android-changed 61bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook try { 62bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook date = DateTime.parse(body).getDate(); 63bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 64bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook catch (ParseException e) { 65bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (log.isDebugEnabled()) { 66bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook log.debug("Parsing value '" + body + "': "+ e.getMessage()); 67bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 68bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook parseException = e; 69bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 70bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return new DateTimeField(name, body, raw, date, parseException); 71bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 72bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 73bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook} 74