From 220e08515e5bc8e202804f4b8feef2b0248670cf Mon Sep 17 00:00:00 2001 From: rk Date: Tue, 5 Feb 2002 17:15:16 +0000 Subject: [PATCH] restructuring producer startpage --- source/mircoders/entity/EntityContent.java | 151 +++++++++++++- source/mircoders/module/ModuleContent.java | 27 ++- source/mircoders/producer/ProducerStartPage.java | 253 +---------------------- 3 files changed, 185 insertions(+), 246 deletions(-) diff --git a/source/mircoders/entity/EntityContent.java b/source/mircoders/entity/EntityContent.java index d2bae16c..c5c28c31 100755 --- a/source/mircoders/entity/EntityContent.java +++ b/source/mircoders/entity/EntityContent.java @@ -173,6 +173,24 @@ public class EntityContent extends Entity throw new TemplateModelException(ex.toString()); } } + else if (key.equals("to_media_icon")) { + try { + return getUploadedMediaForContent(); + } + catch (Exception ex) { + theLog.printWarning("-- getUploadedMediaForContent: could not fetch data " + ex.toString()); + throw new TemplateModelException(ex.toString()); + } + } + else if (key.equals("to_media_list")) { + try { + return getUploadedMediaForContent(); + } + catch (Exception ex) { + theLog.printWarning("-- getUploadedMediaForContent: could not fetch data " + ex.toString()); + throw new TemplateModelException(ex.toString()); + } + } else if (key.equals("to_topics")) { try { HTMLTemplateProcessor.makeSimpleList(DatabaseContentToTopics.getInstance().getTopics(this)); @@ -247,8 +265,137 @@ public class EntityContent extends Entity return ((DatabaseContent)theStorageObject).getComments(this); } - private SimpleList getUploadedMediaForList() throws StorageObjectException - { return null; } + private SimpleHash getUploadedMediaForNewswire() + throws StorageObjectException, TemplateModelException + { + // fetching/setting the images + // return to_media_icons + String tinyIcon = null, iconAlt = null, mediaHandlerName = null; + MirMedia mediaHandler = null; + EntityMedia uploadedMedia; + Entity mediaType; + Class mediaHandlerClass; + SimpleHash returnHash = new SimpleHash(); + + EntityList upMediaEntityList = DatabaseContentToMedia.getInstance().getUploadedMedia(this); + if (upMediaEntityList!=null && upMediaEntityList.getCount()>=1) { + + for (int n=0; n < upMediaEntityList.size();n++) { + uploadedMedia = (EntityMedia)upMediaEntityList.elementAt(n); + mediaType = uploadedMedia.getMediaType(); + + //must of had a non-existant to_media_type entry.. + //let's save our ass. + if (mediaType != null) { + mediaHandlerName = mediaType.getValue("classname"); + try { + mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName); + mediaHandler = (MirMedia)mediaHandlerClass.newInstance(); + } + catch (Exception ex) { + throw new TemplateModelException(ex.toString()); + } + + //the "best" media type to show + if (mediaHandler.isVideo()) { + tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo"); + iconAlt = "Video"; + break; + } else if (mediaHandler.isAudio()) { + tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio"); + iconAlt = "Audio"; + } else if (tinyIcon == null && !mediaHandler.isImage()) { + tinyIcon = mediaHandler.getTinyIcon(); + iconAlt = mediaHandler.getIconAlt(); + } + } + } + //it only has image(s) + if (tinyIcon == null) { + tinyIcon = MirConfig.getProp("Producer.Icon.TinyImage"); + iconAlt = "Image"; + } + + // uploadedMedia Entity list is empty. + // we only have text + } else { + tinyIcon = MirConfig.getProp("Producer.Icon.TinyText"); + iconAlt = "Text"; + } + + returnHash.put("tiny_icon", mirconf_imageRoot+"/"+tinyIcon); + returnHash.put("icon_alt", iconAlt); + return returnHash; + } + + private SimpleHash getUploadedMediaForList() + throws StorageObjectException, TemplateModelException + { + SimpleHash returnHash = new SimpleHash(); + //media to content + EntityList currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(this); + if (currentMediaList!=null && currentMediaList.getCount()>=1) { + SimpleList mediaListAudio = new SimpleList(); + SimpleList mediaListImages = new SimpleList(); + SimpleList mediaListVideo = new SimpleList(); + SimpleList mediaListOther = new SimpleList(); + EntityMedia upMedia; + Entity mediaType; + SimpleHash upMediaSimpleHash; + Class mediaHandlerClass=null,mediaStorageClass; + MirMedia mediaHandler=null; + String mediaHandlerName=null,mediaStorageName; + Database mediaStorage=null; + + for (int n=0; n < currentMediaList.size();n++) { + upMedia = (EntityMedia)currentMediaList.elementAt(n); + upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia); + mediaType = upMedia.getMediaType(); + //must be a non-existant to_media_type entry.. + if (mediaType != null) { + mediaHandlerName = mediaType.getValue("classname"); + mediaStorageName = mediaType.getValue("tablename"); + try { + mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName); + mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName); + mediaHandler = (MirMedia)mediaHandlerClass.newInstance(); + Method m = mediaStorageClass.getMethod("getInstance", null); + mediaStorage = (Database)m.invoke(null, null); + } + catch (Exception ex) { + throw new TemplateModelException(ex.toString()); + } + + //we most likely need further info + upMedia = (EntityMedia)mediaStorage.selectById(upMedia.getId()); + try { + upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType)); + } + catch (Exception ex) { + throw new TemplateModelException(ex.toString()); + } + + // putting media in the apropriate list container + if (upMedia.getValue("is_published").equals("1")) { + if (mediaHandler.isImage()) { + mediaListImages.add(upMediaSimpleHash); + } else if (mediaHandler.isAudio()) { + mediaListAudio.add(upMediaSimpleHash); + } else if (mediaHandler.isVideo()) { + mediaListVideo.add(upMediaSimpleHash); + } else { + mediaListOther.add(upMediaSimpleHash); + } + } //end if is_published + } //end if media_type != null + } //end for + returnHash.put("to_media_audio", mediaListAudio); + returnHash.put("to_media_images", mediaListImages); + returnHash.put("to_media_video", mediaListVideo); + returnHash.put("to_media_other", mediaListOther); + } //end if currentMediaList != null + return returnHash; + } private SimpleList getUploadedMediaForContent() throws StorageObjectException, TemplateModelException diff --git a/source/mircoders/module/ModuleContent.java b/source/mircoders/module/ModuleContent.java index e78502d2..d6b8c93f 100755 --- a/source/mircoders/module/ModuleContent.java +++ b/source/mircoders/module/ModuleContent.java @@ -28,17 +28,40 @@ public class ModuleContent extends AbstractModule public ModuleContent() { super(); - if (theLog == null) theLog = Logfile.getInstance(this.getClass().getName()); + if (theLog == null) theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("Module.Content.Logfile")); } public ModuleContent(StorageObject theStorage) { this.theStorage = theStorage; - if (theLog == null) theLog = Logfile.getInstance(this.getClass().getName()); + if (theLog == null) theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("Module.Content.Logfile")); } // // methoden, um an ContentEntities zu kommen + public EntityList getFeatures(int offset, int limit) throws ModuleException + { + return getContent("is_published=true AND to_article_type=2", "date desc, webdb_create desc", + offset, limit); + } + + public EntityList getNewsWire(int offset, int limit) throws ModuleException + { + return getContent("is_published=true AND to_article_type = 1", + "date desc, webdb_create desc",offset,limit); + } + + public EntityList getStartArticle() throws ModuleException + { + EntityList returnList = getContent("is_published=true AND to_article_type=4", + "date desc, webdb_create desc",0,1); + //if no startspecial exists + if (returnList==null || returnList.size()==0) + returnList = getContent("is_published=true AND to_article_type=3", + "date desc, webdb_create desc",0,1); + + return returnList; + } public EntityList getContent(HashMap searchValues, boolean concat, int offset, EntityUsers user) throws ModuleException { diff --git a/source/mircoders/producer/ProducerStartPage.java b/source/mircoders/producer/ProducerStartPage.java index dafda02f..4f9b9fd1 100755 --- a/source/mircoders/producer/ProducerStartPage.java +++ b/source/mircoders/producer/ProducerStartPage.java @@ -1,18 +1,14 @@ package mircoders.producer; import java.io.*; -import java.lang.*; -import java.lang.reflect.*; import java.util.*; import freemarker.template.*; +import mir.entity.*; import mir.misc.*; -import mir.media.*; -import mir.storage.*; import mir.module.*; -import mir.entity.*; - +import mir.storage.*; import mircoders.module.*; import mircoders.storage.*; import mircoders.entity.*; @@ -23,14 +19,6 @@ public class ProducerStartPage extends Producer { private static String startPageTemplate = MirConfig.getProp("Producer.StartPage.Template"); private static int itemsPerPage = Integer.parseInt(MirConfig.getProp("Producer.StartPage.Items")); private static int newsPerPage = Integer.parseInt(MirConfig.getProp("Producer.StartPage.Newswire")); - Entity mediaType; - Entity upMedia; - SimpleHash upMediaSimpleHash; - Class mediaHandlerClass; - Class mediaStorageClass; - String mediaStorageName; - - public static void main(String argv[]){ try { @@ -48,239 +36,22 @@ public class ProducerStartPage extends Producer { throws StorageObjectException, ModuleException { printHTML(htmlout, "Producer.StartPage: started"); - - String extLinkName = MirConfig.getProp("Producer.ExtLinkName"); - String intLinkName = MirConfig.getProp("Producer.IntLinkName"); - String mailLinkName = MirConfig.getProp("Producer.MailLinkName"); - String imageRoot = MirConfig.getProp("Producer.ImageRoot"); - long sessionConnectTime = 0; long startTime = (new java.util.Date()).getTime(); String nowWebdbDate = StringUtil.date2webdbDate(new GregorianCalendar()); - String whereClause; - String orderBy; - FileWriter outputFile; - String htmlFileName; - EntityContent currentContent; EntityList entityList; - SimpleHash startPageModel; - SimpleList contentList; - String currentMediaId; - EntityList upMediaEntityList; - EntityList imageEntityList; - EntityList currentMediaList; - Entity mediaType; - EntityMedia uploadedMedia; - Class mediaHandlerClass=null; - MirMedia mediaHandler=null; - String mediaHandlerName=null; - Database mediaStorage=null; - String tinyIcon; - String iconAlt; - Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home") + "/" +MirConfig.getProp("Producer.Logfile")); - - SimpleList mediaList; - SimpleHash contentHash; // get the newswire - /** @todo same with newswire, should be fetched via moduleContent.getNewswire() */ - whereClause="is_published=true AND to_article_type = 1"; - entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,newsPerPage); + entityList = contentModule.getNewsWire(0,newsPerPage); SimpleList newsWireList = HTMLTemplateProcessor.makeSimpleList(entityList); - for (int i=0; i < entityList.size();i++) { - currentContent = (EntityContent)entityList.elementAt(i); - try { - /** @todo all this should be done inside EntityContent and on demand */ - //fetching/setting the images - upMediaEntityList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent); - if (upMediaEntityList!=null && upMediaEntityList.getCount()>=1) { - tinyIcon = null; - iconAlt = null; - mediaHandler = null; - mediaHandlerName = null; - for (int n=0; n < upMediaEntityList.size();n++) { - uploadedMedia = (EntityMedia)upMediaEntityList.elementAt(n); - mediaType = uploadedMedia.getMediaType(); - - //must of had a non-existant to_media_type entry.. - //let's save our ass. - if (mediaType != null) { - mediaHandlerName = mediaType.getValue("classname"); - mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName); - mediaHandler = (MirMedia)mediaHandlerClass.newInstance(); - - //the "best" media type to show - if (mediaHandler.isVideo()) { - tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo"); - iconAlt = "Video"; - break; - } else if (mediaHandler.isAudio()) { - tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio"); - iconAlt = "Audio"; - } else if (tinyIcon == null && !mediaHandler.isImage()) { - tinyIcon = mediaHandler.getTinyIcon(); - iconAlt = mediaHandler.getIconAlt(); - } - } - } - //it only has image(s) - if (tinyIcon == null) { - tinyIcon = MirConfig.getProp("Producer.Icon.TinyImage"); - iconAlt = "Image"; - } - - // uploadedMedia Entity list is empty. - // we only have text - } else { - tinyIcon = MirConfig.getProp("Producer.Icon.TinyText"); - iconAlt = "Text"; - } - - //mediaList = HTMLTemplateProcessor.makeSimpleList(upMediaEntityList); - contentHash = (SimpleHash)newsWireList.get(i); - contentHash.put("tiny_icon", imageRoot+"/"+tinyIcon); - contentHash.put("icon_alt", iconAlt); - } catch (Exception e) { - logHTML(htmlout, "Producer.StartPage error id: " + currentContent.getId() + ", skipping"); - theLog.printError("Producer.StartPage error id: " + currentContent.getId() + ", skipping"+e.toString()); - } - } - theLog.printDebugInfo("############### got newswire"); - - // get the startarticle and the related images - /** @todo this should move to moduleContent.getStartArticle */ - whereClause="is_published=true AND to_article_type=4"; - entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1); - //if no startspecial exists - if (entityList==null || entityList.size()==0){ - whereClause="is_published=true AND to_article_type=3"; - entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,1); - } + // get the startarticle + entityList = contentModule.getStartArticle(); SimpleList startItemList = HTMLTemplateProcessor.makeSimpleList(entityList); - for (int k=0; k < entityList.size();k++) { - currentContent = (EntityContent)entityList.elementAt(k); - try { - //media to content - currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent); - contentHash = (SimpleHash)startItemList.get(k); - /** @todo this should move to Entity */ - if (currentMediaList!=null && currentMediaList.getCount()>=1) { - SimpleList mediaListAudio = new SimpleList(); - SimpleList mediaListImages = new SimpleList(); - SimpleList mediaListVideo = new SimpleList(); - SimpleList mediaListOther = new SimpleList(); - for (int n=0; n < currentMediaList.size();n++) { - upMedia = currentMediaList.elementAt(n); - upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia); - mediaType = ((EntityMedia)upMedia).getMediaType(); - //must be a non-existant to_media_type entry.. - if (mediaType != null) { - mediaHandlerName = mediaType.getValue("classname"); - mediaStorageName = mediaType.getValue("tablename"); - mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName); - mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName); - mediaHandler = (MirMedia)mediaHandlerClass.newInstance(); - Method m = mediaStorageClass.getMethod("getInstance", null); - mediaStorage = (Database)m.invoke(null, null); - //we most likely need further info - upMedia = mediaStorage.selectById(upMedia.getId()); - upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType)); - if (upMedia.getValue("is_published").equals("1")) { - if (mediaHandler.isImage()) { - mediaListImages.add(upMediaSimpleHash); - } else if (mediaHandler.isAudio()) { - mediaListAudio.add(upMediaSimpleHash); - } else if (mediaHandler.isVideo()) { - mediaListVideo.add(upMediaSimpleHash); - } else { - mediaListOther.add(upMediaSimpleHash); - } - } //end if is_published - } //end if media_type != null - } //end for - contentHash.put("to_media_audio", mediaListAudio); - contentHash.put("to_media_images", mediaListImages); - contentHash.put("to_media_video", mediaListVideo); - contentHash.put("to_media_other", mediaListOther); - } //end if currentMediaList != null - - } catch (Exception e) { - logHTML(htmlout, "Producer.StartPage error id: " + currentContent.getId() + ", skipping"); - theLog.printError("Producer.StartPage error id: " + currentContent.getId() + ", skipping"+e.toString()); - } - } //enf for featurueList.size.. - - theLog.printDebugInfo("############### got startitems"); - - - - // get the articles - /** @todo moduleContent.getArticles() */ - whereClause="is_published=true AND to_article_type=2"; - orderBy="date desc, webdb_create desc"; - entityList = contentModule.getContent(whereClause, orderBy, 0, itemsPerPage); + // get the features + entityList = contentModule.getFeatures(0,itemsPerPage); SimpleList featureList = HTMLTemplateProcessor.makeSimpleList(entityList); - for (int k=0; k < entityList.size();k++) { - currentContent = (EntityContent)entityList.elementAt(k); - try { - //media to content - currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent); - theLog.printDebugInfo("############### getting contenthash"); - contentHash = (SimpleHash)featureList.get(k); - theLog.printDebugInfo("############### building media lists"); - if (currentMediaList!=null && currentMediaList.getCount()>=1) { - SimpleList mediaListAudio = new SimpleList(); - SimpleList mediaListImages = new SimpleList(); - SimpleList mediaListVideo = new SimpleList(); - SimpleList mediaListOther = new SimpleList(); - for (int n=0; n < currentMediaList.size();n++) { - upMedia = currentMediaList.elementAt(n); - upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia); - mediaType = ((EntityMedia)upMedia).getMediaType(); - //must be a non-existant to_media_type entry.. - if (mediaType != null) { - mediaHandlerName = mediaType.getValue("classname"); - mediaStorageName = mediaType.getValue("tablename"); - mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName); - mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName); - mediaHandler = (MirMedia)mediaHandlerClass.newInstance(); - Method m = mediaStorageClass.getMethod("getInstance", null); - mediaStorage = (Database)m.invoke(null, null); - //we most likely need further info - upMedia = mediaStorage.selectById(upMedia.getId()); - upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType)); - - if (upMedia.getValue("is_published").equals("1")) { - if (mediaHandler.isImage()) { - mediaListImages.add(upMediaSimpleHash); - } else if (mediaHandler.isAudio()) { - mediaListAudio.add(upMediaSimpleHash); - } else if (mediaHandler.isVideo()) { - mediaListVideo.add(upMediaSimpleHash); - } else { - mediaListOther.add(upMediaSimpleHash); - } - } //end if is_published - } //end if media_type != null - } //end for - contentHash.put("to_media_audio", mediaListAudio); - contentHash.put("to_media_images", mediaListImages); - contentHash.put("to_media_video", mediaListVideo); - contentHash.put("to_media_other", mediaListOther); - } //end if currentMediaList != null - } catch (Exception e) { - logHTML(htmlout, "Producer.StartPage error id: " + currentContent.getId() + ", skipping"); - theLog.printError("Producer.StartPage error id: " + currentContent.getId() + ", skipping"+e.toString()); - } - } //enf for featurueList.size.. - theLog.printDebugInfo("############### got featurelist"); - - /** @todo the following should be the only thing left done here. a lot of redundancies are gone then, - * code is more readable, and caching stuff, mass changes, etc. can be done in one spot */ - - // Additional Information - startPageModel = new SimpleHash(); + SimpleHash startPageModel = new SimpleHash(); // breaking news ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance()); @@ -291,16 +62,14 @@ public class ProducerStartPage extends Producer { startPageModel.put("startspecial", startItemList); startPageModel.put("features", featureList); - htmlFileName = producerDocRoot + "/index.shtml"; - - produce(startPageTemplate, htmlFileName, startPageModel, htmlout); + produce(startPageTemplate, producerDocRoot + "/index.shtml", startPageModel, htmlout); // Finish sessionConnectTime = new java.util.Date().getTime() - startTime; - logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms."); + logHTML(htmlout, "Producer.Startpage finished: " + sessionConnectTime + " ms."); if(sync==true){ Helper.rsync(); - logHTML(htmlout, "Producer.Startseite: rsync done"); + logHTML(htmlout, "Producer.Startpage: rsync done"); } } } -- 2.11.0