Package com.baidu.ueditor.hunter

Source Code of com.baidu.ueditor.hunter.FileManager

package com.baidu.ueditor.hunter;

import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import java.util.Map;

import org.apache.commons.io.FileUtils;

import com.baidu.ueditor.PathFormat;
import com.baidu.ueditor.define.AppInfo;
import com.baidu.ueditor.define.BaseState;
import com.baidu.ueditor.define.MultiState;
import com.baidu.ueditor.define.State;

public class FileManager {

  private String dir = null;
  private String rootPath = null;
  private String[] allowFiles = null;
  private int count = 0;
 
  public FileManager ( Map<String, Object> conf ) {

    this.rootPath = (String)conf.get( "rootPath" );
    this.dir = this.rootPath + (String)conf.get( "dir" );
    this.allowFiles = this.getAllowFiles( conf.get("allowFiles") );
    this.count = (Integer)conf.get( "count" );
   
  }
 
  public State listFile ( int index ) {
   
    File dir = new File( this.dir );
    State state = null;

    if ( !dir.exists() ) {
      return new BaseState( false, AppInfo.NOT_EXIST );
    }
   
    if ( !dir.isDirectory() ) {
      return new BaseState( false, AppInfo.NOT_DIRECTORY );
    }
   
    Collection<File> list = FileUtils.listFiles( dir, this.allowFiles, true );
   
    if ( index < 0 || index > list.size() ) {
      state = new MultiState( true );
    } else {
      Object[] fileList = Arrays.copyOfRange( list.toArray(), index, index + this.count );
      state = this.getState( fileList );
    }
   
    state.putInfo( "start", index );
    state.putInfo( "total", list.size() );
   
    return state;
   
  }
 
  private State getState ( Object[] files ) {
   
    MultiState state = new MultiState( true );
    BaseState fileState = null;
   
    File file = null;
   
    for ( Object obj : files ) {
      if ( obj == null ) {
        break;
      }
      file = (File)obj;
      fileState = new BaseState( true );
      fileState.putInfo( "url", PathFormat.format( this.getPath( file ) ) );
      state.addState( fileState );
    }
   
    return state;
   
  }
 
  private String getPath ( File file ) {
   
    String path = PathFormat.format( file.getAbsolutePath() );
   
    return path.replace( this.rootPath, "/" );
   
  }
 
  private String[] getAllowFiles ( Object fileExt ) {
   
    String[] exts = null;
    String ext = null;
   
    if ( fileExt == null ) {
      return new String[ 0 ];
    }
   
    exts = (String[])fileExt;
   
    for ( int i = 0, len = exts.length; i < len; i++ ) {
     
      ext = exts[ i ];
      exts[ i ] = ext.replace( ".", "" );
     
    }
   
    return exts;
   
  }
 
}
TOP

Related Classes of com.baidu.ueditor.hunter.FileManager

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.