Hi there !

I got into a new problem, that i can't fix it. I have a page that i'd like
to show all the data from a table in the database, so i am using JTable. If
anyone can help me, i would be very gratefull. Thanks in advance !

Here is the JSP:

<%@ page import="databeans.*"%>
<%@ page import="java.sql.Connection"%>
<jsp:useBean id="ss_DatePers" class="databeans.Personal" scope="session"/>
<%! ModelJTableGeneralizat modelDate=null;%>

<%
// initializez modelul de date cu pontajul angajatului curent selectat
Connection conn=Utilitati.getConexiune();
System.out.println("pontajebody->conn =>" + conn);
System.out.println("pontajebody->ss_DatePers.getMarca() =>" +
ss_DatePers.getMarca());
System.out.println("pontajebody->luna =>" + request.getParameter("luna"));

String filtruDate=" where marca="+ss_DatePers.getMarca()+" and
to_char(data,'mm')='"+request.getParameter("luna")+"' order by data";
java.util.ArrayList datePontaj = ObiectPersistent.getObjects(Pontaje.class
,conn,filtruDate);

System.out.println("pontajebody->datePontaj =>" + datePontaj);

modelDate = new ModelJTableGeneralizat(Pontaje.class,datePontaj,conn);
System.out.println("pontajebody->modelDate =>" + datePontaj);
conn.close();
request.getSession().setAttribute("ss_ModelDatePontaje",modelDate);
%>

<html:form action="/pontajAction" >
<TABLE width='180' border='0.2'>
<tr>
<% for (int k=0;k<modelDate.getColumnCount();k++) {%>
<td align="center">
<%=modelDate.getColumnName(k).toUpperCase()%>
</td>
<%}%>
</TR>
<% for (int i=0;i<modelDate.getRowCount();i++){%>
<TR>
<% for (int k=0;k<modelDate.getColumnCount();k++) {%>
<td>
<INPUT type='text' size='10'
name="valoare_<%=i+"_"+k%>" value="<%=modelDate.getValueAt(i,k)%>"
<%=(k==0||k==1)?"readonly='true'":" "%> >
</td>
<%}%>
</TR>
<%}%>
</TABLE>
<html:submit property="save" value="Salveaza Modificari"/>
</html:form>

When this page load i get an error message in the log:

07/02/03 21:47:38 pontajebody->conn =>
[EMAIL PROTECTED]
07/02/03 21:47:38 pontajebody->ss_DatePers.getMarca() =>101
07/02/03 21:47:38 pontajebody->luna =>02
07/02/03 21:47:38 pontajebody->datePontaj =>[EMAIL PROTECTED]
07/02/03 21:47:38 objectClass=>class databeans.Pontaje
07/02/03 21:47:38 info=>[EMAIL PROTECTED]
07/02/03 21:47:38 listaAtributePersistente{}
07/02/03 21:47:38 atribut =>>protected java.math.BigDecimal
databeans.Pontaje.activid
07/02/03 21:47:38 atribut =>>protected java.sql.Timestamp
databeans.Pontaje.data
07/02/03 21:47:38 atribut =>>protected java.math.BigDecimal
databeans.Pontaje.marca
07/02/03 21:47:38 atribut =>>protected java.math.BigDecimal
databeans.Pontaje.oreabsnem
07/02/03 21:47:38 atribut =>>protected java.math.BigDecimal
databeans.Pontaje.oreco
07/02/03 21:47:38 atribut =>>protected java.math.BigDecimal
databeans.Pontaje.orelucrate
07/02/03 21:47:38 listaAtribute[Ljava.beans.PropertyDescriptor;@911fb5
07/02/03 21:47:38 objectClass.getName() = Pontaje
07/02/03 21:47:38 java.lang.NullPointerException
07/02/03 21:47:38     at
databeans.ModelJTableGeneralizat.loadAtributePersistente(
ModelJTableGeneralizat.java:81)
07/02/03 21:47:38     at databeans.ModelJTableGeneralizat.<init>(
ModelJTableGeneralizat.java:49)
07/02/03 21:47:38     at
_tiles._bodys._PontajeBody._jspService(_PontajeBody.java:76)
07/02/03 21:47:38     at com.orionserver.http.OrionHttpJspPage.service(
OrionHttpJspPage.java:59)
07/02/03 21:47:38     at oracle.jsp.runtimev2.JspPageTable.service(
JspPageTable.java:453)
07/02/03 21:47:38     at oracle.jsp.runtimev2.JspServlet.internalService(
JspServlet.java:591)
07/02/03 21:47:38     at oracle.jsp.runtimev2.JspServlet.service(
JspServlet.java:515)
07/02/03 21:47:38     at javax.servlet.http.HttpServlet.service(
HttpServlet.java:856)
07/02/03 21:47:38     at
com.evermind.server.http.ServletRequestDispatcher.invoke(
ServletRequestDispatcher.java:711)
07/02/03 21:47:38     at
com.evermind.server.http.ServletRequestDispatcher.forwardInternal(
ServletRequestDispatcher.java:368)
07/02/03 21:47:38     at
com.evermind.server.http.HttpRequestHandler.doProcessRequest(
HttpRequestHandler.java:866)
07/02/03 21:47:38     at
com.evermind.server.http.HttpRequestHandler.processRequest(
HttpRequestHandler.java:448)
07/02/03 21:47:38     at
com.evermind.server.http.HttpRequestHandler.serveOneRequest(
HttpRequestHandler.java:216)
07/02/03 21:47:38     at com.evermind.server.http.HttpRequestHandler.run(
HttpRequestHandler.java:117)
07/02/03 21:47:38     at com.evermind.server.http.HttpRequestHandler.run(
HttpRequestHandler.java:110)
07/02/03 21:47:38     at
oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(
ServerSocketReadHandler.java:260)
07/02/03 21:47:38     at
oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(
ServerSocketAcceptHandler.java:239)
07/02/03 21:47:38     at
oracle.oc4j.network.ServerSocketAcceptHandler.access$700(
ServerSocketAcceptHandler.java:34)
07/02/03 21:47:38     at
oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(
ServerSocketAcceptHandler.java:880)
07/02/03 21:47:38     at
com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(
ReleasableResourcePooledExecutor.java:303)
07/02/03 21:47:38     at java.lang.Thread.run(Thread.java:595)
07/02/03 21:47:38 pontajebody->modelDate =>[EMAIL PROTECTED]

and this message on the page :

java.lang.NullPointerException
at databeans.ModelJTableGeneralizat.getColumnName(
ModelJTableGeneralizat.java:105)
at _tiles._bodys._PontajeBody._jspService(_PontajeBody.java:93)
[/tiles/bodys/PontajeBody.jsp]
at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.1.0)
].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:453)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:591)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:515)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0)
].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java
:711)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0)
].server.http.ServletRequestDispatcher.forwardInternal(
ServletRequestDispatcher.java:368)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0)
].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java
:866)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0)
].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:448)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0)
].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java
:216)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0)
].server.http.HttpRequestHandler.run(HttpRequestHandler.java:117)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0)
].server.http.HttpRequestHandler.run(HttpRequestHandler.java:110)
at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(
ServerSocketReadHandler.java:260)
at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(
ServerSocketAcceptHandler.java:239)
at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(
ServerSocketAcceptHandler.java:34)
at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(
ServerSocketAcceptHandler.java:880)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0)
].util.ReleasableResourcePooledExecutor$MyWorker.run(
ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)

My JTable class is :

package databeans;

import java.beans.PropertyDescriptor;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

import java.sql.*;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import javax.swing.table.AbstractTableModel;

public class ModelJTableGeneralizat extends AbstractTableModel {
   private ArrayList listaObiecte = new ArrayList();
   private PropertyDescriptor[] listaAtribute;
   private Class clasaObiect;
   public Connection conexiune;

   public ModelJTableGeneralizat(Class objectClass, String whereClause,
                                 Connection conn) {
       try {
           this.conexiune = conn;
           this.clasaObiect = objectClass;
           this.listaObiecte =
                   ObiectPersistent.getObjects(objectClass, conexiune,
                                               whereClause);
           this.loadAtributePersistente(objectClass);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }

   public ModelJTableGeneralizat(Class objectClass, ArrayList setObiecte,
                                 Connection conn) throws SQLException {
       try {
           this.conexiune = conn;
       } catch (Exception e) {
           e.printStackTrace();
       }

       this.clasaObiect = objectClass;
       this.listaObiecte = setObiecte;
       System.out.println("objectClass=>"+objectClass);
       this.loadAtributePersistente(objectClass);
   }

   private void loadAtributePersistente(Class objectClass) throws
SQLException {
       java.beans.BeanInfo info = null;
       try {
           info =
java.beans.Introspector.getBeanInfo(objectClass, objectClass.getSuperclass
());
           System.out.println("info=>" +info);
       } catch (java.beans.IntrospectionException e) {
           e.printStackTrace(System.out);
           System.out.println("Exceptie !!!!!!!");
       }
       PropertyDescriptor[] toateAtributele = info.getPropertyDescriptors
();
       // extragem doar atributele non-transient intr-un hashmap a carui
cheie va fi numele atributului
       HashMap listaAtributePersistente = new java.util.HashMap();
       System.out.println
("listaAtributePersistente"+listaAtributePersistente);
       Statement stmt = null;
       try {
           for (int i = 0; i < toateAtributele.length; i++) {
               Field atribut =
                   objectClass.getDeclaredField
(toateAtributele[i].getName());
               System.out.println("atribut =>>"+atribut);
               if (!Modifier.isTransient(atribut.getModifiers()))

listaAtributePersistente.put(toateAtributele[i].getName().toLowerCase(),

                                                toateAtributele[i]);
           }
           this.listaAtribute =
                   new PropertyDescriptor[listaAtributePersistente.size()];
           System.out.println("listaAtribute"+listaAtribute);
           // aranjam atributele in ordinea definita de tabela stmt=
conexiune.createStatementp;
           System.out.println("objectClass.getName() = "
+objectClass.getName().substring(objectClass.getName().lastIndexOf('.')+1));
           ResultSet rs =
               stmt.executeQuery("select * from " + objectClass.getName
().substring(objectClass.getName().lastIndexOf('.') +

1) +
                                 " where rowid=null ");
           ResultSetMetaData rsMeta =
               rs.getMetaData(); // va returna coloanele in ordinea
definita de tabela
           int nrColoane = rsMeta.getColumnCount();
           int k = -1;
           for (int i = 1; i <= nrColoane; i++)
               if
(listaAtributePersistente.get(rsMeta.getColumnName(i).toLowerCase())
!=
                   null) {
                   k++;
                   this.listaAtribute[k] =

(PropertyDescriptor)listaAtributePersistente.get(rsMeta.getColumnName
(i).toLowerCase());
               }
           stmt.close();
       } catch (Exception e) {
           if (stmt != null)
               stmt.close();
           e.printStackTrace(System.out);
       }
   }

   public String getColumnName(int columnIndex) {
       return this.listaAtribute[columnIndex].getName();
   }

   public int getColumnCount() {
       return this.listaAtribute.length;
   }

   public int getRowCount() {
       return this.listaObiecte.size();
   }

   public Class getColumnClass(int columnIndex) {
       return this.listaAtribute[columnIndex].getPropertyType();
   }

   public Object getValueAt(int rowIndex, int columnIndex) {
       // valoarea o preluam prin invocarea metodei get a atributului
corespunzator coloanei
       try {
           Object objCurent = this.listaObiecte.get(rowIndex);
           return
this.listaAtribute[columnIndex].getReadMethod().invoke(objCurent,


null);
       } catch (Exception e) {
           e.printStackTrace();
           return null;
       }
   }

   public void setValueAt(Object valNoua, int rowIndex, int columnIndex) {
       Object[] argumente = { valNoua };
       Object objCurent = this.listaObiecte.get(rowIndex);
       ;
       try {
           this.listaAtribute[columnIndex].getWriteMethod().invoke(objCurent,


argumente);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }

   public boolean isCellEditable(int rowIndex, int columnIndex) {
       return true;
   }

   // metode pt. gestionarea aspectelortranzac(ionale ale modelului

   public Object getObiectFromLinie(int rowIndex) {
       return this.listaObiecte.get(rowIndex);
   }

   public void addObiectNou() throws Exception {
       Object obiectNou = this.clasaObiect.newInstance();
       ;
       this.listaObiecte.add(obiectNou);
   }

   public void removeObiectFromLinie(int rowIndex) throws Exception {
       ObiectPersistent obiect =
           (ObiectPersistent)this.listaObiecte.get(rowIndex);
       if (obiect.getStare() !=
           ObiectPersistent.NOU) // daca e NOU il scot doar din lista
       {
           obiect.setStare(ObiectPersistent.STERS);
           obiect.salveaza(this.conexiune);
       }
       this.listaObiecte.remove(obiect);
   }

   public void salveazaModificariPtLinia(int rowIndex) throws Exception {
       ObiectPersistent obiect =
           (ObiectPersistent)this.listaObiecte.get(rowIndex);
       obiect.salveaza(this.conexiune);
   }

   public void refreshObiectPtLinia(int rowIndex) throws Exception {
       ObiectPersistent obiect =
           (ObiectPersistent)this.listaObiecte.get(rowIndex);
       obiect.refresh(this.conexiune);
   }

   public void anuleazaModificariPtLinia(int rowIndex) throws Exception {
       ObiectPersistent obiect =
           (ObiectPersistent)this.listaObiecte.get(rowIndex);
       if (obiect.getStare() == ObiectPersistent.NOU)
           this.listaObiecte.remove(obiect);
       else
           obiect.refresh(this.conexiune);
   }

   public boolean isLinieModificata(int rowIndex) {
       ObiectPersistent obiect =
           (ObiectPersistent)this.listaObiecte.get(rowIndex);
       if (obiect.getStare() == ObiectPersistent.SINCRONIZAT)
           return false;
       else
           return true;
   }

   public void saveAll() throws Exception {
       Iterator i = this.listaObiecte.iterator();
       while (i.hasNext())
           ((ObiectPersistent)i.next()).salveaza(this.conexiune);
   }

}

Reply via email to