/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.core.domain.operation.bean; import java.io.Serializable; import java.util.Date; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.common.JobTrigger; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.operation.HistoryJobId; import org.rhq.core.domain.operation.JobId; /** * A simple non-entity POJO that describes a particular scheduled operation. * * @author John Mazzitelli */ @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public abstract class OperationSchedule implements Serializable { private static final long serialVersionUID = 1L; private int id; private String jobName; private String jobGroup; private String operationName; private String operationDisplayName; private Configuration parameters; private Subject subject; private String description; private JobTrigger jobTrigger; private Date nextFireTime; public OperationSchedule() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getJobGroup() { return jobGroup; } public void setJobGroup(String jobGroup) { this.jobGroup = jobGroup; } public String getJobName() { return jobName; } public void setJobName(String jobName) { this.jobName = jobName; } public String getOperationName() { return operationName; } public void setOperationName(String operationName) { this.operationName = operationName; } public String getOperationDisplayName() { /* * this conditional is for "legacy" purposes, so that pre-existing operation schedules don't return blank * displayNames, they will default to returning the operationDefinition.name instead */ if ((operationDisplayName == null) || operationDisplayName.equals("")) { return getOperationName(); } return operationDisplayName; } public void setOperationDisplayName(String operationDisplayName) { this.operationDisplayName = operationDisplayName; } /** * Returns the option parameters that are passed to the operation invocation. * * @return the parameters, or <code>null</code> if no parameters are to be passed */ public Configuration getParameters() { return parameters; } public void setParameters(Configuration parameters) { this.parameters = parameters; } public Subject getSubject() { return subject; } public void setSubject(Subject subject) { if (subject == null) { throw new NullPointerException("Cannot schedule an operation without a user associated with it"); } this.subject = subject; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public JobTrigger getJobTrigger() { return jobTrigger; } public void setJobTrigger(JobTrigger jobTrigger) { this.jobTrigger = jobTrigger; } public Date getNextFireTime() { return nextFireTime; } public void setNextFireTime(Date nextFireTime) { this.nextFireTime = nextFireTime; } /** * The single job ID which identifies the operation. It can later be parsed via {@link JobId#JobId(String)}. Note * that this job ID only identifies the scheduled operation; it does not identify any specific invocation of that * operation (see {@link HistoryJobId} for that). * * @return job ID */ @XmlElement public JobId getJobId() { return new JobId(this.jobName, this.jobGroup); } /* * there may be some operations whose parameters are sensitive values, such as passwords - do not show them * as part of the toString. they can still be gotten by explicitly calling getParameters() */ @Override public String toString() { StringBuilder str = new StringBuilder(); str.append("job-name=[" + this.jobName); str.append("], job-group=[" + this.jobGroup); str.append("], operation-name=[" + this.operationName); str.append("], subject=[" + this.subject); str.append("], description=[" + this.description); str.append("]"); return str.toString(); } }