Package de.iritgo.aktera.scheduler.entity

Source Code of de.iritgo.aktera.scheduler.entity.ScheduleDAOImpl

/**
* This file is part of the Iritgo/Aktera Framework.
*
* Copyright (C) 2005-2011 Iritgo Technologies.
* Copyright (C) 2003-2005 BueroByte GbR.
*
* Iritgo 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 de.iritgo.aktera.scheduler.entity;


import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;


/**
* DAO implementation for schedule domain objects.
*/
@Transactional(readOnly = true)
public class ScheduleDAOImpl extends HibernateDaoSupport implements ScheduleDAO
{
  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#findScheduleById(java.lang.Integer)
   */
  public Schedule findScheduleById(Integer id)
  {
    return (Schedule) getHibernateTemplate().get(Schedule.class, id);
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#findAllSchedules()
   */
  public Collection<Schedule> findAllSchedules()
  {
    return getHibernateTemplate().find("from Schedule order by position");
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#findScheduleActionByType(java.lang.String)
   */
  public Collection<ScheduleAction> findScheduleActionByType(String type)
  {
    return getHibernateTemplate().find("from ScheduleAction where type = ?", type);
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#update(de.iritgo.aktera.scheduler.entity.ScheduleAction)
   */
  @Transactional(readOnly = false)
  public void update(ScheduleAction action)
  {
    getHibernateTemplate().update(action);
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#moveScheduleUp(de.iritgo.aktera.scheduler.entity.Schedule)
   */
  @Transactional(readOnly = false)
  public boolean moveScheduleUp(Schedule schedule)
  {
    synchronized (Schedule.class)
    {
      HibernateTemplate htl = getHibernateTemplate();

      if (schedule.getPosition() > 1)
      {
        List<Schedule> prevSchedules = htl.find("from Schedule where position = ?", schedule.getPosition() - 1);

        if (prevSchedules.size() > 0)
        {
          prevSchedules.get(0).setPosition(schedule.getPosition());
          htl.update(prevSchedules.get(0));
        }

        schedule.setPosition(schedule.getPosition() - 1);
        htl.update(schedule);

        return true;
      }

      return false;
    }
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#moveScheduleDown(de.iritgo.aktera.scheduler.entity.Schedule)
   */
  @Transactional(readOnly = false)
  public boolean moveScheduleDown(Schedule schedule)
  {
    synchronized (Schedule.class)
    {
      HibernateTemplate htl = getHibernateTemplate();
      Integer maxPosition = (Integer) htl.find("select max(position) from Schedule").get(0);

      if (schedule.getPosition() < maxPosition)
      {
        List<Schedule> nextSchedules = htl.find("from Schedule where position = ?", schedule.getPosition() + 1);

        if (nextSchedules.size() > 0)
        {
          nextSchedules.get(0).setPosition(schedule.getPosition());
          htl.update(nextSchedules.get(0));
        }

        schedule.setPosition(schedule.getPosition() + 1);
        htl.update(schedule);

        return true;
      }

      return false;
    }
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#moveScheduleToFront(de.iritgo.aktera.scheduler.entity.Schedule)
   */
  @Transactional(readOnly = false)
  public boolean moveScheduleToFront(Schedule schedule)
  {
    synchronized (Schedule.class)
    {
      HibernateTemplate htl = getHibernateTemplate();
      List<Schedule> prevSchedules = htl.find("from Schedule where position < ?", schedule.getPosition());

      for (Schedule prevSchedule : prevSchedules)
      {
        prevSchedule.setPosition(prevSchedule.getPosition() + 1);
        htl.update(prevSchedule);
      }

      if (schedule.getPosition() != 1)
      {
        schedule.setPosition(1);
        htl.update(schedule);

        return true;
      }

      return false;
    }
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#moveScheduleToEnd(de.iritgo.aktera.scheduler.entity.Schedule)
   */
  @Transactional(readOnly = false)
  public boolean moveScheduleToEnd(Schedule schedule)
  {
    synchronized (Schedule.class)
    {
      HibernateTemplate htl = getHibernateTemplate();
      Integer maxPosition = (Integer) htl.find("select max(position) from Schedule").get(0);
      List<Schedule> nextSchedules = htl.find("from Schedule where position > ?", schedule.getPosition());

      for (Schedule nextSchedule : nextSchedules)
      {
        nextSchedule.setPosition(nextSchedule.getPosition() - 1);
        htl.update(nextSchedule);
      }

      if (schedule.getPosition() != maxPosition)
      {
        schedule.setPosition(maxPosition);
        htl.update(schedule);

        return true;
      }

      return false;
    }
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#maxSchedulePosition()
   */
  public int maxSchedulePosition()
  {
    Integer maxPosition = (Integer) getHibernateTemplate().find("select max(position) from Schedule").get(0);

    return maxPosition != null ? maxPosition.intValue() : 0;
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#findScheduleActionById(java.lang.Integer)
   */
  public ScheduleAction findScheduleActionById(Integer id)
  {
    return (ScheduleAction) getHibernateTemplate().get(ScheduleAction.class, id);
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#findScheduleActionsByScheduleId(java.lang.Integer)
   */
  public List<ScheduleAction> findScheduleActionsByScheduleId(Integer scheduleId)
  {
    return getHibernateTemplate()
            .find("from ScheduleAction where scheduleId = ? order by position asc", scheduleId);
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#moveScheduleActionUp(de.iritgo.aktera.scheduler.entity.ScheduleAction)
   */
  @Transactional(readOnly = false)
  public boolean moveScheduleActionUp(ScheduleAction action)
  {
    synchronized (ScheduleAction.class)
    {
      HibernateTemplate htl = getHibernateTemplate();

      if (action.getPosition() > 1)
      {
        List<ScheduleAction> prevActions = htl.find(
                "from ScheduleAction where scheduleId = ? and position = ?", new Object[]
                {
                        action.getScheduleId(), action.getPosition() - 1
                });

        if (prevActions.size() > 0)
        {
          prevActions.get(0).setPosition(action.getPosition());
          htl.update(prevActions.get(0));
        }

        action.setPosition(action.getPosition() - 1);
        htl.update(action);

        return true;
      }

      return false;
    }
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#moveScheduleActionDown(de.iritgo.aktera.scheduler.entity.ScheduleAction)
   */
  @Transactional(readOnly = false)
  public boolean moveScheduleActionDown(ScheduleAction action)
  {
    synchronized (ScheduleAction.class)
    {
      HibernateTemplate htl = getHibernateTemplate();
      Integer maxPosition = (Integer) htl.find("select max(position) from ScheduleAction where scheduleId = ?",
              action.getScheduleId()).get(0);

      if (action.getPosition() < maxPosition)
      {
        List<ScheduleAction> nextActions = htl.find(
                "from ScheduleAction where scheduleId = ? and position = ?", new Object[]
                {
                        action.getScheduleId(), action.getPosition() + 1
                });

        if (nextActions.size() > 0)
        {
          nextActions.get(0).setPosition(action.getPosition());
          htl.update(nextActions.get(0));
        }

        action.setPosition(action.getPosition() + 1);
        htl.update(action);

        return true;
      }

      return false;
    }
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#moveScheduleActionToFront(de.iritgo.aktera.scheduler.entity.ScheduleAction)
   */
  @Transactional(readOnly = false)
  public boolean moveScheduleActionToFront(ScheduleAction action)
  {
    synchronized (ScheduleAction.class)
    {
      HibernateTemplate htl = getHibernateTemplate();
      List<ScheduleAction> prevActions = htl.find("from ScheduleAction where scheduleId = ? and position < ?",
              new Object[]
              {
                      action.getScheduleId(), action.getPosition()
              });

      for (ScheduleAction prevAction : prevActions)
      {
        prevAction.setPosition(prevAction.getPosition() + 1);
        htl.update(prevAction);
      }

      if (action.getPosition() != 1)
      {
        action.setPosition(1);
        htl.update(action);

        return true;
      }

      return false;
    }
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#moveScheduleActionToEnd(de.iritgo.aktera.scheduler.entity.ScheduleAction)
   */
  @Transactional(readOnly = false)
  public boolean moveScheduleActionToEnd(ScheduleAction action)
  {
    synchronized (ScheduleAction.class)
    {
      HibernateTemplate htl = getHibernateTemplate();
      Integer maxPosition = (Integer) htl.find("select max(position) from ScheduleAction where scheduleId = ?",
              action.getScheduleId()).get(0);
      List<ScheduleAction> nextActions = htl.find("from ScheduleAction where scheduleId = ? and position > ?",
              new Object[]
              {
                      action.getScheduleId(), action.getPosition()
              });

      for (ScheduleAction nextAction : nextActions)
      {
        nextAction.setPosition(nextAction.getPosition() - 1);
        htl.update(nextAction);
      }

      if (action.getPosition() != maxPosition)
      {
        action.setPosition(maxPosition);
        htl.update(action);

        return true;
      }

      return false;
    }
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#maxScheduleActionPosition(java.lang.Integer)
   */
  public int maxScheduleActionPosition(Integer scheduleId)
  {
    Integer maxPosition = (Integer) getHibernateTemplate().find(
            "select max(position) from ScheduleAction where scheduleId = ?", scheduleId).get(0);

    return maxPosition != null ? maxPosition.intValue() : 0;
  }

  /**
   * @see de.iritgo.aktera.scheduler.entity.ScheduleDAO#deleteAllActionsOfSchedule(de.iritgo.aktera.scheduler.entity.Schedule)
   */
  @Transactional(readOnly = false)
  public void deleteAllActionsOfSchedule(Schedule schedule)
  {
    getHibernateTemplate().bulkUpdate("delete from ScheduleAction where scheduleId = ?", schedule.getId());
  }
}
TOP

Related Classes of de.iritgo.aktera.scheduler.entity.ScheduleDAOImpl

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.