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