Example usage for org.springframework.jdbc.core JdbcTemplate queryForList

List of usage examples for org.springframework.jdbc.core JdbcTemplate queryForList

Introduction

In this page you can find the example usage for org.springframework.jdbc.core JdbcTemplate queryForList.

Prototype

@Override
    public List<Map<String, Object>> queryForList(String sql, Object[] args, int[] argTypes)
            throws DataAccessException 

Source Link

Usage

From source file:dao.SearchDAO.java

public static ObjectNode getPagedFlowByKeyword(String category, String keyword, int page, int size) {
    final List<FlowJob> pagedFlows = new ArrayList<FlowJob>();
    final JdbcTemplate jdbcTemplate = getJdbcTemplate();
    javax.sql.DataSource ds = jdbcTemplate.getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    ObjectNode result;/*from w  ww . j  ava 2 s . c o  m*/
    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {
            String query = SEARCH_FLOW_WITH_PAGINATION.replace("$keyword", keyword);
            List<Map<String, Object>> rows = null;

            rows = jdbcTemplate.queryForList(query, (page - 1) * size, size);
            for (Map row : rows) {

                FlowJob flow = new FlowJob();
                flow.flowId = (Long) row.get(FlowRowMapper.FLOW_ID_COLUMN);
                flow.flowName = (String) row.get(FlowRowMapper.FLOW_NAME_COLUMN);
                flow.flowPath = (String) row.get(FlowRowMapper.FLOW_PATH_COLUMN);
                flow.flowGroup = (String) row.get(FlowRowMapper.FLOW_GROUP_COLUMN);
                flow.appCode = (String) row.get(FlowRowMapper.APP_CODE_COLUMN);
                flow.appId = (Integer) row.get(FlowRowMapper.APP_ID_COLUMN);
                flow.displayName = flow.flowName;
                flow.link = "#/flows/name/" + flow.appCode + "/" + Long.toString(flow.flowId) + "/page/1?urn="
                        + flow.flowGroup;
                flow.path = flow.appCode + "/" + flow.flowPath;
                pagedFlows.add(flow);
            }
            long count = 0;
            try {
                count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.put("count", count);
            resultNode.put("isFlowJob", true);
            resultNode.put("page", page);
            resultNode.put("category", category);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
            resultNode.set("data", Json.toJson(pagedFlows));

            return resultNode;
        }
    });

    return result;
}

From source file:dao.SearchDAO.java

public static ObjectNode getPagedJobByKeyword(String category, String keyword, int page, int size) {
    final List<FlowJob> pagedFlowJobs = new ArrayList<FlowJob>();
    final JdbcTemplate jdbcTemplate = getJdbcTemplate();
    javax.sql.DataSource ds = jdbcTemplate.getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    ObjectNode result;/*from w w  w. j a  v a 2 s  . c  o m*/
    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {
            String query = SEARCH_JOB_WITH_PAGINATION.replace("$keyword", keyword);
            List<Map<String, Object>> rows = null;

            rows = jdbcTemplate.queryForList(query, (page - 1) * size, size);
            for (Map row : rows) {

                FlowJob flowJob = new FlowJob();
                flowJob.flowId = (Long) row.get(FlowRowMapper.FLOW_ID_COLUMN);
                flowJob.jobId = (Long) row.get(FlowRowMapper.JOB_ID_COLUMN);
                flowJob.jobName = (String) row.get(FlowRowMapper.JOB_NAME_COLUMN);
                flowJob.jobPath = (String) row.get(FlowRowMapper.JOB_PATH_COLUMN);
                flowJob.jobType = (String) row.get(FlowRowMapper.JOB_TYPE_COLUMN);
                flowJob.flowName = (String) row.get(FlowRowMapper.FLOW_NAME_COLUMN);
                flowJob.flowPath = (String) row.get(FlowRowMapper.FLOW_PATH_COLUMN);
                flowJob.flowGroup = (String) row.get(FlowRowMapper.FLOW_GROUP_COLUMN);
                flowJob.appCode = (String) row.get(FlowRowMapper.APP_CODE_COLUMN);
                flowJob.appId = (Integer) row.get(FlowRowMapper.APP_ID_COLUMN);
                flowJob.displayName = flowJob.jobName;
                flowJob.link = "#/flows/name/" + flowJob.appCode + "/" + Long.toString(flowJob.flowId)
                        + "/page/1?urn=" + flowJob.flowGroup;
                flowJob.path = flowJob.appCode + "/" + flowJob.jobPath;

                pagedFlowJobs.add(flowJob);
            }
            long count = 0;
            try {
                count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.put("count", count);
            resultNode.put("isFlowJob", true);
            resultNode.put("page", page);
            resultNode.put("category", category);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
            resultNode.set("data", Json.toJson(pagedFlowJobs));

            return resultNode;
        }
    });

    return result;
}

From source file:dao.SearchDAO.java

public static ObjectNode getPagedCommentsByKeyword(String category, String keyword, int page, int size) {
    List<Dataset> pagedDatasets = new ArrayList<Dataset>();
    final JdbcTemplate jdbcTemplate = getJdbcTemplate();
    javax.sql.DataSource ds = jdbcTemplate.getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    ObjectNode result;/*from  w  w w. j av a2s. c  o m*/
    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {
            List<Map<String, Object>> rows = null;
            String query = SEARCH_DATASET_BY_COMMENTS_WITH_PAGINATION.replace("$keyword", keyword);
            rows = jdbcTemplate.queryForList(query, (page - 1) * size, size);

            for (Map row : rows) {

                Dataset ds = new Dataset();
                ds.id = (long) row.get(DatasetRowMapper.DATASET_ID_COLUMN);
                ds.name = (String) row.get(DatasetRowMapper.DATASET_NAME_COLUMN);
                ds.source = (String) row.get(DatasetRowMapper.DATASET_SOURCE_COLUMN);
                ds.urn = (String) row.get(DatasetRowMapper.DATASET_URN_COLUMN);
                ds.schema = (String) row.get(DatasetRowMapper.DATASET_SCHEMA_COLUMN);
                pagedDatasets.add(ds);
            }
            long count = 0;
            try {
                count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.put("count", count);
            resultNode.put("page", page);
            resultNode.put("category", category);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
            resultNode.set("data", Json.toJson(pagedDatasets));

            return resultNode;
        }
    });

    return result;
}

From source file:dao.SearchDAO.java

public static ObjectNode getPagedMetricByKeyword(final String category, String keyword, int page, int size) {
    List<Metric> pagedMetrics = new ArrayList<Metric>();
    final JdbcTemplate jdbcTemplate = getJdbcTemplate();
    javax.sql.DataSource ds = jdbcTemplate.getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    ObjectNode result;//from  w w w  . ja  v a  2 s.c o  m
    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {
            String query = SEARCH_METRIC_WITH_PAGINATION.replace("$keyword", keyword);
            List<Map<String, Object>> rows = null;
            rows = jdbcTemplate.queryForList(query, (page - 1) * size, size);
            for (Map row : rows) {

                Metric metric = new Metric();
                metric.id = (Integer) row.get(MetricRowMapper.METRIC_ID_COLUMN);
                metric.name = (String) row.get(MetricRowMapper.METRIC_NAME_COLUMN);
                metric.refID = (String) row.get(MetricRowMapper.METRIC_REF_ID_COLUMN);
                metric.refIDType = (String) row.get(MetricRowMapper.METRIC_REF_ID_TYPE_COLUMN);
                metric.description = (String) row.get(MetricRowMapper.METRIC_DESCRIPTION_COLUMN);
                metric.dashboardName = (String) row.get(MetricRowMapper.METRIC_DASHBOARD_NAME_COLUMN);
                metric.category = (String) row.get(MetricRowMapper.METRIC_CATEGORY_COLUMN);
                metric.group = (String) row.get(MetricRowMapper.METRIC_GROUP_COLUMN);
                metric.source = "metric";
                metric.urn = "";
                if (StringUtils.isNotBlank(metric.dashboardName)) {
                    metric.urn += metric.dashboardName + "/";
                }
                if (StringUtils.isNotBlank(metric.group)) {
                    metric.urn += metric.group + "/";
                }
                if (StringUtils.isNotBlank(metric.name)) {
                    metric.urn += metric.name;
                }

                ObjectNode schema = Json.newObject();
                schema.put(MetricRowMapper.METRIC_REF_ID_COLUMN, metric.refID);
                schema.put(MetricRowMapper.METRIC_REF_ID_TYPE_COLUMN, metric.refIDType);
                schema.put(MetricRowMapper.METRIC_DESCRIPTION_COLUMN, metric.description);
                schema.put(MetricRowMapper.METRIC_DASHBOARD_NAME_COLUMN, metric.dashboardName);
                schema.put(MetricRowMapper.METRIC_CATEGORY_COLUMN, metric.category);
                schema.put(MetricRowMapper.METRIC_GROUP_COLUMN, metric.group);
                metric.schema = schema.toString();
                pagedMetrics.add(metric);
            }
            long count = 0;
            try {
                count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.put("count", count);
            resultNode.put("page", page);
            resultNode.put("category", category);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
            resultNode.set("data", Json.toJson(pagedMetrics));

            return resultNode;
        }
    });

    return result;
}

From source file:dao.SearchDAO.java

public static ObjectNode getPagedDatasetByKeyword(String category, String keyword, String source, int page,
        int size) {
    List<Dataset> pagedDatasets = new ArrayList<Dataset>();
    final JdbcTemplate jdbcTemplate = getJdbcTemplate();
    javax.sql.DataSource ds = jdbcTemplate.getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    ObjectNode result;/*from  w w  w.j a  v  a 2  s.  com*/
    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {
            List<Map<String, Object>> rows = null;
            if (StringUtils.isBlank(source) || source.toLowerCase().equalsIgnoreCase("all")) {
                String query = SEARCH_DATASET_WITH_PAGINATION.replace("$keyword", keyword);
                rows = jdbcTemplate.queryForList(query, (page - 1) * size, size);
            } else {
                String query = SEARCH_DATASET_BY_SOURCE_WITH_PAGINATION.replace("$keyword", keyword);
                rows = jdbcTemplate.queryForList(query, source, (page - 1) * size, size);
            }

            for (Map row : rows) {

                Dataset ds = new Dataset();
                ds.id = (Long) row.get(DatasetRowMapper.DATASET_ID_COLUMN);
                ds.name = (String) row.get(DatasetRowMapper.DATASET_NAME_COLUMN);
                ds.source = (String) row.get(DatasetRowMapper.DATASET_SOURCE_COLUMN);
                ds.urn = (String) row.get(DatasetRowMapper.DATASET_URN_COLUMN);
                ds.schema = (String) row.get(DatasetRowMapper.DATASET_SCHEMA_COLUMN);
                pagedDatasets.add(ds);
            }
            long count = 0;
            try {
                count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.put("count", count);
            resultNode.put("page", page);
            resultNode.put("category", category);
            resultNode.put("source", source);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
            resultNode.set("data", Json.toJson(pagedDatasets));

            return resultNode;
        }
    });

    return result;
}

From source file:dao.AdvSearchDAO.java

public static ObjectNode search(JsonNode searchOpt, int page, int size) {
    ObjectNode resultNode = Json.newObject();
    int count = 0;
    List<String> scopeInList = new ArrayList<String>();
    List<String> scopeNotInList = new ArrayList<String>();
    List<String> tableInList = new ArrayList<String>();
    List<String> tableNotInList = new ArrayList<String>();
    List<String> fieldAnyList = new ArrayList<String>();
    List<String> fieldAllList = new ArrayList<String>();
    List<String> fieldNotInList = new ArrayList<String>();
    String fieldAllIDs = "";
    String comments = "";

    if (searchOpt != null && (searchOpt.isContainerNode())) {
        if (searchOpt.has("scope")) {
            JsonNode scopeNode = searchOpt.get("scope");
            if (scopeNode != null && scopeNode.isContainerNode()) {
                if (scopeNode.has("in")) {
                    JsonNode scopeInNode = scopeNode.get("in");
                    if (scopeInNode != null) {
                        String scopeInStr = scopeInNode.asText();
                        if (StringUtils.isNotBlank(scopeInStr)) {
                            String[] scopeInArray = scopeInStr.split(",");
                            if (scopeInArray != null) {
                                for (String value : scopeInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        scopeInList.add(value.trim());
                                    }//w  ww  . jav  a  2 s  . c o  m
                                }
                            }
                        }
                    }
                }
                if (scopeNode.has("not")) {
                    JsonNode scopeNotInNode = scopeNode.get("not");
                    if (scopeNotInNode != null) {
                        String scopeNotInStr = scopeNotInNode.asText();
                        if (StringUtils.isNotBlank(scopeNotInStr)) {
                            String[] scopeNotInArray = scopeNotInStr.split(",");
                            if (scopeNotInArray != null) {
                                for (String value : scopeNotInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        scopeNotInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        if (searchOpt.has("table")) {
            JsonNode tableNode = searchOpt.get("table");
            if (tableNode != null && tableNode.isContainerNode()) {
                if (tableNode.has("in")) {
                    JsonNode tableInNode = tableNode.get("in");
                    if (tableInNode != null) {
                        String tableInStr = tableInNode.asText();
                        if (StringUtils.isNotBlank(tableInStr)) {
                            String[] tableInArray = tableInStr.split(",");
                            if (tableInArray != null) {
                                for (String value : tableInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        tableInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
                if (tableNode.has("not")) {
                    JsonNode tableNotInNode = tableNode.get("not");
                    if (tableNotInNode != null) {
                        String tableNotInStr = tableNotInNode.asText();
                        if (StringUtils.isNotBlank(tableNotInStr)) {
                            String[] tableNotInArray = tableNotInStr.split(",");
                            if (tableNotInArray != null) {
                                for (String value : tableNotInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        tableNotInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        if (searchOpt.has("fields")) {
            JsonNode fieldNode = searchOpt.get("fields");
            if (fieldNode != null && fieldNode.isContainerNode()) {
                if (fieldNode.has("any")) {
                    JsonNode fieldAnyNode = fieldNode.get("any");
                    if (fieldAnyNode != null) {
                        String fieldAnyStr = fieldAnyNode.asText();
                        if (StringUtils.isNotBlank(fieldAnyStr)) {
                            String[] fieldAnyArray = fieldAnyStr.split(",");
                            if (fieldAnyArray != null) {
                                for (String value : fieldAnyArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        fieldAnyList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
                if (fieldNode.has("all")) {
                    JsonNode fieldAllNode = fieldNode.get("all");
                    if (fieldAllNode != null) {
                        String fieldAllStr = fieldAllNode.asText();
                        if (StringUtils.isNotBlank(fieldAllStr)) {
                            String[] fieldAllArray = fieldAllStr.split(",");
                            if (fieldAllArray != null) {
                                for (String value : fieldAllArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        fieldAllList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
                if (fieldNode.has("not")) {
                    JsonNode fieldNotInNode = fieldNode.get("not");
                    if (fieldNotInNode != null) {
                        String fieldNotInStr = fieldNotInNode.asText();
                        if (StringUtils.isNotBlank(fieldNotInStr)) {
                            String[] fieldNotInArray = fieldNotInStr.split(",");
                            if (fieldNotInArray != null) {
                                for (String value : fieldNotInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        fieldNotInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        String datasetSources = "";
        if (searchOpt.has("sources")) {
            JsonNode sourcesNode = searchOpt.get("sources");
            if (sourcesNode != null) {
                datasetSources = sourcesNode.asText();
            }
        }

        boolean needAndKeyword = false;
        int fieldQueryIndex = 0;
        if (fieldAllList.size() > 0) {
            String fieldAllQuery = "SELECT DISTINCT f1.dataset_id FROM dict_field_detail f1 ";
            String fieldWhereClause = " WHERE ";
            for (String field : fieldAllList) {
                fieldQueryIndex++;
                if (fieldQueryIndex == 1) {
                    fieldWhereClause += "f1.field_name LIKE '%" + field + "%' ";
                } else {
                    fieldAllQuery += "JOIN dict_field_detail f" + fieldQueryIndex + " ON f"
                            + (fieldQueryIndex - 1) + ".dataset_id = f" + fieldQueryIndex + ".dataset_id ";
                    fieldWhereClause += " and f" + fieldQueryIndex + ".field_name LIKE '%" + field + "%' ";

                }
            }
            fieldAllQuery += fieldWhereClause;
            List<Map<String, Object>> rows = getJdbcTemplate().queryForList(fieldAllQuery);
            for (Map row : rows) {

                fieldAllIDs += (Long) row.get("dataset_id") + ",";
            }
            if (fieldAllIDs.length() > 0) {
                fieldAllIDs = fieldAllIDs.substring(0, fieldAllIDs.length() - 1);
            }
            if (StringUtils.isBlank(fieldAllIDs)) {
                fieldAllIDs = Integer.toString(0);

            }
        }

        List<Dataset> pagedDatasets = new ArrayList<Dataset>();
        final JdbcTemplate jdbcTemplate = getJdbcTemplate();
        javax.sql.DataSource ds = jdbcTemplate.getDataSource();
        DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

        TransactionTemplate txTemplate = new TransactionTemplate(tm);

        ObjectNode result;

        if (searchOpt.has("comments")) {
            JsonNode commentsNode = searchOpt.get("comments");
            if (commentsNode != null) {
                comments = commentsNode.asText();
                if (StringUtils.isNotBlank(comments)) {
                    if (scopeInList.size() == 0 && scopeNotInList.size() == 0 && tableInList.size() == 0
                            && tableNotInList.size() == 0 && fieldAllList.size() == 0
                            && fieldAnyList.size() == 0 && fieldNotInList.size() == 0) {
                        final String commentsQueryStr = SEARCH_DATASETS_BY_COMMENTS_WITH_PAGINATION
                                .replace("$keyword", comments);

                        result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
                            public ObjectNode doInTransaction(TransactionStatus status) {
                                List<Map<String, Object>> rows = null;
                                rows = jdbcTemplate.queryForList(commentsQueryStr, (page - 1) * size, size);

                                for (Map row : rows) {

                                    Dataset ds = new Dataset();
                                    ds.id = (Long) row.get("id");
                                    ds.name = (String) row.get("name");
                                    ds.source = (String) row.get("source");
                                    ds.urn = (String) row.get("urn");
                                    ds.schema = (String) row.get("schema");
                                    pagedDatasets.add(ds);
                                }
                                long count = 0;
                                try {
                                    count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
                                } catch (EmptyResultDataAccessException e) {
                                    Logger.error("Exception = " + e.getMessage());
                                }

                                ObjectNode resultNode = Json.newObject();
                                resultNode.put("count", count);
                                resultNode.put("page", page);
                                resultNode.put("itemsPerPage", size);
                                resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
                                resultNode.set("data", Json.toJson(pagedDatasets));

                                return resultNode;
                            }
                        });
                        return result;
                    }
                }
            }
        }

        String query = "";
        if (StringUtils.isNotBlank(comments)) {
            query = "SELECT DISTINCT d.id FROM dict_dataset d";
        } else {
            query = "SELECT SQL_CALC_FOUND_ROWS " + "DISTINCT d.id, d.name, d.schema, d.source, d.urn, "
                    + "FROM_UNIXTIME(d.source_modified_time) as modified FROM dict_dataset d";
        }
        if (fieldAllList.size() > 0 || fieldAnyList.size() > 0 || fieldNotInList.size() > 0) {
            String fieldQuery = "SELECT DISTINCT dataset_id FROM dict_field_detail f WHERE (";
            query += " WHERE d.id IN ( ";
            query += fieldQuery;
            String whereClause = "";
            boolean fieldNeedAndKeyword = false;
            if (fieldAnyList.size() > 0) {
                whereClause = " (";
                int indexForAnyList = 0;
                for (String field : fieldAnyList) {
                    if (indexForAnyList == 0) {
                        whereClause += "f.field_name LIKE '%" + field + "%'";
                    } else {
                        whereClause += " or f.field_name LIKE '%" + field + "%'";
                    }
                    indexForAnyList++;
                }
                whereClause += " ) ";
                fieldNeedAndKeyword = true;
                query += whereClause;
            }
            if (fieldAllList.size() > 0 && StringUtils.isNotBlank(fieldAllIDs)) {
                if (fieldNeedAndKeyword) {
                    whereClause = " and (";
                } else {
                    whereClause = " (";
                }
                whereClause += "f.dataset_id IN (" + fieldAllIDs + ")";
                whereClause += " ) ";
                query += whereClause;
                fieldNeedAndKeyword = true;
            }
            if (fieldNotInList.size() > 0) {
                if (fieldNeedAndKeyword) {
                    whereClause = " and ( f.dataset_id not in (select dataset_id from dict_field_detail where";
                } else {
                    whereClause = " ( f.dataset_id not in (select dataset_id from dict_field_detail where";
                }
                int indexForNotInList = 0;
                for (String field : fieldNotInList) {
                    if (indexForNotInList == 0) {
                        whereClause += " field_name LIKE '%" + field + "%'";
                    } else {
                        whereClause += " or field_name LIKE '%" + field + "%'";
                    }
                    indexForNotInList++;
                }
                whereClause += " )) ";
                query += whereClause;
                fieldNeedAndKeyword = true;
            }
            needAndKeyword = true;
            query += ") )";
        }

        if (scopeInList.size() > 0 || scopeNotInList.size() > 0) {
            if (needAndKeyword) {
                query += " and";
            } else {
                query += " where";
            }
            boolean scopeNeedAndKeyword = false;
            if (scopeInList.size() > 0) {
                query += " d.parent_name in (";
                scopeNeedAndKeyword = true;
                int indexForScopeInList = 0;
                for (String scope : scopeInList) {
                    if (indexForScopeInList == 0) {
                        query += "'" + scope + "'";
                    } else {
                        query += ", '" + scope + "'";
                    }
                    indexForScopeInList++;
                }
                query += ") ";
            }
            if (scopeNotInList.size() > 0) {
                if (scopeNeedAndKeyword) {
                    query += " and d.parent_name not in (";
                } else {
                    query += " d.parent_name not in (";
                }
                int indexForScopeNotInList = 0;
                for (String scope : scopeNotInList) {
                    if (indexForScopeNotInList == 0) {
                        query += "'" + scope + "'";
                    } else {
                        query += ", '" + scope + "'";
                    }
                    indexForScopeNotInList++;
                }
                query += ") ";
            }
            needAndKeyword = true;
        }
        String condition1 = "";
        String condition2 = "";
        String condition3 = "";
        String condition4 = "";

        if (tableInList.size() > 0 || tableNotInList.size() > 0) {
            if (needAndKeyword) {
                query += " and";
            } else {
                query += " where";
            }
            boolean tableNeedAndKeyword = false;
            if (tableInList.size() > 0) {
                query += " (";
                int indexForTableInList = 0;
                for (String table : tableInList) {
                    if (indexForTableInList == 0) {
                        query += "d.name LIKE '%" + table + "%'";
                    } else {
                        condition1 += " or ";
                        condition2 += " or ";
                        condition3 += " or ";
                        condition4 += " or ";
                        query += " or d.name LIKE '%" + table + "%'";
                    }
                    condition1 += "name = '" + table + "'";
                    condition2 += "name LIKE '" + table + "%'";
                    condition3 += "name LIKE '%" + table + "'";
                    condition4 += "name LIKE '%" + table + "%'";
                    indexForTableInList++;
                }
                query += " ) ";
                tableNeedAndKeyword = true;
            }
            if (tableNotInList.size() > 0) {
                if (tableNeedAndKeyword) {
                    query += " and (";
                } else {
                    query += " (";
                }
                int indexForTableNotInList = 0;
                for (String table : tableNotInList) {
                    if (indexForTableNotInList == 0) {
                        query += "d.name NOT LIKE '%" + table + "%'";
                    } else {
                        query += " and d.name NOT LIKE '%" + table + "%'";
                    }
                    indexForTableNotInList++;
                }
                query += " ) ";
            }
            needAndKeyword = true;
        }

        if (StringUtils.isNotBlank(datasetSources)) {
            if (needAndKeyword) {
                query += " and";
            } else {
                query += " WHERE";
            }
            query += " d.source in (";
            String[] dataestSourceArray = datasetSources.split(",");
            for (int i = 0; i < dataestSourceArray.length; i++) {
                query += "'" + dataestSourceArray[i] + "'";
                if (i != (dataestSourceArray.length - 1)) {
                    query += ",";
                }
            }
            query += ")";
        }
        if ((tableInList.size() > 0 || tableNotInList.size() > 0) && StringUtils.isNotBlank(condition1)
                && StringUtils.isNotBlank(condition2) && StringUtils.isNotBlank(condition3)
                && StringUtils.isNotBlank(condition4)) {
            query += ADVSEARCH_RANK_CLAUSE.replace("$condition1", condition1).replace("$condition2", condition2)
                    .replace("$condition3", condition3).replace("$condition4", condition4);
        } else {
            query += " ORDER BY CASE WHEN urn LIKE 'teradata://DWH_%' THEN 2 "
                    + "WHEN urn LIKE 'hdfs://data/tracking/%' THEN 1 "
                    + "WHEN urn LIKE 'teradata://DWH/%' THEN 3 "
                    + "WHEN urn LIKE 'hdfs://data/databases/%' THEN 4 "
                    + "WHEN urn LIKE 'hdfs://data/dervied/%' THEN 5 ELSE 99 end, urn";
        }
        if (StringUtils.isBlank(comments)) {
            query += " LIMIT " + (page - 1) * size + ", " + size;
            final String queryString = query;

            result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
                public ObjectNode doInTransaction(TransactionStatus status) {
                    List<Map<String, Object>> rows = null;
                    rows = jdbcTemplate.queryForList(queryString);

                    for (Map row : rows) {

                        Dataset ds = new Dataset();
                        ds.id = (Long) row.get("id");
                        ds.name = (String) row.get("name");
                        ds.source = (String) row.get("source");
                        ds.urn = (String) row.get("urn");
                        ds.schema = (String) row.get("schema");
                        pagedDatasets.add(ds);
                    }
                    long count = 0;
                    try {
                        count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
                    } catch (EmptyResultDataAccessException e) {
                        Logger.error("Exception = " + e.getMessage());
                    }

                    ObjectNode resultNode = Json.newObject();
                    resultNode.put("count", count);
                    resultNode.put("page", page);
                    resultNode.put("itemsPerPage", size);
                    resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
                    resultNode.set("data", Json.toJson(pagedDatasets));

                    return resultNode;
                }
            });
            return result;
        } else {
            String datasetIDStr = "";
            final String queryString = query;

            datasetIDStr = txTemplate.execute(new TransactionCallback<String>() {
                public String doInTransaction(TransactionStatus status) {
                    List<Map<String, Object>> rows = null;
                    rows = jdbcTemplate.queryForList(queryString);
                    String idsString = "";

                    for (Map row : rows) {

                        Long id = (Long) row.get("id");
                        idsString += Long.toString(id) + ",";
                    }
                    if (StringUtils.isNotBlank(idsString)) {
                        idsString = idsString.substring(0, idsString.length() - 1);
                    }
                    return idsString;
                }
            });
            if (StringUtils.isBlank(datasetIDStr)) {
                resultNode.put("count", 0);
                resultNode.put("page", page);
                resultNode.put("itemsPerPage", size);
                resultNode.put("totalPages", 0);
                resultNode.set("data", Json.toJson(""));
                return resultNode;
            }
            final String commentsQueryWithConditionStr = DATASET_BY_COMMENT_PAGINATION_IN_CLAUSE
                    .replace("$keyword", comments).replace("$id_list", datasetIDStr);
            result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
                public ObjectNode doInTransaction(TransactionStatus status) {
                    List<Map<String, Object>> rows = null;
                    rows = jdbcTemplate.queryForList(commentsQueryWithConditionStr, (page - 1) * size, size);

                    for (Map row : rows) {

                        Dataset ds = new Dataset();
                        ds.id = (Long) row.get("id");
                        ds.name = (String) row.get("name");
                        ds.source = (String) row.get("source");
                        ds.urn = (String) row.get("urn");
                        ds.schema = (String) row.get("schema");
                        pagedDatasets.add(ds);
                    }
                    long count = 0;
                    try {
                        count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
                    } catch (EmptyResultDataAccessException e) {
                        Logger.error("Exception = " + e.getMessage());
                    }

                    ObjectNode resultNode = Json.newObject();
                    resultNode.put("count", count);
                    resultNode.put("page", page);
                    resultNode.put("itemsPerPage", size);
                    resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
                    resultNode.set("data", Json.toJson(pagedDatasets));

                    return resultNode;
                }
            });
            return result;
        }
    }
    resultNode.put("count", 0);
    resultNode.put("page", page);
    resultNode.put("itemsPerPage", size);
    resultNode.put("totalPages", 0);
    resultNode.set("data", Json.toJson(""));
    return resultNode;
}

From source file:no.kantega.publishing.common.ao.ContentAOJdbcImpl.java

@Override
public Content getContent(ContentIdentifier cid, boolean isAdminMode) {
    contentIdHelper.assureContentIdAndAssociationIdSet(cid);
    int requestedVersion = cid.getVersion();
    int contentVersionId = -1;

    int contentId = cid.getContentId();
    JdbcTemplate jdbcTemplate = getJdbcTemplate();
    if (isAdminMode) {
        if (requestedVersion == -1) {
            // When in administration mode users should see last version
            List<Integer> contentVersionIds = jdbcTemplate.queryForList(
                    "select ContentVersionId from contentversion where ContentId = ? order by Version desc",
                    Integer.class, contentId);
            if (contentVersionIds.isEmpty()) {
                return null;
            } else {
                contentVersionId = contentVersionIds.get(0);
            }// ww w . ja  v a  2 s  . co m
        } else {

            try {
                contentVersionId = jdbcTemplate.queryForObject(
                        "select ContentVersionId from contentversion where ContentId = ? and Version = ? order by Version desc",
                        Integer.class, contentId, requestedVersion);
            } catch (EmptyResultDataAccessException e) {
                return null;
            }
        }
    } else if (cid.getStatus() == ContentStatus.HEARING) {
        // Find version for hearing, if no hearing is found, active version is returned
        int activeversion = jdbcTemplate.queryForObject(
                "select ContentVersionId from contentversion where ContentId = ? and contentversion.IsActive = 1 order by Version desc",
                Integer.class, contentId);
        contentVersionId = jdbcTemplate.queryForObject(
                "select ContentVersionId from contentversion where ContentId = ? AND Status = ? AND ContentVersionId > ? order by Version desc",
                Integer.class, contentId, ContentStatus.HEARING.getTypeAsInt(), activeversion);
    } else {
        // Others should see active version
        contentVersionId = -1;
    }

    StringBuilder query = new StringBuilder(
            "select * from content, contentversion where content.ContentId = contentversion.ContentId");
    List<Integer> params = new ArrayList<>(2);
    if (contentVersionId != -1) {
        // Hent angitt versjon
        query.append(" and contentversion.ContentVersionId = ?");
        params.add(contentVersionId);
    } else {
        // Hent aktiv versjon
        query.append(" and contentversion.IsActive = 1");
    }
    query.append(" and content.ContentId = ? order by Version");
    params.add(contentId);

    Content content = null;
    try {
        content = jdbcTemplate.queryForObject(query.toString(), new ContentRowMapper(false), params.toArray());
    } catch (EmptyResultDataAccessException e) {
        return null;
    }

    List<Association> associations = jdbcTemplate.query(
            "SELECT * FROM associations WHERE ContentId = ? AND (IsDeleted IS NULL OR IsDeleted = 0)",
            new AssociationRowMapper(), contentId);

    // Get associations for this page
    boolean foundCurrentAssociation = false;
    for (Association a : associations) {
        if (!foundCurrentAssociation) {
            // Dersom knytningsid ikke er angitt bruker vi default for angitt site
            int associationId = cid.getAssociationId();
            if ((associationId == a.getId()) || (associationId == -1
                    && a.getAssociationtype() == AssociationType.DEFAULT_POSTING_FOR_SITE
                    && a.getSiteId() == cid.getSiteId())) {
                foundCurrentAssociation = true;
                a.setCurrent(true);
            }
        }
        content.addAssociation(a);
    }

    if (!foundCurrentAssociation) {
        // Knytningsid er ikke angitt, og heller ikke site, bruk den frste
        for (Association a : associations) {
            if (a.getAssociationtype() == AssociationType.DEFAULT_POSTING_FOR_SITE) {
                foundCurrentAssociation = true;
                a.setCurrent(true);
                break;
            }
        }

        if (!foundCurrentAssociation && associations.size() > 0) {
            Association a = associations.get(0);
            a.setCurrent(true);
            log.debug("Fant ingen defaultknytning: {}", contentId);
        }
    }

    if (content.getAssociation() == null) {
        // All associations to page are deleted, dont return page
        return null;
    }

    // Get content attributes
    jdbcTemplate.query("select * from contentattributes where ContentVersionId = ?",
            new ContentAttributeRowMapper(content), content.getVersionId());
    content.indexAttributes();
    List<Topic> topics = topicDao.getTopicsByContentId(contentId);
    content.setTopics(topics);

    return content;
}

From source file:no.kantega.publishing.common.ao.ContentAOJdbcImpl.java

private boolean archiveOldVersion(Connection c, Content content, ContentStatus newStatus,
        boolean newVersionIsActive) throws SQLException {
    // Find next version
    JdbcTemplate jdbcTemplate = getJdbcTemplate();
    List<Integer> currentVersions = jdbcTemplate.queryForList(
            "select version from contentversion where ContentId = ? order by version desc", Integer.class,
            content.getId());/*from  www .j  a  va 2s. com*/
    if (!currentVersions.isEmpty()) {
        content.setVersion(currentVersions.get(0) + 1);
    }

    if (newStatus == ContentStatus.PUBLISHED) {
        // Set newStatus = ARCHIVED on currently active version
        jdbcTemplate.update(
                "update contentversion set Status = ?, isActive = 0 where ContentId = ? and isActive = 1",
                ContentStatus.ARCHIVED.getTypeAsInt(), content.getId());

        // Publisert blir aktiv versjon
        newVersionIsActive = true;
    }
    return newVersionIsActive;
}

From source file:org.springframework.jdbc.core.JdbcTemplateQueryTests.java

public void testQueryForListWithArgsAndIntegerElementAndSingleRowAndColumn() throws Exception {
    String sql = "SELECT AGE FROM CUSTMR WHERE ID < ?";

    mockResultSetMetaData.getColumnCount();
    ctrlResultSetMetaData.setReturnValue(1);

    mockResultSet.getMetaData();//  w w  w. j  av a  2 s.c  o m
    ctrlResultSet.setReturnValue(mockResultSetMetaData);
    mockResultSet.next();
    ctrlResultSet.setReturnValue(true);
    mockResultSet.getInt(1);
    ctrlResultSet.setReturnValue(11);
    mockResultSet.wasNull();
    ctrlResultSet.setReturnValue(false);
    mockResultSet.next();
    ctrlResultSet.setReturnValue(false);
    mockResultSet.close();
    ctrlResultSet.setVoidCallable();

    mockPreparedStatement.setObject(1, new Integer(3));
    ctrlPreparedStatement.setVoidCallable();
    mockPreparedStatement.executeQuery();
    ctrlPreparedStatement.setReturnValue(mockResultSet);
    if (debugEnabled) {
        mockPreparedStatement.getWarnings();
        ctrlPreparedStatement.setReturnValue(null);
    }
    mockPreparedStatement.close();
    ctrlPreparedStatement.setVoidCallable();

    mockConnection.prepareStatement(sql);
    ctrlConnection.setReturnValue(mockPreparedStatement);

    replay();

    JdbcTemplate template = new JdbcTemplate(mockDataSource);

    List li = template.queryForList(sql, new Object[] { new Integer(3) }, Integer.class);
    assertEquals("All rows returned", 1, li.size());
    assertEquals("First row is Integer", 11, ((Integer) li.get(0)).intValue());
}