WritableTableFormat persistence

View: New views
1 Messages — Rating Filter:   Alert me  

WritableTableFormat persistence

by alchumley :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I can't get my jTable to keep or store data in the database. I've got an entity class for the table that I'm trying to tie to a WritableTableFormat (see below). This does populate the jTable correctly, and lets me edit cells, but as soon as the mouse goes off of the cell, the data reverts (though in some cases, the data is actually saved in the jTable, but doesn't get saved to the database. I assume I need to have something like "em.persist(wd);" wrapped inside a transaction somewhere, but I can't figure out where to put this, if this is even what should be used...

WeeklyDetailsTableFormat.java
--------------------------------

import ca.odell.glazedlists.gui.*;
import ca.odell.glazedlists.*;
import javax.swing.table.*;

public class WeeklyDetailsTableFormat implements WritableTableFormat {
   public int getColumnCount() {
       return 7;
   }
   
   public String getColumnName(int column) {
       if(column == 0)      return "Week Starting";
       else if(column == 1) return "Comments";
       else if(column == 2) return "Title";
       else if(column == 3) return "ACE Number";
       else if(column == 4) return "PDR Number";
       else if(column == 5) return "Due Date";
       else if(column == 6) return "Expected Completion Date";

       throw new IllegalStateException();
   }
   
   public Object getColumnValue(Object baseObject, int column) {
       WeeklyDetail wd = (WeeklyDetail)baseObject;

       if(column == 0) return wd.getWeekStarting();
       else if(column == 1) return wd.getProjectID().getComments();
       else if(column == 2) return wd.getProjectID().getTitle();
       else if(column == 3) return wd.getProjectID().getACENumber();
       else if(column == 4) return wd.getProjectID().getPDRNumber();
       else if(column == 5) return wd.getProjectID().getDueDate();
       else if(column == 6) return wd.getProjectID().getExpectedCompletionDate();

       throw new IllegalStateException();
   }
   
   public boolean isEditable(Object rowValue, int column) {
        if(column != 0) {
            return true;
        } else {
            return false;
        }
    }
   
   public Object setColumnValue(Object rowObject, Object cellObject, int column) {
       WeeklyDetail wd = (WeeklyDetail)rowObject;
       
        if(column == 1) {
            wd.setComments(cellObject.toString());
        } else if(column == 2) {
            wd.getProject().setTitle(cellObject.toString());
        }
        ...
       
       //NOTE: debugger shows the object has been updated at this point...
       return wd;
   }
}


jTable code
----------------------------------

private EventList weeklyDetailsEL = new BasicEventList();
...
public class ITWeeklyPlanningView...
   EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("WeeklyPlanningPU");
   EntityManager em = emf.createEntityManager();

   WeeklyDetail wd = new WeeklyDetail();

   //test data...
   List<WeeklyDetail> weeklyDetails = em.createNamedQuery("WeeklyDetail.findByWeeklyDetailID")
            .setParameter("weeklyDetailID", 1)
            .getResultList();
   
   //convert into an EventList
   weeklyDetailsEL.addAll(weeklyDetails);

   jTable1.setModel(dataModel);
   ...

Thanks in advance,
Al
LightInTheBox - Buy quality products at wholesale price!