io.logspace.agent.shaded.quartz.SchedulerMetaData Maven / Gradle / Ivy
/*
* Copyright 2001-2009 Terracotta, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
package io.logspace.agent.shaded.quartz;
import java.util.Date;
/**
* Describes the settings and capabilities of a given {@link Scheduler}
* instance.
*
* @author James House
*/
public class SchedulerMetaData implements java.io.Serializable {
private static final long serialVersionUID = 4203690002633917647L;
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* Data members.
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
private String schedName;
private String schedInst;
private Class> schedClass;
private boolean isRemote;
private boolean started;
private boolean isInStandbyMode;
private boolean shutdown;
private Date startTime;
private int numJobsExec;
private Class> jsClass;
private boolean jsPersistent;
private boolean jsClustered;
private Class> tpClass;
private int tpSize;
private String version;
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* Constructors.
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
public SchedulerMetaData(String schedName, String schedInst,
Class> schedClass, boolean isRemote, boolean started,
boolean isInStandbyMode, boolean shutdown, Date startTime, int numJobsExec,
Class> jsClass, boolean jsPersistent, boolean jsClustered, Class> tpClass, int tpSize,
String version) {
this.schedName = schedName;
this.schedInst = schedInst;
this.schedClass = schedClass;
this.isRemote = isRemote;
this.started = started;
this.isInStandbyMode = isInStandbyMode;
this.shutdown = shutdown;
this.startTime = startTime;
this.numJobsExec = numJobsExec;
this.jsClass = jsClass;
this.jsPersistent = jsPersistent;
this.jsClustered = jsClustered;
this.tpClass = tpClass;
this.tpSize = tpSize;
this.version = version;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* Interface.
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/**
*
* Returns the name of the Scheduler
.
*
*/
public String getSchedulerName() {
return schedName;
}
/**
*
* Returns the instance Id of the Scheduler
.
*
*/
public String getSchedulerInstanceId() {
return schedInst;
}
/**
*
* Returns the class-name of the Scheduler
instance.
*
*/
public Class> getSchedulerClass() {
return schedClass;
}
/**
*
* Returns the Date
at which the Scheduler started running.
*
*
* @return null if the scheduler has not been started.
*/
public Date getRunningSince() {
return startTime;
}
/**
*
* Returns the number of jobs executed since the Scheduler
* started..
*
*/
public int getNumberOfJobsExecuted() {
return numJobsExec;
}
/**
*
* Returns whether the Scheduler
is being used remotely (via
* RMI).
*
*/
public boolean isSchedulerRemote() {
return isRemote;
}
/**
*
* Returns whether the scheduler has been started.
*
*
*
* Note: isStarted()
may return true
even if
* isInStandbyMode()
returns true
.
*
*/
public boolean isStarted() {
return started;
}
/**
* Reports whether the Scheduler
is in standby mode.
*/
public boolean isInStandbyMode() {
return isInStandbyMode;
}
/**
*
* Reports whether the Scheduler
has been shutdown.
*
*/
public boolean isShutdown() {
return shutdown;
}
/**
*
* Returns the class-name of the JobStore
instance that is
* being used by the Scheduler
.
*
*/
public Class> getJobStoreClass() {
return jsClass;
}
/**
*
* Returns whether or not the Scheduler
'sJobStore
* instance supports persistence.
*
*/
public boolean isJobStoreSupportsPersistence() {
return jsPersistent;
}
/**
*
* Returns whether or not the Scheduler
'sJobStore
* is clustered.
*
*/
public boolean isJobStoreClustered() {
return jsClustered;
}
/**
*
* Returns the class-name of the ThreadPool
instance that is
* being used by the Scheduler
.
*
*/
public Class> getThreadPoolClass() {
return tpClass;
}
/**
*
* Returns the number of threads currently in the Scheduler
's
* ThreadPool
.
*
*/
public int getThreadPoolSize() {
return tpSize;
}
/**
*
* Returns the version of Quartz that is running.
*
*/
public String getVersion() {
return version;
}
/**
*
* Return a simple string representation of this object.
*
*/
@Override
public String toString() {
try {
return getSummary();
} catch (SchedulerException se) {
return "SchedulerMetaData: undeterminable.";
}
}
/**
*
* Returns a formatted (human readable) String describing all the Scheduler
's
* meta-data values.
*
*
*
* The format of the String looks something like this:
*
*
*
*
* Quartz Scheduler 'SchedulerName' with instanceId 'SchedulerInstanceId' Scheduler class: 'io.logspace.agent.shaded.quartz.impl.StdScheduler' - running locally. Running since: '11:33am on Jul 19, 2002' Not currently paused. Number of Triggers fired: '123' Using thread pool 'io.logspace.agent.shaded.quartz.simpl.SimpleThreadPool' - with '8' threads Using job-store 'io.logspace.agent.shaded.quartz.impl.JDBCJobStore' - which supports persistence.
*
*
*
*/
public String getSummary() throws SchedulerException {
StringBuilder str = new StringBuilder("Quartz Scheduler (v");
str.append(getVersion());
str.append(") '");
str.append(getSchedulerName());
str.append("' with instanceId '");
str.append(getSchedulerInstanceId());
str.append("'\n");
str.append(" Scheduler class: '");
str.append(getSchedulerClass().getName());
str.append("'");
if (isSchedulerRemote()) {
str.append(" - access via RMI.");
} else {
str.append(" - running locally.");
}
str.append("\n");
if (!isShutdown()) {
if (getRunningSince() != null) {
str.append(" Running since: ");
str.append(getRunningSince());
} else {
str.append(" NOT STARTED.");
}
str.append("\n");
if (isInStandbyMode()) {
str.append(" Currently in standby mode.");
} else {
str.append(" Not currently in standby mode.");
}
} else {
str.append(" Scheduler has been SHUTDOWN.");
}
str.append("\n");
str.append(" Number of jobs executed: ");
str.append(getNumberOfJobsExecuted());
str.append("\n");
str.append(" Using thread pool '");
str.append(getThreadPoolClass().getName());
str.append("' - with ");
str.append(getThreadPoolSize());
str.append(" threads.");
str.append("\n");
str.append(" Using job-store '");
str.append(getJobStoreClass().getName());
str.append("' - which ");
if (isJobStoreSupportsPersistence()) {
str.append("supports persistence.");
} else {
str.append("does not support persistence.");
}
if (isJobStoreClustered()) {
str.append(" and is clustered.");
} else {
str.append(" and is not clustered.");
}
str.append("\n");
return str.toString();
}
}