package com.matrix.component.ueditor.hunter;
|
|
import java.io.File;
|
import java.util.Arrays;
|
import java.util.Collection;
|
import java.util.Map;
|
|
import com.matrix.component.ueditor.PathFormat;
|
import com.matrix.component.ueditor.define.AppInfo;
|
import com.matrix.component.ueditor.define.BaseState;
|
import com.matrix.component.ueditor.define.MultiState;
|
import com.matrix.component.ueditor.define.State;
|
import org.apache.commons.io.FileUtils;
|
|
|
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 = 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;
|
|
}
|
|
}
|