AutopagerizeDatasetsListCommand.java
package net.sasasin.sreader.cli;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.Callable;
import net.sasasin.sreader.domain.AutoPagerizeDatasetSummary;
import net.sasasin.sreader.service.autopagerize.AutoPagerizeImportService;
import org.springframework.stereotype.Component;
import picocli.CommandLine.Command;
@Command(
name = "list",
description = "List imported AutoPagerize datasets (newest first).",
mixinStandardHelpOptions = true,
usageHelpWidth = 120)
@Component
public class AutopagerizeDatasetsListCommand implements Callable<Integer> {
private final AutoPagerizeImportService importService;
public AutopagerizeDatasetsListCommand(AutoPagerizeImportService importService) {
this.importService = importService;
}
@Override
public Integer call() {
Optional<Long> activeId = importService.findActiveDatasetId();
List<AutoPagerizeDatasetSummary> datasets = importService.listDatasets();
if (datasets.isEmpty()) {
System.out.println("No AutoPagerize datasets.");
return CliExitCodes.SUCCESS;
}
System.out.printf(
"%-6s %-8s %-24s %-8s %-14s %6s %6s %6s %-24s %s%n",
"ID",
"ACTIVE",
"IMPORTED_AT",
"FORMAT",
"SHA256",
"INPUT",
"ACC",
"REJ",
"FILENAME",
"SOURCE_URI");
for (AutoPagerizeDatasetSummary d : datasets) {
boolean active = activeId.isPresent() && activeId.get().equals(d.id());
System.out.printf(
"%-6d %-8s %-24s %-8s %-14s %6d %6d %6d %-24s %s%n",
d.id(),
active ? "*" : "",
d.importedAt(),
shortFormat(d.format()),
shortSha(d.sourceSha256()),
d.inputItemCount(),
d.acceptedRuleCount(),
d.rejectedRuleCount(),
nullToDash(d.sourceFilename()),
nullToDash(d.sourceUri()));
}
return CliExitCodes.SUCCESS;
}
private static String shortSha(String sha) {
if (sha == null || sha.length() < 12) {
return sha == null ? "-" : sha;
}
return sha.substring(0, 12);
}
private static String shortFormat(String format) {
if (format == null) {
return "-";
}
if (format.length() <= 8) {
return format;
}
// wedata-autopagerize-items-all -> wedata
int dash = format.indexOf('-');
return dash > 0 ? format.substring(0, dash) : format.substring(0, 8);
}
private static String nullToDash(String value) {
return value == null || value.isBlank() ? "-" : value;
}
}