Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/08/2015, 08:16
occiso
 
Fecha de Ingreso: febrero-2005
Mensajes: 198
Antigüedad: 19 años, 10 meses
Puntos: 5
Respuesta: Librería para aplicaciones JEE

Saludos Gus, gracias por tu respuesta y perdón el retraso por responder, mucho lío en el trabajo.

La cuestión es que me pidieron una librería que fuera lo más independiente posible, ten sencilla como importarla desde maven y solo indicarle los datos de configuración que son el nombre de la tabla (que por nomenclatura varía de una aplicación a otra) y la ruta donde se guardan los informes.

Al final he hecho una clase Configuración con patron singlenton que obtiene la configuración de los parametros indicados en el web.xml (init-parameters) cuando arranca la app. Luego desde el dao obtengo el nombre de la tabla de la clase. Cuando se importa la librería lo único que hay que hacer es añadir esos parámetros al web.xml de cada aplicación y listo. No utilizo JPA, sino un DAO más clásico que obtiene la conexion de un datasource.
te pongo el código de una versión casi final, la que tenía en casa, la del trabajo le he retocado cuatro detalles.

Código PHP:
package es.jose.lib.informes.dao;

import es.jose.lib.informes.interfaces.iGenericDAO;
import es.jose.lib.informes.oraclejdbc.OracleConnUtils;
import es.jose.lib.informes.utils.ReportsConfig;
import es.jose.lib.informes.vo.ReportsVO;
import java.sql.Connection;
import java.util.List;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.ResultSet;
import java.util.ArrayList;

public class 
ReportsDAO implements iGenericDAO<ReportsVO>{
  private 
PreparedStatement searchStmtFilter;    
  private 
PreparedStatement searchStmt;
  private 
PreparedStatement removeStmt;
  private 
PreparedStatement insertStmt;
  
  public 
ReportsDAO(){
      
Connection conn OracleConnUtils.getOracleConnection();
      
ReportsConfig configReportsConfig.getInstance();
      try {
          
searchStmtFilter conn.prepareStatement("SELECT *  FROM " +config.getTableName() + " WHERE DESCRIPCIO =  ?  AND IDIOMA  = ? AND NOM_FITXER = ?");
          
searchStmt conn.prepareStatement("SELECT *  FROM "config.getTableName());
          
insertStmt conn.prepareStatement("INSERT INTO " +config.getTableName()+ "(DESCRIPCIO, IDIOMA, NOM_FITXER)VALUES(?, ?, ?)");
          
removeStmt conn.prepareStatement("DELETE FROM "config.getTableName() +" WHERE NOM_FITXER = ?");
      } catch (
SQLException ex) {
          
Logger.getLogger(ReportsDAO.class.getName()).log(Level.ALLnullex);
      }
  }
  
     @
Override
    
public List<ReportsVOsearch(ReportsVO vo) {
        List<
ReportsVOreportsList null;
      try {
          
reportsList = new ArrayList<>();         
          
ResultSet result searchStmt.executeQuery();                    
          while (
result.next()){
              
ReportsVO report = new ReportsVO();
              
report.setDescripcio(result.getString("DESCRIPCIO"));
              
report.setIdioma(result.getString("IDIOMA"));
              
report.setNomFitxer(result.getString("NOM_FITXER"));
              
reportsList.add(report);
          }
      } catch (
SQLException ex) {
          
Logger.getLogger(ReportsDAO.class.getName()).log(Level.SEVEREnullex);
      }        
      return 
reportsList;
    }
    
    public List<
ReportsVOsearchFilter(ReportsVO vo) {
        List<
ReportsVOreportsList null;
      try {
           
Connection conn OracleConnUtils.getOracleConnection();
           
searchStmt conn.prepareStatement("SELECT *  FROM RUM_REPORTS WHERE DESCRIPCIO =  ?  AND IDIOMA  = ? AND NOM_FITXER = ?");
          
reportsList = new ArrayList<>();
          
searchStmt.setString(1vo.getDescripcio());
          
searchStmt.setString(2vo.getIdioma());
          
searchStmt.setString(3vo.getNomFitxer());
          
ResultSet result searchStmt.executeQuery();                    
          while (
result.next()){
              
ReportsVO report = new ReportsVO();
              
report.setDescripcio(result.getString("DESCRIPCIO"));
              
report.setIdioma(result.getString("IDIOMA"));
              
report.setNomFitxer(result.getString("NOM_FITXER"));
              
reportsList.add(report);
          }
      } catch (
SQLException ex) {
          
Logger.getLogger(ReportsDAO.class.getName()).log(Level.SEVEREnullex);
      }        
      return 
reportsList;
    }

    @
Override
    
public void remove(ReportsVO vo) {
      try {
          
removeStmt.setString(1vo.getNomFitxer());
          
removeStmt.executeQuery();
      } catch (
SQLException ex) {
          
Logger.getLogger(ReportsDAO.class.getName()).log(Level.SEVEREnullex);
      }
    }

    @
Override
    
public void insert(ReportsVO vo) {
      try {
          
insertStmt.setString(1vo.getDescripcio());
          
insertStmt.setString(2vo.getIdioma());
          
insertStmt.setString(3vo.getNomFitxer());
          
insertStmt.executeUpdate();                    
      } catch (
SQLException ex) {
          
Logger.getLogger(ReportsDAO.class.getName()).log(Level.SEVEREnullex);
      }
    }