Took the ChangeTracker reporting out of GeneratingProducerNode and put it into the...
authoryossarian <yossarian>
Sun, 12 Nov 2006 18:44:46 +0000 (18:44 +0000)
committeryossarian <yossarian>
Sun, 12 Nov 2006 18:44:46 +0000 (18:44 +0000)
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.

source/mir/producer/GeneratingProducerNode.java
source/mircoders/media/AbstractMediaHandler.java
source/mircoders/media/MediaHandlerImages.java
source/mircoders/media/MediaHandlerImagesExtern.java
source/mircoders/media/MediaHandlerMp3.java
source/mircoders/media/MediaHandlerOgg.java
source/mircoders/media/MediaHandlerRealAudio.java
source/mircoders/media/MediaHandlerRealVideo.java

index 6f6c8ca..911d096 100755 (executable)
  */
 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
index 501a865..e3e2212 100755 (executable)
  */
 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);
+  }
 
 }
index 0917c1a..eb4ecf5 100755 (executable)
  */
 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());
index c4fff5a..788d4fa 100755 (executable)
@@ -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"));
index e01f79d..d523308 100755 (executable)
@@ -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 <mh@nadir.org>
- * @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";
   }
index 1bb3bcf..4954437 100755 (executable)
@@ -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());
index 27d924a..9055802 100755 (executable)
@@ -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 <john@manifestor.org>, mh <heckmann@hbe.ca>
- * @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);
index ea1480b..a1e3151 100755 (executable)
@@ -47,7 +47,7 @@ import java.io.FileOutputStream;
  *
  * @see mir.media.MediaHandler
  * @author john <john@manifestor.org>, mh <mh@nadir.org>
- * @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());