com.sos.scheduler.history.db.SchedulerOrderHistoryDBLayer.java Source code

Java tutorial

Introduction

Here is the source code for com.sos.scheduler.history.db.SchedulerOrderHistoryDBLayer.java

Source

/**
 * Copyright (C) 2014 BigLoupe http://bigloupe.github.io/SoS-JobScheduler/
 *
 * 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
 */
/********************************************************* begin of preamble
**
** Copyright (C) 2003-2012 Software- und Organisations-Service GmbH. 
** All rights reserved.
**
** This file may be used under the terms of either the 
**
**   GNU General Public License version 2.0 (GPL)
**
**   as published by the Free Software Foundation
**   http://www.gnu.org/licenses/gpl-2.0.txt and appearing in the file
**   LICENSE.GPL included in the packaging of this file. 
**
** or the
**  
**   Agreement for Purchase and Licensing
**
**   as offered by Software- und Organisations-Service GmbH
**   in the respective terms of supply that ship with this file.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
** IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
********************************************************** end of preamble*/
package com.sos.scheduler.history.db;

import java.io.File;
import java.util.List;

import org.hibernate.ObjectNotFoundException;
import org.hibernate.Query;

import com.sos.hibernate.layer.SOSHibernateIntervalDBLayer;
import com.sos.scheduler.history.SchedulerOrderHistoryFilter;

/**
 * 
 * \class SchedulerHistoryDBLayer \brief SchedulerHistoryDBLayer -
 * 
 * \details
 * 
 * \section SchedulerHistoryDBLayer.java_intro_sec Introduction
 * 
 * \section SchedulerHistoryDBLayer.java_samples Some Samples
 * 
 * \code .... code goes here ... \endcode
 * 
 * <p style="text-align:center">
 * <br />
 * --------------------------------------------------------------------------- <br />
 * APL/Software GmbH - Berlin <br />
 * ##### generated by ClaviusXPress (http://www.sos-berlin.com) ######### <br />
 * ---------------------------------------------------------------------------
 * </p>
 * \author Uwe Risse \version 27.09.2011 \see reference
 * 
 * Created on 27.09.2011 14:40:18
 */

public class SchedulerOrderHistoryDBLayer extends SOSHibernateIntervalDBLayer {

    @SuppressWarnings("unused")
    private final String conClassName = "SchedulerOrderHistoryDBLayer";
    protected SchedulerOrderHistoryFilter filter = null;

    public SchedulerOrderHistoryDBLayer(File configurationFile_) {

        super();

        this.setConfigurationFile(configurationFile_);
        this.resetFilter();

    }

    public SchedulerOrderHistoryDBItem get(Long id) {
        if (id == null) {
            return null;
        }
        initSession();
        try {
            return (SchedulerOrderHistoryDBItem) this.getSession().get(SchedulerOrderHistoryDBItem.class, id);
        } catch (ObjectNotFoundException e) {
            return null;
        }
    }

    protected String getWhere() {

        String where = "";
        String and = "";

        if (filter.getSchedulerOrderHistoryId() != null) {
            where += and + " schedulerOrderHistoryId=:schedulerOrderHistoryId";
            and = " and ";
        } else {

            if (filter.getSchedulerId() != null && !filter.getSchedulerId().equals("")) {
                where += and + " spoolerId=:schedulerId";
                and = " and ";
            }

            if (filter.getJobchain() != null && !filter.getJobchain().equals("")) {
                where += and + " jobChain=:jobChain";
                and = " and ";
            }

            if (filter.getOrderid() != null && !filter.getOrderid().equals("")) {
                where += and + " orderId=:orderId";
                and = " and ";
            }

            if (filter.getStartTime() != null) {
                where += and + " startTime>= :startTime";
                and = " and ";
            }

            if (filter.getEndTime() != null) {
                where += and + " endTime <= :endTime ";
                and = " and ";
            }
            if (where.trim().equals("")) {

            } else {
                where = "where " + where;
            }
        }
        return where;

    }

    protected String getWhereFromTo() {
        String where = "";
        String and = "";

        if (filter.getSchedulerId() != null && !filter.getSchedulerId().equals("")) {
            where += and + " spoolerId=:schedulerId";
            and = " and ";
        }

        if (filter.getJobchain() != null && !filter.getJobchain().equals("")) {
            if (filter.getJobchain().contains("%")) {
                where += and + " jobChain like :jobChain";
            } else {
                where += and + " jobChain=:jobChain";
            }
            and = " and ";
        }

        if (filter.getOrderid() != null && !filter.getOrderid().equals("")) {
            if (filter.getOrderid().contains("%")) {
                where += and + " orderId like :orderId";
            } else {
                where += and + " orderId=:orderId";
            }
            and = " and ";
        }

        if (filter.getExecutedUtcFrom() != null) {
            where += and + " startTime>= :startTimeFrom";
            and = " and ";
        }

        if (filter.getExecutedUtcTo() != null) {
            where += and + " startTime <= :startTimeTo ";
            and = " and ";
        }
        if (where.trim().equals("")) {

        } else {
            where = "where " + where;
        }
        return where;

    }

    @Override
    public int deleteInterval() {

        if (session == null) {
            beginTransaction();
        }

        String q = "delete from SchedulerOrderStepHistoryDBItem e where e.schedulerOrderHistoryDBItem.historyId IN (select historyId from SchedulerOrderHistoryDBItem "
                + getWhereFromTo() + ")";
        Query query = session.createQuery(q);

        if (filter.getExecutedUtcFrom() != null) {
            query.setTimestamp("startTimeFrom", filter.getExecutedUtcFrom());
        }
        if (filter.getExecutedUtcTo() != null) {
            query.setTimestamp("startTimeTo", filter.getExecutedUtcTo());
        }

        int row = query.executeUpdate();

        String hql = "delete from SchedulerOrderHistoryDBItem " + getWhereFromTo();

        query = session.createQuery(hql);

        if (filter.getExecutedUtcFrom() != null) {
            query.setTimestamp("startTimeFrom", filter.getExecutedUtcFrom());
        }
        if (filter.getExecutedUtcTo() != null) {
            query.setTimestamp("startTimeTo", filter.getExecutedUtcTo());
        }

        row = query.executeUpdate();

        return row;
    }

    public int delete() {

        if (session == null) {
            beginTransaction();
        }

        String q = "delete from SchedulerOrderStepHistoryDBItem e where e.schedulerOrderHistoryDBItem.historyId IN (select historyId from SchedulerOrderHistoryDBItem "
                + getWhereFromTo() + ")";
        Query query = session.createQuery(q);
        if (filter.getExecutedUtcFrom() != null) {
            query.setTimestamp("startTimeFrom", filter.getExecutedUtcFrom());
        }

        if (filter.getExecutedUtcTo() != null) {
            query.setTimestamp("startTimeTo", filter.getExecutedUtcTo());
        }
        query.setTimestamp("startTimeFrom", filter.getExecutedUtcFrom());
        query.setTimestamp("startTimeTo", filter.getExecutedUtcTo());
        int row = query.executeUpdate();

        String hql = "delete from SchedulerOrderHistoryDBItem " + getWhereFromTo();
        query = session.createQuery(hql);
        if (filter.getExecutedUtcFrom() != null) {
            query.setTimestamp("startTimeFrom", filter.getExecutedUtcFrom());
        }
        if (filter.getExecutedUtcTo() != null) {
            query.setTimestamp("startTimeTo", filter.getExecutedUtcTo());
        }

        row = query.executeUpdate();
        return row;
    }

    private List<SchedulerOrderHistoryDBItem> executeQuery(Query query, int limit) {

        if (filter.getExecutedUtcFrom() != null && !filter.getExecutedUtcFrom().equals("")) {
            query.setTimestamp("startTimeFrom", filter.getExecutedUtcFrom());
        }
        if (filter.getExecutedUtcTo() != null && !filter.getExecutedUtcTo().equals("")) {
            query.setTimestamp("startTimeTo", filter.getExecutedUtcTo());
        }

        if (filter.getOrderid() != null && !filter.getOrderid().equals("")) {
            query.setText("orderId", filter.getOrderid());
        }
        if (filter.getJobchain() != null && !filter.getJobchain().equals("")) {
            query.setText("jobChain", filter.getJobchain());
        }
        if (filter.getSchedulerId() != null && !filter.getSchedulerId().equals("")) {
            query.setText("schedulerId", filter.getSchedulerId());
        }

        if (limit > 0) {
            query.setMaxResults(limit);
        }

        List<SchedulerOrderHistoryDBItem> schedulerOrderHistoryList = query.list();
        return schedulerOrderHistoryList;

    }

    public List<SchedulerOrderHistoryDBItem> getSchedulerOrderHistoryListFromTo() {
        int limit = filter.getLimit();
        initSession();

        Query query = session.createQuery("from SchedulerOrderHistoryDBItem " + getWhereFromTo()
                + filter.getOrderCriteria() + filter.getSortMode());
        return executeQuery(query, limit);

    }

    public List<SchedulerOrderHistoryDBItem> getOrderHistoryItems() {
        initSession();

        Query query = session.createQuery("from SchedulerOrderHistoryDBItem " + getWhere());

        if (filter.getStartTime() != null && !filter.getStartTime().equals("")) {
            query.setTimestamp("startTime", filter.getStartTime());
        }
        if (filter.getEndTime() != null && !filter.getEndTime().equals("")) {
            query.setTimestamp("endTime", filter.getEndTime());
        }
        if (filter.getOrderid() != null && !filter.getOrderid().equals("")) {
            query.setText("orderId", filter.getOrderid());
        }
        if (filter.getJobchain() != null && !filter.getJobchain().equals("")) {
            query.setText("jobChain", filter.getJobchain());
        }
        if (filter.getSchedulerId() != null && !filter.getSchedulerId().equals("")) {
            query.setText("schedulerId", filter.getSchedulerId());
        }

        query.setMaxResults(filter.getLimit());

        List<SchedulerOrderHistoryDBItem> historyList = query.list();
        return historyList;
    }

    public List<SchedulerOrderHistoryDBItem> getSchedulerOrderHistoryListSchedulersFromTo() {
        int limit = filter.getLimit();

        initSession();

        String q = "from SchedulerOrderHistoryDBItem e where e.spoolerId IN (select distinct e.spoolerId from SchedulerOrderHistoryDBItem "
                + getWhereFromTo() + ")";
        Query query = session.createQuery(q);

        // Query query = session.createQuery("from SchedulerOrderHistoryDBItem "
        // + getWhereFromTo() + filter.getOrderCriteria() + filter.getSortMode()
        // + " group by spoolerId");
        return executeQuery(query, limit);
    }

    public SchedulerOrderHistoryDBItem getOrderHistoryItem() {
        initSession();
        this.filter.setLimit(1);

        Query query = session.createQuery("from SchedulerOrderHistoryDBItem " + getWhere());

        if (filter.getSchedulerOrderHistoryId() != null) {
            query.setLong("schedulerOrderHistoryId", filter.getSchedulerOrderHistoryId());
        } else {

            if (filter.getStartTime() != null && !filter.getStartTime().equals("")) {
                query.setTimestamp("startTime", filter.getStartTime());
            }
            if (filter.getEndTime() != null && !filter.getEndTime().equals("")) {
                query.setTimestamp("endTime", filter.getEndTime());
            }
            if (filter.getOrderid() != null && !filter.getOrderid().equals("")) {
                query.setText("orderId", filter.getOrderid());
            }
            if (filter.getJobchain() != null && !filter.getJobchain().equals("")) {
                query.setText("jobChain", filter.getJobchain());
            }
            if (filter.getSchedulerId() != null && !filter.getSchedulerId().equals("")) {
                query.setText("schedulerId", filter.getSchedulerId());
            }
        }
        query.setMaxResults(filter.getLimit());

        List<SchedulerOrderHistoryDBItem> historyList = query.list();
        if (historyList.size() > 0) {
            return historyList.get(0);

        } else {
            return null;
        }
    }

    public SchedulerOrderHistoryFilter getFilter() {
        return filter;
    }

    public void resetFilter() {
        this.filter = new SchedulerOrderHistoryFilter();
        this.filter.setDateFormat("yyyy-MM-dd HH:mm:ss");
        this.filter.setOrderCriteria("startTime");
        this.filter.setSortMode("desc");
    }

    private void setFilter(SchedulerOrderHistoryFilter filter) {
        this.filter = filter;
    }

}