Search in sources :

Example 16 with Progress

use of com.ctrip.platform.dal.daogen.entity.Progress in project dal by ctripcorp.

the class JavaDataPreparerOfFreeSqlProcessor method prepareFreeSql.

private List<Callable<ExecuteResult>> prepareFreeSql(CodeGenContext codeGenCtx) {
    JavaCodeGenContext ctx = (JavaCodeGenContext) codeGenCtx;
    int projectId = ctx.getProjectId();
    final Progress progress = ctx.getProgress();
    final String namespace = ctx.getNamespace();
    final Map<String, JavaMethodHost> _freeSqlPojoHosts = ctx.get_freeSqlPojoHosts();
    final Queue<FreeSqlHost> _freeSqlHosts = ctx.getFreeSqlHosts();
    DaoByFreeSql daoByFreeSql = SpringBeanGetter.getDaoByFreeSql();
    List<GenTaskByFreeSql> freeSqlTasks;
    if (ctx.isRegenerate()) {
        freeSqlTasks = daoByFreeSql.updateAndGetAllTasks(projectId);
        prepareDbFromFreeSql(ctx, freeSqlTasks);
    } else {
        freeSqlTasks = daoByFreeSql.updateAndGetTasks(projectId);
        prepareDbFromFreeSql(ctx, daoByFreeSql.getTasksByProjectId(projectId));
    }
    if (!ctx.isIgnoreApproveStatus() && freeSqlTasks != null && freeSqlTasks.size() > 0) {
        Iterator<GenTaskByFreeSql> ite = freeSqlTasks.iterator();
        while (ite.hasNext()) {
            int approved = ite.next().getApproved();
            if (approved != 2 && approved != 0) {
                ite.remove();
            }
        }
    }
    // 按照DbName以及ClassName做一次GroupBy(相同DbName的GenTaskByFreeSql作为一组),且ClassName不区分大小写
    final Map<String, List<GenTaskByFreeSql>> groupBy = freeSqlGroupBy(freeSqlTasks);
    List<Callable<ExecuteResult>> results = new ArrayList<>();
    // 以DbName以及ClassName为维度,为每个维度生成一个DAO类
    for (final Map.Entry<String, List<GenTaskByFreeSql>> entry : groupBy.entrySet()) {
        Callable<ExecuteResult> worker = new Callable<ExecuteResult>() {

            @Override
            public ExecuteResult call() throws Exception {
                ExecuteResult result = new ExecuteResult("Build  Free SQL[" + entry.getKey() + "] Host");
                progress.setOtherMessage(result.getTaskName());
                List<GenTaskByFreeSql> currentTasks = entry.getValue();
                if (currentTasks.size() < 1)
                    return result;
                FreeSqlHost host = new FreeSqlHost();
                host.setDbSetName(currentTasks.get(0).getDatabaseSetName());
                host.setClassName(currentTasks.get(0).getClass_name());
                host.setPackageName(namespace);
                host.setDatabaseCategory(getDatabaseCategory(currentTasks.get(0).getAllInOneName()));
                List<JavaMethodHost> methods = new ArrayList<>();
                // 每个Method可能就有一个Pojo
                for (GenTaskByFreeSql task : currentTasks) {
                    JavaMethodHost method = new JavaMethodHost();
                    method.setSql(task.getSql_content());
                    method.setName(task.getMethod_name());
                    method.setPackageName(namespace);
                    method.setScalarType(task.getScalarType());
                    method.setPojoType(task.getPojoType());
                    method.setPaging(task.isPagination());
                    method.setCrud_type(task.getCrud_type());
                    method.setComments(task.getComment());
                    if (task.getPojo_name() != null && !task.getPojo_name().isEmpty())
                        method.setPojoClassName(WordUtils.capitalize(task.getPojo_name() + "Pojo"));
                    List<JavaParameterHost> params = new ArrayList<>();
                    for (String param : StringUtils.split(task.getParameters(), ";")) {
                        String[] splitedParam = StringUtils.split(param, ",");
                        JavaParameterHost p = new JavaParameterHost();
                        p.setName(splitedParam[0]);
                        p.setSqlType(Integer.valueOf(splitedParam[1]));
                        p.setJavaClass(Consts.jdbcSqlTypeToJavaClass.get(p.getSqlType()));
                        p.setValidationValue(DbUtils.mockATest(p.getSqlType()));
                        boolean sensitive = splitedParam.length >= 3 ? Boolean.parseBoolean(splitedParam[2]) : false;
                        p.setSensitive(sensitive);
                        params.add(p);
                    }
                    SqlBuilder.rebuildJavaInClauseSQL(task.getSql_content(), params);
                    method.setParameters(params);
                    method.setHints(task.getHints());
                    methods.add(method);
                    if (method.getPojoClassName() != null && !method.getPojoClassName().isEmpty() && !_freeSqlPojoHosts.containsKey(method.getPojoClassName()) && !"update".equalsIgnoreCase(method.getCrud_type())) {
                        List<JavaParameterHost> paramHosts = new ArrayList<>();
                        for (AbstractParameterHost _ahost : DbUtils.testAQuerySql(task.getAllInOneName(), task.getSql_content(), task.getParameters(), new JavaGivenSqlResultSetExtractor())) {
                            paramHosts.add((JavaParameterHost) _ahost);
                        }
                        method.setFields(paramHosts);
                        _freeSqlPojoHosts.put(method.getPojoClassName(), method);
                    }
                }
                host.setMethods(methods);
                _freeSqlHosts.add(host);
                result.setSuccessal(true);
                return result;
            }
        };
        results.add(worker);
    }
    return results;
}
Also used : JavaGivenSqlResultSetExtractor(com.ctrip.platform.dal.daogen.host.java.JavaGivenSqlResultSetExtractor) JavaParameterHost(com.ctrip.platform.dal.daogen.host.java.JavaParameterHost) FreeSqlHost(com.ctrip.platform.dal.daogen.host.java.FreeSqlHost) GenTaskByFreeSql(com.ctrip.platform.dal.daogen.entity.GenTaskByFreeSql) JavaMethodHost(com.ctrip.platform.dal.daogen.host.java.JavaMethodHost) Callable(java.util.concurrent.Callable) ExecuteResult(com.ctrip.platform.dal.daogen.entity.ExecuteResult) JavaCodeGenContext(com.ctrip.platform.dal.daogen.generator.java.JavaCodeGenContext) AbstractParameterHost(com.ctrip.platform.dal.daogen.host.AbstractParameterHost) Progress(com.ctrip.platform.dal.daogen.entity.Progress) DaoByFreeSql(com.ctrip.platform.dal.daogen.dao.DaoByFreeSql)

Example 17 with Progress

use of com.ctrip.platform.dal.daogen.entity.Progress in project dal by ctripcorp.

the class ProgressResource method cleanProgresses.

private static synchronized void cleanProgresses() {
    for (Map.Entry<String, Progress> entry : progresses.entrySet()) {
        String key = entry.getKey();
        Progress pro = entry.getValue();
        if (System.currentTimeMillis() - pro.getTime() > MAX_ALIVE_TIME) {
            progresses.remove(key);
        }
    }
}
Also used : Progress(com.ctrip.platform.dal.daogen.entity.Progress) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Map(java.util.Map)

Example 18 with Progress

use of com.ctrip.platform.dal.daogen.entity.Progress in project dal by ctripcorp.

the class ProgressResource method getProgress.

public static synchronized Progress getProgress(String userNo, int project_id, String random) {
    String key = getKey(userNo, project_id, random);
    Progress pro = progresses.get(key);
    if (pro == null) {
        pro = new Progress();
        pro.setUserNo(userNo);
        pro.setProject_id(project_id);
        pro.setOtherMessage(INIT_MESSAGE);
        pro.setRandom(random);
        progresses.put(key, pro);
    }
    return pro;
}
Also used : Progress(com.ctrip.platform.dal.daogen.entity.Progress)

Aggregations

Progress (com.ctrip.platform.dal.daogen.entity.Progress)18 Callable (java.util.concurrent.Callable)15 ExecuteResult (com.ctrip.platform.dal.daogen.entity.ExecuteResult)11 CSharpCodeGenContext (com.ctrip.platform.dal.daogen.generator.csharp.CSharpCodeGenContext)8 JavaCodeGenContext (com.ctrip.platform.dal.daogen.generator.java.JavaCodeGenContext)7 ArrayList (java.util.ArrayList)7 VelocityContext (org.apache.velocity.VelocityContext)7 GenTaskBySqlBuilder (com.ctrip.platform.dal.daogen.entity.GenTaskBySqlBuilder)4 CSharpTableHost (com.ctrip.platform.dal.daogen.host.csharp.CSharpTableHost)3 GenTaskByFreeSql (com.ctrip.platform.dal.daogen.entity.GenTaskByFreeSql)2 GenTaskByTableViewSp (com.ctrip.platform.dal.daogen.entity.GenTaskByTableViewSp)2 DatabaseCategory (com.ctrip.platform.dal.daogen.enums.DatabaseCategory)2 FreeSqlHost (com.ctrip.platform.dal.daogen.host.java.FreeSqlHost)2 JavaMethodHost (com.ctrip.platform.dal.daogen.host.java.JavaMethodHost)2 JavaTableHost (com.ctrip.platform.dal.daogen.host.java.JavaTableHost)2 File (java.io.File)2 DaoByFreeSql (com.ctrip.platform.dal.daogen.dao.DaoByFreeSql)1 AbstractParameterHost (com.ctrip.platform.dal.daogen.host.AbstractParameterHost)1 CSharpFreeSqlHost (com.ctrip.platform.dal.daogen.host.csharp.CSharpFreeSqlHost)1 CSharpFreeSqlPojoHost (com.ctrip.platform.dal.daogen.host.csharp.CSharpFreeSqlPojoHost)1