blob: 0216a326a0f3498abcfac266c71f8412504f85a7 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. The ASF licenses this file to You
* under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License. For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.roller.weblogger.ui.rendering.model;
import java.util.Map;
import javax.servlet.jsp.PageContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
import org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel;
import org.apache.roller.weblogger.ui.core.tags.calendar.CalendarTag;
import org.apache.roller.weblogger.ui.core.tags.calendar.WeblogCalendarModel;
import org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest;
import org.apache.roller.weblogger.ui.rendering.util.WeblogRequest;
/**
* Model which provides functionality for displaying weblog calendar.
*
* Implemented by calling hybrid JSP tag.
*/
public class CalendarModel implements Model {
private static Log log = LogFactory.getLog(CalendarModel.class);
private PageContext pageContext = null;
private WeblogPageRequest pageRequest = null;
/** Template context name to be used for model */
public String getModelName() {
return "calendarModel";
}
/** Init page model based on request */
public void init(Map initData) throws WebloggerException {
// extract page context
this.pageContext = (PageContext) initData.get("pageContext");
// we expect the init data to contain a weblogRequest object
WeblogRequest weblogRequest = (WeblogRequest) initData.get("parsedRequest");
if(weblogRequest == null) {
throw new WebloggerException("expected weblogRequest from init data");
}
// CalendarModel only works on page requests, so cast weblogRequest
// into a WeblogPageRequest and if it fails then throw exception
if(weblogRequest instanceof WeblogPageRequest) {
this.pageRequest = (WeblogPageRequest) weblogRequest;
} else {
throw new WebloggerException("weblogRequest is not a WeblogPageRequest."+
" CalendarModel only supports page requests.");
}
}
public String showWeblogEntryCalendar(WeblogWrapper websiteWrapper, String catArgument) {
return showWeblogEntryCalendar(websiteWrapper, catArgument, false);
}
public String showWeblogEntryCalendarBig(WeblogWrapper websiteWrapper, String catArgument) {
return showWeblogEntryCalendar(websiteWrapper, catArgument, true);
}
private String showWeblogEntryCalendar(WeblogWrapper websiteWrapper, String catArgument, boolean big) {
if ("nil".equals(catArgument)) {
catArgument = null;
}
String ret = null;
try {
org.apache.roller.weblogger.ui.core.tags.calendar.CalendarModel model = null;
if (big) {
model = new BigWeblogCalendarModel(pageRequest, catArgument);
} else {
model = new WeblogCalendarModel(pageRequest, catArgument);
}
// save model in JSP page context so CalendarTag can find it
pageContext.setAttribute("calendarModel", model);
CalendarTag calTag = new CalendarTag();
calTag.setPageContext(pageContext);
calTag.setName("calendar");
calTag.setModel("calendarModel");
calTag.setLocale(websiteWrapper.getLocaleInstance());
if (big) {
calTag.setClassSuffix("Big");
}
ret = calTag.emit();
} catch (Exception e) {
log.error("ERROR: initializing calendar tag",e);
}
return ret;
}
}