/*
* Copyright (c) 2006 Manuel Traut and Volker Dahnke
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors: Manuel Traut and Volker Dahnke
*/
package YalpServer;
import java.util.ArrayList;
import java.io.File;
import java.io.Serializable;
import YalpInterfaces.*;
/*
* Class FileBrowser
*
* each Admin Client has his own FileBrowser, to browse through the
* subDirectories of the as startDir defined Directory
*
* @author Volker Dahnke / Manuel Traut
*
* @version 0.6 14-12-2005
*
* @see client.GUI.Browser
*/
public class FileBrowser {
private File actualFile, startDir;
private String owner;
private String userName;
private ArrayList fileList;
/* t.b.d. add some more types */
private String[] extensions = {".mp3",".mpg",".mpeg",".avi"};
/*
* Constructor starts Browsing in startDir
*
* @param startdir
* directory which could be browser recursively
* @param owner
* of the Browser (IP of the Client)
* @param userName
* of the Admin using this browser
*/
public FileBrowser(String startdir, String owner,String userName) {
this.owner = owner;
this.userName=userName;
this.actualFile = new File(startdir);
this.startDir = new File(startdir);
this.fileList = new ArrayList();
}
/*
* returns owner of the browser
*
* @return String
* owner
*/
public String getOwner(){
return this.owner;
}
/*
* returns user of the browser
*
* @return String
* user
*/
public String getUserName(){
return this.userName;
}
/*
* returns list of all files in actual Folder
* (none recursive)
*
* @return ArrayList
* list of all files
*/
public ArrayList getFiles(){
return this.fileList;
}
/*
* returns list of all files in actual Folder
* (recursive)
*
* @return ArrayList
* list of all files
*/
public ArrayList findAll() {
System.out.println( "server.FileBrowser.findAll: lookin in - " +
this.actualFile.toString() );
FileFinder ff = new FileFinder(actualFile.getPath(), extensions);
return ff.getFiles();
}
/*
* change actual Folder
*
* @param dirName
* String dir to change to
*/
public void changeDir(String dirName) {
this.actualFile = new File(this.startDir+dirName);
this.fileList.clear();
if(actualFile.isDirectory()) {
for ( File aFile : this.actualFile.listFiles() ) {
/* add to fileList if extension is allowed or File is a Directory */
if (match(aFile.getName(), extensions) || aFile.isDirectory())
{
YalpFile tmp = new YalpFile();
tmp.name = aFile.getName();
tmp.isDir = aFile.isDirectory();
tmp.parent = aFile.getParent();
this.fileList.add( tmp );
}
}
}
}
/*
* prints current directory out to console
*
* (for debugging)
*/
public void printActualDir(){
for(YalpFile one : this.fileList){
if(one.isDir) System.out.print("+");
else System.out.print("|");
System.out.println(one.name);
}
}
/*
* checks if file extension matches or not
*
* @param s
* fileName including Extension
* @param suffixes
* Array of allowed Extensions
* @return boolean
* true if yalp can handle this extension, else false
*/
private static boolean match( String s, String suffixes[] ) {
for ( String suffix : suffixes ) {
int huhu = s.length();
int huhu2 = suffix.length();
int huhu3 = huhu - huhu2;
if ( s.length() >= suffix.length() &&
s.substring( huhu3, s.length()).equalsIgnoreCase(suffix) )
return true;
}
return false;
}
}