// Path: src/main/java/hr/vsite/hive/HiveEventBus.java
// @Singleton
// public class HiveEventBus extends AsyncEventBus {
// 
// 	HiveEventBus() {
// 		this(Executors.newWorkStealingPool(), new SubscriberExceptionHandler() {
// 			@Override
// 			public void handleException(Throwable exception, SubscriberExceptionContext context) {
// 				log.error("Error in event handler ({})", context, exception);
// 			}
// 		});
// 	}
// 
// 	HiveEventBus(ExecutorService executor, SubscriberExceptionHandler handler) {
// 		super(executor, handler);
// 		this.executor = executor;
// 	}
// 
// 	public void shutdown() {
// 		executor.shutdown();
// 		try {
// 			executor.awaitTermination(10, TimeUnit.SECONDS);
// 		} catch (InterruptedException e) {
// 			log.error("Can't terminate event bus", e);
// 		}
// 	}
// 	
// 	private final ExecutorService executor;
// 
// 	private static final Logger log = LoggerFactory.getLogger(HiveEventBus.class);
// 
// }
// 
// Path: src/main/java/hr/vsite/hive/dao/HiveDao.java
// public interface HiveDao extends AutoCloseable {
// 
// 	void commit();
// 	
// 	void rollback();
// 	
// 	void archive(int daysBack);
// 	
// 	void persist(Sensor sensor);
// 
// 	void delete(Sensor sensor);
// 
// 	Sensor findSensorById(UUID id);
// 	
// 	Sensor findSensorByDeviceId(String deviceId);
// 	
// 	List<Sensor> listSensors(SensorFilter filter, int count, int offset);
// 
// 	void persist(ValueTick tick);
// 
// 	List<Tick> listTicks(TickFilter filter, int count, int offset);
// 
// 	void persist(CounterTick tick);
// 
// 	List<ValueTick> listTicks(ValueTickFilter filter, int count, int offset);
// 
// 	void persist(ToggleTick tick);
// 
// }
// 
// Path: src/main/java/hr/vsite/hive/sensors/Sensor.java
// public class Sensor implements Comparable<Sensor> {
// 
// 	/** Hive's ID of this Sensor */
// 	public UUID getId() { return id; }
// 	public void setId(UUID id) { this.id = id; }
// 	
// 	/** Sensor's own ID */
// 	public String getDeviceId() { return deviceId; }
// 	public void setDeviceId(String deviceId) { this.deviceId = deviceId; }
// 	
// 	/** Sensor's name */
// 	public String getName() { return name; }
// 	public void setName(String name) { this.name = name; }
// 
// 	/** Last modification time */
// 	public Instant getLastModified() { return lastModified; }
// 	public void setLastModified(Instant lastModified) { this.lastModified = lastModified; }
// 	
// 	@Override
// 	public String toString() {
// 		return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
// 			.append("id", id)
// 			.append("deviceId", deviceId)
// 			.append("name", name)
// 			.toString();
// 	}
// 
// 	@Override
// 	public int compareTo(Sensor o) {
// 		return id.compareTo(o.getId());
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((id == null) ? 0 : id.hashCode());
// 		return result;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Sensor other = (Sensor) obj;
// 		if (id == null) {
// 			if (other.id != null)
// 				return false;
// 		} else if (!id.equals(other.id))
// 			return false;
// 		return true;
// 	}
// 	
// 	private UUID id;
// 	private String deviceId;
// 	private String name;
// 	private Instant lastModified;
// 
// }
// 
// Path: src/main/java/hr/vsite/hive/sensors/SensorFilter.java
// public class SensorFilter {
// 
// 	public String getName() { return name; }
// 	public void setName(String name) { this.name = name; }
// 
// 	private String name;
// 	
// }
// 
// Path: src/main/java/hr/vsite/hive/ticks/ValueTickEvent.java
// public class ValueTickEvent extends TickEvent<ValueTick> {
// 
// 	public ValueTickEvent(Object source, ValueTick tick) {
// 		super(source, tick);
// 	}
// 	
// 	private static final long serialVersionUID = 1L;
// 
// }


import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import com.google.common.eventbus.Subscribe;
import hr.vsite.hive.HiveEventBus;
import hr.vsite.hive.dao.HiveDao;
import hr.vsite.hive.sensors.Sensor;
import hr.vsite.hive.sensors.SensorFilter;
import hr.vsite.hive.ticks.ValueTickEvent;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Window;
package hr.vsite.hive.services.javafx.scenes;






/**
 * <p><b>WARNING</b>:</p>
 * 
 * <p>Prototype class, for presentation only.</p>
 * 
 * </>Heavy refactoring needed!</p>
 */
public class SensorsScene extends Scene {

	@Inject
	public SensorsScene(HiveDao dao, HiveEventBus eventBus) {

		super(new GridPane());
		
// Path: src/main/java/hr/vsite/hive/HiveEventBus.java
// @Singleton
// public class HiveEventBus extends AsyncEventBus {
// 
// 	HiveEventBus() {
// 		this(Executors.newWorkStealingPool(), new SubscriberExceptionHandler() {
// 			@Override
// 			public void handleException(Throwable exception, SubscriberExceptionContext context) {
// 				log.error("Error in event handler ({})", context, exception);
// 			}
// 		});
// 	}
// 
// 	HiveEventBus(ExecutorService executor, SubscriberExceptionHandler handler) {
// 		super(executor, handler);
// 		this.executor = executor;
// 	}
// 
// 	public void shutdown() {
// 		executor.shutdown();
// 		try {
// 			executor.awaitTermination(10, TimeUnit.SECONDS);
// 		} catch (InterruptedException e) {
// 			log.error("Can't terminate event bus", e);
// 		}
// 	}
// 	
// 	private final ExecutorService executor;
// 
// 	private static final Logger log = LoggerFactory.getLogger(HiveEventBus.class);
// 
// }
// 
// Path: src/main/java/hr/vsite/hive/dao/HiveDao.java
// public interface HiveDao extends AutoCloseable {
// 
// 	void commit();
// 	
// 	void rollback();
// 	
// 	void archive(int daysBack);
// 	
// 	void persist(Sensor sensor);
// 
// 	void delete(Sensor sensor);
// 
// 	Sensor findSensorById(UUID id);
// 	
// 	Sensor findSensorByDeviceId(String deviceId);
// 	
// 	List<Sensor> listSensors(SensorFilter filter, int count, int offset);
// 
// 	void persist(ValueTick tick);
// 
// 	List<Tick> listTicks(TickFilter filter, int count, int offset);
// 
// 	void persist(CounterTick tick);
// 
// 	List<ValueTick> listTicks(ValueTickFilter filter, int count, int offset);
// 
// 	void persist(ToggleTick tick);
// 
// }
// 
// Path: src/main/java/hr/vsite/hive/sensors/Sensor.java
// public class Sensor implements Comparable<Sensor> {
// 
// 	/** Hive's ID of this Sensor */
// 	public UUID getId() { return id; }
// 	public void setId(UUID id) { this.id = id; }
// 	
// 	/** Sensor's own ID */
// 	public String getDeviceId() { return deviceId; }
// 	public void setDeviceId(String deviceId) { this.deviceId = deviceId; }
// 	
// 	/** Sensor's name */
// 	public String getName() { return name; }
// 	public void setName(String name) { this.name = name; }
// 
// 	/** Last modification time */
// 	public Instant getLastModified() { return lastModified; }
// 	public void setLastModified(Instant lastModified) { this.lastModified = lastModified; }
// 	
// 	@Override
// 	public String toString() {
// 		return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
// 			.append("id", id)
// 			.append("deviceId", deviceId)
// 			.append("name", name)
// 			.toString();
// 	}
// 
// 	@Override
// 	public int compareTo(Sensor o) {
// 		return id.compareTo(o.getId());
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((id == null) ? 0 : id.hashCode());
// 		return result;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Sensor other = (Sensor) obj;
// 		if (id == null) {
// 			if (other.id != null)
// 				return false;
// 		} else if (!id.equals(other.id))
// 			return false;
// 		return true;
// 	}
// 	
// 	private UUID id;
// 	private String deviceId;
// 	private String name;
// 	private Instant lastModified;
// 
// }
// 
// Path: src/main/java/hr/vsite/hive/sensors/SensorFilter.java
// public class SensorFilter {
// 
// 	public String getName() { return name; }
// 	public void setName(String name) { this.name = name; }
// 
// 	private String name;
// 	
// }
// 
// Path: src/main/java/hr/vsite/hive/ticks/ValueTickEvent.java
// public class ValueTickEvent extends TickEvent<ValueTick> {
// 
// 	public ValueTickEvent(Object source, ValueTick tick) {
// 		super(source, tick);
// 	}
// 	
// 	private static final long serialVersionUID = 1L;
// 
// }


// Path: src/main/java/hr/vsite/hive/services/javafx/scenes/SensorsScene.java
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import com.google.common.eventbus.Subscribe;
import hr.vsite.hive.HiveEventBus;
import hr.vsite.hive.dao.HiveDao;
import hr.vsite.hive.sensors.Sensor;
import hr.vsite.hive.sensors.SensorFilter;
import hr.vsite.hive.ticks.ValueTickEvent;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Window;

package hr.vsite.hive.services.javafx.scenes;






/**
 * <p><b>WARNING</b>:</p>
 * 
 * <p>Prototype class, for presentation only.</p>
 * 
 * </>Heavy refactoring needed!</p>
 */
public class SensorsScene extends Scene {

	@Inject
	public SensorsScene(HiveDao dao, HiveEventBus eventBus) {

		super(new GridPane());
		
        root = GridPane.class.cast(getRoot());