edu.umn.msi.tropix.common.jobqueue.service.impl.JobProcessorQueueContextImpl.java Source code

Java tutorial

Introduction

Here is the source code for edu.umn.msi.tropix.common.jobqueue.service.impl.JobProcessorQueueContextImpl.java

Source

/********************************************************************************
 * Copyright (c) 2009 Regents of the University of Minnesota
 *
 * This Software was written at the Minnesota Supercomputing Institute
 * http://msi.umn.edu
 *
 * All rights reserved. The following statement of license applies
 * only to this file, and and not to the other files distributed with it
 * or derived therefrom.  This file is made available under the terms of
 * the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * Minnesota Supercomputing Institute - initial API and implementation
 *******************************************************************************/

package edu.umn.msi.tropix.common.jobqueue.service.impl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.annotation.AnnotationUtils;

import edu.umn.msi.tropix.common.jobqueue.JobDescription;
import edu.umn.msi.tropix.common.jobqueue.JobProcessor;
import edu.umn.msi.tropix.common.jobqueue.JobProcessorQueue;
import edu.umn.msi.tropix.common.jobqueue.JobType;
import edu.umn.msi.tropix.common.jobqueue.TicketProvider;
import edu.umn.msi.tropix.common.jobqueue.service.JobQueueContext;
import edu.umn.msi.tropix.common.jobqueue.status.Status;
import edu.umn.msi.tropix.common.jobqueue.ticket.Ticket;

public class JobProcessorQueueContextImpl<T extends JobDescription> implements JobQueueContext {
    private static final Log LOG = LogFactory.getLog(JobProcessorQueueContextImpl.class);
    private JobProcessorQueue<? super T> jobProcessorQueue;
    private TicketProvider<Ticket> ticketSupplier;

    public JobProcessorQueueContextImpl() {
        LOG.debug("Constructing " + toString());
    }

    public Status getStatus() {
        final Ticket ticket = getTicket();
        final Status status = jobProcessorQueue.getStatus(ticket);
        return status;
    }

    protected void submitJob(final JobProcessor<T> jobProcessor) {
        final Ticket ticket = jobProcessorQueue.submitJob(jobProcessor,
                AnnotationUtils.findAnnotation(getClass(), JobType.class).value());
        ticketSupplier.set(ticket);
    }

    protected void complete() {
        final Ticket ticket = ticketSupplier.get();
        complete(ticket);
    }

    protected void complete(final Ticket ticket) {
        jobProcessorQueue.complete(ticket);
    }

    protected void fail(final Ticket ticket) {
        jobProcessorQueue.fail(ticket);
    }

    protected void fail() {
        final Ticket ticket = ticketSupplier.get();
        fail(ticket);
    }

    protected void transferring(final Ticket ticket) {
        jobProcessorQueue.transferring(ticket);
    }

    public Ticket getTicket() {
        final Ticket ticket = ticketSupplier.get();
        return ticket;
    }

    public void cancel() {
        final Ticket ticket = getTicket();
        jobProcessorQueue.cancel(ticket);
    }

    public void setJobProcessorQueue(final JobProcessorQueue<? super T> jobProcessorQueue) {
        LOG.debug("Setting JobProcessorQueue to  " + jobProcessorQueue);
        this.jobProcessorQueue = jobProcessorQueue;
    }

    public void setTicketSupplier(final TicketProvider<Ticket> ticketSupplier) {
        this.ticketSupplier = ticketSupplier;
    }
}