jlint debugging...
[mir.git] / source / mircoders / producer / ProducerStartPage.java
index d5aae41..3ea6e41 100755 (executable)
@@ -70,102 +70,92 @@ public class ProducerStartPage extends Producer {
     EntityList          imageEntityList;
     EntityList          currentMediaList;
     Entity              mediaType;
-    EntityUploadedMedia uploadedMedia;
+    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"));
+    Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home") + "/" +MirConfig.getProp("Producer.Logfile"));
 
     SimpleList mediaList;
     SimpleHash contentHash;
 
-    // get the topiclist
-    entityList = topicsModule.getByWhereClause("","title",-1);
-    SimpleList topicList = HTMLTemplateProcessor.makeSimpleList(entityList);
-
     // get the imclinks
+    /** @todo don't we want to preproduce and include the imcs? */
     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";
+    /** @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);
     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 = (EntityUploadedMedia)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
-              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();
+      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";
           }
-        }
-        //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){}
+          //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
@@ -176,74 +166,65 @@ public class ProducerStartPage extends Producer {
     SimpleList startItemList = HTMLTemplateProcessor.makeSimpleList(entityList);
     for (int k=0; k < entityList.size();k++) {
       currentContent = (EntityContent)entityList.elementAt(k);
-      //images 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();
-        //SimpleHash allMediaSimpleHash = new SimpleHash();
-        for (int n=0; n < currentMediaList.size();n++) {
-          upMedia = currentMediaList.elementAt(n);
-          upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
-          mediaType = ((EntityUploadedMedia)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();
-              if(!mediaStorageName.equals(new String("UploadedMedia"))) {
+      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());
-              }
-            } 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{
-          //SimpleList contentList = (SimpleList)mergeData.get("contentlist");
-          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
+                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
+                                       //convert to html
+                                       if ( ((SimpleScalar)contentHash.get("is_html")).getAsString().equals("0") ) {
+                                               SimpleScalar tempScalar = (SimpleScalar)contentHash.get("description");
+                                               String temp = StringUtil.createHTML(tempScalar.getAsString(),imageRoot,mailLinkName,extLinkName,intLinkName);
+                                               temp = StringUtil.decodeHTMLinTags(temp);
+                                               contentHash.put("description",temp);
+                                       }
+
+                       } 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..
 
-
-
-    /*for (int i=0; i < entityList.size();i++) {
-      currentContent = (EntityContent)entityList.elementAt(i);
-      //fetching/setting the images
-      imageEntityList = DatabaseContentToMedia.getInstance().getImages(currentContent);
-      if (imageEntityList!=null && imageEntityList.getCount()>=1) {
-        try{
-          mediaList = HTMLTemplateProcessor.makeSimpleList(imageEntityList);
-          contentHash = (SimpleHash)startItemList.get(i);
-          contentHash.put("to_media", mediaList);
-        } catch (Exception e){}
-      }
-    }*/
+    theLog.printDebugInfo("############### got startitems");
 
     // get the breaking news
     // only the first 5
@@ -251,87 +232,85 @@ public class ProducerStartPage extends Producer {
     ModuleBreaking breakingModule = new ModuleBreaking(DatabaseBreaking.getInstance());
     entityList = breakingModule.getByWhereClause(null,"webdb_create desc",0,5);
     SimpleList breakingList = HTMLTemplateProcessor.makeSimpleList(entityList);
+    theLog.printDebugInfo("############### got breaking");
 
     // 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);
     SimpleList featureList = HTMLTemplateProcessor.makeSimpleList(entityList);
     for (int k=0; k < entityList.size();k++) {
       currentContent = (EntityContent)entityList.elementAt(k);
-      //images 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();
-        //SimpleHash allMediaSimpleHash = new SimpleHash();
-        for (int n=0; n < currentMediaList.size();n++) {
-          upMedia = currentMediaList.elementAt(n);
-          upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
-          mediaType = ((EntityUploadedMedia)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();
-              if(!mediaStorageName.equals(new String("UploadedMedia"))) {
+      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());
-              }
-            } 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{
-          //SimpleList contentList = (SimpleList)mergeData.get("contentlist");
-          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
+                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
+
+                                       //convert to html
+          theLog.printDebugInfo("############### html conversion");
+                                       if ( ((SimpleScalar)contentHash.get("is_html")).getAsString().equals("0") ) {
+                                               SimpleScalar tempScalar = (SimpleScalar)contentHash.get("description");
+                                               String temp = StringUtil.createHTML(tempScalar.getAsString(),imageRoot,mailLinkName,extLinkName,intLinkName);
+                                               temp = StringUtil.decodeHTMLinTags(temp);
+                                               contentHash.put("description",temp);
+                                       }
+                       } 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 */
 
-
-    /*for (int i=0; i < entityList.size();i++) {
-      currentContent = (EntityContent)entityList.elementAt(i);
-      //fetching/setting the images
-      imageEntityList = DatabaseContentToMedia.getInstance().getImages(currentContent);
-      if (imageEntityList!=null && imageEntityList.getCount()>=1) {
-        try{
-          mediaList = HTMLTemplateProcessor.makeSimpleList(imageEntityList);
-          contentHash = (SimpleHash)featureList.get(i);
-          contentHash.put("to_media", mediaList);
-        } catch (Exception e){}
-      }
-    }*/
-
-    // Zusaetzlich Informationen
+    // Additional Information
     startPageModel = new SimpleHash();
     startPageModel.put("breakingnews", breakingList);
-    startPageModel.put("topics", topicList);
+    startPageModel.put("topics", topicsModule.getTopicsList());
     startPageModel.put("imclist", imcList);
     startPageModel.put("parentlist", parentList);
     startPageModel.put("newswire", newsWireList);