Commit 4a69289c authored by lgcareer's avatar lgcareer
Browse files

add verify resource file is exists in hdfs

parent f72d647f
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -420,6 +420,41 @@ public class ResourcesService extends BaseService {
        return result;
    }

    /**
     * verify resource by name and type
     * @param name
     * @param type
     * @param loginUser
     * @return
     */
    public Result verifyResourceName(String name, ResourceType type,User loginUser) {
        Result result = new Result();
        putMsg(result, Status.SUCCESS);
        Resource resource = resourcesMapper.queryResourceByNameAndType(name, type.ordinal());
        if (resource != null) {
            logger.error("resource type:{} name:{} has exist, can't create again.", type, name);
            putMsg(result, Status.RESOURCE_EXIST);
        } else {
            // query tenant
            String tenantCode = tenantMapper.queryById(loginUser.getTenantId()).getTenantCode();

            try {
                String hdfsFilename = getHdfsFileName(type,tenantCode,name);
                if(HadoopUtils.getInstance().exists(hdfsFilename)){
                    logger.error("resource type:{} name:{} has exist in hdfs {}, can't create again.", type, name,hdfsFilename);
                    putMsg(result, Status.RESOURCE_FILE_EXIST,hdfsFilename);
                }

            } catch (Exception e) {
                logger.error(e.getMessage(),e);
                putMsg(result,Status.HDFS_OPERATION_ERROR);
            }
        }


        return result;
    }

    /**
     * verify resource by name and type
     *
@@ -815,6 +850,23 @@ public class ResourcesService extends BaseService {
        return hdfsFileName;
    }

    /**
     * get hdfs file name
     *
     * @param resourceType
     * @param tenantCode
     * @param hdfsFileName
     * @return
     */
    private String getHdfsFileName(ResourceType resourceType, String tenantCode, String hdfsFileName) {
        if (resourceType.equals(ResourceType.FILE)) {
            hdfsFileName = HadoopUtils.getHdfsFilename(tenantCode, hdfsFileName);
        } else if (resourceType.equals(ResourceType.UDF)) {
            hdfsFileName = HadoopUtils.getHdfsUdfFilename(tenantCode, hdfsFileName);
        }
        return hdfsFileName;
    }

    /**
     * get authorized resource list
     *