Package org.elfinder.servlets.fs

Source Code of org.elfinder.servlets.fs.DiskFsImpl

package org.elfinder.servlets.fs;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.elfinder.servlets.FsException;
import org.elfinder.servlets.config.AbstractConnectorConfig;


/**
* @author Antoine Walter (www.anw.fr)
* @date 29 aug. 2011
* @version $Id$
* @license BSD
*/

/**
* Filesystem based on Java IO.
*/
public class DiskFsImpl implements IFsImpl {

  private AbstractConnectorConfig config;

  public DiskFsImpl() {
  }

  public void init(AbstractConnectorConfig config) {
    this.config = config;
  }

  protected AbstractConnectorConfig getConfig() {
    return config;
  }

  public void createFile(File newFile, ByteArrayOutputStream os) throws FsException {
    if (os == null) {
      os = new ByteArrayOutputStream();
    }
    try {
      if (!newFile.createNewFile()) {
        throw new FsException("unable to create file");
      }
      try {
        FileOutputStream fs = new FileOutputStream(newFile);
        fs.write(os.toByteArray());
        fs.flush();
        fs.close();
      } catch (Exception ee) {
        newFile.delete();
        throw new FsException("unable to write file");
      }
    } catch (Exception e) {
      throw new FsException("unable to create file");
    }
  }

  public void createFolder(File folder) throws FsException {
    boolean ok = folder.mkdir();
    if (!ok) {
      throw new FsException("Unable to create folder");
    }
  }

  public void renameFileOrDirectory(File targetFile, File futureFile) throws FsException {
    boolean ok = targetFile.renameTo(futureFile);
    if (!ok) {
      throw new FsException("Unable to rename file from " + targetFile.getPath() + " to " + futureFile.getPath());
    }
  }

  public void copyFileOrDirectory(File targetFile, File futureFile) throws FsException {
    boolean ok = true;
    try {
      if (targetFile.isDirectory()) {
        FileUtils.copyDirectory(targetFile, futureFile);
      } else {
        FileUtils.copyFile(targetFile, futureFile);
      }
    } catch (IOException e) {
      ok = false;
    }
    if (!ok) {
      throw new FsException("Unable to copy file from " + targetFile.getPath() + " to " + futureFile.getPath());
    }
  }

  public void moveFile(File file, File futureFile) throws FsException {
    // renameTo doesn't always work on windows?
    try {
      FileUtils.copyFile(file, futureFile);
      if (!file.delete()) {
        throw new Exception();
      }
    } catch (Exception e) {
      throw new FsException("Unable to move file");
    }
  }

  public void removeFile(File path) throws FsException {
    if (!path.delete()) {
      throw new FsException("Unable to remove file");
    }
  }

  public void removeEmptyDirectory(File path) throws FsException {
    if (!path.delete()) {
      throw new FsException("Unable to remove directory");
    }
  }

  public boolean isAllowedFile(File file) {
    return true;
  }

  public long getDirSize(File dir) {
    return FileUtils.sizeOfDirectory(dir);
  }

  public long getFileSize(File file) {
    return file.length();
  }

}
TOP

Related Classes of org.elfinder.servlets.fs.DiskFsImpl

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.