fileNamePattern = new FileNamePattern(fileNamePatternStr, this.context); determineCompressionMode(); } else { IntegerTokenConverter itc = fileNamePattern.getIntegerTokenConverter(); + fileNamePattern.getPattern() + "] does not contain a valid IntegerToken"); zipEntryFileNamePattern = new FileNamePattern(zipEntryFileNamePatternStr, context);
File file = new File(fileNamePattern.convertInt(maxIndex)); String toRenameStr = fileNamePattern.convertInt(i); File toRename = new File(toRenameStr); util.rename(toRenameStr, fileNamePattern.convertInt(i + 1)); } else { addInfo("Skipping roll-over for inexistent file " + toRenameStr); case NONE: util.rename(getActiveFileName(), fileNamePattern .convertInt(minIndex)); break; case GZ: compressor.compress(getActiveFileName(), fileNamePattern.convertInt(minIndex), null); break; case ZIP: compressor.compress(getActiveFileName(), fileNamePattern.convertInt(minIndex), zipEntryFileNamePattern.convert(new Date())); break;
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 FileNamePattern(String patternArg, Context contextArg) { // the pattern is slashified setPattern(FileFilterUtil.slashify(patternArg)); setContext(contextArg); parse(); ConverterUtil.startConverters(this.headTokenConverter); }
public void cleanByPeriodOffset(Date now, int periodOffset) { Date dateOfPeriodToClean = rc.getRelativeDate(now, periodOffset); String regex = fileNamePattern.toRegexForFixedDate(dateOfPeriodToClean); String stemRegex = FileFilterUtil.afterLastSlash(regex); File archive0 = new File(fileNamePattern.convertMultipleArguments( dateOfPeriodToClean, 0)); // in case the file has no directory part, i.e. if it's written into the // user's current directory. archive0 = archive0.getAbsoluteFile(); File parentDir = archive0.getAbsoluteFile().getParentFile(); File[] matchingFileArray = FileFilterUtil.filesInFolderMatchingStemRegex( parentDir, stemRegex); for (File f : matchingFileArray) { f.delete(); } if (parentClean) { removeFolderIfEmpty(parentDir); } }
protected void addExpectedFileName_ByDate(String patternStr, long millis) { FileNamePattern fileNamePattern = new FileNamePattern(patternStr, context); String fn = fileNamePattern.convert(new Date(millis)); expectedFilenameList.add(fn); }
void parse() { try { // http://jira.qos.ch/browse/LBCORE-130 // we escape ')' for parsing purposes. Note that the original pattern is preserved // because it is shown to the user in status messages. We don't want the escaped version // to leak out. String patternForParsing = escapeRightParantesis(pattern); Parser<Object> p = new Parser<Object>(patternForParsing, new AlmostAsIsEscapeUtil()); p.setContext(context); Node t = p.parse(); this.headTokenConverter = p.compile(t, CONVERTER_MAP); } catch (ScanException sce) { addError("Failed to parse pattern \"" + pattern + "\".", sce); } }
@Test // test ways for dealing with flowing i converter, as in "foo%ix" public void flowingI() { { FileNamePattern pp = new FileNamePattern("foo%i{}bar%i", context); assertEquals("foo3bar3", pp.convertInt(3)); } { FileNamePattern pp = new FileNamePattern("foo%i{}bar%i", context); assertEquals("foo3bar3", pp.convertInt(3)); } }
private boolean validDateAndIntegerTokens() { boolean inError = false; if (tbrp.fileNamePattern.getIntegerTokenConverter() == null) { inError = true; addError(MISSING_INT_TOKEN + tbrp.fileNamePatternStr + "]"); addError(CoreConstants.SEE_MISSING_INTEGER_TOKEN); } if (tbrp.fileNamePattern.getPrimaryDateTokenConverter() == null) { inError = true; addError(MISSING_DATE_TOKEN + tbrp.fileNamePatternStr + "]"); } return !inError; }
private static void checkDateToken(String fileNamePattern, LoggerContext context, boolean checkOnExisting, String docHref) { FileNamePattern pattern = new FileNamePattern(fileNamePattern, context); DateTokenConverter<Object> token = pattern.getPrimaryDateTokenConverter(); checkToken(token, checkOnExisting, fileNamePattern, docHref, MISSING_DATE_TOKEN, UNEXPECTED_DATE_TOKEN); if (checkOnExisting) { checkDateFormat(token, fileNamePattern, docHref); } }
@Test public void auxAndTimeZoneShouldNotConflict() { TimeZone utc = TimeZone.getTimeZone("UTC"); Calendar cal = Calendar.getInstance(utc); cal.set(2003, 4, 20, 10, 55); { FileNamePattern fnp = new FileNamePattern("foo%d{yyyy-MM-dd'T'HH:mm, aux, Australia/Perth}", context); // Perth is 8 hours ahead of UTC assertEquals("foo2003-05-20T18:55", fnp.convert(cal.getTime())); assertNull(fnp.getPrimaryDateTokenConverter()); } { FileNamePattern fnp = new FileNamePattern("folder/%d{yyyy/MM, aux, Australia/Perth}/test.%d{yyyy-MM-dd'T'HHmm, Australia/Perth}.log", context); assertEquals("folder/2003/05/test.2003-05-20T1855.log", fnp.convert(cal.getTime())); assertNotNull(fnp.getPrimaryDateTokenConverter()); } }
private boolean fileAndPatternCollide() { if (triggeringPolicy instanceof RollingPolicyBase) { final RollingPolicyBase base = (RollingPolicyBase) triggeringPolicy; final FileNamePattern fileNamePattern = base.fileNamePattern; // no use checking if either fileName or fileNamePattern are null if (fileNamePattern != null && fileName != null) { String regex = fileNamePattern.toRegex(); return fileName.matches(regex); } } return false; }
public String getCurrentPeriodsFileNameWithoutCompressionSuffix() { return tbrp.fileNamePatternWCS.convert(dateInCurrentPeriod); }
@Override public String getCurrentPeriodsFileNameWithoutCompressionSuffix() { return tbrp.fileNamePatternWCS.convertMultipleArguments( dateInCurrentPeriod, currentPeriodsCounter); }
private static void checkIntegerToken(String fileNamePattern, LoggerContext context, boolean checkOnExisting, String docHref) { FileNamePattern pattern = new FileNamePattern(fileNamePattern, context); IntegerTokenConverter token = pattern.getIntegerTokenConverter(); checkToken(token, checkOnExisting, fileNamePattern, docHref, MISSING_INTEGER_TOKEN, UNEXPECTED_INTEGER_TOKEN); }
@Test public void objectListConverter() { Calendar cal = Calendar.getInstance(); cal.set(2003, 4, 20, 17, 55); FileNamePattern fnp = new FileNamePattern("foo-%d{yyyy.MM.dd}-%i.txt", context); assertEquals("foo-2003.05.20-79.txt", fnp.convertMultipleArguments(cal .getTime(), 79)); }
@Test public void asRegex() { { FileNamePattern fnp = new FileNamePattern("foo-%d{yyyy.MM.dd}-%i.txt", context); String regex = fnp.toRegex(); assertEquals("foo-" + FileFinder.regexEscapePath("\\d{4}\\.\\d{2}\\.\\d{2}") + "-" + FileFinder.regexEscapePath("\\d+") + ".txt", regex); } { FileNamePattern fnp = new FileNamePattern("foo-%d{yyyy.MM.dd'T'}-%i.txt", context); String regex = fnp.toRegex(); assertEquals("foo-" + FileFinder.regexEscapePath("\\d{4}\\.\\d{2}\\.\\d{2}T") + "-" + FileFinder.regexEscapePath("\\d+") + ".txt", regex); } }
public boolean hasIntegerTokenCOnverter() { IntegerTokenConverter itc = getIntegerTokenConverter(); return itc != null; }
fileNamePattern = new FileNamePattern(fileNamePatternStr, this.context); determineCompressionMode(); } else { fileNamePatternWCS = new FileNamePattern(Compressor.computeFileNameStr_WCS( fileNamePatternStr, compressionMode), this.context); zipEntryFileNamePattern = new FileNamePattern(zipEntryFileNamePatternStr, context);
File file = new File(fileNamePattern.convertInt(maxIndex)); String toRenameStr = fileNamePattern.convertInt(i); File toRename = new File(toRenameStr); util.rename(toRenameStr, fileNamePattern.convertInt(i + 1)); } else { addInfo("Skipping roll-over for inexistent file " + toRenameStr); case NONE: util.rename(getActiveFileName(), fileNamePattern .convertInt(minIndex)); break; case GZ: case ZIP: compressor.compress(getActiveFileName(), fileNamePattern.convertInt(minIndex)); break;