Index: lams_common/src/java/org/lamsfoundation/lams/planner/dao/hibernate/PedagogicalPlannerDAOHibernate.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/planner/dao/hibernate/PedagogicalPlannerDAOHibernate.java,v diff -u -r1.7 -r1.8 --- lams_common/src/java/org/lamsfoundation/lams/planner/dao/hibernate/PedagogicalPlannerDAOHibernate.java 17 Dec 2009 06:29:39 -0000 1.7 +++ lams_common/src/java/org/lamsfoundation/lams/planner/dao/hibernate/PedagogicalPlannerDAOHibernate.java 4 Jan 2010 03:13:52 -0000 1.8 @@ -48,8 +48,10 @@ + PedagogicalPlannerSequenceNode.class.getName() + " AS n WHERE n.uid=?"; private static final String FIND_MAX_ORDER_ID = "SELECT MAX(n.order) FROM " + PedagogicalPlannerSequenceNode.class.getName() + " AS n WHERE n.parent.uid=?"; - private static final String FIND_NEIGHBOUR_NODE = "FROM " + PedagogicalPlannerSequenceNode.class.getName() - + " AS n WHERE ((? IS NULL AND n.parent=NULL) OR n.parent.uid=?) AND n.order=?"; + private static final String FIND_NEIGHBOUR_NODE_ASC = "FROM " + PedagogicalPlannerSequenceNode.class.getName() + + " AS n WHERE ((? IS NULL AND n.parent=NULL) OR n.parent.uid=?) AND n.order>=?"; + private static final String FIND_NEIGHBOUR_NODE_DESC = "FROM " + PedagogicalPlannerSequenceNode.class.getName() + + " AS n WHERE ((? IS NULL AND n.parent=NULL) OR n.parent.uid=?) AND n.order<=? ORDER BY n.order DESC"; private static final String GET_PLANNER_NODE_ROLE = "FROM " + PedagogicalPlannerNodeRole.class.getName() + " WHERE user.userId=? AND node.uid=? AND role.roleId=?"; private static final String GET_PLANNER_NODE_ROLE_USERS = "SELECT p.user FROM " @@ -119,9 +121,10 @@ public PedagogicalPlannerSequenceNode getNeighbourNode(PedagogicalPlannerSequenceNode node, Integer orderDelta) { Integer order = node.getOrder() + orderDelta; Long parentUid = node.getParent() == null ? null : node.getParent().getUid(); - return (PedagogicalPlannerSequenceNode) getHibernateTemplate().find( - PedagogicalPlannerDAOHibernate.FIND_NEIGHBOUR_NODE, new Object[] { parentUid, parentUid, order }) - .get(0); + String query = (orderDelta < 0) ? PedagogicalPlannerDAOHibernate.FIND_NEIGHBOUR_NODE_DESC + : PedagogicalPlannerDAOHibernate.FIND_NEIGHBOUR_NODE_ASC; + return (PedagogicalPlannerSequenceNode) getHibernateTemplate().find(query, + new Object[] { parentUid, parentUid, order }).get(0); } private List getPlannerNodeRoles(Integer userId, Long nodeUid, Integer roleId) {