1 43 package net.jforum.util.rss; 44 45 46 import java.util.Iterator ; 47 import java.util.List ; 48 49 import net.jforum.entities.Category; 50 import net.jforum.entities.Forum; 51 import net.jforum.entities.LastPostInfo; 52 import net.jforum.repository.ForumRepository; 53 import net.jforum.util.I18n; 54 import net.jforum.util.preferences.ConfigKeys; 55 import net.jforum.util.preferences.SystemGlobals; 56 import net.jforum.view.forum.common.ViewCommon; 57 58 import org.apache.log4j.Logger; 59 60 64 public class ForumRSS extends GenericRSS 65 { 66 private static final Logger logger = Logger.getLogger(ForumRSS.class); 67 68 private List categories; 69 private RSS rss; 70 private String forumLink; 71 72 public ForumRSS(String title, String description, List categories) 73 { 74 this.categories = categories; 75 this.forumLink = ViewCommon.getForumLink(); 76 77 this.rss = new RSS(title, description, 78 SystemGlobals.getValue(ConfigKeys.ENCODING ), 79 this.forumLink); 80 81 this.prepareRSS(); 82 } 83 84 private void prepareRSS() 85 { 86 try { 87 for (Iterator iter = this.categories.iterator(); iter.hasNext(); ) { 88 Category category = (Category)iter.next(); 89 90 for (Iterator fIter = category.getForums().iterator(); fIter.hasNext(); ) { 91 Forum forum = (Forum)fIter.next(); 92 93 LastPostInfo info = ForumRepository.getLastPostInfo(forum.getId()); 94 95 RSSItem item = new RSSItem(); 96 item.addCategory(category.getName()); 97 item.setTitle(forum.getName()); 98 item.setDescription(forum.getDescription()); 99 item.setContentType(RSSAware.CONTENT_HTML); 100 item.setLink(this.forumLink 101 + "forums/show/" + forum.getId() 102 + SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION)); 103 104 String author = info.getUsername(); 105 106 item.setAuthor(author != null ? author : I18n.getMessage("Guest")); 107 108 String date = info.getPostDate(); 109 item.setPublishDate(date != null ? RSSUtils.formatDate(date) : ""); 110 111 this.rss.addItem(item); 112 } 113 } 114 } 115 catch (Exception e) { 116 logger.warn("Error while generating rss for forums: " + e); 117 e.printStackTrace(); 118 } 119 120 super.setRSS(this.rss); 121 } 122 } 123 | Popular Tags |