1abd32a990e145862f22d15316feedced5ad246aachrismair/*
2abd32a990e145862f22d15316feedced5ad246aachrismair * Copyright 2008 the original author or authors.
3334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair *
4abd32a990e145862f22d15316feedced5ad246aachrismair * Licensed under the Apache License, Version 2.0 (the "License");
5abd32a990e145862f22d15316feedced5ad246aachrismair * you may not use this file except in compliance with the License.
6abd32a990e145862f22d15316feedced5ad246aachrismair * You may obtain a copy of the License at
7334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair *
8abd32a990e145862f22d15316feedced5ad246aachrismair *      http://www.apache.org/licenses/LICENSE-2.0
9334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair *
10abd32a990e145862f22d15316feedced5ad246aachrismair * Unless required by applicable law or agreed to in writing, software
11abd32a990e145862f22d15316feedced5ad246aachrismair * distributed under the License is distributed on an "AS IS" BASIS,
12abd32a990e145862f22d15316feedced5ad246aachrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13abd32a990e145862f22d15316feedced5ad246aachrismair * See the License for the specific language governing permissions and
14abd32a990e145862f22d15316feedced5ad246aachrismair * limitations under the License.
15abd32a990e145862f22d15316feedced5ad246aachrismair */
16334c6ebce811c954bf2a79ba4579589a4a3326bfchrismairpackage org.mockftpserver.fake.filesystem;
17abd32a990e145862f22d15316feedced5ad246aachrismair
18abd32a990e145862f22d15316feedced5ad246aachrismair/**
19abd32a990e145862f22d15316feedced5ad246aachrismair * File system entry representing a directory
2081c5294b43234e26add70ffd5bfb8fbc31db45c9chrismair *
21abd32a990e145862f22d15316feedced5ad246aachrismair * @author Chris Mair
222a0a3f946dba517a01cc26278f905156857c9c91chrismair * @version $Revision$ - $Date$
23abd32a990e145862f22d15316feedced5ad246aachrismair */
24334c6ebce811c954bf2a79ba4579589a4a3326bfchrismairpublic class DirectoryEntry extends AbstractFileSystemEntry {
25abd32a990e145862f22d15316feedced5ad246aachrismair
26abd32a990e145862f22d15316feedced5ad246aachrismair    /**
27334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair     * Construct a new instance without setting its path
28abd32a990e145862f22d15316feedced5ad246aachrismair     */
29334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair    public DirectoryEntry() {
30abd32a990e145862f22d15316feedced5ad246aachrismair    }
31abd32a990e145862f22d15316feedced5ad246aachrismair
32abd32a990e145862f22d15316feedced5ad246aachrismair    /**
33334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair     * Construct a new instance with the specified value for its path
34334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair     *
35abd32a990e145862f22d15316feedced5ad246aachrismair     * @param path - the value for path
36abd32a990e145862f22d15316feedced5ad246aachrismair     */
37334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair    public DirectoryEntry(String path) {
38334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        super(path);
39abd32a990e145862f22d15316feedced5ad246aachrismair    }
40abd32a990e145862f22d15316feedced5ad246aachrismair
41abd32a990e145862f22d15316feedced5ad246aachrismair    /**
42ef1713518991f8db0e129928853890a6508eade9chrismair     * Return true to indicate that this entry represents a directory
43334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair     *
44ef1713518991f8db0e129928853890a6508eade9chrismair     * @return true
45abd32a990e145862f22d15316feedced5ad246aachrismair     */
46334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair    public boolean isDirectory() {
47334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        return true;
48abd32a990e145862f22d15316feedced5ad246aachrismair    }
4981c5294b43234e26add70ffd5bfb8fbc31db45c9chrismair
50abd32a990e145862f22d15316feedced5ad246aachrismair    /**
511dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair     * Return the size of this directory. This method returns zero.
52334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair     *
531dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair     * @return the file size in bytes
541dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair     */
55334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair    public long getSize() {
56334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        return 0;
571dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair    }
581dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair
591dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair    /**
60abd32a990e145862f22d15316feedced5ad246aachrismair     * @see java.lang.Object#toString()
61abd32a990e145862f22d15316feedced5ad246aachrismair     */
62334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair    public String toString() {
63334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        return "Directory['" + getPath() + "' lastModified=" + getLastModified() + "  owner=" + getOwner() +
64334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair                "  group=" + getGroup() + "  permissions=" + getPermissions() + "]";
65abd32a990e145862f22d15316feedced5ad246aachrismair    }
6681c5294b43234e26add70ffd5bfb8fbc31db45c9chrismair
6709415075d96852489d096aea7ae07dd156b58643chrismair    /**
6809415075d96852489d096aea7ae07dd156b58643chrismair     * Return a new FileSystemEntry that is a clone of this object, except having the specified path
69334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair     *
7009415075d96852489d096aea7ae07dd156b58643chrismair     * @param path - the new path value for the cloned file system entry
7109415075d96852489d096aea7ae07dd156b58643chrismair     * @return a new FileSystemEntry that has all the same values as this object except for its path
7209415075d96852489d096aea7ae07dd156b58643chrismair     */
73334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair    public FileSystemEntry cloneWithNewPath(String path) {
74334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        DirectoryEntry clone = new DirectoryEntry(path);
75334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        clone.setLastModified(getLastModified());
76334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        clone.setOwner(getOwner());
77334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        clone.setGroup(getGroup());
78334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        clone.setPermissions(getPermissions());
79334c6ebce811c954bf2a79ba4579589a4a3326bfchrismair        return clone;
8009415075d96852489d096aea7ae07dd156b58643chrismair    }
8109415075d96852489d096aea7ae07dd156b58643chrismair
82abd32a990e145862f22d15316feedced5ad246aachrismair}
83