/**
* This class handles saving, fetching creating representations
- * for all images.
- *
+ * for all images. The image content is stored in the DB. The content is
+ * written out to a file at the ProducerImages level.
+ * Remember that Handlers for specific image types, Gif, Jpeg, etc..
+ * should override it.
+ * It implements the MirMedia interface.
+ * <p>
* ok. this is a big hack, it's cause putting the image in the DB
* and fetching it from the DB needs low level db connections for
- * some reason. -mh 25.09.2001
+ * some reason. Does anyone know how to get around this?
+ * -mh 25.09.2001
*
+ * @see mir.media.MirMedia
* @author mh
* @version 24.09.2001
*/
-public class MediaHandlerImages
+public class MediaHandlerImages implements MirMedia
{
protected final String WEBDB_JPG="0";
protected final String WEBDB_GIF="1";
protected String imageType="0";
private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+"log/media.log");
- public byte[] get(Entity ent, Entity mediaTypeEnt)
+ public byte[] get(Entity ent, Entity mediaTypeEnt) throws MirMediaException
{
byte[] image_data = null;
image_data = (byte[])method.invoke(ent, null);
} catch ( NoSuchMethodException e) {
theLog.printDebugInfo("method lookup unsuccesful: "+e.toString());
+ throw new MirMediaException(e.toString());
} catch ( IllegalAccessException e) {
theLog.printDebugInfo("method illegal: "+e.toString());
+ throw new MirMediaException(e.toString());
} catch ( InvocationTargetException e) {
- theLog.printDebugInfo("invocation target illegal: "+e.toString());
+ theLog.printDebugInfo("get: invocation target illegal: "+e.toString());
+ throw new MirMediaException(e.toString());
}
return image_data;
}
- protected boolean set(byte[] uploadData, Entity ent, Entity mediaTypeEnt)
- {
+ public boolean set(byte[] uploadData, Entity ent, Entity mediaTypeEnt)
+ throws MirMediaException {
+
try {
Class[] params = {byte[].class, String.class};
+ theLog.printDebugInfo("NAME: "+ent.getClass().getName()+" "+
+ mediaTypeEnt.getClass().getName()+" "+uploadData.length+" "+
+ imageType);
Method method = ent.getClass().getMethod("setImage",params);
method.invoke(ent, new Object[] {uploadData, imageType});
} catch ( NoSuchMethodException e) {
theLog.printDebugInfo("method lookup unsuccesful: "+e.toString());
- return false;
+ throw new MirMediaException(e.toString());
} catch ( IllegalAccessException e) {
theLog.printDebugInfo("method illegal: "+e.toString());
- return false;
+ throw new MirMediaException(e.toString());
} catch ( InvocationTargetException e) {
- theLog.printDebugInfo("invocation target illegal: "+e.toString());
- return false;
+ theLog.printDebugInfo("set: invocation target illegal: "+e.toString());
+ throw new MirMediaException(e.toString());
}
//deref. -mh
uploadData=null;
return true;
}
- public byte[] getIcon(Entity ent)
+ public byte[] getIcon(Entity ent) throws MirMediaException
{
byte[] icon_data = null;
icon_data = (byte[])method.invoke(ent, null);
} catch ( NoSuchMethodException e) {
theLog.printDebugInfo("method lookup unsuccesful: "+e.toString());
+ throw new MirMediaException(e.toString());
} catch ( IllegalAccessException e) {
theLog.printDebugInfo("method illegal: "+e.toString());
+ throw new MirMediaException(e.toString());
} catch ( InvocationTargetException e) {
- theLog.printDebugInfo("invocation target illegal: "+e.toString());
+ theLog.printDebugInfo("getIcon: invocation target illegal: "+e.toString());
+ throw new MirMediaException(e.toString());
}
return icon_data;