//# 0 errors, 260 messages
//#
/*
    //#BigWeblogCalendarModel.java:1:1: class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
 * 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.core.tags.calendar;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.business.WeblogManager;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest;
import org.apache.roller.util.DateUtil;


/**
 * Model for big calendar that displays titles for each day.
 */
public class BigWeblogCalendarModel extends WeblogCalendarModel {
    
    private static Log mLogger = LogFactory.getLog(BigWeblogCalendarModel.class);
    //#BigWeblogCalendarModel.java:40: method: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init
    //#BigWeblogCalendarModel.java:40: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel]
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.computeNextMonthUrl()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.computePrevMonthUrl()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.computeTodayMonthUrl()Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.computeUrl(Ljava/util/Date;ZZ)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getContent(Ljava/util/Date;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getDay()Ljava/util/Date;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getNextMonth()Ljava/util/Date;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getParameterValue(Ljava/util/Date;)Ljava/lang/String;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getPrevMonth()Ljava/util/Date;
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.initDay(Ljava/util/Date;)V
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.loadWeblogEntries(Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.setDay(Ljava/lang/String;)V
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): mLogger
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): mSingleDayFormat
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): mStarDateFormat
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): new SimpleDateFormat(BigWeblogCalendarModel__static_init#1) num objects
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): org/apache/roller/weblogger/ui/core/tags/calendar/CalendarModel.__Descendant_Table[org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel]
    //#output(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.__Descendant_Table[org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel]
    //#new obj(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): new SimpleDateFormat(BigWeblogCalendarModel__static_init#1)
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): org/apache/roller/weblogger/ui/core/tags/calendar/CalendarModel.__Descendant_Table[org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.__Descendant_Table[org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.computeNextMonthUrl()Ljava/lang/String; == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.computeNextMonthUrl
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.computePrevMonthUrl()Ljava/lang/String; == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.computePrevMonthUrl
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.computeTodayMonthUrl()Ljava/lang/String; == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.computeTodayMonthUrl
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.computeUrl(Ljava/util/Date;ZZ)Ljava/lang/String; == &computeUrl
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getCalendar()Ljava/util/Calendar; == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.getCalendar
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getContent(Ljava/util/Date;)Ljava/lang/String; == &getContent
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getDay()Ljava/util/Date; == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.getDay
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getNextMonth()Ljava/util/Date; == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.getNextMonth
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getParameterValue(Ljava/util/Date;)Ljava/lang/String; == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.getParameterValue
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.getPrevMonth()Ljava/util/Date; == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.getPrevMonth
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.initDay(Ljava/util/Date;)V == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.initDay
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.loadWeblogEntries(Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;)V == &loadWeblogEntries
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): __Dispatch_Table.setDay(Ljava/lang/String;)V == &org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.setDay
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): init'ed(mLogger)
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): mSingleDayFormat == &new SimpleDateFormat(BigWeblogCalendarModel__static_init#1)
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): init'ed(mStarDateFormat)
    //#post(org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init): new SimpleDateFormat(BigWeblogCalendarModel__static_init#1) num objects == 1
    
    protected static final SimpleDateFormat mStarDateFormat =
    //#BigWeblogCalendarModel.java:42: Warning: method not available
    //#    -- call on SimpleDateFormat org.apache.roller.util.DateUtil:get8charDateFormat()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init
    //#    unanalyzed callee: SimpleDateFormat org.apache.roller.util.DateUtil:get8charDateFormat()
            DateUtil.get8charDateFormat();
    
    protected static final SimpleDateFormat mSingleDayFormat =
    //#BigWeblogCalendarModel.java:45: end of method: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel__static_init
            new SimpleDateFormat("dd");
    
    
    public BigWeblogCalendarModel(WeblogPageRequest pRequest, String cat) {
        super(pRequest, cat);
    //#BigWeblogCalendarModel.java:50: method: void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)
    //#BigWeblogCalendarModel.java:50: Warning: suspicious precondition
    //#    the precondition for this.__Tag is not a contiguous range of values
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)
    //#    suspicious precondition index: [3]
    //#    Attribs:  Soft
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): "unable to lookup weblog: "._tainted
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): __Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): __Dispatch_Table.initDay(Ljava/util/Date;)V
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): __Dispatch_Table.loadWeblogEntries(Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;)V
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): cat
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.__Descendant_Table[org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel]
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.__Descendant_Table[org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel]
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.__Descendant_Table[others]
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.__Dispatch_Table.getCalendar()Ljava/util/Calendar;
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.__Dispatch_Table.initDay(Ljava/util/Date;)V
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.__Dispatch_Table.loadWeblogEntries(Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;)V
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.log
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): pRequest
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this
    //#input(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.__Tag
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#1) num objects
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#3) num objects
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#5) num objects
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new HashMap(loadWeblogEntries#1) num objects
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.__Tag
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.calendar
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.cat
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.day
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.locale
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.monthMap
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.nextMonth
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.pageLink
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.pageRequest
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.prevMonth
    //#output(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.weblog
    //#new obj(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#1)
    //#new obj(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#3)
    //#new obj(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#5)
    //#new obj(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new HashMap(loadWeblogEntries#1)
    //#pre[3] (void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): (soft) this.__Tag in {org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel, org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel}
    //#pre[4] (void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): (soft) org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.log != null
    //#pre[5] (void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): (soft) pRequest != null
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.__Tag == old this.__Tag
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): (soft) this.__Tag in {org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel, org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel}
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): init'ed(this.calendar)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): init'ed(this.cat)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): possibly_updated(this.day)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): init'ed(this.locale)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): possibly_updated(this.monthMap)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): init'ed(this.nextMonth)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): init'ed(this.pageLink)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): this.pageRequest == pRequest
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): (soft) this.pageRequest != null
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): init'ed(this.prevMonth)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): init'ed(this.weblog)
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#1) num objects <= 1
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#3) num objects <= 1
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new Date(parseWeblogURLDateString#5) num objects <= 1
    //#post(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): new HashMap(loadWeblogEntries#1) num objects <= 1
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.util.Date
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.util.Calendar:getInstance
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.commons.lang.StringUtils:isNumeric
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.util.DateUtil:get8charDateFormat
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.text.SimpleDateFormat:setCalendar
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.text.ParsePosition
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.text.SimpleDateFormat:parse
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.util.Date:after
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.util.DateUtil:get6charDateFormat
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.util.Calendar:clone
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getWeblogManager
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogEntryStringMap
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.commons.logging.Log:error
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.util.HashMap
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getTimeZoneInstance
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.Weblog:getLocaleInstance
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.util.DateUtil:getStartOfMonth
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.util.DateUtil:getEndOfMonth
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.util.Date:getTime
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogEntries
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.util.List:size
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.util.List:get
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.sql.Timestamp:getTime
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:loadWeblogEntries
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest:getWeblog
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest:getWeblogHandle
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.WebloggerException
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest:getWeblogPageName
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest:getWeblogDate
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest:getLocale
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest:getWeblogCategoryName
    //#unanalyzed(void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)): Effects-of-calling:org.apache.roller.weblogger.business.WeblogManager:getWeblogEntryObjectMap
    }
    //#BigWeblogCalendarModel.java:51: end of method: void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel(WeblogPageRequest, String)
    
    
    protected void loadWeblogEntries(Date startDate, Date endDate, String catName) {
        try {
            WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
    //#BigWeblogCalendarModel.java:56: method: void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.loadWeblogEntries(Date, Date, String)
    //#BigWeblogCalendarModel.java:56: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: void loadWeblogEntries(Date, Date, String)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#BigWeblogCalendarModel.java:56: Warning: method not available
    //#    -- call on WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: void loadWeblogEntries(Date, Date, String)
    //#    unanalyzed callee: WeblogManager org.apache.roller.weblogger.business.Weblogger:getWeblogManager()
    //#input(void loadWeblogEntries(Date, Date, String)): catName
    //#input(void loadWeblogEntries(Date, Date, String)): endDate
    //#input(void loadWeblogEntries(Date, Date, String)): mLogger
    //#input(void loadWeblogEntries(Date, Date, String)): startDate
    //#input(void loadWeblogEntries(Date, Date, String)): this
    //#input(void loadWeblogEntries(Date, Date, String)): this.locale
    //#input(void loadWeblogEntries(Date, Date, String)): this.weblog
    //#output(void loadWeblogEntries(Date, Date, String)): new HashMap(loadWeblogEntries#1) num objects
    //#output(void loadWeblogEntries(Date, Date, String)): this.monthMap
    //#new obj(void loadWeblogEntries(Date, Date, String)): new HashMap(loadWeblogEntries#1)
    //#pre[3] (void loadWeblogEntries(Date, Date, String)): (soft) mLogger != null
    //#pre[6] (void loadWeblogEntries(Date, Date, String)): (soft) init'ed(this.locale)
    //#pre[7] (void loadWeblogEntries(Date, Date, String)): (soft) init'ed(this.weblog)
    //#presumption(void loadWeblogEntries(Date, Date, String)): org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@56 != null
    //#presumption(void loadWeblogEntries(Date, Date, String)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@56 != null
    //#post(void loadWeblogEntries(Date, Date, String)): init'ed(this.monthMap)
    //#post(void loadWeblogEntries(Date, Date, String)): new HashMap(loadWeblogEntries#1) num objects <= 1
            monthMap = mgr.getWeblogEntryObjectMap(
    //#BigWeblogCalendarModel.java:57: Warning: method not available
    //#    -- call on Map org.apache.roller.weblogger.business.WeblogManager:getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: void loadWeblogEntries(Date, Date, String)
    //#    unanalyzed callee: Map org.apache.roller.weblogger.business.WeblogManager:getWeblogEntryObjectMap(Weblog, Date, Date, String, List, String, String, int, int)
                    
                    weblog,                  // website
                    startDate,                 // startDate
                    endDate,                   // endDate
                    catName,                   // cat
                    null,WeblogEntry.PUBLISHED, // status
                    locale,
                    0, -1);
        } catch (WebloggerException e) {
            mLogger.error(e);
    //#BigWeblogCalendarModel.java:67: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: void loadWeblogEntries(Date, Date, String)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object)
            monthMap = new HashMap();
        }
    }
    //#BigWeblogCalendarModel.java:70: end of method: void org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.loadWeblogEntries(Date, Date, String)
    
    
    public String getContent(Date day) {
        String content = null;
    //#BigWeblogCalendarModel.java:74: method: String org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.getContent(Date)
    //#input(String getContent(Date)): "">"._tainted
    //#input(String getContent(Date)): "..."._tainted
    //#input(String getContent(Date)): "<.a><.div>"._tainted
    //#input(String getContent(Date)): "<.div>"._tainted
    //#input(String getContent(Date)): "<a href=""._tainted
    //#input(String getContent(Date)): "<div class="bCalendarDayContentBig".>"._tainted
    //#input(String getContent(Date)): "<div class="bCalendarDayContentBig">"._tainted
    //#input(String getContent(Date)): "<div class="hCalendarDayTitleBig">"._tainted
    //#input(String getContent(Date)): day
    //#input(String getContent(Date)): mLogger
    //#input(String getContent(Date)): mSingleDayFormat
    //#input(String getContent(Date)): mStarDateFormat
    //#input(String getContent(Date)): this
    //#input(String getContent(Date)): this.cat
    //#input(String getContent(Date)): this.locale
    //#input(String getContent(Date)): this.monthMap
    //#input(String getContent(Date)): this.weblog
    //#output(String getContent(Date)): java.lang.StringBuffer:toString(...)._tainted
    //#output(String getContent(Date)): return_value
    //#new obj(String getContent(Date)): java.lang.StringBuffer:toString(...)
    //#pre[2] (String getContent(Date)): (soft) mLogger != null
    //#pre[4] (String getContent(Date)): (soft) init'ed(this.cat)
    //#pre[5] (String getContent(Date)): (soft) init'ed(this.locale)
    //#pre[6] (String getContent(Date)): (soft) this.monthMap != null
    //#pre[7] (String getContent(Date)): (soft) init'ed(this.weblog)
    //#presumption(String getContent(Date)): java.util.List:get(...)@102 != null
    //#presumption(String getContent(Date)): java.util.List:get(...)@104 != null
    //#presumption(String getContent(Date)): java.util.List:get(...)@83 != null
    //#presumption(String getContent(Date)): java.util.List:get(...)@99 != null
    //#presumption(String getContent(Date)): org.apache.roller.util.DateUtil:get8charDateFormat(...)@42 != null
    //#presumption(String getContent(Date)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@87 != null
    //#presumption(String getContent(Date)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@87 != null
    //#presumption(String getContent(Date)): org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor(...)@104 != null
    //#presumption(String getContent(Date)): org.apache.roller.weblogger.pojos.WeblogEntry:getTitle(...)@102 != null
    //#post(String getContent(Date)): init'ed(java.lang.StringBuffer:toString(...)._tainted)
    //#post(String getContent(Date)): return_value == One-of{&java.lang.StringBuffer:toString(...), null}
    //#post(String getContent(Date)): return_value in Addr_Set{null,&java.lang.StringBuffer:toString(...)}
    //#test_vector(String getContent(Date)): java.lang.String:length(...)@103: {1..4_294_967_295}, {0}
    //#test_vector(String getContent(Date)): java.lang.String:length(...)@106: {0..20}, {21..4_294_967_295}
    //#test_vector(String getContent(Date)): java.util.Map:get(...)@81: Addr_Set{null}, Inverse{null}
        try {
            StringBuffer sb = new StringBuffer();
            
            // get the 8 char YYYYMMDD datestring for day, returns null
            // if no weblog entry on that day
            String dateString = null;
    //#BigWeblogCalendarModel.java:80: Warning: unused assignment
    //#    unused assignment into dateString
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    Attribs:  Uncertain
            List entries = (List)monthMap.get(day);
            if ( entries != null ) {
                dateString = mStarDateFormat.format(
    //#BigWeblogCalendarModel.java:83: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
                        ((WeblogEntry)entries.get(0)).getPubTime());
                
                // append 8 char date string on end of selfurl
                String dayUrl = WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogCollectionURL(weblog, locale, cat, dateString, null, -1, false);
    //#BigWeblogCalendarModel.java:87: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#BigWeblogCalendarModel.java:87: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#BigWeblogCalendarModel.java:87: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
                              
                sb.append("<div class=\"hCalendarDayTitleBig\">");
                sb.append("<a href=\"");
                sb.append( dayUrl );
                sb.append("\">");
                sb.append( mSingleDayFormat.format( day ) );
                sb.append("</a></div>");
                
                for ( int i=0; i<entries.size(); i++ ) {
                    sb.append("<div class=\"bCalendarDayContentBig\">");
                    sb.append("<a href=\"");
                    sb.append(((WeblogEntry)entries.get(i)).getPermalink());
    //#BigWeblogCalendarModel.java:99: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getPermalink()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getPermalink()
                    sb.append("\">");
                    
                    String title = ((WeblogEntry)entries.get(i)).getTitle().trim();
    //#BigWeblogCalendarModel.java:102: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getTitle()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getTitle()
                    if ( title.length()==0 ) {
                        title = ((WeblogEntry)entries.get(i)).getAnchor();
    //#BigWeblogCalendarModel.java:104: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    unanalyzed callee: String org.apache.roller.weblogger.pojos.WeblogEntry:getAnchor()
                    }
                    if ( title.length() > 20 ) {
                        title = title.substring(0,20)+"...";
                    }
                    
                    sb.append( title );
                    sb.append("</a></div>");
                }
                
            } else {
                sb.append("<div class=\"hCalendarDayTitleBig\">");
                sb.append( mSingleDayFormat.format( day ) );
                sb.append("</div>");
                sb.append("<div class=\"bCalendarDayContentBig\"/>");
            }
            content = sb.toString();
        } catch (Exception e) {
            mLogger.error("ERROR: creating URL", e);
    //#BigWeblogCalendarModel.java:122: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String getContent(Date)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
        }
        return content;
    //#BigWeblogCalendarModel.java:124: end of method: String org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.getContent(Date)
    }
    
    /**
     * Create URL for use on view-weblog page
     * @param day              Day for URL or null if no entries on that day
     * @param nextPrevMonthURL True to create next/prev month URL
     * @param alwaysURL        Always return a URL, never return null
     * @return URL for day, or null if no weblog entry on that day
     */
    public String computeUrl(Date day, boolean nextPrevMonthURL, boolean alwaysURL) {
        String url = null;
    //#BigWeblogCalendarModel.java:135: method: String org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.computeUrl(Date, bool, bool)
    //#input(String computeUrl(Date, bool, bool)): alwaysURL
    //#input(String computeUrl(Date, bool, bool)): day
    //#input(String computeUrl(Date, bool, bool)): mLogger
    //#input(String computeUrl(Date, bool, bool)): mStarDateFormat
    //#input(String computeUrl(Date, bool, bool)): nextPrevMonthURL
    //#input(String computeUrl(Date, bool, bool)): this
    //#input(String computeUrl(Date, bool, bool)): this.cat
    //#input(String computeUrl(Date, bool, bool)): this.locale
    //#input(String computeUrl(Date, bool, bool)): this.monthMap
    //#input(String computeUrl(Date, bool, bool)): this.pageLink
    //#input(String computeUrl(Date, bool, bool)): this.weblog
    //#output(String computeUrl(Date, bool, bool)): return_value
    //#pre[8] (String computeUrl(Date, bool, bool)): this.monthMap != null
    //#pre[3] (String computeUrl(Date, bool, bool)): (soft) mLogger != null
    //#pre[6] (String computeUrl(Date, bool, bool)): (soft) init'ed(this.cat)
    //#pre[7] (String computeUrl(Date, bool, bool)): (soft) init'ed(this.locale)
    //#pre[9] (String computeUrl(Date, bool, bool)): (soft) init'ed(this.pageLink)
    //#pre[10] (String computeUrl(Date, bool, bool)): (soft) init'ed(this.weblog)
    //#presumption(String computeUrl(Date, bool, bool)): java.util.List:get(...)@141 != null
    //#presumption(String computeUrl(Date, bool, bool)): org.apache.roller.util.DateUtil:get8charDateFormat(...)@42 != null
    //#presumption(String computeUrl(Date, bool, bool)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@153 != null
    //#presumption(String computeUrl(Date, bool, bool)): org.apache.roller.weblogger.business.Weblogger:getUrlStrategy(...)@156 != null
    //#presumption(String computeUrl(Date, bool, bool)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@153 != null
    //#presumption(String computeUrl(Date, bool, bool)): org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@156 != null
    //#post(String computeUrl(Date, bool, bool)): init'ed(return_value)
    //#test_vector(String computeUrl(Date, bool, bool)): alwaysURL: {1}, {0}
    //#test_vector(String computeUrl(Date, bool, bool)): day: Addr_Set{null}, Inverse{null}
    //#test_vector(String computeUrl(Date, bool, bool)): nextPrevMonthURL: {1}, {0}
    //#test_vector(String computeUrl(Date, bool, bool)): this.pageLink: Addr_Set{null}, Inverse{null}
    //#test_vector(String computeUrl(Date, bool, bool)): java.util.Map:get(...)@139: Addr_Set{null}, Inverse{null}
        // get the 8 char YYYYMMDD datestring for day, returns null
        // if no weblog entry on that day
        String dateString = null;
        List entries = (List)monthMap.get( day );
        if ( entries != null && day != null ) {
            WeblogEntry entry = (WeblogEntry)entries.get(0);
            dateString = mStarDateFormat.format(entry.getPubTime());
    //#BigWeblogCalendarModel.java:142: Warning: method not available
    //#    -- call on Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: Timestamp org.apache.roller.weblogger.pojos.WeblogEntry:getPubTime()
        }
        if (dateString == null && !alwaysURL) return null;
        else if (dateString == null && !nextPrevMonthURL) {
            dateString = DateUtil.format8chars(day);
    //#BigWeblogCalendarModel.java:146: Warning: method not available
    //#    -- call on String org.apache.roller.util.DateUtil:format8chars(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: String org.apache.roller.util.DateUtil:format8chars(Date)
        } else if (dateString == null && nextPrevMonthURL) {
            dateString = DateUtil.format6chars(day);
    //#BigWeblogCalendarModel.java:148: Warning: method not available
    //#    -- call on String org.apache.roller.util.DateUtil:format6chars(Date)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: String org.apache.roller.util.DateUtil:format6chars(Date)
        }
        try {
            if (nextPrevMonthURL && pageLink != null) { 
                // next/prev month URLs point to current page
                url = WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogPageURL(weblog, locale, pageLink, null, cat, dateString, null, -1, false);
    //#BigWeblogCalendarModel.java:153: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#BigWeblogCalendarModel.java:153: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#BigWeblogCalendarModel.java:153: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
            } else { 
                // all other URLs point back to main weblog page
                url = WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogCollectionURL(weblog, locale, cat, dateString, null, -1, false);
    //#BigWeblogCalendarModel.java:156: Warning: method not available
    //#    -- call on Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: Weblogger org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger()
    //#BigWeblogCalendarModel.java:156: Warning: method not available
    //#    -- call on URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: URLStrategy org.apache.roller.weblogger.business.Weblogger:getUrlStrategy()
    //#BigWeblogCalendarModel.java:156: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.business.URLStrategy:getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: String org.apache.roller.weblogger.business.URLStrategy:getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
            }
        } catch (Exception e) {
            mLogger.error("ERROR: creating URL",e);
    //#BigWeblogCalendarModel.java:159: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:error(Object, Throwable)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
    //#    method: String computeUrl(Date, bool, bool)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:error(Object, Throwable)
        }
        return url;
    //#BigWeblogCalendarModel.java:161: end of method: String org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel.computeUrl(Date, bool, bool)
    }
}
    //#BigWeblogCalendarModel.java:: end of class: org.apache.roller.weblogger.ui.core.tags.calendar.BigWeblogCalendarModel
