/* * 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.enterprise.gui.operation.schedule; import org.quartz.SchedulerException; import org.quartz.SimpleTrigger; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.operation.bean.OperationSchedule; import org.rhq.core.gui.util.FacesContextUtility; import org.rhq.enterprise.gui.common.scheduling.OperationDetailsScheduleComponent; import org.rhq.enterprise.gui.operation.model.OperationParameters; import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; import org.rhq.enterprise.server.operation.OperationManagerLocal; import org.rhq.enterprise.server.scheduler.SchedulerLocal; import org.rhq.enterprise.server.util.LookupUtil; public abstract class OperationScheduleDetailsUIBean { protected OperationManagerLocal manager; protected OperationSchedule schedule; private OperationParameters parameters; private OperationDetailsScheduleComponent operationDetails; public OperationScheduleDetailsUIBean() { manager = LookupUtil.getOperationManager(); } protected void init() { if (this.schedule == null) { Subject subject = EnterpriseFacesContextUtility.getSubject(); String jobId = FacesContextUtility.getRequiredRequestParameter("jobId"); SchedulerLocal scheduler = LookupUtil.getSchedulerBean(); try { this.schedule = getOperationSchedule(subject, jobId); } catch (Exception e) { // capture all known info and throw a RuntimeException throw new IllegalStateException(e.getMessage(), e); } this.parameters = new OperationParameters(this.schedule); String jobName = schedule.getJobName(); String jobGroup = schedule.getJobGroup(); SimpleTrigger quartzTrigger = null; try { quartzTrigger = (SimpleTrigger) scheduler.getTrigger(jobName, jobGroup); } catch (SchedulerException se) { // capture all known info and throw a RuntimeException throw new IllegalStateException(se.getMessage(), se); } operationDetails = new OperationDetailsScheduleComponent(quartzTrigger); } } public abstract OperationSchedule getOperationSchedule(Subject subject, String jobId) throws Exception; public OperationSchedule getSchedule() { init(); return this.schedule; } public OperationParameters getParameters() { init(); return parameters; } public OperationDetailsScheduleComponent getOperationDetails() { init(); return operationDetails; } public OperationManagerLocal getManager() { return manager; } public void setManager(OperationManagerLocal manager) { this.manager = manager; } public void setSchedule(OperationSchedule schedule) { this.schedule = schedule; } public void setParameters(OperationParameters parameters) { this.parameters = parameters; } public void setOperationDetails(OperationDetailsScheduleComponent operationDetails) { this.operationDetails = operationDetails; } }