100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair/*
200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Copyright 2008 the original author or authors.
300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Licensed under the Apache License, Version 2.0 (the "License");
500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * you may not use this file except in compliance with the License.
600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * You may obtain a copy of the License at
700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *      http://www.apache.org/licenses/LICENSE-2.0
900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
1000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Unless required by applicable law or agreed to in writing, software
1100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * distributed under the License is distributed on an "AS IS" BASIS,
1200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * See the License for the specific language governing permissions and
1400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * limitations under the License.
1500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */
1600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairpackage org.mockftpserver.fake.filesystem;
1700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
1800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair/**
1900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * File system entry representing a directory
2000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair *
2100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @author Chris Mair
2200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @version $Revision$ - $Date$
2300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */
2400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairpublic class DirectoryEntry extends AbstractFileSystemEntry {
2500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
2600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    /**
2700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * Construct a new instance without setting its path
2800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     */
2900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    public DirectoryEntry() {
3000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
3100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
3200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    /**
3300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * Construct a new instance with the specified value for its path
3400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     *
3500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * @param path - the value for path
3600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     */
3700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    public DirectoryEntry(String path) {
3800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        super(path);
3900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
4000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
4100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    /**
4200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * Return true to indicate that this entry represents a directory
4300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     *
4400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * @return true
4500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     */
4600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    public boolean isDirectory() {
4700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        return true;
4800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
4900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
5000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    /**
5100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * Return the size of this directory. This method returns zero.
5200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     *
5300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * @return the file size in bytes
5400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     */
5500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    public long getSize() {
5600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        return 0;
5700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
5800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
5900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    /**
6000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * @see java.lang.Object#toString()
6100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     */
6200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    public String toString() {
6300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        return "Directory['" + getPath() + "' lastModified=" + getLastModified() + "  owner=" + getOwner() +
6400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair                "  group=" + getGroup() + "  permissions=" + getPermissions() + "]";
6500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
6600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
6700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    /**
6800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * Return a new FileSystemEntry that is a clone of this object, except having the specified path
6900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     *
7000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * @param path - the new path value for the cloned file system entry
7100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     * @return a new FileSystemEntry that has all the same values as this object except for its path
7200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair     */
7300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    public FileSystemEntry cloneWithNewPath(String path) {
7400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        DirectoryEntry clone = new DirectoryEntry(path);
7500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        clone.setLastModified(getLastModified());
7600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        clone.setOwner(getOwner());
7700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        clone.setGroup(getGroup());
7800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        clone.setPermissions(getPermissions());
7900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair        return clone;
8000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair    }
8100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair
8200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair}
83