package com.jivesoftware.os.amzabot.deployable.ui.health; import com.google.common.collect.Maps; import com.jivesoftware.os.amzabot.deployable.ui.SoyRenderer; import com.jivesoftware.os.amzabot.deployable.ui.UiPageRegion; import com.jivesoftware.os.mlogger.core.LoggerSummary; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; public class UiHomeRegion implements UiPageRegion<Void> { private final String template; private final SoyRenderer renderer; public UiHomeRegion(String template, SoyRenderer renderer) { this.template = template; this.renderer = renderer; } @Override public String render(Void input) { Map<String, Object> data = Maps.newHashMap(); data.put("errors", String.valueOf(LoggerSummary.INSTANCE.errors.longValue() + LoggerSummary.INSTANCE_EXTERNAL_INTERACTIONS.errors.longValue())); data.put("recentErrors", recentLogs(LoggerSummary.INSTANCE.lastNErrors.get(), LoggerSummary.INSTANCE_EXTERNAL_INTERACTIONS.lastNErrors.get())); data.put("warns", String.valueOf(LoggerSummary.INSTANCE.warns.longValue() + LoggerSummary.INSTANCE_EXTERNAL_INTERACTIONS.warns.longValue())); data.put("recentWarns", recentLogs(LoggerSummary.INSTANCE.lastNWarns.get(), LoggerSummary.INSTANCE_EXTERNAL_INTERACTIONS.lastNWarns.get())); data.put("infos", String.valueOf(LoggerSummary.INSTANCE.infos.longValue() + LoggerSummary.INSTANCE_EXTERNAL_INTERACTIONS.infos.longValue())); data.put("recentInfos", recentLogs(LoggerSummary.INSTANCE.lastNInfos.get(), LoggerSummary.INSTANCE_EXTERNAL_INTERACTIONS.lastNInfos.get())); ingressed(data); egressed(data); return renderer.render(template, data); } private List<String> recentLogs(String[] internal, String[] external) { List<String> log = new ArrayList<>(); if (internal != null) { for (String i : internal) { if (i != null) { log.add(i); } } } if (external != null) { for (String e : external) { if (e != null) { log.add(e); } } } return log; } private void ingressed(Map<String, Object> data) { data.put("ingressedRecency", "0"); data.put("ingressedLatency", "0"); data.put("ingressedTotal", "0"); data.put("ingressedStatus", Collections.emptyList()); } private void egressed(Map<String, Object> data) { data.put("egressedRecency", "0"); data.put("egressedLatency", "0"); data.put("egressedTotal", "0"); data.put("egressedStatus", Collections.emptyList()); } @Override public String getTitle(Void input) { return "Home - UI"; } }