use of io.datarouter.clustersetting.storage.clustersettinglog.ClusterSettingLogKey in project datarouter by hotpads.
the class ClusterSettingsHandler method logsForName.
@Handler
public Mav logsForName(String name) {
Mav mav = new Mav(files.jsp.admin.datarouter.setting.clusterSettingsLogJsp);
mav.put("showingAllSettings", false);
String settingName = name.endsWith(".") ? StringTool.getStringBeforeLastOccurrence('.', name) : name;
mav.put("nameParts", settingName.split("\\."));
Optional<SettingNode> node = getSettingNode(settingName);
mav.put("showingNodeSettings", node.isPresent());
Scanner<ClusterSettingLog> logScanner;
if (node.isPresent()) {
// logs for node and its descendants
List<ClusterSettingLogKey> prefixes = node.get().getListSettings().stream().map(Setting::getName).map(ClusterSettingLogKey::createPrefix).collect(Collectors.toList());
logScanner = clusterSettingLogDao.scanWithPrefixes(prefixes).sort(Comparator.comparing((ClusterSettingLog log) -> log.getKey().getCreated()).reversed());
} else {
// logs for single setting
ClusterSettingLogKey prefix = ClusterSettingLogKey.createPrefix(settingName);
logScanner = clusterSettingLogDao.scanWithPrefix(prefix);
}
logScanner.map(setting -> new ClusterSettingLogJspDto(setting, getUserZoneId())).flush(logs -> mav.put("logs", logs));
return mav;
}
Aggregations