DateTimeFormatParserLegacy.java
package emissary.util;
import emissary.config.ConfigUtil;
import emissary.config.Configurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Deprecated
@SuppressWarnings("all")
public class DateTimeFormatParserLegacy {
protected static final Logger logger = LoggerFactory.getLogger(DateTimeFormatParserLegacy.class);
/** Date formats we can use to parse event date strings */
@Deprecated
protected static final List<SimpleDateFormat> dateFormats = new ArrayList<>();
static {
configure();
}
protected static void configure() {
try {
Configurator configG = ConfigUtil.getConfigInfo(DateTimeFormatParserLegacy.class);
for (final String dfentry : configG.findEntries("DATE_FORMAT")) {
try {
final SimpleDateFormat sdf = new SimpleDateFormat(dfentry);
sdf.setLenient(true);
dateFormats.add(sdf);
} catch (Exception ex) {
logger.debug("DATE_FORMAT entry '{}' cannot be parsed", dfentry, ex);
}
}
logger.debug("Loaded {} DATE_FORMAT entries", dateFormats.size());
} catch (IOException e) {
logger.error("Cannot open default config file", e);
}
}
/**
* Parse an RFC-822 Date or one of the thousands of variants make a quick attempt to normalize the timezone information
* and get the timestamp in GMT. Should change to pass in a default from the U124 header
*
* @param dateString the string date from the RFC 822 Date header
* @param supplyDefaultOnBad when true use current date if sentDate is unparseable
* @return the GMT time of the event or NOW if unparseable, or null if supplyDefaultOnBad is false
*/
@Deprecated
public static Date parseEventDate(final String dateString, final boolean supplyDefaultOnBad) {
Date date = null;
if (dateString != null && dateString.length() > 0) {
// Take it apart and stick it back together to get
// get rid of multiple contiguous spaces
String instr = dateString.replaceAll("\t+", " "); // tabs
instr = instr.replaceAll("[ ]+", " "); // multiple spaces
instr = instr.replaceAll("=0D$", ""); // common qp'ified ending
// try each date format in turn until one works
synchronized (dateFormats) {
for (final SimpleDateFormat sdf : dateFormats) {
try {
date = sdf.parse(instr);
break;
} catch (Exception e) {
// Ignore.
logger.debug("Error parsing date", e);
}
}
}
}
// Use the default if required
if (date == null && supplyDefaultOnBad) {
date = new Date();
}
// Let them have it.
return date;
}
private DateTimeFormatParserLegacy() {}
}