/* * Copyright 2011 Blazebit */ package com.blazebit.monitor.quartz.model; import java.io.Serializable; import java.util.logging.Level; import java.util.logging.Logger; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.impl.DirectSchedulerFactory; /** * * @author Christian Beikov */ @Entity @Table(name = "QRTZ_SCHEDULER_CONFIGURATION") public class SchedulerConfiguration implements Serializable { private static final long serialVersionUID = 1L; private static final Logger log = Logger .getLogger(SchedulerConfiguration.class.getName()); private Integer id; private String schedulerName; private String schedulerInstanceId; private String rmiHost; private Integer rmiPort; public SchedulerConfiguration() { } public SchedulerConfiguration(Integer id) { this.id = id; } public SchedulerConfiguration(Integer id, String schedulerName, String schedulerInstanceId, String rmiHost, Integer rmiPort) { this.id = id; this.schedulerName = schedulerName; this.schedulerInstanceId = schedulerInstanceId; this.rmiHost = rmiHost; this.rmiPort = rmiPort; } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "sc_id") public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(name = "sc_rmi_host") public String getRmiHost() { return rmiHost; } public void setRmiHost(String rmiHost) { this.rmiHost = rmiHost; } @Column(name = "sc_rmi_port") public Integer getRmiPort() { return rmiPort; } public void setRmiPort(Integer rmiPort) { this.rmiPort = rmiPort; } @Column(name = "sc_scheduler_instance_id") public String getSchedulerInstanceId() { return schedulerInstanceId; } public void setSchedulerInstanceId(String schedulerInstanceId) { this.schedulerInstanceId = schedulerInstanceId; } @Column(name = "sc_scheduler_name") public String getSchedulerName() { return schedulerName; } public void setSchedulerName(String schedulerName) { this.schedulerName = schedulerName; } @Transient public String getSchedulerUid() { return (schedulerName == null || schedulerName.isEmpty() ? "QuartzScheduler" : schedulerName) + "_$_" + (schedulerInstanceId == null || schedulerInstanceId.isEmpty() ? "NON_CLUSTERED" : schedulerInstanceId); } @Transient public Scheduler getScheduler() { Scheduler s = null; try { DirectSchedulerFactory fact = DirectSchedulerFactory.getInstance(); if (fact.getScheduler(schedulerName) == null) { fact.createRemoteScheduler(schedulerName == null || schedulerName.isEmpty() ? "QuartzScheduler" : schedulerName, schedulerInstanceId == null || schedulerInstanceId.isEmpty() ? "NON_CLUSTERED" : schedulerInstanceId, rmiHost, rmiPort); } s = fact.getScheduler(schedulerName == null ? "QuartzScheduler" : schedulerName); } catch (SchedulerException ex) { log.log(Level.SEVERE, "Could not retrieve Scheduler for config!", ex); } return s; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (!(obj instanceof SchedulerConfiguration)) { return false; } final SchedulerConfiguration other = (SchedulerConfiguration) obj; if (this.getId() != other.getId() && (this.getId() == null || !this.getId().equals(other.getId()))) { return false; } return true; } @Override public int hashCode() { int hash = 5; hash = 89 * hash + (this.getId() != null ? this.getId().hashCode() : 0); return hash; } }