@Override public RolePermissionVO persist(final RolePermissionVO item) { item.setSortOrder(0); final List<RolePermissionVO> permissionsList = findAllByRoleIdSorted(item.getRoleId()); if (permissionsList != null && permissionsList.size() > 0) { RolePermission lastRule = permissionsList.get(permissionsList.size() - 1); item.setSortOrder(lastRule.getSortOrder() + 1); } return super.persist(item); }
private boolean updateSortOrder(final RolePermissionVO permissionBeingMoved, final RolePermissionVO parentPermission) { if (parentPermission != null && permissionBeingMoved.getId() == parentPermission.getId()) { return true; } final List<RolePermissionVO> newOrderedPermissionsList = new ArrayList<>(); // Null parent implies item needs to move to the top if (parentPermission == null) { newOrderedPermissionsList.add(permissionBeingMoved); } for (final RolePermissionVO permission : findAllByRoleIdSorted(permissionBeingMoved.getRoleId())) { if (permission.getId() == permissionBeingMoved.getId()) { continue; } newOrderedPermissionsList.add(permission); if (parentPermission != null && permission.getId() == parentPermission.getId()) { newOrderedPermissionsList.add(permissionBeingMoved); } } long sortOrder = 0L; for (final RolePermissionVO permission : newOrderedPermissionsList) { permission.setSortOrder(sortOrder++); if (!update(permission.getId(), permission)) { LOGGER.warn("Failed to update item's sort order with id:" + permission.getId() + " while moving permission with id:" + permissionBeingMoved.getId() + " to a new position"); return false; } } return true; }
public RolePermissionsDaoImpl() { super(); RolePermissionsSearch = createSearchBuilder(); RolePermissionsSearch.and("uuid", RolePermissionsSearch.entity().getUuid(), SearchCriteria.Op.EQ); RolePermissionsSearch.and("roleId", RolePermissionsSearch.entity().getRoleId(), SearchCriteria.Op.EQ); RolePermissionsSearch.and("sortOrder", RolePermissionsSearch.entity().getSortOrder(), SearchCriteria.Op.EQ); RolePermissionsSearch.done(); sortOrderAttribute = _allAttributes.get("sortOrder"); assert (sortOrderAttribute != null) : "Couldn't find one of these attributes"; }