Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * 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.
  */
 package org.apache.catalina.ssi;
 
 
 import static org.jboss.web.CatalinaMessages.MESSAGES;
 
Implements the Server-side #fsize command

Author(s):
Bip Thelin
Paul Speed
Dan Sandberg
David Becker
Version:
$Revision: 1237 $, $Date: 2009-11-03 02:55:48 +0100 (Tue, 03 Nov 2009) $
 
 public final class SSIFsize implements SSICommand {
     protected final static int ONE_KILOBYTE = 1024;
     protected final static int ONE_MEGABYTE = 1024 * 1024;


    

See also:
SSICommand
 
     public long process(SSIMediator ssiMediatorString commandName,
             String[] paramNamesString[] paramValuesPrintWriter writer) {
         long lastModified = 0;
         String configErrMsg = ssiMediator.getConfigErrMsg();
         for (int i = 0; i < paramNames.lengthi++) {
             String paramName = paramNames[i];
             String paramValue = paramValues[i];
             String substitutedValue = ssiMediator
                     .substituteVariables(paramValue);
             try {
                 if (paramName.equalsIgnoreCase("file")
                         || paramName.equalsIgnoreCase("virtual")) {
                     boolean virtual = paramName.equalsIgnoreCase("virtual");
                     lastModified = ssiMediator.getFileLastModified(
                             substitutedValuevirtual);
                     long size = ssiMediator.getFileSize(substitutedValue,
                             virtual);
                     String configSizeFmt = ssiMediator.getConfigSizeFmt();
                     writer.write(formatSize(sizeconfigSizeFmt));
                 } else {
                     ssiMediator.log(.ssiInvalidAttribute("fsize"paramName));
                     writer.write(configErrMsg);
                 }
             } catch (IOException e) {
                 ssiMediator.log(.ssiFsizeFailed(substitutedValue), e);
                 writer.write(configErrMsg);
             }
         }
         return lastModified;
     }
 
 
     public String repeat(char aCharint numChars) {
         if (numChars < 0) {
             throw .invalidNumChars();
         }
         StringBuilder buf = new StringBuilder();
         for (int i = 0; i < numCharsi++) {
             buf.append(aChar);
         }
         return buf.toString();
     }
 
 
     public String padLeft(String strint maxChars) {
         String result = str;
         int charsToAdd = maxChars - str.length();
         if (charsToAdd > 0) {
             result = repeat(' 'charsToAdd) + str;
         }
         return result;
     }
 
 
     //We try to mimick Apache here, as we do everywhere
     //All the 'magic' numbers are from the util_script.c Apache source file.
     protected String formatSize(long sizeString format) {
         String retString = "";
        if (format.equalsIgnoreCase("bytes")) {
            DecimalFormat decimalFormat = new DecimalFormat("#,##0");
            retString = decimalFormat.format(size);
        } else {
            if (size == 0) {
                retString = "0k";
            } else if (size < ) {
                retString = "1k";
            } else if (size < ) {
                retString = Long.toString((size + 512) / );
                retString += "k";
            } else if (size < 99 * ) {
                DecimalFormat decimalFormat = new DecimalFormat("0.0M");
                retString = decimalFormat.format(size / (double));
            } else {
                retString = Long.toString((size + (529 * ))
                        / );
                retString += "M";
            }
            retString = padLeft(retString, 5);
        }
        return retString;
    }
New to GrepCode? Check out our FAQ X