public List<?> copyParam(Long paramId, Long toParamId) { Param copyParam = paramDao.getEntity(paramId); Param toParam = paramDao.getEntity(toParamId); Long copyParamId = copyParam.getId(); List<?> params = paramDao.getChildrenById(copyParamId); Map<Long, Long> paramMapping = new HashMap<Long, Long>(); // 复制出来的新节点 与 被复制源节点 建立一一对应关系(ID 对 ID) for (int i = 0; i < params.size(); i++) { Param param = (Param) params.get(i); Long sourceParamId = param.getId(); paramDao.evict(param); param.setId(null); if (sourceParamId.compareTo(copyParamId) == 0) { param.setParentId(toParam.getId()); param.setSeqNo(paramDao.getNextSeqNo(toParam.getId())); } else { param.setParentId(paramMapping.get(param.getParentId())); } // 如果目标根节点是停用状态,则所有新复制出来的节点也一律为停用状态 param.setDisabled(toParam.getDisabled()); judgeLegit(param, ParamConstants.EDIT_FLAG); paramDao.create(param); paramMapping.put(sourceParamId, param.getId()); } return params; }
private List<?> copyParamLocal(Param copyParam) { List<?> params = paramDao.getChildrenById(copyParam.getId()); Map<Long, Long> paramMapping = new HashMap<Long, Long>(); // 复制出来的新节点 与 被复制源节点 建立一一对应关系(ID 对 ID) for (int i = 0; i < params.size(); i++) { Param param = (Param) params.get(i); Long sourceParamId = param.getId(); paramDao.evict(param); param.setId(null); if (sourceParamId.compareTo(copyParam.getId()) == 0) { // 复制指定节点 if (ParamConstants.GROUP_PARAM_TYPE.equals(copyParam.getType())) { param.setName(ParamConstants.COPY_PREFIX_NAME + copyParam.getName()); } else if (ParamConstants.NORMAL_PARAM_TYPE.equals(copyParam.getType())) { param.setCode(ParamConstants.COPY_PREFIX_CODE + copyParam.getCode()); param.setName(ParamConstants.COPY_PREFIX_NAME + copyParam.getName()); } else { param.setText(ParamConstants.COPY_PREFIX_NAME + copyParam.getText()); } param.setSeqNo(paramDao.getNextSeqNo(copyParam.getParentId())); } // 复制指定节点的儿孙节点 else { param.setParentId(paramMapping.get(param.getParentId())); } paramDao.create(param); paramMapping.put(sourceParamId, param.getId()); } return params; }
public void delete(Long id) { // 一并删除子节点 List<?> params = paramDao.getChildrenById(id); for (Object entity : params) { Param param = (Param) entity; paramDao.delete(param); // 刷新参数缓存,如果删除的是缓存项,则需要手动的刷新其所属的参数节点 ParamManager.remove(param.getCode()); } }
public void startOrStop(Long paramId, Integer disabled) { List<?> datas = ParamConstants.TRUE.equals(disabled) ? paramDao.getChildrenById(paramId) : paramDao.getParentsById(paramId); for (int i = 0; i < datas.size(); i++) { Param param = (Param) datas.get(i); param.setDisabled(disabled); paramDao.updateWithoutFlush(param); } paramDao.flush(); }
public void delete(Long id) { checkPermission(id); // 一并删除子节点 List<?> children = paramDao.getChildrenById(id); for (Object entity : children) { Param item = (Param) entity; if (id.equals(item.getId())) { fireListener(item); /* 在执行delete前触发触发器,否则执行如getParentsById等查询时,因o1已经删除,将查询不到数据 */ item = paramDao.getEntity(id); } paramDao.delete(item); } }
public void move(Long paramId, Long toParamId) { List<?> params = paramDao.getChildrenById(paramId); for (int i = 0; i < params.size(); i++) { Param param = (Param) params.get(i); if (param.getId().equals(paramId)) { // 判断是否是移动节点(即被移动枝的根节点) param.setSeqNo(paramDao.getNextSeqNo(toParamId)); param.setParentId(toParamId); } // 如果目标根节点是停用状态,则所有新复制出来的节点也一律为停用状态 if (toParamId.longValue() > 0) { // 非_root Param toParam = paramDao.getEntity(toParamId); param.setDisabled(toParam.getDisabled()); } paramDao.update(param); } }
public void move(Long paramId, Long toParamId) { List<?> params = paramDao.getChildrenById(paramId); Param toParam = paramDao.getEntity(toParamId); for (int i = 0; i < params.size(); i++) { Param param = (Param) params.get(i); if (param.getId().equals(paramId)) { // 判断是否是移动节点(即被移动枝的根节点) param.setSeqNo(paramDao.getNextSeqNo(toParamId)); param.setParentId(toParamId); } if (ParamConstants.TRUE.equals(toParam.getDisabled())) { param.setDisabled(ParamConstants.TRUE); // 如果目标根节点是停用状态,则所有新复制出来的节点也一律为停用状态 } judgeLegit(param, ParamConstants.EDIT_FLAG); paramDao.update(param); } }