All Downloads are FREE. Search and download functionalities are using the official Maven repository.

se.l4.vibe.internal.MergedTrigger Maven / Gradle / Ivy

There is a newer version: 0.4.0
Show newest version
package se.l4.vibe.internal;

import se.l4.vibe.probes.Probe;
import se.l4.vibe.probes.Sampler;
import se.l4.vibe.trigger.TimedTrigger;
import se.l4.vibe.trigger.Trigger;

/**
 * Implementation of {@link Trigger} that combines two other triggers.
 * 
 * @author Andreas Holstenson
 *
 * @param 
 * @param 
 */
public class MergedTrigger
	implements TimedTrigger
{
	private final Trigger first;
	private final Trigger second;

	public  MergedTrigger(
			Trigger first,
			Trigger second)
	{
		this.first = first;
		this.second = second;
	}
	
	@Override
	public Probe forSampler(Sampler series)
	{
		Probe probe = first.forSampler(series);
		SamplerForMergedTrigger fakeSeries = new SamplerForMergedTrigger(series, probe);
		return second.forSampler(fakeSeries);
	}
	
	@Override
	public long getDefaultRepeatTime()
	{
		if(second instanceof TimedTrigger)
		{
			// Get the time of the second trigger if set
			long time = ((TimedTrigger) second).getDefaultRepeatTime();
			if(time > 0) return time;
		}
		
		if(first instanceof TimedTrigger)
		{
			// Get the time of the first trigger if set
			long time = ((TimedTrigger) first).getDefaultRepeatTime();
			if(time > 0) return time;
		}
		
		// Set to sample time by default
		return 0;
	}
	
	@Override
	public String toString()
	{
		return second + " on " + first;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy