File Source: Referrers.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.struts2.editor;
    20  
    21  import java.util.Collections;
    22  import java.util.List;
    23  import org.apache.commons.logging.Log;
    24  import org.apache.commons.logging.LogFactory;
    25  import org.apache.roller.weblogger.business.referrers.RefererManager;
    26  import org.apache.roller.weblogger.business.WebloggerFactory;
    27  import org.apache.roller.weblogger.pojos.WeblogPermission;
    28  import org.apache.roller.weblogger.pojos.WeblogReferrer;
    29  import org.apache.roller.weblogger.ui.struts2.util.UIAction;
    30  import org.apache.roller.weblogger.util.cache.CacheManager;
    31  
    32  
    33  /**
    34   * Manage weblog referrer data.
    35   */
    36  public class Referrers extends UIAction {
    37      
             /* 
    P/P       *  Method: org.apache.roller.weblogger.ui.struts2.editor.Referrers__static_init
              * 
              *  Postconditions:
              *    init'ed(log)
              */
    38      private static Log log = LogFactory.getLog(Referrers.class);
    39      
    40      // list of referrers to display
    41      private List<WeblogReferrer> referrers = Collections.EMPTY_LIST;
    42      
    43      // referrers hits today
    44      private int dayHits = 0;
    45      
    46      // ids of referrers to remove
    47      private String[] removeIds = null;
    48      
    49      
             /* 
    P/P       *  Method: void org.apache.roller.weblogger.ui.struts2.editor.Referrers()
              * 
              *  Presumptions:
              *    init'ed(java.util.Collections.EMPTY_LIST)
              * 
              *  Postconditions:
              *    this.actionName == &"referrers"
              *    this.dayHits == 0
              *    this.desiredMenu == &"editor"
              *    this.pageTitle == &"referers.todaysReferers"
              *    this.referrers == java.util.Collections.EMPTY_LIST
              *    (soft) init'ed(this.referrers)
              *    this.removeIds == null
              */
    50      public Referrers() {
    51          this.actionName = "referrers";
    52          this.desiredMenu = "editor";
    53          this.pageTitle = "referers.todaysReferers";
    54      }
    55      
    56      
    57      @Override
    58      public short requiredWeblogPermissions() {
                 /* 
    P/P           *  Method: short requiredWeblogPermissions()
                  * 
                  *  Presumptions:
                  *    init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN)
                  * 
                  *  Postconditions:
                  *    return_value == org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN
                  *    (soft) init'ed(return_value)
                  */
    59          return WeblogPermission.ADMIN;
    60      }
    61      
    62      
    63      /**
    64       * Show list of weblog referrers.
    65       */
    66      public String execute() {
    67          
                 /* 
    P/P           *  Method: String execute()
                  * 
                  *  Preconditions:
                  *    (soft) log != null
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getRefererManager(...)@68 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@68 != null
                  *    org.apache.roller.weblogger.ui.struts2.editor.Referrers:getActionWeblog(...)@73 != null
                  * 
                  *  Postconditions:
                  *    return_value == &"list"
                  *    possibly_updated(this.dayHits)
                  *    possibly_updated(this.referrers)
                  */
    68          RefererManager refmgr = WebloggerFactory.getWeblogger().getRefererManager();
    69          try {
    70              setDayHits(refmgr.getDayHits(getActionWeblog()));
    71              setReferrers(refmgr.getTodaysReferers(getActionWeblog()));
    72          } catch (Exception ex) {
    73              log.error("Error getting referrer data for weblog - "+getActionWeblog().getHandle(), ex);
    74              // TODO: i18n
    75              addError("Error loading referrer data");
    76          }
    77          
    78          return LIST;
    79      }
    80      
    81      
    82      /**
    83       * Reset all referrer counts.
    84       */
    85      public String reset() {
    86          
    87          try {
                     /* 
    P/P               *  Method: String reset()
                      * 
                      *  Preconditions:
                      *    (soft) log != null
                      * 
                      *  Presumptions:
                      *    org.apache.roller.weblogger.business.Weblogger:getRefererManager(...)@88 != null
                      *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@88 != null
                      *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@90 != null
                      * 
                      *  Postconditions:
                      *    return_value == &"list"
                      *    possibly_updated(this.dayHits)
                      *    possibly_updated(this.referrers)
                      */
    88              RefererManager refmgr = WebloggerFactory.getWeblogger().getRefererManager();
    89              refmgr.clearReferrers(getActionWeblog());
    90              WebloggerFactory.getWeblogger().flush();
    91              
    92              CacheManager.invalidate(getActionWeblog());
    93          } catch (Exception ex) {
    94              log.error("Error resetting referrers", ex);
    95              // TODO: i18n
    96              addError("Error resetting referrers");
    97          }
    98          
    99          return execute();
   100      }
   101      
   102      
   103      /**
   104       * Remove selected referrers.
   105       */
   106      public String remove() {
   107          
                 /* 
    P/P           *  Method: String remove()
                  * 
                  *  Preconditions:
                  *    init'ed(this.removeIds)
                  *    (soft) log != null
                  *    (soft) this.removeIds.length <= 232-1
                  *    (soft) init'ed(this.removeIds[...])
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getRefererManager(...)@110 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@110 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@124 != null
                  *    org.apache.roller.weblogger.business.referrers.RefererManager:getReferer(...)@115 != null
                  *    org.apache.roller.weblogger.ui.struts2.editor.Referrers:getActionWeblog(...)@118 != null
                  * 
                  *  Postconditions:
                  *    return_value == &"list"
                  *    possibly_updated(this.dayHits)
                  *    possibly_updated(this.referrers)
                  * 
                  *  Test Vectors:
                  *    this.removeIds: Addr_Set{null}, Inverse{null}
                  *    org.apache.roller.weblogger.pojos.Weblog:equals(...)@118: {0}, {1}
                  */
   108          String[] removeIds = getRemoveIds();
   109          if(removeIds != null) {
   110              RefererManager refmgr = WebloggerFactory.getWeblogger().getRefererManager();
   111              
   112              try {
   113                  WeblogReferrer referer = null;
   114                  for (int i=0; i < removeIds.length; i++) {
   115                      referer = refmgr.getReferer(removeIds[i]);
   116                      
   117                      // make sure referrer belongs to action weblog
   118                      if(getActionWeblog().equals(referer.getWebsite())) {
   119                          refmgr.removeReferer(referer);
   120                      }
   121                  }
   122                  
   123                  // flush
   124                  WebloggerFactory.getWeblogger().flush();
   125                  
   126                  // notify caches
   127                  CacheManager.invalidate(getActionWeblog());
   128                  
   129                  addMessage("referers.deletedReferers");
   130  
   131              } catch (Exception ex) {
   132                  log.error("Error removing referrers", ex);
   133                  // TODO: i18n
   134                  addError("Error removing referrers");
   135              }
   136          } else {
   137              addError("referers.noReferersSpecified");
   138          }
   139          
   140          return execute();
   141      }
   142  
   143      
   144      public List<WeblogReferrer> getReferrers() {
                 /* 
    P/P           *  Method: List getReferrers()
                  * 
                  *  Preconditions:
                  *    init'ed(this.referrers)
                  * 
                  *  Postconditions:
                  *    return_value == this.referrers
                  *    init'ed(return_value)
                  */
   145          return referrers;
   146      }
   147  
   148      public void setReferrers(List<WeblogReferrer> referrers) {
                 /* 
    P/P           *  Method: void setReferrers(List)
                  * 
                  *  Postconditions:
                  *    this.referrers == referrers
                  *    init'ed(this.referrers)
                  */
   149          this.referrers = referrers;
   150      }
   151  
   152      public int getDayHits() {
                 /* 
    P/P           *  Method: int getDayHits()
                  * 
                  *  Preconditions:
                  *    init'ed(this.dayHits)
                  * 
                  *  Postconditions:
                  *    return_value == this.dayHits
                  *    init'ed(return_value)
                  */
   153          return dayHits;
   154      }
   155  
   156      public void setDayHits(int dayHits) {
                 /* 
    P/P           *  Method: void setDayHits(int)
                  * 
                  *  Postconditions:
                  *    this.dayHits == dayHits
                  *    init'ed(this.dayHits)
                  */
   157          this.dayHits = dayHits;
   158      }
   159  
   160      public String[] getRemoveIds() {
                 /* 
    P/P           *  Method: String[] getRemoveIds()
                  * 
                  *  Preconditions:
                  *    init'ed(this.removeIds)
                  * 
                  *  Postconditions:
                  *    return_value == this.removeIds
                  *    init'ed(return_value)
                  */
   161          return removeIds;
   162      }
   163  
   164      public void setRemoveIds(String[] removeIds) {
                 /* 
    P/P           *  Method: void setRemoveIds(String[])
                  * 
                  *  Postconditions:
                  *    this.removeIds == removeIds
                  *    init'ed(this.removeIds)
                  */
   165          this.removeIds = removeIds;
   166      }
   167      
   168  }








SofCheck Inspector Build Version : 2.18479
Referrers.java 2009-Jan-02 14:25:00
Referrers.class 2009-Sep-04 03:12:45