public void cleanByPeriodOffset(final Date now, final int periodOffset) { final Date dateOfPeriodToClean = this.rc.getRelativeDate(now, periodOffset); final String regex = this.fileNamePattern.toRegex(dateOfPeriodToClean); final String stemRegex = FileFilterUtil.afterLastSlash(regex); File archive0 = new File(this.fileNamePattern.convertMultipleArguments(dateOfPeriodToClean, 0)); archive0 = archive0.getAbsoluteFile(); final File parentDir = archive0.getAbsoluteFile().getParentFile(); final File[] arr$; final File[] matchingFileArray = arr$ = FileFilterUtil.filesInFolderMatchingStemRegex(parentDir, stemRegex); for (final File f : arr$) { f.delete(); } if (this.parentClean) { this.removeFolderIfEmpty(parentDir); } }
/** * Will remove the directory passed as parameter if empty. After that, if the parent is also * becomes empty, remove the parent dir as well but at most 3 times. * * @param dir * @param depth */ private void removeFolderIfEmpty(File dir, int depth) { // we should never go more than 3 levels higher if (depth >= 3) { return; } if (dir.isDirectory() && FileFilterUtil.isEmptyDirectory(dir)) { addInfo("deleting folder [" + dir + "]"); dir.delete(); removeFolderIfEmpty(dir.getParentFile(), depth + 1); } }
private String transformFileNamePatternFromInt2Date(String fileNamePatternStr) { String slashified = FileFilterUtil.slashify(fileNamePatternStr); String stemOfFileNamePattern = FileFilterUtil.afterLastSlash(slashified); return stemOfFileNamePattern.replace("%i", "%d{" + ZIP_ENTRY_DATE_PATTERN + "}"); }