Package org.apache.oodt.cas.workflow.instrepo

Source Code of org.apache.oodt.cas.workflow.instrepo.AbstractPaginatibleInstanceRepository

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.oodt.cas.workflow.instrepo;

//JDK imports
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

//OODT imports
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
import org.apache.oodt.cas.workflow.structs.exceptions.InstanceRepositoryException;
import org.apache.oodt.commons.pagination.PaginationUtils;

/**
* @author mattmann
* @version $Revision$
*
* <p>
* Describe your class here
* </p>.
*/
public abstract class AbstractPaginatibleInstanceRepository implements
        WorkflowInstanceRepository {

    protected int pageSize = -1;

    /* our log stream */
    private static final Logger LOG = Logger
            .getLogger(AbstractPaginatibleInstanceRepository.class.getName());

    /*
     * (non-Javadoc)
     *
     * @see org.apache.oodt.cas.workflow.util.Pagination#getFirstPage()
     */
    public WorkflowInstancePage getFirstPage() {
        WorkflowInstancePage firstPage = null;

        try {
            firstPage = getPagedWorkflows(1);
        } catch (Exception e) {
            e.printStackTrace();
            LOG.log(Level.WARNING, "Exception getting first page: Message: "
                    + e.getMessage());
        }
        return firstPage;
    }

    /*
     * (non-Javadoc)
     *
     * @see org.apache.oodt.cas.workflow.util.Pagination#getLastPage()
     */
    public WorkflowInstancePage getLastPage() {
        WorkflowInstancePage lastPage = null;
        WorkflowInstancePage firstPage = getFirstPage();

        try {
            lastPage = getPagedWorkflows(firstPage.getTotalPages());
        } catch (Exception e) {
            LOG.log(Level.WARNING, "Exception getting last page: Message: "
                    + e.getMessage());
        }

        return lastPage;
    }

    /*
     * (non-Javadoc)
     *
     * @see org.apache.oodt.cas.workflow.util.Pagination#getNextPage(org.apache.oodt.cas.workflow.structs.WorkflowInstancePage)
     */
    public WorkflowInstancePage getNextPage(WorkflowInstancePage currentPage) {
        if (currentPage == null) {
            return getFirstPage();
        }

        if (currentPage.isLastPage()) {
            return currentPage;
        }

        WorkflowInstancePage nextPage = null;

        try {
            nextPage = getPagedWorkflows(currentPage.getPageNum() + 1);
        } catch (Exception e) {
            LOG.log(Level.WARNING, "Exception getting next page: Message: "
                    + e.getMessage());
        }

        return nextPage;
    }

    /*
     * (non-Javadoc)
     *
     * @see org.apache.oodt.cas.workflow.util.Pagination#getPrevPage(org.apache.oodt.cas.workflow.structs.WorkflowInstancePage)
     */
    public WorkflowInstancePage getPrevPage(WorkflowInstancePage currentPage) {
        if (currentPage == null) {
            return getFirstPage();
        }

        if (currentPage.isLastPage()) {
            return currentPage;
        }

        WorkflowInstancePage nextPage = null;

        try {
            nextPage = getPagedWorkflows(currentPage.getPageNum() - 1);
        } catch (Exception e) {
            LOG.log(Level.WARNING, "Exception getting next page: Message: "
                    + e.getMessage());
        }

        return nextPage;
    }

    /*
     * (non-Javadoc)
     *
     * @see org.apache.oodt.cas.workflow.util.Pagination#getPagedWorkflows(int)
     */
    public WorkflowInstancePage getPagedWorkflows(int pageNum)
            throws InstanceRepositoryException {
        return getPagedWorkflows(pageNum, null);
    }

    /*
     * (non-Javadoc)
     *
     * @see org.apache.oodt.cas.workflow.util.Pagination#getPagedWorkflows(int,
     *      java.lang.String)
     */
    public WorkflowInstancePage getPagedWorkflows(int pageNum, String status)
            throws InstanceRepositoryException {
        int totalPages = PaginationUtils.getTotalPage(
                status != null ? getNumWorkflowInstancesByStatus(status)
                        : getNumWorkflowInstances(), this.pageSize);

        /*
         * if there are 0 total pages in the result list size then don't bother
         * returning a valid product page instead, return blank ProductPage
         */
        if (totalPages == 0 || pageNum > totalPages || pageNum <= 0) {
            return WorkflowInstancePage.blankPage();
        }

        WorkflowInstancePage retPage = new WorkflowInstancePage();
        retPage.setPageNum(pageNum);
        retPage.setPageSize(this.pageSize);
        retPage.setTotalPages(totalPages);

        List wInstIds = paginateWorkflows(pageNum, status);

        if (wInstIds != null && wInstIds.size() > 0) {
            List workflowInstances = new Vector(wInstIds.size());

            for (Iterator i = wInstIds.iterator(); i.hasNext();) {
                String workflowInstId = (String) i.next();
                WorkflowInstance inst = getWorkflowInstanceById(workflowInstId);
                workflowInstances.add(inst);
            }

            retPage.setPageWorkflows(workflowInstances);
        }

        return retPage;
    }

    /**
     *
     * @param pageNum
     * @return
     * @throws InstanceRepositoryException
     */
    protected List paginateWorkflows(int pageNum)
            throws InstanceRepositoryException {
        return paginateWorkflows(pageNum, null);
    }

    /**
     *
     * @param pageNum
     * @param status
     * @return
     * @throws InstanceRepositoryException
     */
    protected abstract List paginateWorkflows(int pageNum, String status)
            throws InstanceRepositoryException;

}
TOP

Related Classes of org.apache.oodt.cas.workflow.instrepo.AbstractPaginatibleInstanceRepository

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.