@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;