Adding a new ImageMagickImageProcessor class to replace
[mir.git] / source / mircoders / entity / EntityImages.java
index 1cff969..eb6392a 100755 (executable)
@@ -35,17 +35,12 @@ import java.io.InputStream;
 import java.sql.SQLException;
 
 import mir.log.LoggerWrapper;
-import mir.storage.StorageObject;
-import mir.storage.StorageObjectFailure;
+import mir.storage.DatabaseFailure;
 import mir.util.StreamCopier;
-import mircoders.media.ImageProcessor;
-
-/**
- *
- * @author RK, mh, mir-coders
- * @version $Id: EntityImages.java,v 1.21.2.5 2004/11/21 22:07:13 zapata Exp $
- */
-
+import mir.media.image.ImageProcessor;
+// FIXME: delete this when finished testing ImageMagickImageProcessor
+//import mir.media.image.JAIImageProcessor;
+import mir.media.image.ImageMagickImageProcessor;
 
 public class EntityImages extends EntityUploadedMedia
 {
@@ -62,40 +57,36 @@ public class EntityImages extends EntityUploadedMedia
     logger = new LoggerWrapper("Entity.UploadedMedia.Images");
   }
 
-  public EntityImages(StorageObject theStorage) {
-    this();
-    setStorage(theStorage);
-  }
-
   /**
    * Retrieves the image data
    */
-  public InputStream getImage() throws StorageObjectFailure {
+  public byte[] getImage() throws DatabaseFailure {
     try {
-      return storageObject.getBinaryField("select image_data from images where id="+getId());
+      return database.getBinaryField("select image_data from images where id="+getId());
     }
     catch (SQLException e) {
-      throw new StorageObjectFailure(e);
+      throw new DatabaseFailure(e);
     }
   }
 
   /**
    * Processes and saves image data
    */
-  public void setImage(InputStream anInputStream, String type) throws StorageObjectFailure {
-    // todo: failures should be treated anInputStream a better way: exception -> rollback instead
-    //  of commit
+  public void setImage(InputStream anInputStream, String type) throws DatabaseFailure {
     if (anInputStream != null) {
       try {
-        ByteArrayOutputStream inputData = new ByteArrayOutputStream();
-        StreamCopier.copy(anInputStream, inputData);
+        // FIXME: delete this when finished testing ImageMagickImageProcessor
+        //ByteArrayOutputStream inputData = new ByteArrayOutputStream();
+        //StreamCopier.copy(anInputStream, inputData);
 
-        ImageProcessor processor = new ImageProcessor(inputData.toByteArray());
+        ImageProcessor processor = new ImageMagickImageProcessor(anInputStream);
+        // FIXME: delete this when finished testing ImageMagickImageProcessor
+        //ImageProcessor processor = new JAIImageProcessor(inputData.toByteArray());
         processor.descaleImage(maxImageSize, minDescaleRatio, minDescaleReduction);
 
         ByteArrayOutputStream imageData = new ByteArrayOutputStream();
         processor.writeScaledData(imageData, type);
-        storageObject.setBinaryField("update images set image_data = ? where id = "+getId(), imageData.toByteArray());
+        database.setBinaryField("image_data", getId(), imageData.toByteArray());
 
         setFieldValue("img_height", new Integer(processor.getScaledHeight()).toString());
         setFieldValue("img_width", new Integer(processor.getScaledWidth()).toString());
@@ -103,15 +94,15 @@ public class EntityImages extends EntityUploadedMedia
         imageData.reset();
         processor.descaleImage(maxIconSize, minDescaleRatio, minDescaleReduction);
         processor.writeScaledData(imageData, type);
-        storageObject.setBinaryField("update images set icon_data = ? where id = "+getId(), imageData.toByteArray());
+        database.setBinaryField("icon_data", getId(), imageData.toByteArray());
 
         setFieldValue("icon_height", new Integer(processor.getScaledHeight()).toString());
         setFieldValue("icon_width", new Integer(processor.getScaledWidth()).toString());
-
+        processor.cleanup();
         update();
       }
       catch (Exception e) {
-        throw new StorageObjectFailure(e);
+        throw new DatabaseFailure(e);
       }
     }
   }
@@ -122,12 +113,12 @@ public class EntityImages extends EntityUploadedMedia
    *
    * It will also take care of closing the OutputStream.
    */
-  public InputStream getIcon() throws StorageObjectFailure {
+  public byte[] getIcon() throws DatabaseFailure {
     try {
-      return storageObject.getBinaryField("select icon_data from images where id="+getId());
+      return database.getBinaryField("select icon_data from images where id="+getId());
     }
     catch (SQLException e) {
-      throw new StorageObjectFailure(e);
+      throw new DatabaseFailure(e);
     }
   }
 }