File Source: logastabdelimitedview.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.web.view.impl.LogAsTabDelimitedView__static_init
          */
     1  /*
     2   * Copyright (c) 2003-2006, Simon Brown
     3   * All rights reserved.
     4   *
     5   * Redistribution and use in source and binary forms, with or without
     6   * modification, are permitted provided that the following conditions are met:
     7   *
     8   *   - Redistributions of source code must retain the above copyright
     9   *     notice, this list of conditions and the following disclaimer.
    10   *
    11   *   - Redistributions in binary form must reproduce the above copyright
    12   *     notice, this list of conditions and the following disclaimer in
    13   *     the documentation and/or other materials provided with the
    14   *     distribution.
    15   *
    16   *   - Neither the name of Pebble nor the names of its contributors may
    17   *     be used to endorse or promote products derived from this software
    18   *     without specific prior written permission.
    19   *
    20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    30   * POSSIBILITY OF SUCH DAMAGE.
    31   */
    32  package net.sourceforge.pebble.web.view.impl;
    33  
    34  import net.sourceforge.pebble.web.view.PlainTextView;
    35  import net.sourceforge.pebble.logging.Log;
    36  import net.sourceforge.pebble.logging.LogEntry;
    37  import net.sourceforge.pebble.domain.Blog;
    38  import net.sourceforge.pebble.Constants;
    39  
    40  import java.text.SimpleDateFormat;
    41  
    42  /**
    43   * Represents the log file for today.
    44   *
    45   * @author    Simon Brown
    46   */
         /* 
    P/P   *  Method: void net.sourceforge.pebble.web.view.impl.LogAsTabDelimitedView()
          */
    47  public class LogAsTabDelimitedView extends PlainTextView {
    48  
    49    private static final char SEPARATOR = '\t';
    50  
    51    /**
    52     * Prepares the view for presentation.
    53     */
    54    public void prepare() {
             /* 
    P/P       *  Method: void prepare()
              * 
              *  Presumptions:
              *    net.sourceforge.pebble.web.model.Model:get(...)@55 != null
              *    net.sourceforge.pebble.web.view.impl.LogAsTabDelimitedView:getModel(...)@103 != null
              *    net.sourceforge.pebble.web.view.impl.LogAsTabDelimitedView:getModel(...)@55 != null
              *    net.sourceforge.pebble.web.view.impl.LogAsTabDelimitedView:getModel(...)@56 != null
              * 
              *  Test Vectors:
              *    net.sourceforge.pebble.web.model.Model:get(...)@56: Addr_Set{null}, Inverse{null}
              * 
              *  Presumptions:
              *    java.util.Iterator:next(...)@77 != null
              *    net.sourceforge.pebble.logging.Log:getLogEntries(...)@77 != null
              * 
              *  Test Vectors:
              *    java.util.Iterator:hasNext(...)@77: {1}, {0}
              *    net.sourceforge.pebble.logging.LogEntry:getReferer(...)@92: Addr_Set{null}, Inverse{null}
              *    net.sourceforge.pebble.logging.LogEntry:getStatusCode(...)@86: {-1}, {-231..-2, 0..232-1}
              */
    55      Blog blog = (Blog)getModel().get(Constants.BLOG_KEY);
    56      Log log = (Log)getModel().get("log");
    57      StringBuffer buf = new StringBuffer();
    58      SimpleDateFormat sdf = new SimpleDateFormat("dd-MMMM-yyyy HH:mm:ss Z");
    59      sdf.setTimeZone(blog.getTimeZone());
    60  
    61      buf.append("Host");
    62      buf.append(SEPARATOR);
    63      buf.append("Date/Time");
    64      buf.append(SEPARATOR);
    65      buf.append("Method");
    66      buf.append(SEPARATOR);
    67      buf.append("Request URI");
    68      buf.append(SEPARATOR);
    69      buf.append("Status");
    70      buf.append(SEPARATOR);
    71      buf.append("Referer");
    72      buf.append(SEPARATOR);
    73      buf.append("User-Agent");
    74      buf.append("\n");
    75      
    76      if (log != null) {
    77        for (LogEntry logEntry : log.getLogEntries()) {
    78          buf.append(logEntry.getHost());
    79          buf.append(SEPARATOR);
    80          buf.append(sdf.format(logEntry.getDate()));
    81          buf.append(SEPARATOR);
    82          buf.append(logEntry.getRequestMethod());
    83          buf.append(SEPARATOR);
    84          buf.append(logEntry.getRequestUri());
    85          buf.append(SEPARATOR);
    86          if (logEntry.getStatusCode() != -1) {
    87            buf.append(logEntry.getStatusCode());
    88          } else {
    89            buf.append("");
    90          }
    91          buf.append(SEPARATOR);
    92          if (logEntry.getReferer() != null) {
    93            buf.append(logEntry.getReferer());
    94          } else {
    95            buf.append("");
    96          }
    97          buf.append(SEPARATOR);
    98          buf.append(logEntry.getAgent());
    99          buf.append("\n");
   100        }
   101      }
   102  
   103      getModel().put("text", buf.toString());
   104    }
   105  
   106    /**
   107     * Gets the content type of this view.
   108     *
   109     * @return the content type as a String
   110     */
   111    public String getContentType() {
             /* 
    P/P       *  Method: String getContentType()
              * 
              *  Postconditions:
              *    return_value == &"application.vnd.ms-excel"
              */
   112      return "application/vnd.ms-excel";
   113    }
   114  
   115  }








SofCheck Inspector Build Version : 2.22510
logastabdelimitedview.java 2010-Jun-25 19:40:32
logastabdelimitedview.class 2010-Jul-19 20:23:38