File Source: WeblogEntriesLatestPager.java

     1  /*
     2   * Licensed to the Apache Software Foundation (ASF) under one or more
     3   *  contributor license agreements.  The ASF licenses this file to You
     4   * under the Apache License, Version 2.0 (the "License"); you may not
     5   * use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.  For additional information regarding
    15   * copyright in this work, please see the NOTICE file in the top level
    16   * directory of this distribution.
    17   */
    18  
    19  package org.apache.roller.weblogger.ui.rendering.pagers;
    20  
    21  import java.util.ArrayList;
    22  import java.util.Date;
    23  import java.util.Iterator;
    24  import java.util.List;
    25  import java.util.Map;
    26  import java.util.TreeMap;
    27  import org.apache.commons.collections.comparators.ReverseComparator;
    28  import org.apache.commons.logging.Log;
    29  import org.apache.commons.logging.LogFactory;
    30  import org.apache.roller.weblogger.business.URLStrategy;
    31  import org.apache.roller.weblogger.business.Weblogger;
    32  import org.apache.roller.weblogger.business.WebloggerFactory;
    33  import org.apache.roller.weblogger.business.WeblogManager;
    34  import org.apache.roller.weblogger.pojos.WeblogEntry;
    35  import org.apache.roller.weblogger.pojos.Weblog;
    36  import org.apache.roller.weblogger.pojos.wrapper.WeblogEntryWrapper;
    37  
    38  
    39  /**
    40   * A pager over a collection of recent weblog entries.
    41   */
    42  public class WeblogEntriesLatestPager extends AbstractWeblogEntriesPager {
    43      
             /* 
    P/P       *  Method: org.apache.roller.weblogger.ui.rendering.pagers.WeblogEntriesLatestPager__static_init
              * 
              *  Postconditions:
              *    init'ed(log)
              */
    44      private static Log log = LogFactory.getLog(WeblogEntriesLatestPager.class);
    45      
    46      // collection for the pager
    47      private Map entries = null;
    48      
    49      // are there more pages?
    50      private boolean more = false;
    51      
    52      
    53      public WeblogEntriesLatestPager(
    54              URLStrategy        strat,
    55              Weblog             weblog,
    56              String             locale,
    57              String             pageLink,
    58              String             entryAnchor,
    59              String             dateString,
    60              String             catPath,
    61              List               tags,
    62              int                page) {
    63          
                 /* 
    P/P           *  Method: void org.apache.roller.weblogger.ui.rendering.pagers.WeblogEntriesLatestPager(URLStrategy, Weblog, String, String, String, String, String, List, int)
                  * 
                  *  Preconditions:
                  *    locale == null
                  *    org/apache/roller/weblogger/util/I18nMessages.messagesMap != null
                  *    weblog != null
                  *    (soft) log != null
                  * 
                  *  Postconditions:
                  *    this.catPath == catPath
                  *    init'ed(this.catPath)
                  *    this.dateString == dateString
                  *    init'ed(this.dateString)
                  *    this.entries == &new TreeMap(getEntries#1)
                  *    this.entryAnchor == entryAnchor
                  *    init'ed(this.entryAnchor)
                  *    (soft) this.length <= 232-2
                  *    this.locale == null
                  *    this.messageUtils != null
                  *    ...
                  */
    64          super(strat, weblog, locale, pageLink, entryAnchor, dateString, catPath, tags, page);
    65          
    66          // initialize the pager collection
    67          getEntries();
    68      }
    69      
    70      
    71      public Map getEntries() {
    72          
                 /* 
    P/P           *  Method: Map getEntries()
                  * 
                  *  Preconditions:
                  *    init'ed(this.entries)
                  *    (soft) log != null
                  *    (soft) init'ed(this.catPath)
                  *    (soft) this.length <= 232-2
                  *    (soft) init'ed(this.locale)
                  *    (soft) init'ed(this.offset)
                  *    (soft) init'ed(this.tags)
                  *    (soft) init'ed(this.weblog)
                  * 
                  *  Presumptions:
                  *    java.util.Map:get(...)@98 != null
                  *    java.util.Map:keySet(...)@92 != null
                  *    org.apache.roller.weblogger.business.WeblogManager:getWeblogEntryObjectMap(...)@78 != null
                  *    org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@78 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@76 != null
                  *    ...
                  * 
                  *  Postconditions:
                  *    return_value == One-of{old this.entries, &new TreeMap(getEntries#1)}
                  *    return_value != null
                  *    this.entries == return_value
                  *    possibly_updated(this.more)
                  *    new TreeMap(getEntries#1) num objects <= 1
                  * 
                  *  Test Vectors:
                  *    this.entries: Inverse{null}, Addr_Set{null}
                  *    java.util.List:size(...)@108: {-231..0}, {1..232-1}
                  */
    73          if (entries == null) {
    74              entries = new TreeMap(new ReverseComparator());
    75              try {
    76                  Weblogger roller = WebloggerFactory.getWeblogger();
+   77                  WeblogManager wmgr = roller.getWeblogManager();
    78                  Map mmap = WebloggerFactory.getWeblogger().getWeblogManager().getWeblogEntryObjectMap(
    79                          weblog,
    80                          null,
    81                          new Date(),
    82                          catPath,
    83                          tags,
    84                          WeblogEntry.PUBLISHED,
    85                          locale,
    86                          offset,
    87                          length + 1);
    88                  
    89                  // need to wrap pojos
    90                  int count = 0;
    91                  java.util.Date key = null;
    92                  Iterator days = mmap.keySet().iterator();
    93                  while(days.hasNext()) {
    94                      key = (java.util.Date)days.next();
    95                      
    96                      // now we need to go through each entry in a day and wrap
    97                      List wrapped = new ArrayList();
    98                      List unwrapped= (List) mmap.get(key);
    99                      for(int i=0; i < unwrapped.size(); i++) {
+  100                          if (count++ < length) {
   101                              wrapped.add(i,WeblogEntryWrapper.wrap((WeblogEntry)unwrapped.get(i), urlStrategy));
   102                          } else {
   103                              more = true;
   104                          }
   105                      }
   106                      
   107                      // done with that day, put it in the map
   108                      if(wrapped.size() > 0) {
   109                          entries.put(key, wrapped);
   110                      }
   111                  }
   112              } catch (Exception e) {
   113                  log.error("ERROR: getting entry month map", e);
   114              }
   115          }
   116          
   117          return entries;
   118      }
   119      
   120      
   121      public boolean hasMoreEntries() {
                 /* 
    P/P           *  Method: bool hasMoreEntries()
                  * 
                  *  Preconditions:
                  *    init'ed(this.more)
                  * 
                  *  Postconditions:
                  *    return_value == this.more
                  *    init'ed(return_value)
                  */
   122          return more;
   123      }
   124      
   125  }








SofCheck Inspector Build Version : 2.18479
WeblogEntriesLatestPager.java 2009-Jan-02 14:25:06
WeblogEntriesLatestPager.class 2009-Sep-04 03:12:44