package demo15; import org.openswing.swing.table.client.GridController; import java.util.*; import org.openswing.swing.message.receive.java.*; import org.openswing.swing.form.client.*; import java.io.*; import org.openswing.swing.util.client.ClientUtils; import org.openswing.swing.util.java.Consts; /** * <p>Title: OpenSwing Framework</p> * <p>Description: Form controller of image detail frame. * It read/write an image gif/jpg file from file system.</p> * @author Mauro Carniel * @version 1.0 */ public class ImageFrameController extends FormController { private ImageFrame frame = null; public ImageFrameController() { frame = new ImageFrame(this); ClientUtils.centerFrame(frame); frame.setVisible(true); frame.getMainPanel().setMode(Consts.READONLY); frame.getMainPanel().reload(); } /** * This method must be overridden by the subclass to retrieve data and return the valorized value object. * If the method is not overridden, the current version will return a "demo" 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 { ImageVO vo = new ImageVO(); File f = new File("."); File[] ff = f.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".gif") || name.toLowerCase().endsWith(".jpg"); } }); if (ff.length==1) { FileInputStream in = new FileInputStream(ff[0]); byte[] bb = new byte[(int)ff[0].length()]; in.read(bb); in.close(); vo.setImage(bb); vo.setImageName(ff[0].getName()); } VOResponse r = new VOResponse(vo); return r; } catch (Exception ex) { return new ErrorResponse("Error on creating the demo value object:\n"+ex.toString()); } } /** * 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 { ImageVO vo = (ImageVO)persistentObject; ImageVO oldVO = (ImageVO)oldPersistentObject; if (oldVO.getImageName()!=null && oldVO.getImageName().equals(vo.getImageName())) new File(oldVO.getImageName()).delete(); FileOutputStream out = new FileOutputStream(vo.getImageName()); byte[] bb = vo.getImage(); out.write(bb); out.close(); VOResponse r = new VOResponse(vo); if (oldVO.getImageName()!=null) new File(oldVO.getImageName()).delete(); return r; } catch (Exception ex) { return new ErrorResponse("Error on creating the demo value object:\n"+ex.toString()); } } }