com.jamonapi.distributed.MonitorCompositeCombiner Maven / Gradle / Ivy
package com.jamonapi.distributed;
import com.jamonapi.MonitorComposite;
import com.jamonapi.MonitorCompositeIterator;
import com.jamonapi.utils.Misc;
import java.util.*;
/**
* Combines multiple MonitorComposite objects into one by getting them from the @link JamonDataPersister.
*
* Created by stevesouza on 8/16/14.
*/
public class MonitorCompositeCombiner {
private JamonDataPersister persister;
public MonitorCompositeCombiner(JamonDataPersister persister) {
this.persister = persister;
}
/**
* Combine MonitorComposites returned by each of the instanceKeys into 1 MonitorComposite.
*
* @param instanceKeys
* @return MonitorComposite
*/
public MonitorComposite get(String... instanceKeys) {
List monitorCompositeList = new ArrayList();
for (int i=0;i monitorCompositeList) {
Date previousDate = null;
Date finalDate = null; // assign the date of all the results as the most recent of all monitorComposite dates
Iterator iter = monitorCompositeList.iterator();
// note 2 lists are used instead of a Map so if 2 instanceNames are the same (say 'local') each of them can be
// retained.
List monitorCompositeResultsList = new ArrayList();
List instanceNameList = new ArrayList();
while (iter.hasNext()) {
MonitorComposite mc = iter.next();
instanceNameList.add(mc.getInstanceName());
monitorCompositeResultsList.add(mc);
if (previousDate == null || mc.getDateCreated().after(previousDate)) {
finalDate = mc.getDateCreated();
}
previousDate = mc.getDateCreated();
}
MonitorComposite mc = new MonitorCompositeIterator(monitorCompositeResultsList).toMonitorComposite().setDateCreated(finalDate);
return mc.setInstanceName(Misc.getAsString(instanceNameList));
}
/**
* Remove any of the MonitorComposites associated with the key. This data could be in memory, on HazelCast
* or in a file for example.
*
* @param instanceKey
*/
public void remove(String... instanceKey) {
for (int i=0;i