package com.constellio.app.services.records; import static com.constellio.app.ui.i18n.i18n.$; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.constellio.app.ui.i18n.i18n; import com.constellio.model.frameworks.validation.ValidationError; import com.constellio.model.frameworks.validation.ValidationErrors; public class SystemCheckReportBuilder { SystemCheckManager manager; public SystemCheckReportBuilder(SystemCheckManager manager) { this.manager = manager; } public String build() { StringBuilder reportBuilder = new StringBuilder(); SystemCheckResults results = manager.getLastSystemCheckResults(); ValidationErrors errors = new ValidationErrors(results.errors); reportBuilder.append(label("startedOn") + " : " + results.dateTime + "\n"); reportBuilder.append(label("status") + " : " + (manager.isSystemCheckResultsRunning() ? label("running") : label("finished")) + "\n"); reportBuilder.append(label("repairedRecordsCount") + " : " + results.getRepairedRecords().size() + "\n"); if (!results.getMetrics().isEmpty()) { List<String> keys = new ArrayList<>(results.getMetrics().keySet()); Collections.sort(keys); for (String metricKey : keys) { String i18nLabel = label("metric." + metricKey); reportBuilder.append(i18nLabel + " : " + results.getMetric(metricKey) + "\n"); } reportBuilder.append("\n"); } if (!results.getResultsInfos().isEmpty()) { List<String> keys = new ArrayList<>(results.getResultsInfos().keySet()); Collections.sort(keys); for (String infoKey : keys) { String i18nLabel = label("info." + infoKey); Object value = (Object) results.getResultsInfos().get(infoKey); if (value instanceof List) { List list = (List) value; Collections.sort(list); reportBuilder.append(i18nLabel + " : \n"); for (Object item : list) { reportBuilder.append("\t- " + item + "\n"); } reportBuilder.append("\n"); } else { reportBuilder.append(i18nLabel + " : " + value + "\n"); } } reportBuilder.append("\n"); } if (!errors.getValidationErrors().isEmpty()) { reportBuilder.append("" + errors.getValidationErrors().size() + " " + label("errors") + " : \n"); List<String> messages = new ArrayList<>(i18n.asListOfMessages(errors.getValidationErrors())); Collections.sort(messages); for (String message : messages) { reportBuilder.append("\t- " + $(message) + "\n"); } reportBuilder.append("\n"); } if (!errors.getValidationWarnings().isEmpty()) { reportBuilder.append("" + errors.getValidationWarnings().size() + " " + label("warnings") + " : \n"); List<String> messages = new ArrayList<>(i18n.asListOfMessages(errors.getValidationErrors())); Collections.sort(messages); for (String message : messages) { reportBuilder.append("\t- " + $(message) + "\n"); } reportBuilder.append("\n"); } return reportBuilder.toString(); } private String label(String key) { return $(SystemCheckReportBuilder.class.getName() + "_" + key); } }