boolean computeParentCleaningFlag(FileNamePattern fileNamePattern) { DateTokenConverter dtc = fileNamePattern.getPrimaryDateTokenConverter(); // if the date pattern has a /, then we need parent cleaning if (dtc.getDatePattern().indexOf('/') != -1) { return true; } // if the literal string subsequent to the dtc contains a /, we also // need parent cleaning Converter<Object> p = fileNamePattern.headTokenConverter; // find the date converter while (p != null) { if (p instanceof DateTokenConverter) { break; } p = p.getNext(); } while (p != null) { if (p instanceof LiteralConverter) { String s = p.convert(null); if (s.indexOf('/') != -1) { return true; } } p = p.getNext(); } // no /, so we don't need parent cleaning return false; }
/** * Given date, convert this instance to a regular expression */ public String toRegex() { StringBuilder buf = new StringBuilder(); Converter<Object> p = headTokenConverter; while (p != null) { if (p instanceof LiteralConverter) { buf.append(p.convert(null)); } else if (p instanceof IntegerTokenConverter) { buf.append("\\d{1,2}"); } else if (p instanceof DateTokenConverter) { DateTokenConverter<Object> dtc = (DateTokenConverter<Object>) p; buf.append(dtc.toRegex()); } p = p.getNext(); } return buf.toString(); } }
public String convert(Object o) { if (o == null) { throw new IllegalArgumentException("Null argument forbidden"); } if (o instanceof Date) { return convert((Date) o); } throw new IllegalArgumentException("Cannot convert "+o+" of type"+o.getClass().getName()); }
public void start() { this.datePattern = getFirstOption(); if (this.datePattern == null) { this.datePattern = DEFAULT_DATE_PATTERN; } final List<String> optionList = getOptionList(); if(optionList != null && optionList.size()> 1) { String secondOption = optionList.get(1); if(AUXILIARY_TOKEN.equalsIgnoreCase(secondOption)) { primary = false; } } cdf = new CachingDateFormatter(datePattern); }
private SimpleDateFormat getDateFormatter(FileNamePattern fileNamePattern) { final DateTokenConverter<Object> dateStringConverter = fileNamePattern.getPrimaryDateTokenConverter(); final String datePattern = dateStringConverter != null ? dateStringConverter.getDatePattern() : DateTokenConverter.DEFAULT_DATE_PATTERN; final SimpleDateFormat dateFormatter = new SimpleDateFormat(datePattern, Locale.US); TimeZone timeZone = dateStringConverter != null ? dateStringConverter.getTimeZone() : TimeZone.getDefault(); if (timeZone != null) { dateFormatter.setTimeZone(timeZone); } return dateFormatter; } }
public String toRegex(boolean capturePrimaryDate, boolean captureInteger) { StringBuilder buf = new StringBuilder(); Converter<Object> p = headTokenConverter; while (p != null) { if (p instanceof LiteralConverter) { buf.append(p.convert(null)); } else if (p instanceof IntegerTokenConverter) { if (captureInteger) { buf.append(FileFinder.regexEscapePath("(\\d+)")); } else { buf.append(FileFinder.regexEscapePath("\\d+")); } } else if (p instanceof DateTokenConverter) { DateTokenConverter<Object> dtc = (DateTokenConverter<Object>) p; if (capturePrimaryDate && dtc.isPrimary()) { buf.append(FileFinder.regexEscapePath("(" + dtc.toRegex() + ")")); } else { buf.append(FileFinder.regexEscapePath(dtc.toRegex())); } } p = p.getNext(); } return buf.toString(); } }
public DateTokenConverter getPrimaryDateTokenConverter() { Converter p = headTokenConverter; while (p != null) { if (p instanceof DateTokenConverter) { DateTokenConverter dtc = (DateTokenConverter) p; // only primary converters should be returned as if(dtc.isPrimary()) return dtc; } p = p.getNext(); } return null; }
public void start() { this.datePattern = getFirstOption(); if (this.datePattern == null) { this.datePattern = "yyyy-MM-dd"; ; } sdf = new SimpleDateFormat(datePattern); }
@Test public void settingTimeZoneOptionHasAnEffect() { TimeZone tz = TimeZone.getTimeZone("Australia/Perth"); FileNamePattern fnp = new FileNamePattern("%d{hh, " + tz.getID() + "}", context); assertEquals(tz, fnp.getPrimaryDateTokenConverter().getTimeZone()); } }
public void start() { this.datePattern = getFirstOption(); if (this.datePattern == null) { this.datePattern = DEFAULT_DATE_PATTERN; } final List<String> optionList = getOptionList(); if(optionList != null && optionList.size()> 1) { String secondOption = optionList.get(1); if(AUXILIARY_TOKEN.equalsIgnoreCase(secondOption)) { primary = false; } } cdf = new CachingDateFormatter(datePattern); }
private static void checkDateFormat(DateTokenConverter<Object> token, String pattern, String docRef) { RollingCalendar rollingCalendar; if (token.getTimeZone() != null) { rollingCalendar = new RollingCalendar(token.getDatePattern(), token.getTimeZone(), Locale.getDefault()); } else { rollingCalendar = new RollingCalendar(token.getDatePattern()); } if (!rollingCalendar.isCollisionFree()) { throw new IllegalStateException(String.format("%s %s", String.format(INCORRECT_DATE_FORMAT, pattern), docRef)); } } }
/** * Given date, convert this instance to a regular expression. * * Used to compute sub-regex when the pattern has both %d and %i, and the * date is known. * * @param date - date to be converted */ public String toRegexForFixedDate(Date date) { StringBuilder buf = new StringBuilder(); Converter<Object> p = headTokenConverter; while (p != null) { if (p instanceof LiteralConverter) { buf.append(p.convert(null)); } else if (p instanceof IntegerTokenConverter) { buf.append(FileFinder.regexEscapePath("(\\d+)")); } else if (p instanceof DateTokenConverter) { DateTokenConverter<Object> dtc = (DateTokenConverter<Object>) p; if (dtc.isPrimary()) { buf.append(p.convert(date)); } else { buf.append(FileFinder.regexEscapePath(dtc.toRegex())); } } p = p.getNext(); } return buf.toString(); }
public DateTokenConverter<Object> getPrimaryDateTokenConverter() { Converter<Object> p = headTokenConverter; while (p != null) { if (p instanceof DateTokenConverter) { DateTokenConverter<Object> dtc = (DateTokenConverter<Object>) p; // only primary converters should be returned as if (dtc.isPrimary()) return dtc; } p = p.getNext(); } return null; }
@Test public void nullTimeZoneByDefault() { FileNamePattern fnp = new FileNamePattern("%d{hh}", context); assertNull(fnp.getPrimaryDateTokenConverter().getTimeZone()); }
public void start() { this.datePattern = getFirstOption(); if (this.datePattern == null) { this.datePattern = DEFAULT_DATE_PATTERN; } final List<String> optionList = getOptionList(); if(optionList != null && optionList.size()> 1) { String secondOption = optionList.get(1); if(AUXILIARY_TOKEN.equalsIgnoreCase(secondOption)) { primary = false; } } cdf = new CachingDateFormatter(datePattern); }
public void start() { DateTokenConverter dtc = tbrp.fileNamePattern.getPrimaryDateTokenConverter(); if (dtc == null) { throw new IllegalStateException("FileNamePattern [" + tbrp.fileNamePattern.getPattern() + "] does not contain a valid DateToken"); } rc = new RollingCalendar(); rc.init(dtc.getDatePattern()); addInfo("The date pattern is '" + dtc.getDatePattern() + "' from file name pattern '" + tbrp.fileNamePattern.getPattern() + "'."); rc.printPeriodicity(this); setDateInCurrentPeriod(new Date(getCurrentTime())); if (tbrp.getParentsRawFileProperty() != null) { File currentFile = new File(tbrp.getParentsRawFileProperty()); if (currentFile.exists() && currentFile.canRead()) { setDateInCurrentPeriod(new Date(currentFile.lastModified())); } } addInfo("Setting initial period to " + dateInCurrentPeriod); computeNextCheck(); }
public void start() { DateTokenConverter<Object> dtc = tbrp.fileNamePattern.getPrimaryDateTokenConverter(); if (dtc == null) { throw new IllegalStateException("FileNamePattern [" + tbrp.fileNamePattern.getPattern() + "] does not contain a valid DateToken"); } if (dtc.getTimeZone() != null) { rc = new RollingCalendar(dtc.getDatePattern(), dtc.getTimeZone(), Locale.getDefault()); } else { rc = new RollingCalendar(dtc.getDatePattern()); } addInfo("The date pattern is '" + dtc.getDatePattern() + "' from file name pattern '" + tbrp.fileNamePattern.getPattern() + "'."); rc.printPeriodicity(this); if (!rc.isCollisionFree()) { addError("The date format in FileNamePattern will result in collisions in the names of archived log files."); addError(CoreConstants.MORE_INFO_PREFIX + COLLIDING_DATE_FORMAT_URL); withErrors(); return; } setDateInCurrentPeriod(new Date(getCurrentTime())); if (tbrp.getParentsRawFileProperty() != null) { File currentFile = new File(tbrp.getParentsRawFileProperty()); if (currentFile.exists() && currentFile.canRead()) { setDateInCurrentPeriod(new Date(currentFile.lastModified())); } } addInfo("Setting initial period to " + dateInCurrentPeriod); computeNextCheck(); }
/** * Given date, convert this instance to a regular expression */ public String toRegex() { StringBuilder buf = new StringBuilder(); Converter<Object> p = headTokenConverter; while (p != null) { if (p instanceof LiteralConverter) { buf.append(p.convert(null)); } else if (p instanceof IntegerTokenConverter) { buf.append("\\d{1,2}"); } else if (p instanceof DateTokenConverter) { DateTokenConverter<Object> dtc = (DateTokenConverter<Object>) p; buf.append(dtc.toRegex()); } p = p.getNext(); } return buf.toString(); } }
public String convert(Object o) { if (o == null) { throw new IllegalArgumentException("Null argument forbidden"); } if (o instanceof Date) { return convert((Date) o); } throw new IllegalArgumentException("Cannot convert "+o+" of type"+o.getClass().getName()); }
public DateTokenConverter<Object> getPrimaryDateTokenConverter() { Converter<Object> p = headTokenConverter; while (p != null) { if (p instanceof DateTokenConverter) { DateTokenConverter<Object> dtc = (DateTokenConverter<Object>) p; // only primary converters should be returned as if(dtc.isPrimary()) return dtc; } p = p.getNext(); } return null; }