Package org.bladerunnerjs.model

Source Code of org.bladerunnerjs.model.StandardFileInfo

package org.bladerunnerjs.model;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.apache.commons.io.filefilter.IOFileFilter;
import org.bladerunnerjs.logging.LoggerFactory;
import org.bladerunnerjs.utility.StandardFileIterator;
import org.bladerunnerjs.utility.filemodification.FileModificationInfo;
import org.bladerunnerjs.utility.filemodification.InfoFileModifiedChecker;
import org.bladerunnerjs.utility.filemodification.FileModifiedChecker;

public class StandardFileInfo implements FileInfo {
  private final FileModificationInfo fileModificationInfo;
  private final StandardFileIterator fileIterator;
  private final File file;
  private final FileModifiedChecker isDirectoryChecker;
  private final FileModifiedChecker existsChecker;
  private boolean isDirectory;
  private boolean exists;
  private String canonicalPath = null;
 
  public StandardFileInfo(File file, FileModificationInfo fileModificationInfo, FileInfoAccessor fileInfoAccessor, LoggerFactory loggerFactory) {
    this.fileModificationInfo = fileModificationInfo;
    fileIterator = new StandardFileIterator(fileModificationInfo, file, fileInfoAccessor);
    this.file = file;
    isDirectoryChecker = new InfoFileModifiedChecker(fileModificationInfo);
    existsChecker = new InfoFileModifiedChecker(fileModificationInfo);
   
    try {
      canonicalPath = file.getCanonicalPath();
    } catch (IOException e) {
      loggerFactory.getLogger(this.getClass()).warn("Unable to calculate canonical path for path '%s'.", file.getPath());
      canonicalPath = file.getAbsolutePath();
    }
   
  }
 
  @Override
  public boolean isDirectory() {
    if(isDirectoryChecker.hasChangedSinceLastCheck()) {
      isDirectory = file.isDirectory();
    }
   
    return isDirectory;
  }
 
  @Override
  public boolean exists() {
    if(existsChecker.hasChangedSinceLastCheck()) {
      exists = file.exists();
    }
   
    return exists;
  }
 
  @Override
  public String canonicalPath() {
    return canonicalPath;
  }
 
  @Override
  public long getLastModified() {
    return fileModificationInfo.getLastModified();
  }
 
  @Override
  public void resetLastModified() {
    fileModificationInfo.resetLastModified();
  }
 
  @Override
  public List<File> filesAndDirs() {
    return fileIterator.filesAndDirs();
  }
 
  @Override
  public List<File> filesAndDirs(IOFileFilter fileFilter) {
    return fileIterator.filesAndDirs(fileFilter);
  }
 
  @Override
  public List<File> files() {
    return fileIterator.files();
  }
 
  @Override
  public List<File> dirs() {
    return fileIterator.dirs();
  }
 
  @Override
  public List<File> nestedFilesAndDirs() {
    return fileIterator.nestedFilesAndDirs();
  }
 
  @Override
  public List<File> nestedFiles() {
    return fileIterator.nestedFiles();
  }
 
  @Override
  public List<File> nestedDirs() {
    return fileIterator.nestedDirs();
  }
}
TOP

Related Classes of org.bladerunnerjs.model.StandardFileInfo

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.