/** 获取更新操作的条件, force=是否强制返回非空条件 **/ public SimpleTreeWhere getWhere(boolean force) { if (where == null && force) { where = new SimpleTreeWhere(); } return where; }
/** 获取选项, force=是否强制返回非空对象 **/ public SimpleTreeOptions getOptions(boolean force) { if (options == null && force) { options = new SimpleTreeOptions(); } return options; }
/** * 根据条件删除基础树形数据 * * @param where 条件 * @param size 应删除条数, 0表示未知 * @param errorOnRowsNotMatch 删除行数不匹配时是否抛异常 * @param isId 是不是唯一主键 * @return 删除行数 * @throws ServiceException 删除失败 */ private int doDelete(SimpleTreeWhere where, int size, boolean errorOnRowsNotMatch) throws ServiceException { // 逻辑删除 if (where.getDataState() == null) { where.setDataState(DataState.NORMAL); } SimpleTreeUpdate model = new SimpleTreeUpdate(); model.setDataState(DataState.DELETED); model.setWhere(where); return doUpdate(model, size, errorOnRowsNotMatch); }
private void doUpdateIndex(ITreeScene useScene, SimpleTreeBean older, int sortIndex, boolean moveSelf, IUser me) throws ServiceException { if (sortIndex > older.getSortIndex()) { // 向后移 SimpleTreeUpdate ud = new SimpleTreeUpdate(); ud.setSortIndexAdd(-1); SimpleTreeWhere where = ud.getWhere(true); where.setSortIndexMin(older.getSortIndex() + 1); where.setSortIndexMax(sortIndex); where.setParent(older.getParent()); where.setFactoryCode(me.getFactoryCode()); simpleTreeBasic.update(ud, false); } else { // 向前移 SimpleTreeUpdate ud = new SimpleTreeUpdate(); ud.setSortIndexAdd(+1); SimpleTreeWhere where = ud.getWhere(true); where.setSortIndexMin(sortIndex); where.setSortIndexMax(older.getSortIndex() - 1); where.setParent(older.getParent()); where.setFactoryCode(me.getFactoryCode()); simpleTreeBasic.update(ud, false); SimpleTreeUpdate ud = new SimpleTreeUpdate(); ud.setSortIndex(sortIndex); SimpleTreeWhere where = ud.getWhere(true); where.setId(older.getId()); where.setFactoryCode(me.getFactoryCode()); simpleTreeBasic.update(ud, true);
throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); String root = String.valueOf(useScene.getCode()); if (!code.startsWith(root)) { log.error(msg + "code {} not starts with UseScene[{}].", code, root); SimpleTreeBean older = findByCodeThrowOnNotExists(new SimpleTreeCode(useScene, factoryCode, code), msg); int sortIndex = older.getSortIndex(); SimpleTreeUpdate ud = new SimpleTreeUpdate(); ud.setSortIndexAdd(-1); SimpleTreeWhere where = new SimpleTreeWhere(); where.setFactoryCode(factoryCode); where.setParent(older.getParent()); where.setSortIndexMin(sortIndex + 1); simpleTreeBasic.update(ud, false); SimpleTreeWhere where = new SimpleTreeWhere(); where.setCodeStarts(code); where.setParentStarts(root);
/** {@inheritDoc} **/ @Override public int update(SimpleTreeUpdate model, boolean errorOnUnaffected) throws ServiceException { String msg = "Failed to update SimpleTree. "; if (model == null) { log.error(msg + "params is null: model"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } SimpleTreeWhere where = model.getWhere(true); if (VerifyTools.isBlank(where.getId()) && VerifyTools.isNotBlank(model.getId())) { where.setId(model.getId()); } else if (VerifyTools.isBlank(where.getCode()) && VerifyTools.isNotBlank(model.getCode())) { where.setCode(model.getCode()); } model.setDataState(null); // 数据状态只允许通过删除操作来修改 if (where.getDataState() == null) { where.setDataState(DataState.NORMAL); } return doUpdate(model, 0, errorOnUnaffected); }
protected static void doHandleDate(SimpleTreeWhere model) { if (model == null) { return; } if (VerifyTools.isNotBlank(model.getCreateTime())) { // 创建时间 model.setCreateTime(DateTools.setMillisecond(model.getCreateTime(), 0)); } if (VerifyTools.isNotBlank(model.getCreateTimeMin())) { // 最小创建时间 model.setCreateTimeMin(DateTools.setMillisecond(model.getCreateTimeMin(), 0)); } if (VerifyTools.isNotBlank(model.getCreateTimeMinWithDay())) { // 最小创建时间 model.setCreateTimeMinWithDay(DateTools.toStartTime(model.getCreateTimeMinWithDay())); } if (VerifyTools.isNotBlank(model.getCreateTimeMax())) { // 最大创建时间 model.setCreateTimeMax(DateTools.setMillisecond(model.getCreateTimeMax(), 0)); } if (VerifyTools.isNotBlank(model.getCreateTimeMaxWithDay())) { // 最大创建时间 model.setCreateTimeMaxWithDay(DateTools.setMillisecond(DateTools.toEndTime(model.getCreateTimeMaxWithDay()), 0)); } } }
/** * 检查节点是否存在, 不存在则报错 * * @param model 节点信息 * @throws ServiceException */ private SimpleTreeBean findByCodeThrowOnNotExists(SimpleTreeCode model, String msg) throws ServiceException { SimpleTreeWhere where = new SimpleTreeWhere(); where.setCode(model.getCode()); where.setFactoryCode(model.getFactory()); where.setParentStarts(String.valueOf(model.getUseScene().getCode())); SimpleTreeBean bean = simpleTreeBasic.find(where); if (bean == null) { log.warn(msg + "SimpleTree not found, nodeCode=" + model.getCode()); throw new ServiceException(ResultCode.RECORD_NOT_EXIST); } return bean; }
/** 查询父节点列表, self=是否包含自身 **/ @Override public List<SimpleTreeBean> parents(SimpleTreeCode model, boolean self) throws ServiceException { ITreeScene useScene = model.getUseScene(); if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String code = model.getCode(); List<SimpleTreeBean> parents = new ArrayList<>(); if (VerifyTools.isBlank(code)) { return parents; } String root = String.valueOf(useScene.getCode()); if (!code.startsWith(root) || code.equals(root)) { return parents; } List<String> codes = tools.split(code, self); SimpleTreeWhere w = new SimpleTreeWhere(); w.setCodes(codes); PageList<SimpleTreeBean> temp = simpleTreeBasic.list(w, OrderPaging.NONE); for (String i : codes) { // 保证顺序 for (SimpleTreeBean bean : temp) { if (i.equals(bean.getCode())) { parents.add(bean); } } } return parents; }
/** 查询所有后代节点列表 **/ @Override public PageList<SimpleTreeBean> descendants(SimpleTreeCode model, OrderPaging paging) throws ServiceException { ITreeScene useScene = model.getUseScene(); if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String parent = model.getCode(); String root = String.valueOf(useScene.getCode()); if (VerifyTools.isBlank(parent)) { parent = root; } if (!parent.startsWith(root)) { return PageList.of(new ArrayList<>()); } SimpleTreeWhere where = new SimpleTreeWhere(); where.setParentStarts(parent); where.setLevelIndexMin(tools.level(parent) + 1); // 不包含parent自身 return simpleTreeBasic.list(where, paging); }
/** 查询节点详情 **/ @Override public SimpleTreeBean find(SimpleTreeCode model) throws ServiceException { ITreeScene useScene = model.getUseScene(); if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String code = model.getCode(); if (VerifyTools.isBlank(code)) { log.error("params is null: code"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String root = String.valueOf(useScene.getCode()); if (!code.startsWith(root)) { return null; } SimpleTreeWhere where = new SimpleTreeWhere(); where.setCode(code); return simpleTreeBasic.find(where); }
/** 查询子节点列表 **/ @Override public PageList<SimpleTreeBean> children(SimpleTreeCode model, OrderPaging paging) throws ServiceException { ITreeScene useScene = model.getUseScene(); if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String parent = model.getCode(); String root = String.valueOf(useScene.getCode()); if (VerifyTools.isBlank(parent)) { parent = root; } if (!parent.startsWith(root)) { return PageList.of(new ArrayList<>()); } SimpleTreeWhere where = new SimpleTreeWhere(); where.setParent(parent); return simpleTreeBasic.list(where, paging); }
protected static void doHandleDate(SimpleTreeBean model) { if (model == null) { return; } if (VerifyTools.isNotBlank(model.getCreateTime())) { // 创建时间 model.setCreateTime(DateTools.setMillisecond(model.getCreateTime(), 0)); } }
@Override public void updateIndex(ITreeScene useScene, String code, int sortIndex, IUser me) throws ServiceException { String msg = "Failed to update SimpleTreeNodeIndex. "; String root = String.valueOf(useScene.getCode()); if (!code.startsWith(root)) { log.error(msg + "code {} not starts with UseScene[{}].", code, root); throw new ServiceException(ResultCode.PARAMETER_VALUE_ERROR); } String factoryCode = me.getFactoryCode(); SimpleTreeBean older = findByCodeThrowOnNotExists(new SimpleTreeCode(useScene, factoryCode, code), msg); if (VerifyTools.equals(sortIndex, older.getSortIndex())) { return; } doUpdateIndex(useScene, older, sortIndex, true, me); }
/** {@inheritDoc} **/ @Override public PageList<SimpleTreeBean> listByIds(List<String> ids) throws ServiceException { String msg = "Failed to query SimpleTree by id list. "; if (VerifyTools.isBlank(ids)) { log.error(msg + "params is null: ids"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } SimpleTreeWhere where = new SimpleTreeWhere(); where.setIds(ids); return list(where, OrderPaging.NONE); }
/** {@inheritDoc} **/ @Override public SimpleTreeBean findByCode(String code) throws ServiceException { String msg = "Failed to query SimpleTree by code. "; if (VerifyTools.isBlank(code)) { log.error(msg + "params is null: code"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } SimpleTreeWhere where = new SimpleTreeWhere(); where.setCode(code); return find(where); }
/** {@inheritDoc} **/ @Override public SimpleTreeBean findById(String id) throws ServiceException { String msg = "Failed to query SimpleTree by id. "; if (VerifyTools.isBlank(id)) { log.error(msg + "params is null: id"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } SimpleTreeWhere where = new SimpleTreeWhere(); where.setId(id); return find(where); }
/** {@inheritDoc} **/ @Override public PageList<SimpleTreeBean> listByCodes(List<String> codes) throws ServiceException { String msg = "Failed to query SimpleTree by code list. "; if (VerifyTools.isBlank(codes)) { log.error(msg + "params is null: codes"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } SimpleTreeWhere where = new SimpleTreeWhere(); where.setCodes(codes); return list(where, OrderPaging.NONE); }
/** 查询节点列表 **/ @Override public PageList<SimpleTreeBean> list(ITreeScene useScene, SimpleTreeWhere where, OrderPaging paging) throws ServiceException { if (VerifyTools.isBlank(useScene)) { log.error("params is null: UseScene"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } String root = String.valueOf(useScene.getCode()); where.setParentStarts(root); return simpleTreeBasic.list(where, paging); }
/** {@inheritDoc} **/ @Override public PageList<SimpleTreeBean> list(OrderPaging paging) throws ServiceException { String msg = "Failed to query SimpleTree. "; if (paging == null) { log.error(msg + "params is null: paging"); throw new ServiceException(ResultCode.PARAMETER_IS_REQUIRED); } return list(new SimpleTreeWhere(), paging); }