|
JFile |
|
1 // joi/10/jfiles/JFile.java 2 // 3 // 4 // Copyright 2003 Bill Campbell and Ethan Bolker 5 6 import java.util.Date; 7 import java.io.File; 8 9 /** 10 * A JFile object models a file in a hierarchical file system. 11 * <p> 12 * Extend this abstract class to create particular kinds of JFiles, 13 * e.g.:<br> 14 * Directory - 15 * a JFile that maintains a list of the files it contains.<br> 16 * TextFile - 17 * a JFile containing text you might want to read.<br> 18 * 19 * @see Directory 20 * @see TextFile 21 * 22 * @version 10 23 */ 24 25 public abstract class JFile 26 implements java.io.Serializable 27 { 28 /** 29 * The separator used in pathnames. 30 */ 31 32 public static final String separator = File.separator; 33 34 private String name; // a JFile knows its name 35 private User owner; // the owner of this file 36 private Date createDate; // when this file was created 37 private Date modDate; // when this file was last modified 38 private Directory parent; // the Directory containing this file 39 40 /** 41 * Construct a new JFile, set owner, parent, creation and 42 * modification dates. Add this to parent (unless this is the 43 * root Directory). 44 * 45 * @param name the name for this file (in its parent directory). 46 * @param creator the owner of this new file. 47 * @param parent the Directory in which this file lives. 48 */ 49 50 protected JFile( String name, User creator, Directory parent ) 51 { 52 this.name = name; 53 this.owner = creator; 54 this.parent = parent; 55 if (parent != null) { 56 parent.addJFile( name, this ); 57 } 58 createDate = modDate = new Date(); // set dates to now 59 } 60 61 /** 62 * The name of the file. 63 * 64 * @return the file's name. 65 */ 66 67 public String getName() 68 { 69 return name; 70 } 71 72 /** 73 * The full path to this file. 74 * 75 * @return the path name. 76 */ 77 78 public String getPathName() 79 { 80 if (this.isRoot()) { 81 return separator; 82 } 83 if (parent.isRoot()) { 84 return separator + getName(); 85 } 86 return parent.getPathName() + separator + getName(); 87 } 88 89 /** 90 * The size of the JFile 91 * (as defined by the child class).. 92 * 93 * @return the size. 94 */ 95 96 public abstract int getSize(); 97 98 /** 99 * Suffix used for printing file names 100 * (as defined by the child class). 101 * 102 * @return the file's suffix. 103 */ 104 105 public abstract String getSuffix(); 106 107 /** 108 * Set the owner for this file. 109 * 110 * @param owner the new owner. 111 */ 112 113 public void setOwner( User owner ) 114 { 115 this.owner = owner; 116 } 117 118 /** 119 * The file's owner. 120 * 121 * @return the owner of the file. 122 */ 123 124 public User getOwner() 125 { 126 return owner; 127 } 128 129 /** 130 * The date and time of the file's creation. 131 * 132 * @return the file's creation date and time. 133 */ 134 135 public String getCreateDate() 136 { 137 return createDate.toString(); 138 } 139 140 /** 141 * Set the modification date to "now". 142 */ 143 144 protected void setModDate() 145 { 146 modDate = new Date(); 147 } 148 149 /** 150 * The date and time of the file's last modification. 151 * 152 * @return the date and time of the file's last modification. 153 */ 154 155 public String getModDate() 156 { 157 return modDate.toString(); 158 } 159 160 /** 161 * The Directory containing this file. 162 * 163 * @return the parent directory. 164 */ 165 166 public Directory getParent() 167 { 168 return parent; 169 } 170 171 /** 172 * A JFile whose parent is null is defined to be the root 173 * (of a tree). 174 * 175 * @return true when this JFile is the root. 176 */ 177 178 public boolean isRoot() 179 { 180 return (parent == null); 181 } 182 183 /** 184 * How a JFile represents itself as a String. 185 * That is, 186 * <pre> 187 * owner size modDate name+suffix 188 * </pre> 189 * 190 * @return the String representation. 191 */ 192 193 public String toString() 194 { 195 return getOwner() + "\t" + 196 getSize() + "\t" + 197 getModDate() + "\t" + 198 getName() + getSuffix(); 199 } 200 } 201
|
JFile |
|