KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > roller > presentation > weblog > tags > BigWeblogCalendarModel


1 package org.roller.presentation.weblog.tags;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.roller.RollerException;
6 import org.roller.model.WeblogManager;
7 import org.roller.pojos.WeblogEntryData;
8 import org.roller.presentation.RollerContext;
9 import org.roller.presentation.RollerRequest;
10 import org.roller.util.DateUtil;
11
12 import java.text.SimpleDateFormat JavaDoc;
13 import java.util.Date JavaDoc;
14 import java.util.HashMap JavaDoc;
15 import java.util.List JavaDoc;
16
17 import javax.servlet.http.HttpServletResponse JavaDoc;
18
19 /**
20  * Model for big calendar that displays titles for each day.
21  * @author David M Johnson
22  */

23 public class BigWeblogCalendarModel extends WeblogCalendarModel
24 {
25     private static Log mLogger =
26         LogFactory.getFactory().getInstance(BigWeblogCalendarModel.class);
27     
28     protected static final SimpleDateFormat JavaDoc mStarDateFormat =
29         DateUtil.get8charDateFormat();
30         
31     protected static final SimpleDateFormat JavaDoc mSingleDayFormat =
32         new SimpleDateFormat JavaDoc("dd");
33
34     /**
35      * @param rreq
36      * @param res
37      * @param url
38      * @param cat
39      */

40     public BigWeblogCalendarModel(RollerRequest rreq, HttpServletResponse JavaDoc res,
41                                   String JavaDoc url, String JavaDoc cat)
42     {
43         super(rreq, res, url, cat);
44     }
45     
46     /**
47      * @param startDate
48      * @param endDate
49      */

50     protected void loadWeblogEntries(Date JavaDoc startDate, Date JavaDoc endDate, String JavaDoc catName)
51     {
52         try
53         {
54             WeblogManager mgr = mRollerReq.getRoller().getWeblogManager();
55             mMonthMap = mgr.getWeblogEntryObjectMap(
56                             mRollerReq.getWebsite(), // userName
57
startDate, // startDate
58
endDate, // endDate
59
catName, // catName
60
WeblogManager.PUB_ONLY, // status
61
null
62             );
63         }
64         catch (RollerException e)
65         {
66             mLogger.error(e);
67             mMonthMap = new HashMap JavaDoc();
68         }
69     }
70
71     /**
72      * Create URL for use on view-weblog page, ignores query-string.
73      * @param day Day for URL
74      * @param valid Always return a URL, never return null
75      * @return URL for day, or null if no weblog entry on that day
76      */

77     public String JavaDoc computeUrl(Date JavaDoc day, boolean valid)
78     {
79         String JavaDoc url = null;
80         try
81         {
82             if ( day == null )
83             {
84                 url = mRes.encodeURL(mSelfUrl + mCatName);
85             }
86             else
87             {
88                 // get the 8 char YYYYMMDD datestring for day, returns null
89
// if no weblog entry on that day
90
String JavaDoc dateString = null;
91                 List JavaDoc entries =
92                    (List JavaDoc)mMonthMap.get( day );
93                 if ( entries != null && day != null )
94                 {
95                     WeblogEntryData entry = (WeblogEntryData)entries.get(0);
96                     dateString =
97                         mStarDateFormat.format(entry.getPubTime());
98                     
99                     // append 8 char date string on end of selfurl
100
url = mRes.encodeURL(mSelfUrl+"/"+dateString+mCatName);
101                 }
102                 else if ( entries != null )
103                 {
104                     url = mRes.encodeURL(mSelfUrl+"/"+mCatName);
105                 }
106                 else if ( valid )
107                 {
108                     // Make the date yyyyMMdd and append it to URL
109
dateString = mStarDateFormat.format( day );
110                     url = mRes.encodeURL(mSelfUrl+"/"+dateString+mCatName);
111                 }
112             }
113         }
114         catch (Exception JavaDoc e)
115         {
116             RollerRequest.getRollerRequest(mReq)
117                 .getServletContext().log("ERROR: creating URL",e);
118         }
119         return url;
120     }
121     
122     /**
123      * @see org.roller.presentation.tags.calendar.CalendarModel#getContent(Date, boolean)
124      */

125     public String JavaDoc getContent(Date JavaDoc day)
126     {
127         String JavaDoc content = null;
128         try
129         {
130             RollerRequest rreq = RollerRequest.getRollerRequest(mReq);
131             RollerContext rctx =
132                 RollerContext.getRollerContext(rreq.getServletContext());
133             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
134             
135             // get the 8 char YYYYMMDD datestring for day, returns null
136
// if no weblog entry on that day
137
String JavaDoc dateString = null;
138             List JavaDoc entries = (List JavaDoc)mMonthMap.get(day);
139             if ( entries != null )
140             {
141                 dateString = mStarDateFormat.format(
142                     ((WeblogEntryData)entries.get(0)).getPubTime());
143                                 
144                 // append 8 char date string on end of selfurl
145
String JavaDoc dayUrl = mRes.encodeURL(mSelfUrl+"/"+ dateString+mCatName );
146
147                 sb.append("<div class=\"hCalendarDayTitleBig\">");
148                 sb.append("<a HREF=\"");
149                 sb.append( dayUrl );
150                 sb.append("\">");
151                 sb.append( mSingleDayFormat.format( day ) );
152                 sb.append("</a></div>");
153                 
154                 for ( int i=0; i<entries.size(); i++ )
155                 {
156                     sb.append("<div class=\"bCalendarDayContentBig\">");
157                     sb.append("<a HREF=\"");
158                     sb.append(rctx.createEntryPermalink(
159                         (WeblogEntryData)entries.get(i),mReq,false));
160                     sb.append("\">");
161                     
162                     String JavaDoc title = ((WeblogEntryData)entries.get(i)).getTitle().trim();
163                     if ( title.length()==0 )
164                     {
165                         title = ((WeblogEntryData)entries.get(i)).getAnchor();
166                     }
167                     if ( title.length() > 20 )
168                     {
169                         title = title.substring(0,20)+"...";
170                     }
171                    
172                     sb.append( title );
173                     sb.append("</a></div>");
174                 }
175                 
176             }
177             else
178             {
179                 sb.append("<div class=\"hCalendarDayTitleBig\">");
180                 sb.append( mSingleDayFormat.format( day ) );
181                 sb.append("</div>");
182                 sb.append("<div class=\"bCalendarDayContentBig\"/>");
183             }
184             content = sb.toString();
185         }
186         catch (Exception JavaDoc e)
187         {
188             RollerRequest.getRollerRequest(mReq)
189                 .getServletContext().log("ERROR: creating URL",e);
190         }
191         return content;
192     }
193 }
194
Popular Tags