com.esa.infocontrol.data.jdbc.BaseDAO.java Source code

Java tutorial

Introduction

Here is the source code for com.esa.infocontrol.data.jdbc.BaseDAO.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.esa.infocontrol.data.jdbc;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.esa.infocontrol.data.DataArrayWrapper;
import com.esa.infocontrol.data.DataRow;
import com.esa.infocontrol.utils.RequestParametersUtils;
import java.util.List;
import javax.ws.rs.core.MultivaluedMap;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;

public class BaseDAO {

    private static final Logger LOG = LoggerFactory.getLogger(BaseDAO.class);

    static final Map<String, String> queries = new HashMap<String, String>();
    static final String dataSourceName = "InfoControl";
    static {
        queries.put("qry_user_by_username", "select * from users where username = :username");
        queries.put("qry_users", "select name, username, enabled from users");
        queries.put("qry_menu",
                "select * from menu where enabled =1 and authority in (:authorities) order by parent_id, seq asc");
        queries.put("qry_queries",
                "SELECT q.query, qds.datasource FROM queries q, queries_ds qds where q.name = qds.name and q.version = qds.version and q.name = :name and q.version = :version");
    }

    public static DataArrayWrapper getList(String queryName, int version, String id,
            Map<String, List<String>> queryParams) {
        MapSqlParameterSource params = RequestParametersUtils.getQueryParameters(id, queryParams);
        return getList(queryName, version, id, params);
    }

    public static DataArrayWrapper getList(String queryName, int version, String id, MapSqlParameterSource params) {
        String[] queryData = getQuery(queryName, version);
        return BaseDataJDBC.getList(queryData[0], queryData[1], params);
    }

    private static String[] getQuery(String queryName, int version) {
        String[] queryData = new String[2];
        if (queryName.charAt(0) == '$') {
            queryName = queryName.substring(1);
            LOG.debug("Getting query named: {}", queryName);
            MapSqlParameterSource params = new MapSqlParameterSource("name", queryName);
            params.addValue("version", version);
            DataArrayWrapper data = BaseDAO.getList("qry_queries", version, null, params);
            StringBuilder sb = new StringBuilder();
            for (DataRow row : data.getDataArray()) {
                sb.append(row.get(0));
                sb.append(" ");
            }
            queryData[0] = data.getDataArray().get(0).get(1);
            queryData[1] = sb.toString();
        } else {
            queryData[0] = dataSourceName;
            queryData[1] = queries.get(queryName);
        }
        System.out.println(Arrays.toString(queryData));
        return queryData;
    }

    public static void updateData(String queryName, int version, String id, Map<String, List<String>> queryParams) {
        MapSqlParameterSource params = RequestParametersUtils.getQueryParameters(id, queryParams);
        updateData(queryName, version, id, params);
    }

    public static void updateData(String queryName, int version, String id, MapSqlParameterSource params) {
        String[] queryData = getQuery(queryName, version);
        BaseDataJDBC.updateData(queryData[0], queryData[1], params);
    }

}