From eed379d582e04f6a9642358fbb5b7c4b427f969b Mon Sep 17 00:00:00 2001 From: mh Date: Sat, 2 Mar 2002 11:34:15 +0000 Subject: [PATCH] moved media handler implementations to mircoders/media for added flexibility. cleaned up set method in MediaHandlerImages (no more reflection). prepared set method in EntityAudio. --- source/mir/media/MediaHelper.java | 3 +- source/mircoders/entity/EntityAudio.java | 45 ++++++++++----- source/mircoders/entity/EntityImages.java | 10 +--- .../media/MediaHandlerAudio.java | 3 +- .../media/MediaHandlerGeneric.java | 5 +- .../media/MediaHandlerImages.java | 65 +++++++--------------- .../{mir => mircoders}/media/MediaHandlerMp3.java | 3 +- .../media/MediaHandlerRealAudio.java | 3 +- .../media/MediaHandlerRealVideo.java | 3 +- .../media/MediaHandlerVideo.java | 3 +- 10 files changed, 67 insertions(+), 76 deletions(-) rename source/{mir => mircoders}/media/MediaHandlerAudio.java (94%) rename source/{mir => mircoders}/media/MediaHandlerGeneric.java (97%) rename source/{mir => mircoders}/media/MediaHandlerImages.java (51%) rename source/{mir => mircoders}/media/MediaHandlerMp3.java (98%) rename source/{mir => mircoders}/media/MediaHandlerRealAudio.java (97%) rename source/{mir => mircoders}/media/MediaHandlerRealVideo.java (98%) rename source/{mir => mircoders}/media/MediaHandlerVideo.java (95%) diff --git a/source/mir/media/MediaHelper.java b/source/mir/media/MediaHelper.java index a9d31273..ba33cbf0 100755 --- a/source/mir/media/MediaHelper.java +++ b/source/mir/media/MediaHelper.java @@ -6,6 +6,7 @@ import java.lang.*; import mir.entity.Entity; import mir.storage.Database; + /** * helper class to resolve media handlers using reflection * @@ -15,7 +16,7 @@ import mir.storage.Database; public final class MediaHelper { - static String _classPrefix = "mir.media.MediaHandler"; + static String _classPrefix = "mircoders.media.MediaHandler"; public static MirMedia getHandler( Entity mediaType ) throws MirMediaException { diff --git a/source/mircoders/entity/EntityAudio.java b/source/mircoders/entity/EntityAudio.java index 8e0f37d5..a780e7ab 100755 --- a/source/mircoders/entity/EntityAudio.java +++ b/source/mircoders/entity/EntityAudio.java @@ -47,7 +47,7 @@ public class EntityAudio extends EntityUploadedMedia { theLog.printDebugInfo("--getaudio started"); java.sql.Connection con=null;Statement stmt=null; - byte[] img_data=null; + byte[] data=null; try { con = theStorageObject.getPooledCon(); @@ -63,9 +63,9 @@ public class EntityAudio extends EntityUploadedMedia if(rs!=null) { if (rs.next()) { LargeObject lob = lom.open(rs.getInt(1)); - img_data = lob.read(lob.size()); + data = lob.read(lob.size()); lob.close(); - //img_data = rs.getBytes(1); + //data = rs.getBytes(1); } rs.close(); } @@ -86,39 +86,54 @@ public class EntityAudio extends EntityUploadedMedia theStorageObject.freeConnection(con,stmt); } - return img_data; + return data; } - public void setAudio(byte[] audioData, String audioType) + public void setAudio(byte[] uploadData) throws StorageObjectException { - if (audioData!=null) { + if (uploadData!=null) { java.sql.Connection con=null;PreparedStatement pstmt=null; try { - theLog.printDebugInfo("settaudio :: making internal representation of audio"); - theLog.printDebugInfo("settaudio :: made internal representation of audio"); - theLog.printDebugInfo("settaudio :: getAudio"); - - if ( audioData!=null) { + if (uploadData!=null) { con = theStorageObject.getPooledCon(); con.setAutoCommit(false); - theLog.printDebugInfo("settaudio :: trying to insert audio"); + theLog.printDebugInfo("setaudio :: trying to insert audio"); // setting values - pstmt.setBytes(1, audioData); - String sql="update content set is_produced='0' where to_media="+getId(); + LargeObjectManager lom; + java.sql.Connection jCon; + jCon = ((com.codestudio.sql.PoolManConnectionHandle)con) + .getNativeConnection(); + lom = ((org.postgresql.Connection)jCon).getLargeObjectAPI(); + int oid = lom.create(); + LargeObject lob = lom.open(oid); + lob.write(uploadData); + lob.close(); + String sql = "update images set" + +" audio_data="+oid + +" where id="+getId(); + theLog.printDebugInfo("setaudio :: updating: "+ sql); + pstmt = con.prepareStatement(sql); + //pstmt.setBytes(1, imageData); + //pstmt.setBytes(2, iconData); + pstmt.executeUpdate(); + sql="update content set is_produced='0' where to_media="+getId(); pstmt = con.prepareStatement(sql); pstmt.executeUpdate(); } } - catch (Exception e) {throwStorageObjectException(e, "settaudio :: setAudio gescheitert: ");} + catch (Exception e) { + throwStorageObjectException(e,"setaudio ::failed: "); + } finally { try { if (con!=null) con.setAutoCommit(true); } catch (Exception e) {;} theStorageObject.freeConnection(con,pstmt); } } } + public void update() throws StorageObjectException { super.update(); try { diff --git a/source/mircoders/entity/EntityImages.java b/source/mircoders/entity/EntityImages.java index f873f51e..d495f0b7 100755 --- a/source/mircoders/entity/EntityImages.java +++ b/source/mircoders/entity/EntityImages.java @@ -91,21 +91,15 @@ public class EntityImages extends EntityUploadedMedia return img_data; } - public void setImage(byte[] uploadData, String imageType) + public void setImage(byte[] uploadData) throws StorageObjectException { - int type = 0; - - //hack -mh - if (imageType.equals("1")) - type = 1; - //end hack if (uploadData!=null) { java.sql.Connection con=null;PreparedStatement pstmt=null; try { theLog.printDebugInfo("settimage :: making internal representation of image"); - WebdbImage webdbImage= new WebdbImage(uploadData,type); + WebdbImage webdbImage= new WebdbImage(uploadData); theLog.printDebugInfo("settimage :: made internal representation of image"); byte[] imageData = webdbImage.getImage(); theLog.printDebugInfo("settimage :: getImage"); diff --git a/source/mir/media/MediaHandlerAudio.java b/source/mircoders/media/MediaHandlerAudio.java similarity index 94% rename from source/mir/media/MediaHandlerAudio.java rename to source/mircoders/media/MediaHandlerAudio.java index 4be2dd51..d32ff508 100755 --- a/source/mir/media/MediaHandlerAudio.java +++ b/source/mircoders/media/MediaHandlerAudio.java @@ -3,10 +3,11 @@ */ -package mir.media; +package mircoders.media; import java.util.*; +import mir.media.*; import mir.entity.*; import mir.misc.*; import mir.storage.*; diff --git a/source/mir/media/MediaHandlerGeneric.java b/source/mircoders/media/MediaHandlerGeneric.java similarity index 97% rename from source/mir/media/MediaHandlerGeneric.java rename to source/mircoders/media/MediaHandlerGeneric.java index a466a988..98bb183a 100755 --- a/source/mir/media/MediaHandlerGeneric.java +++ b/source/mircoders/media/MediaHandlerGeneric.java @@ -3,10 +3,11 @@ */ -package mir.media; +package mircoders.media; import java.util.*; +import mir.media.*; import mir.entity.*; import mir.misc.*; import mir.storage.*; @@ -69,7 +70,7 @@ public class MediaHandlerGeneric implements MirMedia return true; } - //a class that will probably never get used.. + //a method that will probably never get used.. private byte[] getFile (String fileName) throws MirMediaException { diff --git a/source/mir/media/MediaHandlerImages.java b/source/mircoders/media/MediaHandlerImages.java similarity index 51% rename from source/mir/media/MediaHandlerImages.java rename to source/mircoders/media/MediaHandlerImages.java index cd8c7c57..c24add82 100755 --- a/source/mir/media/MediaHandlerImages.java +++ b/source/mircoders/media/MediaHandlerImages.java @@ -1,13 +1,16 @@ -package mir.media; +package mircoders.media; import java.lang.*; import java.io.*; import java.util.*; import java.lang.reflect.*; +import mir.media.*; import mir.misc.*; import mir.entity.*; +import mir.storage.StorageObjectException; +import mircoders.entity.EntityImages; /** * This class handles saving, fetching creating representations @@ -17,10 +20,9 @@ import mir.entity.*; * should override it. * It implements the MirMedia interface. *

- * 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. Does anyone know how to get around this? - * -mh 25.09.2001 + * slowly starting to look better, a next step would be to have the + * representation stuff (WebdbImage) happen here. + * -mh 01.03.2002 * * @see mir.media.MirMedia * @author mh @@ -30,27 +32,18 @@ import mir.entity.*; public class MediaHandlerImages implements MirMedia { - protected final String WEBDB_JPG="0"; - protected final String WEBDB_GIF="1"; + private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+ + "log/media.log"); - protected String imageType="0"; - private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+"log/media.log"); - - public byte[] get(Entity ent, Entity mediaTypeEnt) throws MirMediaException + public byte[] get(Entity ent, Entity mediaTypeEnt) + throws MirMediaException { byte[] image_data = null; try { - Method method = ent.getClass().getMethod("getImage",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("get: invocation target illegal: "+e.toString()); + image_data = ((EntityImages)ent).getImage(); + } catch ( StorageObjectException e) { + theLog.printDebugInfo("MediaHandlerImages.get: "+e.toString()); throw new MirMediaException(e.toString()); } @@ -62,20 +55,9 @@ public class MediaHandlerImages implements MirMedia 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()); - throw new MirMediaException(e.toString()); - } catch ( IllegalAccessException e) { - theLog.printDebugInfo("method illegal: "+e.toString()); - throw new MirMediaException(e.toString()); - } catch ( InvocationTargetException e) { - theLog.printDebugInfo("set: invocation target illegal: "+e.toString()); + ((EntityImages)ent).setImage(uploadData); + } catch ( StorageObjectException e) { + theLog.printDebugInfo("MediaHandlerImages.set: "+e.toString()); throw new MirMediaException(e.toString()); } //deref. -mh @@ -89,16 +71,9 @@ public class MediaHandlerImages implements MirMedia byte[] icon_data = null; try { - Method method = ent.getClass().getMethod("getIcon",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("getIcon: invocation target illegal: "+e.toString()); + icon_data = ((EntityImages)ent).getIcon(); + } catch ( StorageObjectException e) { + theLog.printDebugInfo("MediaHandlerImages.getIcon: "+e.toString()); throw new MirMediaException(e.toString()); } diff --git a/source/mir/media/MediaHandlerMp3.java b/source/mircoders/media/MediaHandlerMp3.java similarity index 98% rename from source/mir/media/MediaHandlerMp3.java rename to source/mircoders/media/MediaHandlerMp3.java index 0357a02b..2ac0aa03 100755 --- a/source/mir/media/MediaHandlerMp3.java +++ b/source/mircoders/media/MediaHandlerMp3.java @@ -3,10 +3,11 @@ */ -package mir.media; +package mircoders.media; import java.util.*; +import mir.media.*; import mir.entity.*; import mir.misc.*; import mir.storage.*; diff --git a/source/mir/media/MediaHandlerRealAudio.java b/source/mircoders/media/MediaHandlerRealAudio.java similarity index 97% rename from source/mir/media/MediaHandlerRealAudio.java rename to source/mircoders/media/MediaHandlerRealAudio.java index e9f99a2d..d8875ccd 100755 --- a/source/mir/media/MediaHandlerRealAudio.java +++ b/source/mircoders/media/MediaHandlerRealAudio.java @@ -3,10 +3,11 @@ */ -package mir.media; +package mircoders.media; import java.util.*; +import mir.media.*; import mir.entity.*; import mir.misc.*; import mir.storage.*; diff --git a/source/mir/media/MediaHandlerRealVideo.java b/source/mircoders/media/MediaHandlerRealVideo.java similarity index 98% rename from source/mir/media/MediaHandlerRealVideo.java rename to source/mircoders/media/MediaHandlerRealVideo.java index f47e9963..e960ec36 100755 --- a/source/mir/media/MediaHandlerRealVideo.java +++ b/source/mircoders/media/MediaHandlerRealVideo.java @@ -3,10 +3,11 @@ */ -package mir.media; +package mircoders.media; import java.util.*; +import mir.media.*; import mir.entity.*; import mir.misc.*; import mir.storage.*; diff --git a/source/mir/media/MediaHandlerVideo.java b/source/mircoders/media/MediaHandlerVideo.java similarity index 95% rename from source/mir/media/MediaHandlerVideo.java rename to source/mircoders/media/MediaHandlerVideo.java index d7a7e030..3e9ed4a3 100755 --- a/source/mir/media/MediaHandlerVideo.java +++ b/source/mircoders/media/MediaHandlerVideo.java @@ -3,10 +3,11 @@ */ -package mir.media; +package mircoders.media; import java.util.*; +import mir.media.*; import mir.entity.*; import mir.misc.*; import mir.storage.*; -- 2.11.0