/* * 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; } }