01: /**
02: * LibreSource
03: * Copyright (C) 2004-2008 Artenum SARL / INRIA
04: * http://www.libresource.org - contact@artenum.com
05: *
06: * This file is part of the LibreSource software,
07: * which can be used and distributed under license conditions.
08: * The license conditions are provided in the LICENSE.TXT file
09: * at the root path of the packaging that enclose this file.
10: * More information can be found at
11: * - http://dev.libresource.org/home/license
12: *
13: * Initial authors :
14: *
15: * Guillaume Bort / INRIA
16: * Francois Charoy / Universite Nancy 2
17: * Julien Forest / Artenum
18: * Claude Godart / Universite Henry Poincare
19: * Florent Jouille / INRIA
20: * Sebastien Jourdain / INRIA / Artenum
21: * Yves Lerumeur / Artenum
22: * Pascal Molli / Universite Henry Poincare
23: * Gerald Oster / INRIA
24: * Mariarosa Penzi / Artenum
25: * Gerard Sookahet / Artenum
26: * Raphael Tani / INRIA
27: *
28: * Contributors :
29: *
30: * Stephane Bagnier / Artenum
31: * Amadou Dia / Artenum-IUP Blois
32: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33: */package org.libresource.web.controllers.forum;
34:
35: import org.libresource.Libresource;
36:
37: import org.libresource.forum.ForumConstants;
38: import org.libresource.forum.ejb.model.ForumResourceValue;
39: import org.libresource.forum.ejb.model.ThreadWithLastPostResourceValue;
40: import org.libresource.forum.interfaces.LibresourceForumService;
41:
42: import org.libresource.web.Controller;
43: import org.libresource.web.rss.Feed;
44: import org.libresource.web.rss.Item;
45:
46: import java.net.URI;
47:
48: import javax.servlet.http.HttpServletRequest;
49: import javax.servlet.http.HttpServletResponse;
50:
51: public class RssForumController implements Controller {
52: public Object process(URI uri, HttpServletRequest request,
53: HttpServletResponse response) throws Exception {
54: LibresourceForumService libresourceForumService = (LibresourceForumService) Libresource
55: .getService(ForumConstants.SERVICE);
56: ForumResourceValue forum = libresourceForumService
57: .getForum(uri);
58: ThreadWithLastPostResourceValue[] threads = libresourceForumService
59: .listThreadsInForum(uri);
60:
61: for (int i = 0; i < threads.length; i++) {
62: if (threads[i].getThread().getName().length() == 0) {
63: threads[i].getThread().setName("No subject");
64: }
65: }
66:
67: // create feed
68: Feed feed = new Feed(forum.getUri(), forum.getName(), forum
69: .getDescription());
70:
71: // create items
72: Item[] items;
73:
74: if (threads.length < 10) {
75: items = new Item[threads.length];
76: } else {
77: items = new Item[10];
78: }
79:
80: for (int i = 0; i < items.length; i++) {
81: items[i] = new Item(threads[i].getThread().getUri(),
82: threads[i].getName(), threads[i].getLastPost()
83: .getAuthorName(), threads[i].getLastPost()
84: .getDate(), threads[i].getName());
85: }
86:
87: // redirect to generic feed page
88: request.setAttribute("feed", feed);
89: request.setAttribute("items", items);
90:
91: return "/pages/resource.rdf.jsp";
92: }
93: }
|