package demo17;
import org.openswing.swing.client.*;
import java.util.*;
import org.openswing.swing.util.client.ClientSettings;
import org.openswing.swing.internationalization.java.EnglishOnlyResourceFactory;
import org.openswing.swing.form.model.client.VOModel;
import org.openswing.swing.form.client.Form;
import org.openswing.swing.form.client.FormController;
import org.openswing.swing.util.java.Consts;
import java.sql.*;
import org.openswing.swing.message.receive.java.*;
import org.openswing.swing.lookup.client.LookupController;
import org.openswing.swing.lookup.client.LookupDataLocator;
import org.openswing.swing.internationalization.java.Resources;
import org.openswing.swing.mdi.client.MDIFrame;
import org.openswing.swing.server.QueryUtil;
import java.math.BigDecimal;
import org.hibernate.Session;
import org.openswing.swing.util.server.HibernateUtils;
import org.hibernate.SessionFactory;
/**
* <p>Title: OpenSwing Framework</p>
* <p>Description: Detail frame controller for the department.</p>
* <p>Copyright: Copyright (C) 2006 Mauro Carniel</p>
* <p> </p>
* @author Mauro Carniel
* @version 1.0
*/
public class DeptDetailFrameController extends FormController {
private DeptDetailFrame frame = null;
private SessionFactory sessions = null;
private String pk = null;
private DeptGridFrame gridFrame = null;
public DeptDetailFrameController(DeptGridFrame gridFrame,String pk,SessionFactory sessions) {
this.gridFrame = gridFrame;
this.pk = pk;
this.sessions = sessions;
frame = new DeptDetailFrame(this);
MDIFrame.add(frame);
if (pk!=null) {
frame.getMainPanel().setMode(Consts.READONLY);
frame.getMainPanel().reload();
}
else {
frame.getMainPanel().setMode(Consts.INSERT);
}
}
/**
* This method must be overridden by the subclass to retrieve data and return the valorized value object.
* @param valueObjectClass value object class
* @return a VOResponse object if data loading is successfully completed, or an ErrorResponse object if an error occours
*/
public Response loadData(Class valueObjectClass) {
Session sess = null;
try {
// since this method could be invoked also when selecting another row on the linked grid,
// the pk attribute must be recalculated from the grid...
int row = gridFrame.getGrid().getSelectedRow();
if (row!=-1) {
DeptVO gridVO = (DeptVO)gridFrame.getGrid().getVOListTableModel().getObjectForRow(row);
pk = gridVO.getDeptCode();
}
String baseSQL = "from Depts in class demo17.DeptVO where Depts.deptCode='"+pk+"'";
sess = sessions.openSession(); // obtain a JDBC connection and instantiate a new Session
DeptVO vo = (DeptVO)sess.createQuery(baseSQL).uniqueResult();
return new VOResponse(vo);
}
catch (Exception ex) {
ex.printStackTrace();
return new ErrorResponse(ex.getMessage());
}
finally {
try {
sess.close();
}
catch (Exception ex1) {
}
}
}
/**
* Method called by the Form panel to insert new data.
* @param newValueObject value object to save
* @return an ErrorResponse value object in case of errors, VOResponse if the operation is successfully completed
*/
public Response insertRecord(ValueObject newPersistentObject) throws Exception {
Session session = null;
try {
DeptVO vo = (DeptVO)newPersistentObject;
vo.setStatus("E");
session = sessions.getCurrentSession();
session.beginTransaction();
session.save(vo);
session.flush();
session.getTransaction().commit();
// Session sess = sessions.openSession(); // obtain a JDBC connection and instantiate a new Session
// sess.save(vo);
// sess.flush();
// sess.connection().commit();
// sess.close();
return new VOResponse(vo);
}
catch (Exception ex) {
session.getTransaction().rollback();
ex.printStackTrace();
return new ErrorResponse(ex.getMessage());
}
finally {
try {
session.close();
}
catch (Exception ex1) {
}
}
}
/**
* Method called by the Form panel to update existing data.
* @param oldPersistentObject original value object, previous to the changes
* @param persistentObject value object to save
* @return an ErrorResponse value object in case of errors, VOResponse if the operation is successfully completed
*/
public Response updateRecord(ValueObject oldPersistentObject,ValueObject persistentObject) throws Exception {
Session session = null;
try {
session = sessions.getCurrentSession();
session.beginTransaction();
session.update(persistentObject);
session.flush();
session.connection().commit();
// Session sess = sessions.openSession(); // obtain a JDBC connection and instantiate a new Session
// sess.update(vo);
// sess.flush();
// sess.connection().commit();
// sess.close();
return new VOResponse(persistentObject);
}
catch (SQLException ex) {
session.getTransaction().rollback();
ex.printStackTrace();
return new ErrorResponse(ex.getMessage());
}
finally {
try {
session.close();
}
catch (Exception ex1) {
}
}
}
/**
* Method called by the Form panel to delete existing data.
* @param persistentObject value object to delete
* @return an ErrorResponse value object in case of errors, VOResponse if the operation is successfully completed
*/
public Response deleteRecord(ValueObject persistentObject) throws Exception {
try {
DeptVO vo = (DeptVO)persistentObject;
vo.setStatus("D");
Session session = sessions.getCurrentSession();
session.beginTransaction();
session.update(vo);
session.flush();
session.connection().commit();
// Session sess = sessions.openSession(); // obtain a JDBC connection and instantiate a new Session
// sess.update(vo);
// sess.flush();
// sess.connection().commit();
// sess.close();
return new VOResponse(new Boolean(true));
}
catch (SQLException ex) {
ex.printStackTrace();
return new ErrorResponse(ex.getMessage());
}
}
public DeptGridFrame getGridFrame() {
return gridFrame;
}
public SessionFactory getSessions() {
return sessions;
}
}