package codeine.api; import java.util.List; import java.util.Map; import java.util.Map.Entry; import codeine.jsons.collectors.CollectorExecutionInfo; import codeine.jsons.peer_status.PeerStatusJsonV2; import codeine.model.Constants; import codeine.utils.StringUtils; import com.google.common.collect.Lists; import com.google.common.collect.Maps; public class NodeWithMonitorsInfo extends NodeWithPeerInfo { private String projectName; private Map<String, MonitorStatusInfo> monitors = Maps.newConcurrentMap(); private Map<String, CollectorExecutionInfo> collectors = Maps.newConcurrentMap(); private String version = Constants.NO_VERSION; public NodeWithMonitorsInfo(PeerStatusJsonV2 peer, String name, String alias, String projectName, Map<String,MonitorStatusInfo> monitors) { super(name, alias, peer); this.projectName = projectName; this.monitors = monitors; } public NodeWithMonitorsInfo(String name, String alias, String projectName, Map<String,MonitorStatusInfo> monitors, String version) { this(null, name, alias, projectName, monitors); this.version = version; } public NodeWithMonitorsInfo(NodeWithMonitorsInfo node) { this(node.peer(),node.name(), node.alias(), node.projectName(), node.monitors()); this.version = node.version(); this.tags(node.tags()); this.collectors = node.collectors(); } public String projectName() { return projectName; } public Map<String, MonitorStatusInfo> monitors() { if (null == monitors) { return Maps.newHashMap(); } return monitors; } public Map<String, CollectorExecutionInfo> collectors() { if (null == collectors) { return Maps.newHashMap(); } return collectors; } public boolean status() { for (MonitorStatusInfo m : monitors().values()) { if (m.fail()){ return false; } } for (CollectorExecutionInfo m : collectors().values()) { if (!m.isSuccess()){ return false; } } return true; } public String version() { if (!Constants.NO_VERSION.equals(versionOld()) && !StringUtils.isEmpty(versionOld()) ) { return versionOld(); } if (!Constants.NO_VERSION.equals(version) && !StringUtils.isEmpty(version)) { return version; } return Constants.NO_VERSION; } //TODO remove after build 1100 private String versionOld() { MonitorStatusInfo version = monitors().get("version"); if (version == null){ return Constants.NO_VERSION; } return version.status(); } public String version(String version) { String prevVersion = this.version; this.version = version; return prevVersion; } public List<String> failedMonitors() { List<String> $ = Lists.newArrayList(); for (Entry<String, MonitorStatusInfo> monitor : monitors().entrySet()) { if (monitor.getValue().fail()) $.add(monitor.getKey()); } return $; } public List<String> ok_monitors() { List<String> $ = Lists.newArrayList(); for (MonitorStatusInfo m : monitors().values()) { if (!m.fail()){ $.add(m.name()); } } return $; } public List<String> failed_collectors() { List<String> $ = Lists.newArrayList(); if (collectors() == null) { return $; } for (Entry<String, CollectorExecutionInfo> entry : collectors().entrySet()) { if (!entry.getValue().isSuccess()) $.add(entry.getKey()); } return $; } public void collectors(Map<String, CollectorExecutionInfo> collectors) { this.collectors = collectors; } }