Java tutorial
/** * 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; } }