1 24 package org.riotfamily.riot.hibernate.dao; 25 26 import java.util.Collection ; 27 import java.util.List ; 28 29 import org.riotfamily.common.beans.PropertyUtils; 30 import org.riotfamily.riot.dao.ListParams; 31 import org.riotfamily.riot.dao.SwappableItemDao; 32 33 public class HqlSortedCollectionDao extends HqlCollectionDao 34 implements SwappableItemDao { 35 36 private String positionProperty; 37 38 public void setPositionProperty(String positionProperty) { 39 this.positionProperty = positionProperty; 40 } 41 42 public void swapEntity(Object entity, Object parent, ListParams params, 43 int swapWith) { 44 45 List items = listInternal(parent, params); 46 Object nextItem = items.get(swapWith); 47 48 Collection c = getCollection(parent); 49 c.remove(entity); 50 c.remove(nextItem); 51 52 Object pos1 = PropertyUtils.getProperty(entity, positionProperty); 53 Object pos2 = PropertyUtils.getProperty(nextItem, positionProperty); 54 55 PropertyUtils.setProperty(entity, positionProperty, pos2); 56 PropertyUtils.setProperty(nextItem, positionProperty, pos1); 57 58 c.add(entity); 59 c.add(nextItem); 60 61 getSession().update(entity); 62 getSession().update(nextItem); 63 } 64 65 66 } 67 | Popular Tags |