Package net.sourceforge.javautil.common.io.impl

Source Code of net.sourceforge.javautil.common.io.impl.DirectoryFileLinked

package net.sourceforge.javautil.common.io.impl;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import net.sourceforge.javautil.common.io.IVirtualArtifact;
import net.sourceforge.javautil.common.io.VirtualArtifactAbstract;
import net.sourceforge.javautil.common.io.VirtualArtifactNotFoundException;
import net.sourceforge.javautil.common.io.VirtualArtifactWrapped;
import net.sourceforge.javautil.common.io.IVirtualDirectory;
import net.sourceforge.javautil.common.io.IVirtualFile;
import net.sourceforge.javautil.common.io.VirtualFileAbstract;
import net.sourceforge.javautil.common.io.IVirtualPath;

/**
* A file that is linked into a {@link DirectoryRoot}.
*
* @author elponderador
* @author $Author: ponderator $
* @version $Id: DirectoryFileLinked.java 2297 2010-06-16 00:13:14Z ponderator $
*/
public class DirectoryFileLinked extends VirtualFileAbstract implements IVirtualFile, VirtualArtifactWrapped {
 
  protected final IVirtualFile delegate;

  public DirectoryFileLinked(Directory owner, IVirtualFile delegate) { this(owner, delegate, delegate.getName()); }
  public DirectoryFileLinked(Directory owner, IVirtualFile delegate, String name) {
    super(name, owner);
    this.delegate = delegate;
  }

  /**
   * @return The file this is linking
   */
  public IVirtualFile getDelegate() { return delegate; }
 
  public <T> IVirtualFile unwrap(Class<T> type) {
    IVirtualFile artifact = this;
    while (artifact instanceof VirtualArtifactWrapped && !(type.isAssignableFrom(artifact.getClass()))) {
      artifact = (IVirtualFile) ((VirtualArtifactWrapped)artifact).getDelegate();
    }
    return artifact;
  }
 
  public boolean remove() { ((Directory)owner).artifacts.remove(name); return true; }
 
  public void rename(String newName) {
    ((Directory)owner).artifacts.remove(name);
    ((Directory)owner).artifacts.put(newName, this);
    this.name = newName;
  }

  public long getSize() { return delegate.getSize(); }

  public long getLastModified() { return delegate.getLastModified(); }

  public boolean isExists() { return delegate.isExists(); }

  public boolean isReadOnly() { return delegate.isReadOnly(); }

  protected InputStream getRawInputStream() throws IOException { return delegate.getInputStream(); }

  protected OutputStream getRawOutputStream() throws IOException { return delegate.getOutputStream(); }

  public URL getURL() { return this.delegate.getURL(); }

}
TOP

Related Classes of net.sourceforge.javautil.common.io.impl.DirectoryFileLinked

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.