com.sos.dailyschedule.db.DailyScheduleDBLayer.java Source code

Java tutorial

Introduction

Here is the source code for com.sos.dailyschedule.db.DailyScheduleDBLayer.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.dailyschedule.db;

import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.hibernate.Query;

import com.sos.dailyschedule.DailyScheduleFilter;
import com.sos.hibernate.layer.SOSHibernateIntervalDBLayer;
import com.sos.scheduler.history.db.SchedulerOrderHistoryDBItem;
import com.sos.scheduler.history.db.SchedulerTaskHistoryDBItem;

/**
 * 
 * \class DailySchedulerDBLayer \brief DailySchedulerDBLayer -
 * 
 * \details
 * 
 * \section DailySchedulerDBLayer.java_intro_sec Introduction
 * 
 * \section DailySchedulerDBLayer.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 13.09.2011 \see reference
 * 
 * Created on 13.09.2011 14:40:18
 */

public class DailyScheduleDBLayer extends SOSHibernateIntervalDBLayer {

    @SuppressWarnings("unused")
    private final String conClassName = "DailySchedulerDBLayer";

    private String whereFromIso = null;
    private String whereToIso = null;
    private DailyScheduleFilter filter = null;

    public DailyScheduleDBLayer(final File configurationFile_) {
        super();
        this.setConfigurationFile(configurationFile_);
        resetFilter();
    }

    public DailyScheduleDBItem getHistory(final Long id) {
        return (DailyScheduleDBItem) this.getSession().get(DailyScheduleDBItem.class, id);
    }

    public void resetFilter() {
        filter = new DailyScheduleFilter();
        filter.setExecutedFrom(new Date());
        filter.setShowJobs(true);
        filter.setShowJobChains(true);
        filter.setLate(false);
        filter.setSchedulerId("");
        filter.setSearchFiled("");
        filter.setStatus("");
    }

    public int delete() {

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

        String hql = "delete from DailyScheduleDBItem " + getWhere();

        Query query = session.createQuery(hql);

        if (filter.getPlannedUtcFrom() != null && !filter.getPlannedUtcFrom().equals("")) {
            query.setTimestamp("schedulePlannedFrom", filter.getPlannedUtcFrom());
        }
        if (filter.getPlannedUtcTo() != null && !filter.getPlannedUtcTo().equals("")) {
            query.setTimestamp("schedulePlannedTo", filter.getPlannedUtcTo());
        }
        if (filter.getSchedulerId() != null && !filter.getSchedulerId().equals("")) {
            query.setParameter("schedulerId", filter.getSchedulerId());
        }
        int row = query.executeUpdate();

        return row;
    }

    public int deleteInterval() {

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

        String hql = "delete from DailyScheduleDBItem " + getWhere();

        Query query = session.createQuery(hql);

        if (filter.getPlannedUtcFrom() != null) {
            query.setTimestamp("schedulePlannedFrom", filter.getPlannedUtcFrom());
        }
        if (filter.getPlannedUtcTo() != null) {
            query.setTimestamp("schedulePlannedTo", filter.getPlannedUtcTo());
        }

        int row = query.executeUpdate();

        return row;
    }

    private String getWhere() {
        String where = "";
        String and = "";

        if (filter.getPlannedUtcFrom() != null && !filter.getPlannedUtcFrom().equals("")) {
            where += and + " schedulePlanned>= :schedulePlannedFrom";
            and = " and ";
        }

        if (filter.getPlannedUtcTo() != null && !filter.getPlannedUtcTo().equals("")) {
            where += and + " schedulePlanned <= :schedulePlannedTo ";
            and = " and ";
        }

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

        if (where.trim().equals("")) {

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

    }

    public List<DailyScheduleDBItem> getDailyScheduleList(final int limit) {
        initSession();

        Query query = session.createQuery(
                "from DailyScheduleDBItem " + getWhere() + filter.getOrderCriteria() + filter.getSortMode());

        if (filter.getPlannedUtcFrom() != null && !filter.getPlannedUtcFrom().equals("")) {
            query.setTimestamp("schedulePlannedFrom", filter.getPlannedUtcFrom());
        }
        if (filter.getPlannedUtcTo() != null && !filter.getPlannedUtcTo().equals("")) {
            query.setTimestamp("schedulePlannedTo", filter.getPlannedUtcTo());
        }
        if (filter.getSchedulerId() != null && !filter.getSchedulerId().equals("")) {
            query.setParameter("schedulerId", filter.getSchedulerId());
        }

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

        @SuppressWarnings("unchecked")
        List<DailyScheduleDBItem> daysScheduleList = query.list();
        return daysScheduleList;

    }

    private List<DailyScheduleDBItem> executeQuery(Query query, int limit) {
        if (filter.getPlannedUtcFrom() != null && !filter.getPlannedUtcFrom().equals("")) {
            query.setTimestamp("schedulePlannedFrom", filter.getPlannedUtcFrom());
        }
        if (filter.getPlannedUtcTo() != null && !filter.getPlannedUtcTo().equals("")) {
            query.setTimestamp("schedulePlannedTo", filter.getPlannedUtcTo());
        }
        if (filter.getSchedulerId() != null && !filter.getSchedulerId().equals("")) {
            query.setParameter("schedulerId", filter.getSchedulerId());
        }

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

        List<DailyScheduleDBItem> daysScheduleList = query.list();
        return daysScheduleList;

    }

    public List<DailyScheduleDBItem> getDailyScheduleSchedulerList(int limit) {
        initSession();
        String q = "from DailyScheduleDBItem e where e.schedulerId IN (select DISTINCT schedulerId from DailyScheduleDBItem "
                + getWhere() + ")";

        Query query = session.createQuery(q);
        return executeQuery(query, limit);
    }

    public List<DailyScheduleDBItem> getWaitingDailyScheduleList(final int limit) {
        initSession();

        Query query = session.createQuery("from DailyScheduleDBItem " + getWhere()
                + "  and schedulerOrderHistoryId is null  and schedulerHistoryId is null and status = 0  "
                + filter.getOrderCriteria() + filter.getSortMode());

        return executeQuery(query, limit);

    }

    public DailyScheduleFilter getFilter() {
        return filter;
    }

    public void setWhereFrom(final Date whereFrom) {
        filter.setPlannedFrom(whereFrom);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        whereFromIso = formatter.format(whereFrom);
    }

    public void setWhereTo(final Date whereTo) {
        filter.setPlannedTo(whereTo);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        whereToIso = formatter.format(whereTo);
    }

    public void setWhereFrom(final String whereFrom) throws ParseException {
        if (whereFrom.equals("")) {
            filter.setPlannedFrom("");
        } else {
            SimpleDateFormat formatter = new SimpleDateFormat(filter.getDateFormat());
            Date d = formatter.parse(whereFrom);
            setWhereFrom(d);
        }
    }

    public void setWhereTo(final String whereTo) throws ParseException {
        if (whereTo.equals("")) {
            filter.setPlannedTo("");
        } else {
            SimpleDateFormat formatter = new SimpleDateFormat(filter.getDateFormat());
            Date d = formatter.parse(whereTo);
            setWhereTo(d);
        }
    }

    public Date getWhereFrom() {
        return filter.getPlannedUtcFrom();
    }

    public Date getWhereTo() {
        return filter.getPlannedUtcTo();
    }

    public void setWhereSchedulerId(final String whereSchedulerId) {
        filter.setSchedulerId(whereSchedulerId);
    }

    public void setDateFormat(final String dateFormat) {
        filter.setDateFormat(dateFormat);
    }

    public String getWhereFromIso() {
        return whereFromIso;
    }

    public String getWhereToIso() {
        return whereToIso;
    }

    public void setFilter(final DailyScheduleFilter filter) {
        this.filter = filter;
    }

    public boolean contains(final SchedulerTaskHistoryDBItem schedulerHistoryDBItem) {
        if (session == null) {
            initSession();
            transaction = session.beginTransaction();
        }
        Query query = session.createQuery(
                "from DailyScheduleDBItem where schedulerId=:schedulerId and schedulerHistoryId=:schedulerHistoryId");
        query.setParameter("schedulerId", schedulerHistoryDBItem.getSpoolerId());
        query.setParameter("schedulerHistoryId", schedulerHistoryDBItem.getId());

        @SuppressWarnings("unchecked")
        List<DailyScheduleDBItem> daysScheduleList = query.list();
        return daysScheduleList.size() > 0;
    }

    public boolean contains(final SchedulerOrderHistoryDBItem schedulerOrderHistoryDBItem) {
        if (session == null) {
            initSession();
            transaction = session.beginTransaction();
        }
        Query query = session.createQuery(
                "from DailyScheduleDBItem where schedulerId=:schedulerId and jobChain=:jobChain and schedulerOrderHistoryId=:schedulerOrderHistoryId");
        query.setParameter("schedulerId", schedulerOrderHistoryDBItem.getSpoolerId());
        query.setParameter("schedulerOrderHistoryId", schedulerOrderHistoryDBItem.getHistoryId());
        query.setParameter("jobChain", schedulerOrderHistoryDBItem.getJobChain());
        @SuppressWarnings("unchecked")
        List<DailyScheduleDBItem> daysScheduleList = query.list();
        return daysScheduleList.size() > 0;
    }

}