File Source: filemetadata.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.domain.FileMetaData__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.domain;
    33  
    34  import java.io.File;
    35  import java.util.Date;
    36  
    37  /**
    38   * Represents the meta data associated with a file.
    39   *
    40   * @author    Simon Brown
    41   */
    42  public class FileMetaData {
    43  
    44    public static final String BLOG_FILE = "blogFile";
    45    public static final String BLOG_IMAGE = "blogImage";
    46    public static final String THEME_FILE = "themeFile";
    47    public static final String BLOG_DATA = "blogData";
    48  
    49    private FileManager context;
    50  
    51    private String name;
    52    private String path;
    53    private Date lastModified;
    54    private long size;
    55    private boolean directory;
    56    private String type;
    57  
           /* 
    P/P     *  Method: void net.sourceforge.pebble.domain.FileMetaData(FileManager, String)
            * 
            *  Presumptions:
            *    java.lang.String:lastIndexOf(...)@74 <= 232-2
            * 
            *  Postconditions:
            *    this.context == context
            *    init'ed(this.context)
            *    this.name != null
            *    this.path != null
            * 
            *  Test Vectors:
            *    absolutePath: Addr_Set{null}, Inverse{null}
            *    java.lang.String:endsWith(...)@65: {0}, {1}
            *    java.lang.String:equals(...)@61: {1}, {0}
            *    java.lang.String:equals(...)@61: {0}, {1}
            *    java.lang.String:indexOf(...)@69: {-231..-1}, {0..232-1}
            *    java.lang.String:length(...)@71: {1..232-1}, {0}
            *    java.lang.String:startsWith(...)@81: {1}, {0}
            */
    58    FileMetaData(FileManager context, String absolutePath) {
    59      this.context = context;
    60  
    61      if (absolutePath == null || absolutePath.equals("") || absolutePath.equals("/")) {
    62        this.path="/";
    63        this.name = "";
    64      } else {
    65        if (absolutePath.endsWith("/")) {
    66          absolutePath = absolutePath.substring(0, absolutePath.length()-1);
    67        }
    68  
    69        if (absolutePath.indexOf("/") > -1) {
    70          this.path = absolutePath.substring(0, absolutePath.lastIndexOf("/"));
    71          if (this.path.length() == 0) {
    72            this.path = "/";
    73          }
    74          this.name = absolutePath.substring(absolutePath.lastIndexOf("/")+1, absolutePath.length());
    75        } else {
    76          this.path = absolutePath;
    77          this.name = "";
    78        }
    79  
    80        // finally, all paths must start with "/"
    81        if (!this.path.startsWith("/")) {
    82          this.path = "/" + this.path;
    83        }
    84      }
    85    }
    86  
    87    public String getName() {
             /* 
    P/P       *  Method: String getName()
              * 
              *  Preconditions:
              *    init'ed(this.name)
              * 
              *  Postconditions:
              *    return_value == this.name
              *    init'ed(return_value)
              */
    88      return name;
    89    }
    90  
    91    public void setName(String name) {
             /* 
    P/P       *  Method: void setName(String)
              * 
              *  Postconditions:
              *    this.name == name
              *    init'ed(this.name)
              */
    92      this.name = name;
    93    }
    94  
    95    public Date getLastModified() {
             /* 
    P/P       *  Method: Date getLastModified()
              * 
              *  Preconditions:
              *    init'ed(this.lastModified)
              * 
              *  Postconditions:
              *    return_value == this.lastModified
              *    init'ed(return_value)
              */
    96      return lastModified;
    97    }
    98  
    99    public void setLastModified(Date lastModified) {
             /* 
    P/P       *  Method: void setLastModified(Date)
              * 
              *  Postconditions:
              *    this.lastModified == lastModified
              *    init'ed(this.lastModified)
              */
   100      this.lastModified = lastModified;
   101    }
   102  
   103    public boolean isDirectory() {
             /* 
    P/P       *  Method: bool isDirectory()
              * 
              *  Preconditions:
              *    init'ed(this.directory)
              * 
              *  Postconditions:
              *    return_value == this.directory
              *    init'ed(return_value)
              */
   104      return directory;
   105    }
   106  
   107    public void setDirectory(boolean directory) {
             /* 
    P/P       *  Method: void setDirectory(bool)
              * 
              *  Postconditions:
              *    this.directory == directory
              *    init'ed(this.directory)
              */
   108      this.directory = directory;
   109    }
   110  
   111    public String getPath() {
             /* 
    P/P       *  Method: String getPath()
              * 
              *  Preconditions:
              *    init'ed(this.path)
              * 
              *  Postconditions:
              *    return_value == this.path
              *    init'ed(return_value)
              */
   112      return path;
   113    }
   114  
   115    public String getAbsolutePath() {
             /* 
    P/P       *  Method: String getAbsolutePath()
              * 
              *  Preconditions:
              *    init'ed(this.name)
              *    this.path != null
              * 
              *  Postconditions:
              *    return_value != null
              * 
              *  Test Vectors:
              *    java.lang.String:endsWith(...)@116: {1}, {0}
              */
   116      if (!path.endsWith("/")) {
   117        return path + "/" + name;
   118      } else {
   119        return path + name;
   120      }
   121    }
   122  
   123    public String getUrl() {
             /* 
    P/P       *  Method: String getUrl()
              * 
              *  Preconditions:
              *    init'ed(this.type)
              *    (soft) init'ed(this.directory)
              *    (soft) init'ed(this.name)
              *    (soft) this.path != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              * 
              *  Test Vectors:
              *    this.directory: {0}, {1}
              *    this.type: Addr_Set{null}, Inverse{null}
              *    java.lang.String:endsWith(...)@134: {1}, {0}
              *    java.lang.String:equals(...)@126: {0}, {1}
              *    java.lang.String:equals(...)@128: {0}, {1}
              *    java.lang.String:equals(...)@130: {0}, {1}
              */
   124      String url = null;
   125  
   126      if (type != null && type.equals(FileMetaData.BLOG_IMAGE)) {
   127        url = "images" + getAbsolutePath();
   128      } else if (type != null && type.equals(FileMetaData.BLOG_FILE)) {
   129        url = "files" + getAbsolutePath();
   130      } else if (type != null && type.equals(FileMetaData.THEME_FILE)) {
   131        url = "theme" + getAbsolutePath();
   132      }
   133  
   134      if (url != null && isDirectory() && !url.endsWith("/")) {
   135        url += "/";
   136      }
   137  
   138      return url;
   139    }
   140  
   141    public boolean isEditable() {
             /* 
    P/P       *  Method: bool isEditable()
              * 
              *  Preconditions:
              *    init'ed(this.directory)
              *    (soft) this.name != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              * 
              *  Test Vectors:
              *    this.directory: {0}, {1}
              *    java.lang.String:endsWith(...)@147: {1}, {0}
              *    java.lang.String:endsWith(...)@148: {1}, {0}
              *    java.lang.String:endsWith(...)@149: {1}, {0}
              *    java.lang.String:endsWith(...)@150: {1}, {0}
              *    java.lang.String:endsWith(...)@151: {1}, {0}
              *    java.lang.String:endsWith(...)@152: {1}, {0}
              *    java.lang.String:endsWith(...)@153: {1}, {0}
              *    java.lang.String:endsWith(...)@154: {1}, {0}
              */
   142      if (isDirectory()) {
   143        return false;
   144      } else {
   145        String filename = name.toLowerCase();
   146        return
   147            filename.endsWith(".txt") ||
   148            filename.endsWith(".properties") ||
   149            filename.endsWith(".jsp") ||
   150            filename.endsWith(".jspf") ||
   151            filename.endsWith(".html") ||
   152            filename.endsWith(".htm") ||
   153            filename.endsWith(".css") ||
   154            filename.endsWith(".xml");
   155      }
   156    }
   157  
   158    public long getSize() {
             /* 
    P/P       *  Method: long getSize()
              * 
              *  Preconditions:
              *    init'ed(this.size)
              * 
              *  Postconditions:
              *    return_value == this.size
              *    init'ed(return_value)
              */
   159      return this.size;
   160    }
   161  
   162    public double getSizeInKB() {
             /* 
    P/P       *  Method: double getSizeInKB()
              * 
              *  Preconditions:
              *    init'ed(this.size)
              * 
              *  Postconditions:
              *    return_value == (float) (this.size)/1024
              *    return_value in (-Inf..+Inf)
              */
   163      return (this.size / 1024.0);
   164    }
   165  
   166    public void setSize(long size) {
             /* 
    P/P       *  Method: void setSize(long)
              * 
              *  Postconditions:
              *    this.size == size
              *    init'ed(this.size)
              */
   167      this.size = size;
   168    }
   169  
   170    public void setType(String type) {
             /* 
    P/P       *  Method: void setType(String)
              * 
              *  Postconditions:
              *    this.type == type
              *    init'ed(this.type)
              */
   171      this.type = type;
   172    }
   173  
   174    public File getFile() {
             /* 
    P/P       *  Method: File getFile()
              * 
              *  Preconditions:
              *    this.context != null
              *    init'ed(this.context.root)
              *    init'ed(this.name)
              *    this.path != null
              * 
              *  Postconditions:
              *    return_value == &new File(getFile#1*)
              *    new File(getFile#1*) num objects == 1
              */
   175      return context.getFile(getAbsolutePath());
   176    }
   177  
   178  }








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