client/ftpd/src/se/lu/thep/coreftpd/webserver/MyFile.java

Code
Comments
Other
Rev Date Author Line
741 10 Oct 06 olle 1 /*
1652 22 May 07 gregory 2  $Id$
741 10 Oct 06 olle 3
1916 31 Aug 07 jari 4  Copyright (C) 2006 Olle Mansson
1916 31 Aug 07 jari 5  Copyright (C) 2007 Gregory Vincic
741 10 Oct 06 olle 6
1652 22 May 07 gregory 7  This file is part of Proteios.
1652 22 May 07 gregory 8  Available at http://www.proteios.org/
741 10 Oct 06 olle 9
1652 22 May 07 gregory 10  Proteios is free software; you can redistribute it and/or modify it
1652 22 May 07 gregory 11  under the terms of the GNU General Public License as published by
1652 22 May 07 gregory 12  the Free Software Foundation; either version 2 of the License, or
1652 22 May 07 gregory 13  (at your option) any later version.
741 10 Oct 06 olle 14
1652 22 May 07 gregory 15  Proteios is distributed in the hope that it will be useful, but
1652 22 May 07 gregory 16  WITHOUT ANY WARRANTY; without even the implied warranty of
1652 22 May 07 gregory 17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1652 22 May 07 gregory 18  General Public License for more details.
741 10 Oct 06 olle 19
1652 22 May 07 gregory 20  You should have received a copy of the GNU General Public License
1652 22 May 07 gregory 21  along with this program; if not, write to the Free Software
1652 22 May 07 gregory 22  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1652 22 May 07 gregory 23  02111-1307, USA.
1652 22 May 07 gregory 24  */
741 10 Oct 06 olle 25
741 10 Oct 06 olle 26 //  Xerver Free Web Server
741 10 Oct 06 olle 27 //  Copyright (C) 2002-2005 Omid Rouhani
741 10 Oct 06 olle 28 //
741 10 Oct 06 olle 29 //
741 10 Oct 06 olle 30 //  This program is free software; you can redistribute it and/or
741 10 Oct 06 olle 31 //  modify it under the terms of the GNU General Public License
741 10 Oct 06 olle 32 //  as published by the Free Software Foundation; either version 2
741 10 Oct 06 olle 33 //  of the License, or (at your option) any later version.
741 10 Oct 06 olle 34 //
741 10 Oct 06 olle 35 //  This program is distributed in the hope that it will be useful,
741 10 Oct 06 olle 36 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
741 10 Oct 06 olle 37 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
741 10 Oct 06 olle 38 //  GNU General Public License for more details.
741 10 Oct 06 olle 39 //
741 10 Oct 06 olle 40 //  You should have received a copy of the GNU General Public License
741 10 Oct 06 olle 41 //  along with this program; if not, write to the Free Software
741 10 Oct 06 olle 42 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
741 10 Oct 06 olle 43 //
741 10 Oct 06 olle 44 //
741 10 Oct 06 olle 45 //  #############################################################
741 10 Oct 06 olle 46 //  ##  YOU CAN CONTACT THE AUTHOR (OMID ROUHANI) AT:          ##
741 10 Oct 06 olle 47 //  ##  HTTP://WWW.JAVASCRIPT.NU/XERVER/                       ##
741 10 Oct 06 olle 48 //  ##                                                         ##
741 10 Oct 06 olle 49 //  ##  IF YOUR SOFTWARE IS NOT RELEASED UNDER THE             ##
741 10 Oct 06 olle 50 //  ##  GNU GENERAL PUBLIC LICENSE (GPL),                      ##
741 10 Oct 06 olle 51 //  ##  PLEASE DO NOT COPY ANYTHING FROM THIS SOURCE CODE!!!   ##
741 10 Oct 06 olle 52 //  ##                                                         ##
741 10 Oct 06 olle 53 //  ##  FOR FULL LICENSE, PLEASE READ "XERVER LICENSE".        ##
741 10 Oct 06 olle 54 //  #############################################################
741 10 Oct 06 olle 55
1652 22 May 07 gregory 56 package se.lu.thep.coreftpd.webserver;
741 10 Oct 06 olle 57
741 10 Oct 06 olle 58 import java.io.File;
741 10 Oct 06 olle 59
741 10 Oct 06 olle 60 /**
1652 22 May 07 gregory 61  * 
1652 22 May 07 gregory 62  * <B>About this class:</B> <BR>
1652 22 May 07 gregory 63  * <CODE>MyFile</CODE> is like <CODE>File</CODE> but has an modified
1652 22 May 07 gregory 64  * toString() method and a boolean which decides if a file shall be represented
1652 22 May 07 gregory 65  * as ".." when toString() is called. <BR>
1652 22 May 07 gregory 66  * With a normal <CODE>File</CODE> you will get "getPath()" when you call
1652 22 May 07 gregory 67  * "toString()". With this class you will get ".." if b_isUpOneDir==true (if
1652 22 May 07 gregory 68  * isUpOneDir() has been called). Otherwise you will get getName(). However, if
1652 22 May 07 gregory 69  * "getName()" returns "", then "getPath()" is returned (This happenes as far as
1652 22 May 07 gregory 70  * I know only when <CODE>MyFile</CODE> represents a root, such as c:\, d:\ or / ).
1652 22 May 07 gregory 71  * 
741 10 Oct 06 olle 72  * @author <a href="http://www.JavaScript.nu/xerver/" TARGET="_top">Omid Rouhani</a>
741 10 Oct 06 olle 73  * @version 1.0
741 10 Oct 06 olle 74  */
1223 18 Feb 07 gregory 75 @SuppressWarnings("serial")
1652 22 May 07 gregory 76 final public class MyFile extends File {
1652 22 May 07 gregory 77   /**
1652 22 May 07 gregory 78    * toString() will return ".." iff b_isUpOneDir==true (if isUpOneDir() has
1652 22 May 07 gregory 79    * been called).
1652 22 May 07 gregory 80    */
1652 22 May 07 gregory 81   private boolean b_isUpOneDir = false;
741 10 Oct 06 olle 82
1652 22 May 07 gregory 83   MyFile(File parent, String child) {
741 10 Oct 06 olle 84     super(parent, child);
741 10 Oct 06 olle 85   }
1652 22 May 07 gregory 86
1652 22 May 07 gregory 87   MyFile(String pathname) {
741 10 Oct 06 olle 88     super(pathname);
741 10 Oct 06 olle 89   }
1652 22 May 07 gregory 90
1652 22 May 07 gregory 91   MyFile(String parent, String child) {
741 10 Oct 06 olle 92     super(parent, child);
741 10 Oct 06 olle 93   }
1652 22 May 07 gregory 94
1652 22 May 07 gregory 95   MyFile(File f) {
741 10 Oct 06 olle 96     this(f.getPath());
741 10 Oct 06 olle 97   }
741 10 Oct 06 olle 98
1652 22 May 07 gregory 99   /**
1652 22 May 07 gregory 100    * If isUpOneDir() is called toString() will always return "..".
1652 22 May 07 gregory 101    */
1652 22 May 07 gregory 102   public void isUpOneDir() {
1652 22 May 07 gregory 103     b_isUpOneDir = true;
741 10 Oct 06 olle 104   }
741 10 Oct 06 olle 105
1652 22 May 07 gregory 106   /**
1652 22 May 07 gregory 107    * Set the b_isUpOneDir variable with this method. setIsUpOneDir(true) is
1652 22 May 07 gregory 108    * equivalent to isUpOneDir().
1652 22 May 07 gregory 109    */
1652 22 May 07 gregory 110   public void setIsUpOneDir(boolean isUpOneDir) {
1652 22 May 07 gregory 111     b_isUpOneDir = isUpOneDir;
741 10 Oct 06 olle 112   }
741 10 Oct 06 olle 113
1652 22 May 07 gregory 114   /**
1652 22 May 07 gregory 115    * With a normal <CODE>File</CODE> you will get "<CODE>getPath()</CODE>"
1652 22 May 07 gregory 116    * when you call "toString()". With this class you will get ".." if
1652 22 May 07 gregory 117    * b_isUpOneDir==true (if <CODE>isUpOneDir()</CODE> has been called).
1652 22 May 07 gregory 118    * Otherwise you will get <CODE>getName()</CODE>. However, if "<CODE>getName()</CODE>"
1652 22 May 07 gregory 119    * returns "", then "<CODE>getPath()</CODE>" is returned (This happenes
1652 22 May 07 gregory 120    * as far as I know only when <CODE>MyFile</CODE> represents a root, such
1652 22 May 07 gregory 121    * as c:\, d:\ or / ).
1652 22 May 07 gregory 122    */
2386 14 Nov 07 gregory 123   @Override
1652 22 May 07 gregory 124   public String toString() {
741 10 Oct 06 olle 125     if (b_isUpOneDir)
741 10 Oct 06 olle 126       return "..";
1652 22 May 07 gregory 127     else if (!getName().equals(""))
1652 22 May 07 gregory 128       return getName();
741 10 Oct 06 olle 129     else
1652 22 May 07 gregory 130       return getPath(); // If it's a root such as "c:\" or "/".
741 10 Oct 06 olle 131   }
741 10 Oct 06 olle 132 }