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

com.almende.eve.monitor.Push Maven / Gradle / Ivy

There is a newer version: 3.1.1
Show newest version
/*
 * Copyright: Almende B.V. (2014), Rotterdam, The Netherlands
 * License: The Apache Software License, Version 2.0
 */
package com.almende.eve.monitor;

import java.io.IOException;
import java.util.logging.Logger;

import com.almende.eve.agent.AgentInterface;
import com.almende.eve.rpc.jsonrpc.JSONRPCException;
import com.almende.eve.rpc.jsonrpc.jackson.JOM;
import com.almende.util.uuid.UUID;
import com.fasterxml.jackson.databind.node.ObjectNode;

/**
 * The Class Push.
 */
public class Push implements ResultMonitorConfigType {
	private static final long	serialVersionUID	= -6113822981521869299L;
	private static final Logger	LOG					= Logger.getLogger(Push.class
															.getCanonicalName());
	private String				pushId				= null;
	private int					interval			= -1;
	private boolean				onEvent				= false;
	private boolean				onChange			= false;
	private String				event				= "";
	
	/**
	 * Instantiates a new push.
	 * 
	 * @param interval
	 *            the interval
	 * @param onEvent
	 *            the on event
	 */
	public Push(final int interval, final boolean onEvent) {
		pushId = new UUID().toString();
		this.interval = interval;
		this.onEvent = onEvent;
	}
	
	/**
	 * Instantiates a new push.
	 */
	public Push() {
		pushId = new UUID().toString();
	}
	
	/**
	 * On interval.
	 * 
	 * @param interval
	 *            the interval
	 * @return the push
	 */
	public Push onInterval(final int interval) {
		this.interval = interval;
		return this;
	}
	
	/**
	 * On event.
	 * 
	 * @return the push
	 */
	public Push onEvent() {
		onEvent = true;
		return this;
	}
	
	/**
	 * On event.
	 * 
	 * @param event
	 *            the event
	 * @return the push
	 */
	public Push onEvent(final String event) {
		onEvent = true;
		this.event = event;
		return this;
	}
	
	/**
	 * On change.
	 * 
	 * @return the push
	 */
	public Push onChange() {
		onChange = true;
		return this;
	}
	
	/**
	 * Inits the.
	 * 
	 * @param monitor
	 *            the monitor
	 * @param agent
	 *            the agent
	 * @throws IOException
	 *             Signals that an I/O exception has occurred.
	 * @throws JSONRPCException
	 *             the jSONRPC exception
	 */
	public void init(final ResultMonitor monitor, final AgentInterface agent)
			throws IOException, JSONRPCException {
		final ObjectNode wrapper = JOM.createObjectNode();
		final ObjectNode config = JOM.createObjectNode();
		
		config.put("monitorId", monitor.getId());
		if (interval > 0) {
			config.put("interval", interval);
		}
		config.put("onEvent", onEvent);
		if (!event.equals("")) {
			config.put("event", event);
		}
		config.put("onChange", onChange);
		config.put("method", monitor.getMethod());
		config.put("params", monitor.getParams());
		
		wrapper.put("config", config);
		
		LOG.info("Registering push:" + monitor.getUrl());
		wrapper.put("pushId", monitor.getId() + "_" + pushId);
		
		monitor.getPushes().add(this);
		agent.sendAsync(monitor.getUrl(), "monitor.registerPush", wrapper,
				null, Void.class);
	}
	
	/**
	 * Cancel.
	 * 
	 * @param monitor
	 *            the monitor
	 * @param agent
	 *            the agent
	 * @throws IOException
	 *             Signals that an I/O exception has occurred.
	 * @throws JSONRPCException
	 *             the jSONRPC exception
	 */
	public void cancel(final ResultMonitor monitor, final AgentInterface agent)
			throws IOException, JSONRPCException {
		final ObjectNode params = JOM.createObjectNode();
		params.put("pushId", pushId);
		agent.sendAsync(monitor.getUrl(), "monitor.unregisterPush", params,
				null, Void.class);
	}
	
	/**
	 * Gets the push id.
	 * 
	 * @return the push id
	 */
	public String getPushId() {
		return pushId;
	}
	
	/**
	 * Sets the push id.
	 * 
	 * @param pushId
	 *            the new push id
	 */
	public void setPushId(final String pushId) {
		this.pushId = pushId;
	}
	
	/**
	 * Gets the interval.
	 * 
	 * @return the interval
	 */
	public int getInterval() {
		return interval;
	}
	
	/**
	 * Sets the interval.
	 * 
	 * @param interval
	 *            the new interval
	 */
	public void setInterval(final int interval) {
		this.interval = interval;
	}
	
	/**
	 * Gets the event.
	 * 
	 * @return the event
	 */
	public String getEvent() {
		return event;
	}
	
	/**
	 * Sets the event.
	 * 
	 * @param event
	 *            the new event
	 */
	public void setEvent(final String event) {
		this.event = event;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy