From: yossarian Date: Sun, 12 Nov 2006 18:44:46 +0000 (+0000) Subject: Took the ChangeTracker reporting out of GeneratingProducerNode and put it into the... X-Git-Tag: LATEST_MERGED_1_1~19 X-Git-Url: http://erislabs.net/gitweb/?p=mir.git;a=commitdiff_plain;h=89b2edf40f1b71d810243d7eb550aea1b79c94aa Took the ChangeTracker reporting out of GeneratingProducerNode and put it into the Media subclasses. The following classes now report changes to themselves (and icons if there are icons generated for that media type): MediaHandlerImages MediaHandlerImagesExtern MediaHandlerMp3 MediaHandlerOgg MediaHandlerRealAudio MediaHandlerRealVideo The reportChange protected method is in AbstractMediaHandler so that this method is available to all Media subclasses. --- diff --git a/source/mir/producer/GeneratingProducerNode.java b/source/mir/producer/GeneratingProducerNode.java index 6f6c8ca5..911d0964 100755 --- a/source/mir/producer/GeneratingProducerNode.java +++ b/source/mir/producer/GeneratingProducerNode.java @@ -27,16 +27,13 @@ */ package mir.producer; -import mir.changetracker.ChangeTracker; -import mir.changetracker.ChangeType; +import java.util.HashMap; +import java.util.Map; + import mir.generator.Generator; import mir.generator.WriterEngine; import mir.log.LoggerWrapper; import mir.util.ParameterExpander; -import mircoders.global.MirGlobal; - -import java.util.HashMap; -import java.util.Map; public class GeneratingProducerNode extends AbstractProducerNode { private String generatorExpression; @@ -97,7 +94,6 @@ public class GeneratingProducerNode extends AbstractProducerNode { endTime = System.currentTimeMillis(); aLogger.debug("Generated " + generatorIdentifier + " into " + destinationIdentifier + " [" + parameters + "] in " + (endTime - startTime) + " ms"); - reportChange(destinationIdentifier); } finally { mirMap.put("generator", oldGenerator); @@ -109,9 +105,4 @@ public class GeneratingProducerNode extends AbstractProducerNode { aLogger.error(" error while generating", t); } } - - private void reportChange(String aPath) { - ChangeTracker changeTracker = MirGlobal.getChangeEngine().getTracker(); - changeTracker.addChange(aPath, ChangeType.MODIFICATION); - } } \ No newline at end of file diff --git a/source/mircoders/media/AbstractMediaHandler.java b/source/mircoders/media/AbstractMediaHandler.java index 501a865e..e3e22121 100755 --- a/source/mircoders/media/AbstractMediaHandler.java +++ b/source/mircoders/media/AbstractMediaHandler.java @@ -29,11 +29,14 @@ */ package mircoders.media; +import mir.changetracker.ChangeTracker; +import mir.changetracker.ChangeType; import mir.entity.Entity; import mir.media.MediaExc; import mir.media.MediaFailure; import mir.media.MediaHandler; import mir.misc.StringUtil; +import mircoders.global.MirGlobal; import java.io.*; @@ -78,5 +81,13 @@ public abstract class AbstractMediaHandler implements MediaHandler { protected final File getMediaStorageFile(Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure { return new File(getMediaStoragePath(aMedia, aMediaType)); } + + /* + * Report filesystem changes to the ChangeTracker. + */ + protected void reportChange(String imagePath) { + ChangeTracker tracker = MirGlobal.getChangeEngine().getTracker(); + tracker.addChange(imagePath, ChangeType.MODIFICATION); + } } diff --git a/source/mircoders/media/MediaHandlerImages.java b/source/mircoders/media/MediaHandlerImages.java index 0917c1ac..eb4ecf52 100755 --- a/source/mircoders/media/MediaHandlerImages.java +++ b/source/mircoders/media/MediaHandlerImages.java @@ -29,6 +29,14 @@ */ package mircoders.media; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.sql.SQLException; + import mir.config.MirPropertiesConfiguration; import mir.entity.Entity; import mir.log.LoggerWrapper; @@ -38,13 +46,10 @@ import mir.media.MediaHandler; import mir.misc.StringUtil; import mir.session.SessionExc; import mir.session.UploadedFile; -import mir.util.IORoutines; import mir.util.FileRoutines; +import mir.util.IORoutines; import mircoders.entity.EntityImages; -import java.io.*; -import java.sql.SQLException; - /** * This class handles saving, fetching creating representations * for all images. The image content is stored in the DB. The content is @@ -59,7 +64,7 @@ import java.sql.SQLException; * * @see mir.media.MediaHandler * @author mh - * @version $Id: MediaHandlerImages.java,v 1.23.2.10 2006/01/28 18:33:16 zapata Exp $ + * @version $Id: MediaHandlerImages.java,v 1.23.2.11 2006/11/12 18:44:46 yossarian Exp $ */ @@ -135,6 +140,7 @@ public abstract class MediaHandlerImages extends AbstractMediaHandler implements out = new FileOutputStream(iconFile); try { IORoutines.copyStream(in, out); + reportChange(iconFile.getAbsolutePath()); } finally { out.close(); @@ -153,6 +159,7 @@ public abstract class MediaHandlerImages extends AbstractMediaHandler implements out = new FileOutputStream(imageFile); try { IORoutines.copyStream(in, out); + reportChange(imageFile.getAbsolutePath()); } finally { out.close(); @@ -180,7 +187,7 @@ public abstract class MediaHandlerImages extends AbstractMediaHandler implements throw new MediaExc("Can't produce image " + ent.getId() + ": missing image or icon OID"); } } - + public InputStream getThumbnail(Entity ent) throws MediaExc, MediaFailure { try { return new ByteArrayInputStream(((EntityImages) ent).getIcon()); diff --git a/source/mircoders/media/MediaHandlerImagesExtern.java b/source/mircoders/media/MediaHandlerImagesExtern.java index c4fff5a3..788d4fad 100755 --- a/source/mircoders/media/MediaHandlerImagesExtern.java +++ b/source/mircoders/media/MediaHandlerImagesExtern.java @@ -33,17 +33,14 @@ package mircoders.media; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.InputStream; -import java.io.OutputStream; -import mir.util.StreamCopier; import mir.entity.Entity; import mir.log.LoggerWrapper; import mir.media.MediaExc; import mir.media.MediaFailure; -import mir.media.image.ImageProcessor; import mir.media.image.ImageMagickImageProcessor; +import mir.media.image.ImageProcessor; import mir.misc.StringUtil; import mir.util.FileRoutines; @@ -113,6 +110,8 @@ public class MediaHandlerImagesExtern extends MediaHandlerGeneric dir.mkdirs(); } processor.writeScaledData(iconFile, "JPEG"); + reportChange(iconStoragePath); + reportChange(imageFilePath); // yoss: if the config is set so that images should be scaled, make the // resized file. @@ -129,6 +128,7 @@ public class MediaHandlerImagesExtern extends MediaHandlerGeneric if (!originalFile.exists()) { logger.debug("the original image file doesn't exist, copying to originalFile"); FileRoutines.copy(imageFile, originalFile); + reportChange(originalFile.getAbsolutePath()); } // yoss: don't write the scaled data again if it's the same size as // the file that's there right now. Image producer runs are 4 times @@ -174,8 +174,7 @@ public class MediaHandlerImagesExtern extends MediaHandlerGeneric } } - - /** {@inheritDoc} */ +/** {@inheritDoc} */ public InputStream getThumbnail(Entity anImageEntity) throws MediaExc, MediaFailure { try { File file = new File(configuration.getString("Producer.StorageRoot") + anImageEntity.getFieldValue("icon_path")); diff --git a/source/mircoders/media/MediaHandlerMp3.java b/source/mircoders/media/MediaHandlerMp3.java index e01f79de..d523308f 100755 --- a/source/mircoders/media/MediaHandlerMp3.java +++ b/source/mircoders/media/MediaHandlerMp3.java @@ -29,6 +29,9 @@ */ package mircoders.media; +import java.io.File; +import java.io.FileOutputStream; + import mir.entity.Entity; import mir.log.LoggerWrapper; import mir.media.MediaExc; @@ -37,9 +40,6 @@ import mir.media.MediaHandler; import mir.misc.StringUtil; import mir.util.IORoutines; -import java.io.File; -import java.io.FileOutputStream; - /** * Please note: this media handler produces * 3 media files, the raw .mp3, a .m3u which is @@ -64,7 +64,7 @@ import java.io.FileOutputStream; * * @see mir.media.MediaHandler * @author mh - * @version $Id: MediaHandlerMp3.java,v 1.15.2.7 2005/08/21 17:09:23 zapata Exp $ + * @version $Id: MediaHandlerMp3.java,v 1.15.2.8 2006/11/12 18:44:46 yossarian Exp $ */ public class MediaHandlerMp3 extends MediaHandlerAudio implements MediaHandler { @@ -91,6 +91,8 @@ public class MediaHandlerMp3 extends MediaHandlerAudio implements MediaHandler { IORoutines.writeStream(mp3Pointer, "us-ascii", new FileOutputStream(new File(getBaseStoragePath() + "/" + datePath + "/" + playlistFile))); + reportChange(getBaseStoragePath() + "/" + datePath + "/" + mpegURLFile); + reportChange(getBaseStoragePath() + "/" + datePath + "/" + playlistFile); } catch (Throwable e) { logger.error("MediaHandlerMp3.execute: " + e.toString()); @@ -98,7 +100,7 @@ public class MediaHandlerMp3 extends MediaHandlerAudio implements MediaHandler { throw new MediaFailure(e); } } - + public String getDescr(Entity mediaType) { return "mp3"; } diff --git a/source/mircoders/media/MediaHandlerOgg.java b/source/mircoders/media/MediaHandlerOgg.java index 1bb3bcfb..49544379 100755 --- a/source/mircoders/media/MediaHandlerOgg.java +++ b/source/mircoders/media/MediaHandlerOgg.java @@ -87,6 +87,7 @@ public class MediaHandlerOgg extends MediaHandlerAudio implements MediaHandler try { IORoutines.writeStream(oggPointer, "us-ascii", new FileOutputStream(getBaseStoragePath() + File.separator + datePath + File.separator + playlistFile)); + reportChange(getBaseStoragePath() + File.separator + datePath + File.separator + playlistFile); } catch (Throwable e) { logger.error("MediaHandlerOgg.execute: " + e.toString()); diff --git a/source/mircoders/media/MediaHandlerRealAudio.java b/source/mircoders/media/MediaHandlerRealAudio.java index 27d924a3..90558023 100755 --- a/source/mircoders/media/MediaHandlerRealAudio.java +++ b/source/mircoders/media/MediaHandlerRealAudio.java @@ -29,6 +29,9 @@ */ package mircoders.media; +import java.io.File; +import java.io.FileOutputStream; + import mir.entity.Entity; import mir.log.LoggerWrapper; import mir.media.MediaExc; @@ -36,10 +39,6 @@ import mir.media.MediaFailure; import mir.media.MediaHandler; import mir.misc.StringUtil; import mir.util.IORoutines; -import mircoders.global.MirGlobal; - -import java.io.FileOutputStream; -import java.io.File; @@ -47,7 +46,7 @@ import java.io.File; * Handles realAudio .it manages the ram file. * * @author john , mh - * @version $Id: MediaHandlerRealAudio.java,v 1.19.2.8 2005/08/21 17:09:23 zapata Exp $ + * @version $Id: MediaHandlerRealAudio.java,v 1.19.2.9 2006/11/12 18:44:46 yossarian Exp $ */ @@ -73,6 +72,7 @@ public class MediaHandlerRealAudio extends MediaHandlerAudio implements MediaHan IORoutines.writeStream(RealMediaPointer, "us-ascii", new FileOutputStream(getBaseStoragePath() + File.separator + datePath + File.separator + RealMediaFile)); + reportChange(getBaseStoragePath() + File.separator + datePath + File.separator + RealMediaFile); } catch (Throwable e) { logger.error("Error while producing realmedia: " + e.toString(), e); diff --git a/source/mircoders/media/MediaHandlerRealVideo.java b/source/mircoders/media/MediaHandlerRealVideo.java index ea1480bc..a1e31511 100755 --- a/source/mircoders/media/MediaHandlerRealVideo.java +++ b/source/mircoders/media/MediaHandlerRealVideo.java @@ -47,7 +47,7 @@ import java.io.FileOutputStream; * * @see mir.media.MediaHandler * @author john , mh - * @version $Id: MediaHandlerRealVideo.java,v 1.19.2.7 2005/08/21 17:09:23 zapata Exp $ + * @version $Id: MediaHandlerRealVideo.java,v 1.19.2.8 2006/11/12 18:44:46 yossarian Exp $ */ @@ -71,6 +71,7 @@ public class MediaHandlerRealVideo extends MediaHandlerVideo implements MediaHan // write a ram file IORoutines.writeStream(RealMediaPointer, "us-ascii", new FileOutputStream(new File(super.getBaseStoragePath() + File.separator + RealMediaFile))); + reportChange(super.getBaseStoragePath() + File.separator + RealMediaFile); } catch (Throwable e) { logger.error("MediaHandlerRealVideo.execute: " + e.toString());