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
{
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());
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);
}
}
}
*
* 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);
}
}
}