package demo19;
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 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.util.client.ClientUtils;
import com.ibatis.sqlmap.client.SqlMapClient;
/**
* <p>Title: OpenSwing Framework</p>
* <p>Description: Detail frame controller for the employee</p>
* <p>Copyright: Copyright (C) 2006 Mauro Carniel</p>
* <p> </p>
* @author Mauro Carniel
* @version 1.0
*/
public class EmpDetailFrameController extends FormController {
private EmpDetailFrame frame = null;
private String pk = null;
private EmpGridFrame gridFrame = null;
private SqlMapClient sqlMap = null;
public EmpDetailFrameController(EmpGridFrame gridFrame,String pk,SqlMapClient sqlMap) {
this.gridFrame = gridFrame;
this.pk = pk;
this.sqlMap = sqlMap;
frame = new EmpDetailFrame(this,sqlMap);
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) {
try {
EmpVO vo = (EmpVO)sqlMap.queryForObject("getEmp",pk);
return new VOResponse(vo);
}
catch (Exception ex) {
ex.printStackTrace();
return new ErrorResponse(ex.getMessage());
}
}
/**
* Callback method called when the data loading is completed.
* @param error <code>true</code> if an error occours during data loading, <code>false</code> if data loading is successfully completed
*/
public void loadDataCompleted(boolean error) {
frame.getControlCurrency().setCurrencySymbol("$");
frame.getControlCurrency().setDecimals(2);
frame.getControlCurrency().setDecimalSymbol('.');
frame.getControlCurrency().setGroupingSymbol(',');
}
/**
* 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 {
try {
sqlMap.startTransaction();
EmpVO vo = (EmpVO)newPersistentObject;
sqlMap.insert("insertEmp",vo);
sqlMap.commitTransaction();
gridFrame.reloadData();
pk = vo.getEmpCode();
return new VOResponse(vo);
}
catch (Exception ex) {
ex.printStackTrace();
return new ErrorResponse(ex.getMessage());
}
finally {
sqlMap.endTransaction();
}
}
/**
* 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 {
try {
sqlMap.startTransaction();
EmpVO oldVO = (EmpVO)oldPersistentObject;
EmpVO newVO = (EmpVO)persistentObject;
int row = sqlMap.update("updateEmp",new EmpVOs(oldVO,newVO));
sqlMap.commitTransaction();
if (row==0) {
return new ErrorResponse("Updating not performed: the record was previously updated.");
}
gridFrame.reloadData();
return new VOResponse(newVO);
}
catch (Exception ex) {
ex.printStackTrace();
return new ErrorResponse(ex.getMessage());
}
finally {
sqlMap.endTransaction();
}
}
/**
* 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 {
sqlMap.startTransaction();
EmpVO vo = (EmpVO)persistentObject;
sqlMap.delete("deleteEmp",vo.getEmpCode());
sqlMap.commitTransaction();
gridFrame.reloadData();
return new VOResponse(Boolean.TRUE);
}
catch (Exception ex) {
ex.printStackTrace();
return new ErrorResponse(ex.getMessage());
}
finally {
sqlMap.endTransaction();
}
}
}