Foros del Web » Programación para mayores de 30 ;) » Java »

Error en Clase con patron BaseDAO

Estas en el tema de Error en Clase con patron BaseDAO en el foro de Java en Foros del Web. Estoy usando el patron BASEDAO para el acceso a datos obviamente. Tengo: La clase BaseDAO @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original public abstract class BaseDAO ...
  #1 (permalink)  
Antiguo 13/07/2015, 01:51
Avatar de giuli956  
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 12 años, 1 mes
Puntos: 1
Error en Clase con patron BaseDAO

Estoy usando el patron BASEDAO para el acceso a datos obviamente.

Tengo:
La clase BaseDAO
Código Java:
Ver original
  1. public abstract class BaseDAO {
  2.  
  3.         /**
  4.         * Atributos comunes que podemos utilizar
  5.         */
  6.         protected Connection conexion;
  7.         protected Statement stmt;
  8.         /**
  9.         * Métodos abstractos para realizar CRUD sobre entidades
  10.         */
  11.         public abstract void guardar(Entidad entidad);
  12.         public abstract void modificar(Entidad entidad);
  13.         public abstract void eliminar(Entidad entidad);
  14.         public abstract List<Entidad> buscar();
  15.        
  16. }

Alumno hereda de persona(copio solo el constructor):

Código Java:
Ver original
  1. public class Alumno extends Persona
  2.  
  3. public Alumno(String NombreP, String ApellidoP, String tipoDocP,Calendar fechaNacP,
  4.             long numDocP,long nroLegajo,Calendar fechaIngreso,Character tipoAlumno) {
  5.         super(NombreP, ApellidoP, tipoDocP,fechaNacP, numDocP);
  6.    
  7.         this.nroLegajo = nroLegajo;
  8.         this.fechaIngreso = fechaIngreso;
  9.         this.tipoAlumno = tipoAlumno;
  10.     }
Persona hereda de entidad

Código Java:
Ver original
  1. public class Persona extends Entidad
  2.     public Persona(String NombreP,String ApellidoP, String tipoDocP, Calendar fechaNacP
  3.             ,Long numDocP){
  4.         this.Nombre=NombreP;
  5.         this.Apellido=ApellidoP;
  6.         this.tipoDoc=tipoDocP;
  7.    
  8.        
  9.        
  10.         if (fechaNacP.before(fechaValida())){
  11.             this.fechaNac = fechaNacP;
  12.         }else{
  13.         System.out.println("usted es menor de edad");
  14.         this.fechaNac = fechaNacP;
  15.         }
  16.         this.numDoc=numDocP;
  17.        
  18.     }
Y el problema viene aqui: tengo un form con los inputs y un boton guardar.

Pero el metodo guardar que esta abajo no lo reoconoce.
Código Java:
Ver original
  1. btnGuardar.addActionListener(new ActionListener() {
  2.             public void actionPerformed(ActionEvent e) {
  3.                 //evito inyeccion sql
  4.                 String nom = new String(ENombre.getText());
  5.                 String Ape = new String(EApellido.getText());
  6.                 String td = new String(EtipoDoc.getText());
  7.                 int ano = Integer.parseInt(Efechanac.getText().substring(6,10));
  8.                 int mes = Integer.parseInt(Efechanac.getText().substring(3,5))- 1;
  9.                 int dia = Integer.parseInt(Efechanac.getText().substring(0,2));
  10.                 int anoI = Integer.parseInt(Efechaing.getText().substring(6,10));
  11.                 int mesI = Integer.parseInt(Efechaing.getText().substring(3,5))- 1;
  12.                 int diaI = Integer.parseInt(Efechaing.getText().substring(0,2));
  13.                 System.out.println(dia);
  14.                 GregorianCalendar fechaNac = new GregorianCalendar(ano, mes,dia);
  15.                 GregorianCalendar fechaIng = new GregorianCalendar(anoI,mesI,diaI);
  16.        
  17.                 long nroDoc = Long.parseLong(EnroDoc.getText());
  18.                 long nroLeg =Long.parseLong(EnroLegajo.getText());
  19.                 String eta = ETA.getText();
  20.                 Alumno A1= new Alumno(nom,Ape,td,fechaNac,nroDoc,nroLeg,fechaIng,eta.charAt(0));
  21.                 personaDAO nuevoAlumno= new personaDAO();
  22.                 nuevoAlumno.guardar(A1);
  23.             }
  24.         });

Código Java:
Ver original
  1. nuevoAlumno.guardar(A1);

Y el compilador de Eclipse dice: The method guardar(Entidad) in the type personaDAO is not applicable for the arguments (Alumno)

Desde ya les agradezco su ayuda.
  #2 (permalink)  
Antiguo 13/07/2015, 03:24
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Respuesta: Error en Clase con patron BaseDAO

No has implementado el método guardar, java no sabe qué tiene que hacer con ese método.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 13/07/2015, 03:27
Avatar de giuli956  
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Error en Clase con patron BaseDAO

Cita:
Iniciado por Xerelo Ver Mensaje
No has implementado el método guardar, java no sabe qué tiene que hacer con ese método.
Me falto postear PersonaDAO mil disculpas:

Código Java:
Ver original
  1. public class personaDAO extends BaseDAO{
  2.  
  3.    
  4.     public void guardar(Entidad entidad) {
  5.    
  6.         //Persona persona = (Persona) entidad;
  7.         Alumno alumno=(Alumno) entidad;
  8.         ConexionBD conex= new ConexionBD();
  9.           try {
  10.               SimpleDateFormat formateador = new SimpleDateFormat("yyyy/mm/dd");
  11.               String fechanac=formateador.format(alumno.getFechaNac().getTime());
  12.               String fechaing=formateador.format(alumno.getFechaIngreso().getTime());
  13.              
  14.               StringBuilder cadena=new StringBuilder();
  15.               System.out.println(alumno.getFechaNac().getTime());
  16.            java.sql.Statement estatuto = ConexionBD.getConnection().createStatement();
  17.        
  18.           cadena.append("INSERT INTO Alumno (nombre,apellido,fechaNac,tipoDoc,nroDoc,nroLegajo,fechaIngreso,tipoAlumno) VALUES ").append("(").append("'"+alumno.getNombre()+"'").append(",");
  19.            cadena.append("'"+alumno.getApellido()+"'").append(",").append("'"+fechanac+"'").append(",").append("'"+alumno.getTipoDoc()+"'").append(",");
  20.            cadena.append("'"+alumno.getNumDoc()+"'").append(",").append("'"+alumno.getNroLegajo()+"'").append(",");
  21.            cadena.append("'"+fechaing+"'").append(",").append("'"+alumno.getTipoalumno()+"'").append(");");
  22.  
  23.          //  System.out.println(cadena);
  24.    
  25.            estatuto.execute(cadena.toString());
  26.            estatuto.close();
  27.            conex.Desconectar();
  28.            
  29.           } catch (SQLException e) {
  30.                     System.out.println(e.getMessage());
  31.            
  32.           }
  33.          }
  34.        
  35.     @Override
  36.     public void modificar(Entidad entidad) {
  37.    
  38.     Persona persona = (Persona) entidad;
  39.    
  40.     }
  41.     @Override
  42.     public void eliminar(Entidad entidad) {
  43.     /**
  44.     * Convertir la entidad a Persona (Downcasting)
  45.     */
  46.     Persona persona = (Persona) entidad;
  47.     /**
  48.     * Obtener los datos y realizar un DELETE
  49.     */
  50.     }
  51.     public List<Entidad> buscar() {
  52.        
  53.         List<Entidad> personas = new ArrayList<Entidad>();
  54.    
  55.         return personas;
  56.         }
  #4 (permalink)  
Antiguo 13/07/2015, 03:57
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Respuesta: Error en Clase con patron BaseDAO

Revisa que la clase Entidad del Dao es la misma que la que heredan Persona y Alumno.

Asegúrate de que has guardado y compilado las clases correctamente.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 13/07/2015, 04:37
Avatar de giuli956  
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Error en Clase con patron BaseDAO

Cita:
Iniciado por Xerelo Ver Mensaje
Revisa que la clase Entidad del Dao es la misma que la que heredan Persona y Alumno.

Asegúrate de que has guardado y compilado las clases correctamente.
Solo Persona hereda de entidad, alumno hereda de persona

Código Java:
Ver original
  1. package ar.com.gugler.sga.modelo;
  2.  
  3. public class Entidad {
  4.  
  5.         protected Long id;
  6.         public Long getId() {
  7.         return id;
  8.         }
  9.         public void setId(Long id) {
  10.         this.id = id;
  11.         }
  12.        
  13. }

No faltara el constructor de PersonaDAO?
  #6 (permalink)  
Antiguo 13/07/2015, 06:39
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Respuesta: Error en Clase con patron BaseDAO

Todas las clases de java tienen constructor, si tú no lo indicas tienen el por defecto. Si debería hacer algo el constructor o no, es cosa tuya.

El error te está diciendo que no puedes pasar como parámetro Alumno al método guardar, así que o Alumno no es Entidad o no has guardado los cambios/compilado.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: clase, eclipse, patron, sql, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:59.