From: zapata Date: Thu, 6 Jun 2002 22:56:02 +0000 (+0000) Subject: first attempt at a rewrite of the media producer + some bugfixes here and there X-Git-Tag: prexmlproducerconfig~66 X-Git-Url: http://erislabs.net/gitweb/?p=mir.git;a=commitdiff_plain;h=e0a03376b636fa05a0912829c88fcecd1dff1e78 first attempt at a rewrite of the media producer + some bugfixes here and there --- diff --git a/source/mir/producer/FileDateSettingProducerNode.java b/source/mir/producer/FileDateSettingProducerNode.java index 25a55a12..4a120625 100755 --- a/source/mir/producer/FileDateSettingProducerNode.java +++ b/source/mir/producer/FileDateSettingProducerNode.java @@ -25,7 +25,7 @@ public class FileDateSettingProducerNode extends FileOperationProducerNode { throw new ProducerFailure("FileDateSettingProducerNode: expression " + dateExpression + " does not evaluate to a Date!", null ); if (!aFile.setLastModified(((Date) date).getTime())) { - aLogger.print("Can't set date for " + aFile.getName()); + aLogger.println("Can't set date for " + aFile.getName()); } } catch (Throwable t) { diff --git a/source/mircoders/entity/adapter/ContentAdapterDefinition.java b/source/mircoders/entity/adapter/ContentAdapterDefinition.java index a9be8500..1d943984 100755 --- a/source/mircoders/entity/adapter/ContentAdapterDefinition.java +++ b/source/mircoders/entity/adapter/ContentAdapterDefinition.java @@ -125,7 +125,6 @@ public class ContentAdapterDefinition extends EntityAdapterDefinition { private class ContentToIconField implements CalculatedField { public Object getValue(EntityAdapter anEntityAdapter) { -// EntityUploadedMedia uploadedMedia; EntityAdapter media; Entity mediaType; RewindableIterator iterator; @@ -135,23 +134,16 @@ public class ContentAdapterDefinition extends EntityAdapterDefinition { String iconAlt; try { -/* iterator = (RewindableIterator) (anEntityAdapter.get("to_uploaded_media")); + iterator = (RewindableIterator) (anEntityAdapter.get("to_uploaded_media")); iterator.rewind(); - browser = - new EntityBrowser( - DatabaseUploadedMedia.getInstance(), - "exists (select * from content_x_media where content_id="+anEntityAdapter.get("id")+" and media_id=id)", - "id", - 1); -*/ tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyText"); iconAlt = "Text"; -/* if (iterator.hasNext()) { + if (iterator.hasNext()) { media = (EntityAdapter) iterator.next(); - mediaType = ((EntityMedia) (media.getEntity())).getMediaType(); + mediaType = ((EntityUploadedMedia) (media.getEntity())).getMediaType(); mediaHandler = MediaHelper.getHandler( mediaType ); if (mediaHandler.isVideo()) { @@ -170,12 +162,12 @@ public class ContentAdapterDefinition extends EntityAdapterDefinition { tinyIcon = mediaHandler.getTinyIcon(); iconAlt = mediaHandler.getIconAlt(); } -*/ + } } catch (Throwable t) { System.out.println("ContentToIconField: exception: " +t.getMessage()); - t.printStackTrace(t); + t.printStackTrace(System.out); throw new RuntimeException(t.getMessage()); } diff --git a/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java b/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java index cc9627be..a487b02c 100755 --- a/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicOpenPostingLocalizer.java @@ -10,7 +10,9 @@ public class MirBasicOpenPostingLocalizer implements MirOpenPostingLocalizer { public void afterContentPosting() { MirGlobal.producerEngine().addJob("content", "new"); + MirGlobal.producerEngine().addJob("media", "new"); MirGlobal.producerEngine().addJob("openposting", "new"); + MirGlobal.producerEngine().addJob("topics", "new"); MirGlobal.producerEngine().addJob("startpage", "(default)"); MirGlobal.producerEngine().addJob("synchronization", "run"); diff --git a/source/mircoders/producer/GeneratingProducerNode.java b/source/mircoders/producer/GeneratingProducerNode.java index 1ab617b1..fa8595a7 100755 --- a/source/mircoders/producer/GeneratingProducerNode.java +++ b/source/mircoders/producer/GeneratingProducerNode.java @@ -40,6 +40,8 @@ public class GeneratingProducerNode implements ProducerNode { MirGlobal.localizer().producerTool().closeWriter( printWriter ); } catch (Throwable t) { + aLogger.println(" error while generating: " + t.getMessage()); + aLogger.flush(); } endTime = System.currentTimeMillis(); diff --git a/source/mircoders/producer/MediaGeneratingProducerNode.java b/source/mircoders/producer/MediaGeneratingProducerNode.java new file mode 100755 index 00000000..5f192480 --- /dev/null +++ b/source/mircoders/producer/MediaGeneratingProducerNode.java @@ -0,0 +1,62 @@ +package mircoders.producer; + +import java.util.*; +import java.io.*; +import mir.util.*; +import mir.misc.*; +import mir.media.*; +import mir.producer.*; +import mir.generator.*; +import mir.entity.*; +import mir.entity.adapter.*; +//import mircoders.global.*; +//import mircoders.localizer.*; +import mircoders.entity.*; +import mircoders.storage.*; + +public class MediaGeneratingProducerNode implements ProducerNode { + private String mediaEntityKey; + + public MediaGeneratingProducerNode(String aMediaEntityKey) { + mediaEntityKey = aMediaEntityKey; + } + + public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { + Object data; + Entity entity; + Entity currentMediaType; + MirMedia currentMediaHandler; + + try { + data = ParameterExpander.findValueForKey( aValueMap, mediaEntityKey ); + + if (!(data instanceof EntityAdapter)) { + throw new ProducerFailure("MediaGeneratingProducerNode: value of '"+mediaEntityKey+"' is not an EntityAdapter, but an " + data.getClass().getName(), null); + } + + entity = ((EntityAdapter) data).getEntity(); + if (! (entity instanceof EntityUploadedMedia)) { + throw new ProducerFailure("MediaGeneratingProducerNode: value of '"+mediaEntityKey+"' is not an uploaded media EntityAdapter, but a " + entity.getClass().getName() + " adapter", null); + } + + currentMediaType = DatabaseUploadedMedia.getInstance().getMediaType(entity); + + currentMediaHandler = MediaHelper.getHandler( currentMediaType ); + currentMediaHandler.produce(entity,currentMediaType); + entity.setValueForProperty("publish_server", currentMediaHandler.getPublishHost()); + entity.setValueForProperty("icon_is_produced", "1"); + entity.setValueForProperty("is_produced", "1"); + entity.update(); + } + catch (Throwable t) { + aLogger.println("Error while generating media: " + t.getMessage()); + t.printStackTrace(aLogger); + + throw new ProducerFailure(t.getMessage(), t); + } + } + + public Set buildVerbSet() { + return new HashSet(); + } +} diff --git a/source/mircoders/servlet/ServletModuleOpenIndy.java b/source/mircoders/servlet/ServletModuleOpenIndy.java index 3cd43f6b..98021e97 100755 --- a/source/mircoders/servlet/ServletModuleOpenIndy.java +++ b/source/mircoders/servlet/ServletModuleOpenIndy.java @@ -387,7 +387,7 @@ public class ServletModuleOpenIndy extends ServletModule String mediaTypeId = null; MirMedia mediaHandler; Database mediaStorage; - ProducerMedia mediaProducer; +// ProducerMedia mediaProducer; //if we didn't find an entry matching the //content-type int the table. @@ -427,9 +427,9 @@ public class ServletModuleOpenIndy extends ServletModule mediaHandler = MediaHelper.getHandler(mediaType); mediaStorage = MediaHelper.getStorage(mediaType, "mircoders.storage.Database"); - Class prodCls = Class.forName("mircoders.producer.Producer" - +mediaType.getValue("tablename")); - mediaProducer = (ProducerMedia)prodCls.newInstance(); +// Class prodCls = Class.forName("mircoders.producer.Producer" +// +mediaType.getValue("tablename")); +// mediaProducer = (ProducerMedia)prodCls.newInstance(); } catch (Exception e) { theLog.printError("getting media handler failed: "+e.toString()); contentModule.deleteById(cid); @@ -460,7 +460,7 @@ public class ServletModuleOpenIndy extends ServletModule mediaEnt.setValueForProperty("is_published","1"); mediaEnt.update(); //produce it - mediaProducer.handle(null, null, false, false, mediaId); +// mediaProducer.handle(null, null, false, false, mediaId); DatabaseContentToMedia.getInstance().addMedia(cid,mediaId); } catch (Exception e) { theLog.printError("setting media failed: "+e.toString()); diff --git a/source/mirlocal/bolivia.indymedia.org/BoliviaProducerLocalizer.java b/source/mirlocal/bolivia.indymedia.org/BoliviaProducerLocalizer.java index 3d3774dd..3031c9d1 100755 --- a/source/mirlocal/bolivia.indymedia.org/BoliviaProducerLocalizer.java +++ b/source/mirlocal/bolivia.indymedia.org/BoliviaProducerLocalizer.java @@ -19,18 +19,20 @@ public class BoliviaProducerLocalizer extends MirBasicProducerLocalizer { contentNode = new EntityEnumeratingProducerNode( "content", DatabaseContent.getInstance(), ContentAdapterDefinition.getInstance(), new CompositeProducerNode( new ProducerNode[] { - new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "", - new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}", - new CompositeProducerNode( new ProducerNode[] { - new GeneratingProducerNode( - "/producer/bolivia.indymedia.org/article.template", - "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml" - ), - new FileDateSettingProducerNode( - "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml", - "content.date.date" - ) - } ) + new EntityEnumeratingProducerNode( "city", DatabaseTopics.getInstance(), TopicsAdapterDefinition.getInstance(), "main_url='c' and exists(select * from content_x_topic where content_id=${content.id} and topic_id=id", "", + new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "", + new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}", + new CompositeProducerNode( new ProducerNode[] { + new GeneratingProducerNode( + "/producer/bolivia.indymedia.org/article.template", + "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml" + ), + new FileDateSettingProducerNode( + "${config.storageRoot}/${language.code}/${content.date.formatted.yyyy}/${content.date.formatted.MM}/${content.id}.shtml", + "content.webdb_create.raw" + ) + } ) + ) ) ), new ContentMarkingProducerNode( "content") @@ -92,7 +94,7 @@ public class BoliviaProducerLocalizer extends MirBasicProducerLocalizer { new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}", new GeneratingProducerNode( "/producer/bolivia.indymedia.org/startpage.template", - "${config.storageRoot}/${language.code}/${city.filename}/index.shtml" + "${config.storageRoot}/${city.filename}/${language.code}/index.shtml" ) ) ) diff --git a/source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java b/source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java index 8d45559f..106e372b 100755 --- a/source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java +++ b/source/mirlocal/indymedia.nl/IndyNLProducerLocalizer.java @@ -105,7 +105,7 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer { new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "code", 10, 0, new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "", - new ResourceBundleProducerNode("lang", "producer_${language.code}", + new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}", new GeneratingProducerNode( "/producer/indymedia.nl/topic.template", "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}${batch.current.identifier}.shtml" @@ -116,7 +116,7 @@ public class IndyNLProducerLocalizer extends MirBasicProducerLocalizer { new EntityListProducerNode("languages", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "code", 10, 0, new EntityEnumeratingProducerNode( "language", DatabaseLanguage.getInstance(), LanguageAdapterDefinition.getInstance(), "", "", - new ResourceBundleProducerNode("lang", "producer_${language.code}", + new ResourceBundleProducerNode("lang", "bundles.producer_${language.code}", new GeneratingProducerNode( "/producer/indymedia.nl/topicnavigation.template", "${config.storageRoot}/${language.code}/${topic.filename}/${topic.filename}navigation.inc"