Exemple #1
0
  @Override
  public ArrayList<V> select(String query, HashMap variables) {
    clearSignals();

    ArrayList results = new ArrayList();
    V value;
    K key;
    ResultSet rs = null;
    Connection con = null;
    PreparedStatementFactory psf = new PreparedStatementFactory(variables);
    PreparedStatement ps = null;

    try {
      con = ds.getConnection();
      if (con.isClosed()) {
        if (logger.isWarnEnabled()) logger.warn("Connection is closed: GenericDAO.select!");
        throw new SQLException();
      }

      ps = con.prepareStatement(query);

      ps = psf.generate(ps); // enter variables here!
      logger.debug("query is..." + ps.toString());
      key = (K) ps.toString();
      if ((results = (V) cache.get(key)) == null) {
        rs = ps.executeQuery();
        results = this.processResultRows(rs);
        if (results != null) {
          cache.put(key, results);
        }
      }

      // if (logger.isInfoEnabled()) {
      logger.debug("Executing dynamic query, EntityDAO.select:query " + query);
      //  }
      signalSuccess();

    } catch (SQLException sqle) {
      signalFailure(sqle);
      if (logger.isWarnEnabled()) {
        logger.warn(
            "Exception while executing dynamic query, GenericDAO.select: "
                + query
                + ":message: "
                + sqle.getMessage());
        sqle.printStackTrace();
      }
    } finally {
      this.closeIfNecessary(con, rs, ps);
    }
    return results;
  }