package br.usp.nds.remote.persistencia; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java.util.List; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Transient; import br.usp.nds.remote.integracao.GeradorEventos; import br.usp.nds.remote.integracao.GeradorTickets; @Entity public class GeracaoEvento extends Entidade implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int codigo; private String titulo; private BigDecimal valorMinimo; private BigDecimal valorMaximo; private int tempoSegundos; @ManyToOne private Sensor sensor; private Boolean eventoGerado; @Transient private int ultimaLeitura; public void gerarEvento() { EntityManager em = Persistencia.getInstance().getEMF().createEntityManager(); em.getTransaction().begin(); Evento e = new Evento(); e.setData(new Date()); e.setDescricao(titulo); e.setLeitura(em.find(Leitura.class, ultimaLeitura)); e.setSensor(em.find(Sensor.class, sensor.getCodigo())); em.persist(e); em.flush(); em.refresh(e); eventoGerado = true; em.find(GeracaoEvento.class, codigo).setEventoGerado(true); em.getTransaction().commit(); em.close(); GeradorTickets.getInstance().processarEvento(this, e); } public void eventoNaoGerado() { eventoGerado = false; EntityManager em = Persistencia.getInstance().getEMF().createEntityManager(); em.getTransaction().begin(); em.find(GeracaoEvento.class, codigo).setEventoGerado(false); em.getTransaction().commit(); em.close(); } public List listar() { return em.createQuery("SELECT g FROM GeracaoEvento g ORDER BY g.titulo").getResultList(); } public void incluir() { em.persist(this); GeradorEventos.getInstance().carregar(); } public void alterar() { em.merge(this); GeradorEventos.getInstance().carregar(); } public void excluir() { em.remove(em.find(GeracaoEvento.class, codigo)); GeradorEventos.getInstance().carregar(); } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + codigo; return result; } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; GeracaoEvento other = (GeracaoEvento) obj; if (codigo != other.codigo) return false; return true; } public int getUltimaLeitura() { return ultimaLeitura; } public void setUltimaLeitura(int ultimaLeitura) { this.ultimaLeitura = ultimaLeitura; } public Boolean getEventoGerado() { return eventoGerado; } public void setEventoGerado(Boolean eventoGerado) { this.eventoGerado = eventoGerado; } public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public BigDecimal getValorMinimo() { return valorMinimo; } public void setValorMinimo(BigDecimal valorMinimo) { this.valorMinimo = valorMinimo; } public BigDecimal getValorMaximo() { return valorMaximo; } public void setValorMaximo(BigDecimal valorMaximo) { this.valorMaximo = valorMaximo; } public int getTempoSegundos() { return tempoSegundos; } public void setTempoSegundos(int tempoSegundos) { this.tempoSegundos = tempoSegundos; } public Sensor getSensor() { return sensor; } public void setSensor(Sensor sensor) { this.sensor = sensor; } }