X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fproducer%2FProducerStartPage.java;h=8ae3e5b4e1e51518db4cdbe1edac63c8b4d847d6;hb=c6a2204d8d75293256fd17c07e54971d7672359a;hp=ad8e225d912073a1a8ca24a2b1f173e0d59b715a;hpb=f648183ac28a7f1fc1a4dede14065d752404576b;p=mir.git diff --git a/source/mircoders/producer/ProducerStartPage.java b/source/mircoders/producer/ProducerStartPage.java index ad8e225d..8ae3e5b4 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 { @@ -47,271 +35,28 @@ public class ProducerStartPage extends Producer { public void handle(PrintWriter htmlout, EntityUsers user, boolean force,boolean sync) throws StorageObjectException, ModuleException { + long startTime = System.currentTimeMillis(); printHTML(htmlout, "Producer.StartPage: started"); + SimpleHash startPageModel = new SimpleHash(); - 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(this.getClass().getName()); - - SimpleList mediaList; - SimpleHash contentHash; - - // get the topiclist - entityList = topicsModule.getByWhereClause("","title",-1); - SimpleList topicList = HTMLTemplateProcessor.makeSimpleList(entityList); - - // get the imclinks - entityList = linksImcsModule.getByWhereClause("", "sortpriority, title", -1); - SimpleList imcList = HTMLTemplateProcessor.makeSimpleList(entityList); - - EntityList theParentList = linksImcsModule.getByWhereClause("to_parent_id=NULL", "sortpriority, title", -1); - SimpleList parentList = HTMLTemplateProcessor.makeSimpleList(theParentList); - - // get the newswire - whereClause="is_published=true AND to_article_type = 1"; - entityList = contentModule.getContent(whereClause,"date desc, webdb_create desc",0,newsPerPage); - SimpleList newsWireList = HTMLTemplateProcessor.makeSimpleList(entityList); - for (int i=0; i < entityList.size();i++) { - currentContent = (EntityContent)entityList.elementAt(i); - //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) { - /* - * grrr. why doesn't getId return an int! if It - * did I could just compare the value of getId and - * pick the biggest one. or is there - * another way around this that I am missing? - * can we make getIdasInt() or can we just have - * another getId() that returns an Int and the VM - * will handle it transparantly? -mh - */ - try { - mediaHandlerName = mediaType.getValue("classname"); - mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName); - mediaHandler = (MirMedia)mediaHandlerClass.newInstance(); - } catch (Exception e) { - theLog.printError("ProducerStartpage:problem in reflection: "+mediaHandlerName); - } - - //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"; - } - - try{ - //mediaList = HTMLTemplateProcessor.makeSimpleList(upMediaEntityList); - contentHash = (SimpleHash)newsWireList.get(i); - contentHash.put("tiny_icon", imageRoot+"/"+tinyIcon); - contentHash.put("icon_alt", iconAlt); - } catch (Exception e){} - } - - // get the startarticle and the related images - 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); - } - SimpleList startItemList = HTMLTemplateProcessor.makeSimpleList(entityList); - for (int k=0; k < entityList.size();k++) { - currentContent = (EntityContent)entityList.elementAt(k); - //media to content - currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent); - 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) { - try { - 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()); - } catch (Exception e) { - theLog.printError("ProducerList: problem in reflection: "+mediaHandlerName); - } //end catch - upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType)); - if (upMedia.getValue("is_published") == "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 - try{ - contentHash = (SimpleHash)startItemList.get(k); - contentHash.put("to_media_audio", mediaListAudio); - contentHash.put("to_media_images", mediaListImages); - contentHash.put("to_media_video", mediaListVideo); - contentHash.put("to_media_other", mediaListOther); - } catch (Exception e){} - } //end if currentMediaList != null - } //enf for featurueList.size.. - - // get the breaking news - // only the first 5 - // todo: the number of breaking_news items have to be configurable + // breaking news ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance()); - entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5); - SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList); - - // get the articles - whereClause="is_published=true AND to_article_type=2"; - orderBy="date desc, webdb_create desc"; - entityList = contentModule.getContent(whereClause, orderBy, 0, itemsPerPage); - SimpleList featureList = HTMLTemplateProcessor.makeSimpleList(entityList); - for (int k=0; k < entityList.size();k++) { - currentContent = (EntityContent)entityList.elementAt(k); - //media to content - currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent); - 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) { - try { - 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()); - } catch (Exception e) { - theLog.printError("ProducerList: problem in reflection: "+mediaHandlerName); - } //end catch - upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType)); - - // he marc, shouldn't this be .equals("1") ? - if (upMedia.getValue("is_published") == "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 - try{ - contentHash = (SimpleHash)featureList.get(k); - contentHash.put("to_media_audio", mediaListAudio); - contentHash.put("to_media_images", mediaListImages); - contentHash.put("to_media_video", mediaListVideo); - contentHash.put("to_media_other", mediaListOther); - } catch (Exception e){} - } //end if currentMediaList != null - } //enf for featurueList.size.. - - // Zusaetzlich Informationen - startPageModel = new SimpleHash(); - startPageModel.put("breakingnews", breakingList); - startPageModel.put("topics", topicList); - startPageModel.put("imclist", imcList); - startPageModel.put("parentlist", parentList); - startPageModel.put("newswire", newsWireList); - startPageModel.put("startspecial", startItemList); - startPageModel.put("features", featureList); + startPageModel.put("breakingnews", breakingModule.getBreakingNews()); + startPageModel.put("topics", topicsModule.getTopicsList()); + startPageModel.put("newswire", contentModule.getNewsWire(0,newsPerPage)); + startPageModel.put("startspecial", contentModule.getStartArticle()); + startPageModel.put("features", contentModule.getFeatures(0,itemsPerPage)); - htmlFileName = producerDocRoot + "/index.shtml"; + /** @todo switch to compressed */ + produce(startPageTemplate, producerDocRoot + "/index.shtml", startPageModel, htmlout); - produce(startPageTemplate, htmlFileName, startPageModel, htmlout); + // finished + logHTMLFinish(htmlout, "Startpage", 1, startTime, System.currentTimeMillis()); - // Finish - sessionConnectTime = new java.util.Date().getTime() - startTime; - logHTML(htmlout, "Producer.Startseite finished: " + sessionConnectTime + " ms."); if(sync==true){ + logHTML(htmlout, "Producer.Startpage: rsyncing..."); Helper.rsync(); - logHTML(htmlout, "Producer.Startseite: rsync done"); + logHTML(htmlout, "Producer.Startpage: rsync done"); } } }