Search in sources :

Example 6 with BatchCatalogue

use of com.dtstack.taier.dao.domain.BatchCatalogue in project Taier by DTStack.

the class BatchCatalogueService method initCatalogue.

/**
 * 绑定租户时,初始化目录信息
 * @param tenantId
 * @param userId
 * @param componentVOS 根据控制台配置的组件信息,初始化相应的目录
 */
@Transactional(rollbackFor = Exception.class)
public void initCatalogue(Long tenantId, Long userId, List<ComponentVO> componentVOS) {
    // 离线各模块的 0 级目录,任务管理、函数管理、资源管理
    List<Dict> zeroBatchCatalogueDictList = dictService.listByDictType(DictType.DATA_DEVELOP_CATALOGUE);
    List<Integer> componentTypes = componentVOS.stream().map(ComponentVO::getComponentTypeCode).collect(Collectors.toList());
    // 根据控制台配置的组件信息,获取需要初始化的 1 级目录,任务开发、SparkSQL、资源管理 等
    List<Dict> oneBatchCatalogueDictList = this.initCatalogueDictLevelByEngineType(componentTypes);
    Map<String, Set<String>> oneCatalogueValueAndNameMapping = oneBatchCatalogueDictList.stream().collect(Collectors.groupingBy(Dict::getDictValue, Collectors.mapping(Dict::getDictDesc, Collectors.toSet())));
    for (Dict zeroDict : zeroBatchCatalogueDictList) {
        // 初始化 0 级目录
        BatchCatalogue zeroBatchCatalogue = new BatchCatalogue();
        zeroBatchCatalogue.setNodeName(zeroDict.getDictDesc());
        zeroBatchCatalogue.setNodePid(DEFAULT_NODE_PID);
        zeroBatchCatalogue.setOrderVal(zeroDict.getSort());
        zeroBatchCatalogue.setLevel(CatalogueLevel.ONE.getLevel());
        zeroBatchCatalogue.setTenantId(tenantId);
        zeroBatchCatalogue.setCreateUserId(userId);
        zeroBatchCatalogue.setCatalogueType(RdosBatchCatalogueTypeEnum.NORAML.getType());
        zeroBatchCatalogue = addOrUpdate(zeroBatchCatalogue);
        if (CollectionUtils.isNotEmpty(oneCatalogueValueAndNameMapping.get(zeroDict.getDictValue()))) {
            for (String oneCatalogueName : oneCatalogueValueAndNameMapping.get(zeroDict.getDictValue())) {
                // 初始化 1 级目录
                BatchCatalogue oneBatchCatalogue = new BatchCatalogue();
                oneBatchCatalogue.setNodeName(oneCatalogueName);
                oneBatchCatalogue.setLevel(CatalogueLevel.SECOND.getLevel());
                oneBatchCatalogue.setNodePid(zeroBatchCatalogue.getId());
                oneBatchCatalogue.setTenantId(tenantId);
                oneBatchCatalogue.setCreateUserId(userId);
                oneBatchCatalogue.setCatalogueType(RdosBatchCatalogueTypeEnum.NORAML.getType());
                addOrUpdate(oneBatchCatalogue);
                if (TASK_DEVELOPE.equals(oneCatalogueName)) {
                    // 初始化任务模版
                    initTemplateCatalogue(oneBatchCatalogue, tenantId, userId);
                }
                this.initEngineCatalogue(tenantId, userId, oneCatalogueName, oneBatchCatalogue);
            }
        }
    }
}
Also used : Set(java.util.Set) Dict(com.dtstack.taier.dao.domain.Dict) BatchCatalogue(com.dtstack.taier.dao.domain.BatchCatalogue) Transactional(org.springframework.transaction.annotation.Transactional)

Example 7 with BatchCatalogue

use of com.dtstack.taier.dao.domain.BatchCatalogue in project Taier by DTStack.

the class BatchCatalogueService method replaceSystemFunction.

/**
 * 根据目录类型查询对应的函数根目录
 * @param catalogueId
 * @param catalogueType
 * @param childCatalogues
 */
private void replaceSystemFunction(Long catalogueId, String catalogueType, List<BatchCatalogue> childCatalogues) {
    if (CatalogueType.SPARKSQL_FUNCTION.getType().equals(catalogueType)) {
        BatchCatalogue one = developCatalogueDao.getOne(catalogueId);
        EngineCatalogueType systemEngineType = EngineCatalogueType.getByeName(one == null ? null : one.getNodeName());
        // 需要将系统函数替换对应 引擎的函数模板
        BatchCatalogue systemFuncCatalogue = developCatalogueDao.getSystemFunctionCatalogueOne(systemEngineType.getType());
        if (systemFuncCatalogue == null) {
            return;
        }
        for (BatchCatalogue childCatalogue : childCatalogues) {
            if ("系统函数".equals(childCatalogue.getNodeName())) {
                childCatalogue.setNodePid(systemFuncCatalogue.getNodePid());
                childCatalogue.setId(systemFuncCatalogue.getId());
            }
        }
    }
}
Also used : EngineCatalogueType(com.dtstack.taier.common.enums.EngineCatalogueType) BatchCatalogue(com.dtstack.taier.dao.domain.BatchCatalogue)

Example 8 with BatchCatalogue

use of com.dtstack.taier.dao.domain.BatchCatalogue in project Taier by DTStack.

the class BatchCatalogueService method getGrandCatalogueId.

/**
 * 根据当前节点递归查询所有父节点列表
 * @param currentId
 * @param ids
 * @return 父节点列表
 */
private void getGrandCatalogueId(Long currentId, List<Long> ids) {
    BatchCatalogue catalogue = developCatalogueDao.getOne(currentId);
    if (catalogue != null && catalogue.getLevel() >= 1) {
        ids.add(catalogue.getNodePid());
        getGrandCatalogueId(catalogue.getNodePid(), ids);
    }
}
Also used : BatchCatalogue(com.dtstack.taier.dao.domain.BatchCatalogue)

Example 9 with BatchCatalogue

use of com.dtstack.taier.dao.domain.BatchCatalogue in project Taier by DTStack.

the class BatchCatalogueService method getCatalogueOne.

/**
 * 获取 租户 下的 0 级目录极其子目录
 * @param tenantId
 * @return
 */
public List<CatalogueVO> getCatalogueOne(Long tenantId) {
    // 查询 0 级目录
    List<BatchCatalogue> zeroCatalogues = developCatalogueDao.listByLevelAndTenantId(0, tenantId);
    // 从字典表中查询出初始化的 0 级目录
    List<Dict> zeroCatalogueDictList = dictService.listByDictType(DictType.DATA_DEVELOP_CATALOGUE);
    // 从字典表中查询出初始化的 1 级目录
    List<Dict> oneCatalogueDictList = dictService.listByDictType(DictType.DATA_DEVELOP_CATALOGUE_L1);
    // 0 级目录的中文和英文名称
    Map<String, String> zeroCatalogueType = zeroCatalogueDictList.stream().collect(Collectors.toMap(Dict::getDictDesc, Dict::getDictName, (key1, key2) -> key1));
    // 1 级目录的中文和英文名称
    Map<String, String> oneCatalogueType = oneCatalogueDictList.stream().collect(Collectors.toMap(Dict::getDictDesc, Dict::getDictName, (key1, key2) -> key1));
    List<CatalogueVO> zeroCatalogueVOList = new ArrayList<>(zeroCatalogues.size());
    for (BatchCatalogue zeroCatalogue : zeroCatalogues) {
        CatalogueVO zeroCatalogueVO = CatalogueVO.toVO(zeroCatalogue);
        zeroCatalogueVO.setCatalogueType(zeroCatalogueType.get(zeroCatalogue.getNodeName()));
        zeroCatalogueVO.setType(FILE_TYPE_FOLDER);
        zeroCatalogueVOList.add(zeroCatalogueVO);
        // 查询一级目录下的子目录
        List<BatchCatalogue> oneChildCatalogues = developCatalogueDao.listByPidAndTenantId(zeroCatalogue.getId(), tenantId);
        if (FUNCTION_MANAGER_NAME.equals(zeroCatalogue.getNodeName())) {
            // 如果是函数目录,默认添加上系统函数目录
            BatchCatalogue systemFuncCatalogue = developCatalogueDao.getSystemFunctionCatalogueOne(EngineCatalogueType.SPARK.getType());
            if (systemFuncCatalogue != null) {
                oneChildCatalogues.add(systemFuncCatalogue);
            }
        }
        List<CatalogueVO> oneChildCatalogueVOList = new ArrayList<>(oneChildCatalogues.size());
        for (BatchCatalogue oneChildCatalogue : oneChildCatalogues) {
            CatalogueVO oneChildCatalogueVO = CatalogueVO.toVO(oneChildCatalogue);
            if (EngineCatalogueType.SPARK.getDesc().equals(oneChildCatalogueVO.getName())) {
                // spark  函数管理 不是目录
                oneChildCatalogueVO.setType("catalogue");
            } else {
                oneChildCatalogueVO.setType("folder");
            }
            oneChildCatalogueVO.setCatalogueType(oneCatalogueType.get(oneChildCatalogue.getNodeName()));
            oneChildCatalogueVOList.add(oneChildCatalogueVO);
        }
        zeroCatalogueVO.setChildren(oneChildCatalogueVOList);
    }
    return zeroCatalogueVOList;
}
Also used : StringUtils(org.apache.commons.lang.StringUtils) UserService(com.dtstack.taier.develop.service.user.UserService) LoggerFactory(org.slf4j.LoggerFactory) LocalDateTime(java.time.LocalDateTime) CatalogueType(com.dtstack.taier.common.enums.CatalogueType) Autowired(org.springframework.beans.factory.annotation.Autowired) RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException) HashMap(java.util.HashMap) BatchCatalogue(com.dtstack.taier.dao.domain.BatchCatalogue) BatchCatalogueVO(com.dtstack.taier.develop.dto.devlop.BatchCatalogueVO) EngineCatalogueType(com.dtstack.taier.common.enums.EngineCatalogueType) ArrayList(java.util.ArrayList) Dict(com.dtstack.taier.dao.domain.Dict) BatchTaskGetComponentVersionResultVO(com.dtstack.taier.develop.vo.develop.result.BatchTaskGetComponentVersionResultVO) Lists(com.google.common.collect.Lists) CatalogueLevel(com.dtstack.taier.common.enums.CatalogueLevel) DevelopCatalogueDao(com.dtstack.taier.dao.mapper.DevelopCatalogueDao) CollectionUtils(org.apache.commons.collections.CollectionUtils) Service(org.springframework.stereotype.Service) Map(java.util.Map) CatalogueVO(com.dtstack.taier.develop.dto.devlop.CatalogueVO) ComputeType(com.dtstack.taier.common.enums.ComputeType) ErrorCode(com.dtstack.taier.common.exception.ErrorCode) BatchFunction(com.dtstack.taier.dao.domain.BatchFunction) TemplateCatalogue(com.dtstack.taier.develop.enums.develop.TemplateCatalogue) BatchTask(com.dtstack.taier.dao.domain.BatchTask) Logger(org.slf4j.Logger) DictType(com.dtstack.taier.common.enums.DictType) ReadWriteLockType(com.dtstack.taier.common.enums.ReadWriteLockType) Timestamp(java.sql.Timestamp) Set(java.util.Set) BatchResource(com.dtstack.taier.dao.domain.BatchResource) ScheduleDictService(com.dtstack.taier.scheduler.service.ScheduleDictService) Maps(com.google.common.collect.Maps) Collectors(java.util.stream.Collectors) RdosBatchCatalogueTypeEnum(com.dtstack.taier.develop.enums.develop.RdosBatchCatalogueTypeEnum) Sets(com.google.common.collect.Sets) TaskResourceParam(com.dtstack.taier.develop.dto.devlop.TaskResourceParam) EComponentType(com.dtstack.taier.common.enums.EComponentType) Objects(java.util.Objects) List(java.util.List) ComponentVO(com.dtstack.taier.scheduler.vo.ComponentVO) ReadWriteLockVO(com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO) EScheduleJobType(com.dtstack.taier.common.enums.EScheduleJobType) Comparator(java.util.Comparator) Deleted(com.dtstack.taier.common.enums.Deleted) BeanUtils(org.springframework.beans.BeanUtils) Transactional(org.springframework.transaction.annotation.Transactional) BatchCatalogueVO(com.dtstack.taier.develop.dto.devlop.BatchCatalogueVO) CatalogueVO(com.dtstack.taier.develop.dto.devlop.CatalogueVO) Dict(com.dtstack.taier.dao.domain.Dict) ArrayList(java.util.ArrayList) BatchCatalogue(com.dtstack.taier.dao.domain.BatchCatalogue)

Example 10 with BatchCatalogue

use of com.dtstack.taier.dao.domain.BatchCatalogue in project Taier by DTStack.

the class BatchCatalogueService method updateCatalogue.

/**
 * 更新目录(移动和重命名)
 */
public void updateCatalogue(BatchCatalogueVO catalogueInput) {
    BatchCatalogue catalogue = developCatalogueDao.getOne(catalogueInput.getId());
    catalogueOneNotUpdate(catalogue);
    if (catalogue == null || catalogue.getIsDeleted() == 1) {
        throw new RdosDefineException(ErrorCode.CAN_NOT_FIND_CATALOGUE);
    }
    if (canNotMoveCatalogue(catalogueInput.getId(), catalogueInput.getNodePid())) {
        throw new RdosDefineException(ErrorCode.CAN_NOT_MOVE_CATALOGUE);
    }
    BatchCatalogue updateCatalogue = new BatchCatalogue();
    updateCatalogue.setId(catalogueInput.getId());
    // 重命名
    if (catalogueInput.getNodeName() != null) {
        updateCatalogue.setNodeName(catalogueInput.getNodeName());
    }
    // 移动
    if (catalogueInput.getNodePid() != null && catalogueInput.getNodePid() != 0) {
        int parentLevel = this.isOverLevelLimit(catalogueInput.getNodePid());
        updateCatalogue.setLevel(parentLevel + 1);
        updateCatalogue.setNodePid(catalogueInput.getNodePid());
    } else {
        updateCatalogue.setNodePid(catalogue.getNodePid());
    }
    // 判断移动的目录下 有没有相同名称的文件夹
    BatchCatalogue byLevelAndPIdAndTenantIdAndName = developCatalogueDao.getBeanByTenantIdAndNameAndParentId(catalogue.getTenantId(), updateCatalogue.getNodeName(), updateCatalogue.getNodePid());
    if (byLevelAndPIdAndTenantIdAndName != null && (!byLevelAndPIdAndTenantIdAndName.getId().equals(catalogue.getId()))) {
        throw new RdosDefineException(ErrorCode.FILE_NAME_REPETITION);
    }
    updateCatalogue.setGmtModified(Timestamp.valueOf(LocalDateTime.now()));
    addOrUpdate(updateCatalogue);
}
Also used : RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException) BatchCatalogue(com.dtstack.taier.dao.domain.BatchCatalogue)

Aggregations

BatchCatalogue (com.dtstack.taier.dao.domain.BatchCatalogue)12 RdosDefineException (com.dtstack.taier.common.exception.RdosDefineException)8 BatchResource (com.dtstack.taier.dao.domain.BatchResource)5 BatchTask (com.dtstack.taier.dao.domain.BatchTask)4 Dict (com.dtstack.taier.dao.domain.Dict)4 CatalogueVO (com.dtstack.taier.develop.dto.devlop.CatalogueVO)4 ArrayList (java.util.ArrayList)4 ReadWriteLockVO (com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO)3 TaskResourceParam (com.dtstack.taier.develop.dto.devlop.TaskResourceParam)3 BatchTaskGetComponentVersionResultVO (com.dtstack.taier.develop.vo.develop.result.BatchTaskGetComponentVersionResultVO)3 HashMap (java.util.HashMap)3 List (java.util.List)3 Map (java.util.Map)3 Set (java.util.Set)3 CatalogueType (com.dtstack.taier.common.enums.CatalogueType)2 Deleted (com.dtstack.taier.common.enums.Deleted)2 DictType (com.dtstack.taier.common.enums.DictType)2 EComponentType (com.dtstack.taier.common.enums.EComponentType)2 EScheduleJobType (com.dtstack.taier.common.enums.EScheduleJobType)2 EngineCatalogueType (com.dtstack.taier.common.enums.EngineCatalogueType)2