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

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

Introduction

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

Prototype

@Override
    public <T> List<T> query(PreparedStatementCreator psc, RowMapper<T> rowMapper) throws DataAccessException 

Source Link

Usage

From source file:au.aurin.org.svc.GeodataFinder.java

public userData getUser(final String email) {

    String query = "select * from users " + " where email=?";

    // final String query =
    // "select user_id, email, enabled,firstname,lastname,password from users "
    // + " where email='" + useremail + "'";
    try {//from   w  w w .j a v a  2s  .co m
        final JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

        LOGGER.info("getUser: query is {} ", query);

        final userData user = (userData) jdbcTemplate.queryForObject(query, new String[] { email },
                new BeanPropertyRowMapper(userData.class));
        if (user != null) {
            final long user_id = user.getUser_id();
            LOGGER.info("user_id in  getUser query  is {} ", user_id);

            query = "select a.role_id,b.rolename from user_roles as a , roles as b where a.role_id = b.role_id "
                    + " and  a.user_id = " + user.getUser_id();
            final List<roleData> roleuser = jdbcTemplate.query(query,
                    new BeanPropertyRowMapper(roleData.class));
            user.setUserRoles(roleuser);

            query = "select a.org_id,b.orgname,b.orgcountry,b.orgstate,b.orglga,b.orgbounds,b.orgextent, b.orgcenter from user_orgs as a , organisations as b where a.org_id = b.org_id "
                    + " and  a.user_id = " + user.getUser_id();
            final List<orgData> orguser = jdbcTemplate.query(query, new BeanPropertyRowMapper(orgData.class));
            user.setUserOrganisations(orguser);

            query = "select a.app_id,b.appname from user_apps as a , application as b where a.app_id = b.app_id "
                    + " and  a.user_id = " + user.getUser_id();
            final List<appData> appuser = jdbcTemplate.query(query, new BeanPropertyRowMapper(appData.class));
            user.setUserApplications(appuser);

            query = "select a.acclvl_id,b.acclvlname from user_acclvls as a , acclvls as b where a.acclvl_id = b.acclvl_id "
                    + " and  a.user_id = " + user.getUser_id();
            final List<acclvlData> accuser = jdbcTemplate.query(query,
                    new BeanPropertyRowMapper(acclvlData.class));
            user.setUserAccessLevels(accuser);

            query = "select a.agr_id,a.agreed, a.aggtime, b.lictext,b.licblob,b.licver,b.lic_id,c.orgname, d.appname from agreement as a , license as b, organisations as c, application as d "
                    + " where a.lic_id = b.lic_id  and b.org_id = c.org_id and a.app_id = d.app_id"
                    + " and  a.user_id = " + user.getUser_id();
            final List<agreementData> agguser = jdbcTemplate.query(query,
                    new BeanPropertyRowMapper(agreementData.class));
            user.setUserAgreements(agguser);
        }

        return user;

    } catch (final Exception e) {

        LOGGER.info("error in  getUser is : {}", e.toString());

    }
    return null;

}

From source file:de.uhh.l2g.dao.VideoDao.java

/**
 * Gets the by open access./*from  w w w  .j a  va 2 s  .  c  o m*/
 *
 * @return the by open access
 */
@SuppressWarnings("unchecked")
public List<Video> getByOpenAccess() {

    JdbcTemplate select = new JdbcTemplate(this.getDataSource());
    List<Video> result = select.query(
            "SELECT id, title, tags, lectureseriesId, ownerId, producerId, containerFormat, filename, resolution, duration, hostId, textId, filesize, generationDate, openAccess, downloadLink, metadataId, surl, hits, uploadDate, permittedToSegment, facilityId, citation2go FROM video WHERE openAccess=1 ORDER BY generationDate DESC",
            new VideoRowMapper());
    try {
        this.fillVideoListWithProperties(result);
    } catch (IOException e) {
    }

    return result;
}

From source file:de.uhh.l2g.dao.VideoDao.java

/**
 * Gets the by open access and duration not null.
 *
 * @return the by open access and duration not null
 *//*from w w w. ja v  a  2s  . c  o m*/
@SuppressWarnings("unchecked")
public List<Video> getByOpenAccessAndDurationNotNull() {

    JdbcTemplate select = new JdbcTemplate(this.getDataSource());
    List<Video> result = select.query(
            "SELECT id, title, tags, lectureseriesId, ownerId, producerId, containerFormat, filename, resolution, duration, hostId, textId, filesize, generationDate, openAccess, downloadLink, metadataId, surl, hits, uploadDate, permittedToSegment, facilityId, citation2go FROM video WHERE (openAccess=1 AND duration!='') ORDER BY generationDate DESC",
            new VideoRowMapper());
    try {
        this.fillVideoListWithProperties(result);
    } catch (IOException e) {
    }

    return result;
}

From source file:de.uhh.l2g.dao.VideoDao.java

/**
 * Gets the all./*  w ww  . j a va2  s  . c o  m*/
 *
 * @return the all
 */
@SuppressWarnings("unchecked")
public List<Video> getAll() {
    JdbcTemplate select = new JdbcTemplate(this.getDataSource());
    List<Video> videoList = select.query(
            "SELECT id, title, tags, lectureseriesId, ownerId, producerId, containerFormat, filename, resolution, duration, hostId, textId, filesize, generationDate, openAccess, downloadLink, metadataId, surl, hits, uploadDate, permittedToSegment, facilityId, citation2go FROM video ORDER BY ID ASC",
            new VideoRowMapper());
    try {
        this.fillVideoListWithProperties(videoList);
    } catch (IOException e) {
    }
    return videoList;
}

From source file:de.uhh.l2g.dao.VideoDao.java

/**
 * Gets the open access videos by facility id.
 *
 * @param facilityId the facility id// www.j a  va2 s.co  m
 * @return the open access videos by facility id
 */
@SuppressWarnings("unchecked")
public List<Video> getOpenAccessVideosByFacilityId(Integer facilityId) {

    JdbcTemplate select = new JdbcTemplate(this.getDataSource());

    List<Video> result = null;

    // if facilityId==0, select all
    if (facilityId == 0) {
        result = select.query(
                "SELECT video.id, video.title, video.tags, video.lectureseriesId, video.ownerId, video.producerId, video.containerFormat, video.filename, video.resolution, video.duration, video.hostId, video.textId, video.filesize, video.generationDate, video.openAccess, video.downloadLink, video.metadataId, video.surl, video.hits, video.uploadDate, video.permittedToSegment, video.facilityId, video.citation2go FROM video, video_facility, facility WHERE ( video.openAccess=1 AND video.id=video_facility.videoId AND video_facility.facilityId=facility.id AND facility.typ!='tree2' ) GROUP BY lectureseriesId ORDER BY video.generationDate DESC;",
                new VideoRowMapper());
    } else {
        result = select.query(
                "SELECT video.id, video.title, video.tags, video.lectureseriesId, video.ownerId, video.producerId, video.containerFormat, video.filename, video.resolution, video.duration, video.hostId, video.textId, video.filesize, video.generationDate, video.openAccess, video.downloadLink, video.metadataId, video.surl, video.hits, video.uploadDate, video.permittedToSegment, video.facilityId, video.citation2go FROM video, video_facility, facility WHERE ( video.openAccess=1 AND video.id=video_facility.videoId AND video_facility.facilityId=? AND video_facility.facilityId=facility.id AND facility.typ!='tree2' ) GROUP BY lectureseriesId ORDER BY video.generationDate DESC;",
                new Object[] { facilityId }, new VideoRowMapper());
    }
    try {
        this.fillVideoListWithProperties(result);
    } catch (IOException e) {
    }
    return result;
}

From source file:de.uhh.l2g.dao.VideoDao.java

/**
 * Gets the popular videos rnd./*  w ww  .  j a va2 s  .c  om*/
 *
 * @param facilityId the facility id
 * @param limit the limit
 * @return the popular videos rnd
 */
@SuppressWarnings("unchecked")
public List<Video> getPopularVideosRnd(Integer facilityId, Integer limit) {

    List<Video> liste = new ArrayList<Video>();
    List<Video> returnList = new ArrayList<Video>();
    String sqlquery = "";
    JdbcTemplate jdbst = new JdbcTemplate(this.getDataSource());
    // ohne Facility
    if (facilityId == 0) {
        sqlquery = "SELECT v.id, v.title, m.creator, l.name, v.filename,  v.generationDate, f.typ, v.lectureseriesId, v.metadataId, v.hostId, v.producerId FROM videohitlist vh, video v, metadata m, lectureseries l, facility f WHERE (v.id = vh.id AND v.metadataId = m.id AND v.lectureseriesId = l.id AND v.facilityId=f.id) GROUP BY v.id";
        liste = jdbst.query(sqlquery, new VideoResultSearchRowMapper());
    }

    //Die Liste Randomisieren
    Collections.shuffle(liste);

    // Die ersten i-Rauspicken (je nachdem wie viele Angezeigt werden sollen), Pruefung auf Listengroesse wichtig falls Liste < Anzeiggroesse
    for (int i = 0; i < limit && i < liste.size(); i++) {
        if (liste.get(i) != null)
            returnList.add(liste.get(i));
    }

    return returnList;
}

From source file:de.uhh.l2g.dao.VideoDao.java

/**
 * Creates the popular video list./* w w w  .  j a  v  a2  s  . c  om*/
 */
@SuppressWarnings("unchecked")
public void createPopularVideoList() {
    List<Video> returnList = new ArrayList<Video>();
    JdbcTemplate jdbst = new JdbcTemplate(this.getDataSource());
    String sqlquery = "SELECT v.id, v.title, v.tags, v.lectureseriesId, v.ownerId, v.producerId, v.containerFormat, v.filename, v.resolution, v.duration, v.hostId, v.textId, v.filesize, v.generationDate, v.openAccess, v.downloadLink, v.metadataId, v.surl, v.hits, v.uploadDate, v.permittedToSegment, v.facilityId, v.citation2go FROM video v WHERE v.openAccess=1 AND v.hits > 20 ORDER BY hits DESC ";
    returnList = jdbst.query(sqlquery, new VideoRowMapper());

    JdbcTemplate delete = new JdbcTemplate(this.getDataSource());
    delete.update("DELETE FROM videohitlist");

    Calendar calendar = new GregorianCalendar();
    calendar.setTimeZone(TimeZone.getTimeZone("CET"));
    long msnow = calendar.getTimeInMillis();

    Date d1 = new Date();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm");

    for (Video v : returnList) {
        try {
            d1 = df.parse(v.getGenerationDate());
            long ms1 = d1.getTime();
            int hits = v.getHits();
            long timeinms = msnow - ms1;

            // Durschnittswerte berechnen

            //Berechne alter des Videos in...
            long days = timeinms / (1000 * 60 * 60 * 24); //...Tagen
            long week = timeinms / (1000 * 60 * 60 * 24 * 7); //...Wochen
            long month = timeinms / 2628000000l; //....Monaten
            long year = timeinms / (2628000000l * 12l); //....Jahren

            //Berechne die Hits pro...
            int clicksperday = calcHitsPro(days, hits);
            int clicksperweek = calcHitsPro(week, hits);
            int clickspermonth = calcHitsPro(month, hits);
            int clicksperyear = calcHitsPro(year, hits);

            createOneHit(v.getId(), clicksperday, clicksperweek, clickspermonth, clicksperyear);
        } catch (ParseException e) {
            System.out.println("Simple Date Parsen Error!!");
        }
    }

}

From source file:de.uhh.l2g.dao.VideoDao.java

/**
 * Gets the all lectureseries whith openaccess videos.
 *
 * @param tree the tree/*from w  w w .  j av  a  2  s .com*/
 * @return the all lectureseries whith openaccess videos
 */
@SuppressWarnings("unchecked")
private final List<Lectureseries> getAllLectureseriesWhithOpenaccessVideos(String tree) {
    JdbcTemplate select = new JdbcTemplate(this.getDataSource());
    String sql = "";
    List<Lectureseries> rList;
    if (tree.equals("all")) {
        sql = "SELECT number, eventType, eventCategory, lectureseries.name, shortDesc, longDesc, semesterName, language, facultyName, instructorsString, lectureseries.id, password, approved FROM lectureseries, video, video_facility, facility WHERE ( lectureseries.id=video.lectureseriesId AND video.openAccess=1 AND video.id=video_facility.videoId AND video_facility.facilityId=facility.id) GROUP BY lectureseriesId ";
        rList = select.query(sql, new LectureseriesRowMapper());
    } else {
        sql = "SELECT number, eventType, eventCategory, lectureseries.name, shortDesc, longDesc, semesterName, language, facultyName, instructorsString, lectureseries.id, password, approved FROM lectureseries, video, video_facility, facility WHERE ( lectureseries.id=video.lectureseriesId AND video.openAccess=1 AND video.id=video_facility.videoId AND video_facility.facilityId=facility.id AND facility.typ=?) GROUP BY lectureseriesId ";
        rList = select.query(sql, new Object[] { tree }, new LectureseriesRowMapper());
    }
    return rList;
}

From source file:dao.AdvSearchDAO.java

public static ObjectNode searchMetrics(JsonNode searchOpt, int page, int size) {
    ObjectNode resultNode = Json.newObject();
    int count = 0;
    List<String> dashboardInList = new ArrayList<String>();
    List<String> dashboardNotInList = new ArrayList<String>();
    List<String> groupInList = new ArrayList<String>();
    List<String> groupNotInList = new ArrayList<String>();
    List<String> categoryInList = new ArrayList<String>();
    List<String> categoryNotInList = new ArrayList<String>();
    List<String> metricInList = new ArrayList<String>();
    List<String> metricNotInList = new ArrayList<String>();

    if (searchOpt != null && (searchOpt.isContainerNode())) {
        if (searchOpt.has("dashboard")) {
            JsonNode dashboardNode = searchOpt.get("dashboard");
            if (dashboardNode != null && dashboardNode.isContainerNode()) {
                if (dashboardNode.has("in")) {
                    JsonNode dashboardInNode = dashboardNode.get("in");
                    if (dashboardInNode != null) {
                        String dashboardInStr = dashboardInNode.asText();
                        if (StringUtils.isNotBlank(dashboardInStr)) {
                            String[] dashboardInArray = dashboardInStr.split(",");
                            if (dashboardInArray != null) {
                                for (String value : dashboardInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        dashboardInList.add(value.trim());
                                    }/* ww  w  .  jav a 2 s. com*/
                                }
                            }
                        }
                    }
                }
                if (dashboardNode.has("not")) {
                    JsonNode dashboardNotInNode = dashboardNode.get("not");
                    if (dashboardNotInNode != null) {
                        String dashboardNotInStr = dashboardNotInNode.asText();
                        if (StringUtils.isNotBlank(dashboardNotInStr)) {
                            String[] dashboardNotInArray = dashboardNotInStr.split(",");
                            if (dashboardNotInArray != null) {
                                for (String value : dashboardNotInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        dashboardNotInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        if (searchOpt.has("group")) {
            JsonNode groupNode = searchOpt.get("group");
            if (groupNode != null && groupNode.isContainerNode()) {
                if (groupNode.has("in")) {
                    JsonNode groupInNode = groupNode.get("in");
                    if (groupInNode != null) {
                        String groupInStr = groupInNode.asText();
                        if (StringUtils.isNotBlank(groupInStr)) {
                            String[] groupInArray = groupInStr.split(",");
                            if (groupInArray != null) {
                                for (String value : groupInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        groupInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
                if (groupNode.has("not")) {
                    JsonNode groupNotInNode = groupNode.get("not");
                    if (groupNotInNode != null) {
                        String groupNotInStr = groupNotInNode.asText();
                        if (StringUtils.isNotBlank(groupNotInStr)) {
                            String[] groupNotInArray = groupNotInStr.split(",");
                            if (groupNotInArray != null) {
                                for (String value : groupNotInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        groupNotInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        if (searchOpt.has("cat")) {
            JsonNode categoryNode = searchOpt.get("cat");
            if (categoryNode != null && categoryNode.isContainerNode()) {
                if (categoryNode.has("in")) {
                    JsonNode categoryInNode = categoryNode.get("in");
                    if (categoryInNode != null) {
                        String categoryInStr = categoryInNode.asText();
                        if (StringUtils.isNotBlank(categoryInStr)) {
                            String[] categoryInArray = categoryInStr.split(",");
                            if (categoryInArray != null) {
                                for (String value : categoryInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        categoryInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
                if (categoryNode.has("not")) {
                    JsonNode categoryNotInNode = categoryNode.get("not");
                    if (categoryNotInNode != null) {
                        String categoryNotInStr = categoryNotInNode.asText();
                        if (StringUtils.isNotBlank(categoryNotInStr)) {
                            String[] categoryNotInArray = categoryNotInStr.split(",");
                            if (categoryNotInArray != null) {
                                for (String value : categoryNotInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        categoryNotInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        if (searchOpt.has("metric")) {
            JsonNode metricNode = searchOpt.get("metric");
            if (metricNode != null && metricNode.isContainerNode()) {
                if (metricNode.has("in")) {
                    JsonNode metricInNode = metricNode.get("in");
                    if (metricInNode != null) {
                        String metricInStr = metricInNode.asText();
                        if (StringUtils.isNotBlank(metricInStr)) {
                            String[] metricInArray = metricInStr.split(",");
                            if (metricInArray != null) {
                                for (String value : metricInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        metricInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
                if (metricNode.has("not")) {
                    JsonNode metricNotInNode = metricNode.get("not");
                    if (metricNotInNode != null) {
                        String metricNotInStr = metricNotInNode.asText();
                        if (StringUtils.isNotBlank(metricNotInStr)) {
                            String[] metricNotInArray = metricNotInStr.split(",");
                            if (metricNotInArray != null) {
                                for (String value : metricNotInArray) {
                                    if (StringUtils.isNotBlank(value)) {
                                        metricNotInList.add(value.trim());
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        boolean needAndKeyword = false;

        final 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;
        String query = ADV_SEARCH_METRIC;

        if (dashboardInList.size() > 0 || dashboardNotInList.size() > 0) {
            boolean dashboardNeedAndKeyword = false;
            if (dashboardInList.size() > 0) {
                int indexForDashboardInList = 0;
                for (String dashboard : dashboardInList) {
                    if (indexForDashboardInList == 0) {
                        query += "WHERE dashboard_name in ('" + dashboard + "'";
                    } else {
                        query += ", '" + dashboard + "'";
                    }
                    indexForDashboardInList++;
                }
                query += ") ";
                dashboardNeedAndKeyword = true;
            }
            if (dashboardNotInList.size() > 0) {
                if (dashboardNeedAndKeyword) {
                    query += " AND ";
                } else {
                    query += " WHERE ";
                }
                int indexForDashboardNotInList = 0;
                for (String dashboard : dashboardNotInList) {
                    if (indexForDashboardNotInList == 0) {
                        query += "dashboard_name not in ('" + dashboard + "'";
                    } else {
                        query += ", '" + dashboard + "'";
                    }
                    indexForDashboardNotInList++;
                }
                query += ") ";
            }
            needAndKeyword = true;
        }

        if (groupInList.size() > 0 || groupNotInList.size() > 0) {
            if (needAndKeyword) {
                query += " AND ";
            } else {
                query += " WHERE ";
            }
            query += "( ";
            boolean groupNeedAndKeyword = false;
            if (groupInList.size() > 0) {
                query += "( ";
                int indexForGroupInList = 0;
                for (String group : groupInList) {
                    if (indexForGroupInList == 0) {
                        query += "metric_group LIKE '%" + group + "%'";
                    } else {
                        query += " or metric_group LIKE '%" + group + "%'";
                    }
                    indexForGroupInList++;
                }
                query += ") ";
                groupNeedAndKeyword = true;
            }
            if (groupNotInList.size() > 0) {
                if (groupNeedAndKeyword) {
                    query += " AND ";
                }
                query += "( ";
                int indexForGroupNotInList = 0;
                for (String group : groupNotInList) {
                    if (indexForGroupNotInList == 0) {
                        query += "metric_group NOT LIKE '%" + group + "%'";
                    } else {
                        query += " and metric_group NOT LIKE '%" + group + "%'";
                    }
                    indexForGroupNotInList++;
                }
                query += ") ";
            }
            query += ") ";
            needAndKeyword = true;
        }

        if (categoryInList.size() > 0 || categoryNotInList.size() > 0) {
            if (needAndKeyword) {
                query += " AND ";
            } else {
                query += " WHERE ";
            }
            query += "( ";
            boolean categoryNeedAndKeyword = false;
            if (categoryInList.size() > 0) {
                int indexForCategoryInList = 0;
                query += "( ";
                for (String category : categoryInList) {
                    if (indexForCategoryInList == 0) {
                        query += "metric_category LIKE '%" + category + "%'";
                    } else {
                        query += " or metric_category LIKE '%" + category + "%'";
                    }
                    indexForCategoryInList++;
                }
                query += ") ";
                categoryNeedAndKeyword = true;
            }
            if (categoryNotInList.size() > 0) {
                if (categoryNeedAndKeyword) {
                    query += " AND ";
                }
                query += "( ";
                int indexForCategoryNotInList = 0;
                for (String category : categoryNotInList) {
                    if (indexForCategoryNotInList == 0) {
                        query += "metric_category NOT LIKE '%" + category + "%'";
                    } else {
                        query += " and metric_category NOT LIKE '%" + category + "%'";
                    }
                    indexForCategoryNotInList++;
                }
                query += ") ";
            }
            query += ") ";
            needAndKeyword = true;
        }

        if (metricInList.size() > 0 || metricNotInList.size() > 0) {
            if (needAndKeyword) {
                query += " AND ";
            } else {
                query += " WHERE ";
            }
            query += "( ";
            boolean metricNeedAndKeyword = false;
            if (metricInList.size() > 0) {
                int indexForMetricInList = 0;
                query += " ( ";
                for (String metric : metricInList) {
                    if (indexForMetricInList == 0) {
                        query += "metric_name LIKE '%" + metric + "%'";
                    } else {
                        query += " or metric_name LIKE '%" + metric + "%'";
                    }
                    indexForMetricInList++;
                }
                query += ") ";
                metricNeedAndKeyword = true;
            }
            if (metricNotInList.size() > 0) {
                if (metricNeedAndKeyword) {
                    query += " AND ";
                }
                query += "( ";
                int indexForMetricNotInList = 0;
                for (String metric : metricNotInList) {
                    if (indexForMetricNotInList == 0) {
                        query += "metric_name NOT LIKE '%" + metric + "%'";
                    } else {
                        query += " and metric_name NOT LIKE '%" + metric + "%'";
                    }
                    indexForMetricNotInList++;
                }
                query += ") ";
            }
            query += " )";
        }

        query += " LIMIT " + (page - 1) * size + ", " + size;
        final String queryString = query;

        result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
            public ObjectNode doInTransaction(TransactionStatus status) {
                List<Metric> pagedMetrics = jdbcTemplate.query(queryString, new MetricRowMapper());

                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("isMetrics", true);
                resultNode.put("itemsPerPage", size);
                resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
                resultNode.set("data", Json.toJson(pagedMetrics));

                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:org.apache.fineract.infrastructure.dataexport.helper.DataExportUtils.java

/**
 * Gets the meta data of the columns of the specified table
 * //from w ww .  j a va2s.co m
 * @param tableName
 * @param jdbcTemplate
 * @return List of {@link EntityColumnMetaData} objects
 */
public static List<EntityColumnMetaData> getTableColumnsMetaData(final String tableName,
        final JdbcTemplate jdbcTemplate) {
    final List<EntityColumnMetaData> entityColumnsMetaData = new ArrayList<>();
    final List<String> columnNames = new ArrayList<>();
    final DataExportCoreTable coreTable = DataExportCoreTable.newInstance(tableName);
    Set<String> columnsToBeRemovedFromListsOfEntityColumns = new HashSet<>(
            Arrays.asList(DataExportEntityColumnName.TRANSFER_TO_OFFICE_ID, DataExportEntityColumnName.VERSION,
                    DataExportEntityColumnName.IMAGE_ID, DataExportEntityColumnName.ACCOUNT_TYPE_ENUM,
                    DataExportEntityColumnName.DEPOSIT_TYPE_ENUM, DataExportEntityColumnName.SUB_STATUS,
                    DataExportEntityColumnName.FULL_NAME));

    try {
        // see - http://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html
        // LIMIT 0 quickly returns an empty set. This can be useful for checking the validity of a query. 
        // It can also be employed to obtain the types of the result columns if you are using a MySQL API 
        // that makes result set metadata available.
        final ResultSetMetaData resultSetMetaData = jdbcTemplate
                .query("select * from " + tableName + " limit 0", new ResultSetExtractor<ResultSetMetaData>() {

                    @Override
                    public ResultSetMetaData extractData(ResultSet rs)
                            throws SQLException, DataAccessException {
                        return rs.getMetaData();
                    }
                });

        if (resultSetMetaData != null) {
            final int numberOfColumns = resultSetMetaData.getColumnCount();

            for (int i = 1; i <= numberOfColumns; i++) {
                String columnName = resultSetMetaData.getColumnName(i);
                String columnLabel = resultSetMetaData.getColumnName(i);
                String columnType = resultSetMetaData.getColumnTypeName(i);
                Integer columnIsNullable = resultSetMetaData.isNullable(i);
                boolean isNullable = (columnIsNullable != 0);

                if (coreTable != null) {
                    switch (coreTable) {
                    case M_LOAN_TRANSACTION:
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.UNRECOGNIZED_INCOME_PORTION);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.SUSPENDED_INTEREST_PORTION_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.SUSPENDED_FEE_CHARGES_PORTION_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.SUSPENDED_PENALTY_CHARGES_PORTION_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.OUTSTANDING_LOAN_BALANCE_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.RECOVERED_PORTION_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.PAYMENT_DETAIL_ID);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.OFFICE_ID);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.IS_ACCCOUNT_TRANSFER);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.APPUSER_ID);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.EXTERNAL_ID);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.CREATED_DATE);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.TRANSACTION_TYPE_ENUM);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.LOAN_ID);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.AMOUNT);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.PRINCIPAL_PORTION_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.INTEREST_PORTION_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.FEE_CHARGES_PORTION_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.PENALTY_CHARGES_PORTION_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.OVERPAYMENT_PORTION_DERIVED);
                        break;

                    case M_SAVINGS_ACCOUNT_TRANSACTION:
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.OVERDRAFT_AMOUNT_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.RUNNING_BALANCE_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.CUMULATIVE_BALANCE_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.BALANCE_NUMBER_OF_DAYS_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.BALANCE_END_DATE_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.CREATED_DATE);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.TRANSACTION_TYPE_ENUM);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.APPUSER_ID);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.SAVINGS_ACCOUNT_ID);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.AMOUNT);
                        break;

                    case M_LOAN_REPAYMENT_SCHEDULE:
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.ID);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.LOAN_ID);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.FROMDATE);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.INSTALLMENT);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.PRINCIPAL_COMPLETED_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.PRINCIPAL_WRITTENOFF_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.INTEREST_COMPLETED_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.INTEREST_WAIVED_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.INTEREST_WRITTENOFF_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.ACCRUAL_INTEREST_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.SUSPENDED_INTEREST_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.FEE_CHARGES_WRITTENOFF_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.FEE_CHARGES_COMPLETED_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.FEE_CHARGES_WAIVED_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.ACCRUAL_FEE_CHARGES_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.SUSPENDED_FEE_CHARGES_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.PENALTY_CHARGES_COMPLETED_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.PENALTY_CHARGES_WAIVED_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.PENALTY_CHARGES_WRITTEN_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.ACCRUAL_PENALTY_CHARGES_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.SUSPENDED_PENALTY_CHARGES_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.TOTAL_PAID_IN_ADVANCE_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.TOTAL_PAID_LATE_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.COMPLETED_DERIVED);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.CREATED_BY_ID);
                        columnsToBeRemovedFromListsOfEntityColumns.add(DataExportEntityColumnName.CREATED_DATE);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.LAST_MODIFIED_BY_ID);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.LAST_MODIFIED_DATE);
                        columnsToBeRemovedFromListsOfEntityColumns
                                .add(DataExportEntityColumnName.RECALCULATED_INTEREST_COMPONENT);
                        break;

                    default:
                        break;
                    }
                }

                if (!columnsToBeRemovedFromListsOfEntityColumns.contains(columnName)) {
                    if (columnName.equals(DataExportEntityColumnName.ID)) {
                        columnLabel = DataExportEntityColumnName.TRANSACTION_ID;
                    }
                    EntityColumnMetaData entityColumnMetaData = EntityColumnMetaData.newInstance(columnName,
                            columnLabel, columnType, isNullable);

                    entityColumnsMetaData.add(entityColumnMetaData);
                    columnNames.add(columnName);
                }
            }
        }
    }

    catch (Exception exception) {
        exception.printStackTrace();
    }

    return entityColumnsMetaData;
}