ContentCanonicalizationFileCleaner.java
package net.sasasin.sreader.service.canonicalization;
import net.sasasin.sreader.domain.ContentCanonicalizationPlan;
import net.sasasin.sreader.domain.ContentCanonicalizationResult.FileSummary;
import net.sasasin.sreader.service.text.ContentTextFileStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Removes stale content text files after a successful DB merge. */
final class ContentCanonicalizationFileCleaner {
private static final Logger logger =
LoggerFactory.getLogger(ContentCanonicalizationFileCleaner.class);
private final ContentTextFileStore fileStore;
ContentCanonicalizationFileCleaner(ContentTextFileStore fileStore) {
this.fileStore = fileStore;
}
FileSummary clean(ContentCanonicalizationPlan plan) {
int deleted = 0;
int missing = 0;
int failed = 0;
for (String id : plan.memberIds()) {
ContentTextFileStore.DeleteResult fileResult = fileStore.deleteForHeaderId(id);
switch (fileResult.status()) {
case DELETED -> deleted++;
case MISSING -> missing++;
case FAILED -> {
failed++;
logger.error(
"Could not delete stale content text file for {}: {}", id, fileResult.error());
}
}
}
return new FileSummary(deleted, missing, failed);
}
}