Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2016, 18:51
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Excepciones y base de datos

Hola a todos, tengo la siguiente consulta, resulta que trato de no trabajar en memoria con la base de datos, es decir no tener una total dependencia a las colecciones, y hasta para crear y editar lo logro, estoy trabajando con una solución genérica, como ven:

Manejadora.java

Código Java:
Ver original
  1. public void add(T objeto)throws Exception {
  2.         if(this.checkUniqueKey(objeto)){  
  3.             throw new Exception(this.getFetchMessage());
  4.         }
  5.         else {
  6.             FacadeBroker.getInstance().guardame(this.getDates(objeto), this.getTable());
  7.         }
  8.     }
  9.     public void edit(T objeto)throws Exception {
  10.         T aux = this.findById(Conversiones.CInt(getDates(objeto)[0]));
  11.         if(!aux.equals(objeto)){
  12.             if(this.checkUniqueKey(objeto)){  
  13.                 throw new Exception(this.getFetchMessage());
  14.             }
  15.         }
  16.         FacadeBroker.getInstance().modificame(this.getDates(objeto), this.getTable());        
  17.     }

pero cuando se trata de borrar, no sé cómo poner la excepción en esta solución genérica:

Código Java:
Ver original
  1. public void delete(T objeto)throws Exception {
  2.         try {
  3.             FacadeBroker.getInstance().eliminame(this.getTable(), this.getDeleteCondition(objeto));
  4.         }
  5.         catch(Exception ex){
  6.             System.out.println(ex.getMessage());
  7.         }
  8.     }
  9.  
  10. protected boolean checkDelete(){ return false; }
  11. protected String getDeleteCondition(T objeto) { return null; }
  12. protected String getTable() { return null; }

ManCargos.java

Código Java:
Ver original
  1. @Override
  2.     protected String getTable() {
  3.         return "cargos";
  4.     }
  5. @Override
  6.     protected boolean checkDelete() {
  7.         return true;
  8.     }
  9. @Override
  10.     protected String getDeleteCondition(Cargo objeto) {
  11.         String query = " where carId =" +objeto.getId();
  12.         if(this.checkDelete()){
  13.             query +=" and carId not in (select distinct carId from personas)";
  14.         }
  15.         return query;
  16.     }

La idea que las cargos no se borren si están asignados a personas, pero ¿cómo trato la excepción para el caso de las bajas?

Espero sus respuestas y saludos.