Filetools
Die grundlegende Idee hinter diesen Tools ist, Klassen zur Verfügung zu stellen, die sowohl eigenständig (konkrete Klassen mit main(...) Methode) als auch von anderen Modulen aus verwendet werden können. Für letztere Variante wird in jedem Paket ein allgemeines Interface definiert, sodass die Klassen möglichst allgemein benutzt weden kann (z.B. in einer Strategy).
Inhaltsverzeichnis
Package filesearchtools
Beinhaltet Klassen zum Durchsuchen von Verzeichnisstrukturen.
Interface
public interface IFileSearch { abstract public int searchDir(File searchDir); }
Einfache Basisklasse
public abstract class SimpleFileSearch implements IFileSearch { public SimpleFileSearch(File outputFile){} public int searchDir(File searchdir){} abstract protected boolean isDirToSearch(String dir); abstract protected boolean isSearchedFileName(String filename); abstract protected void processFile(File file); }
Kapselt Funktionalität zum Durchsuchen einer Verzeichnisstruktur.
Konkrete Klassen müssen Funktionen überschreiben, in denen spezifiziert wird, welche Files in welchen Verzeichnissen gesucht werden. In processFile(File) wird definiert wie mit einem "gefundenen" File umgegangen wird.
Konkrete Klasse MatlabfunctionFileSearch
public class MatlabfunctionFileSearch extends SimpleFileSearch{ ... }
Sucht Files, die Matlab-Funktionen beinhalten und speichert den Namen jedes Files (und somit der Funktion) als primitives ASCII File, wobei in jeder Zeile ein Name steht. Zeilentrennung erfolgt mit "\n".
Es werden .m Files gesucht, deren Name nicht mit einem Großbuchstaben anfängt. Dabei werden alle Verzeichnisse, die nicht mit "@" anfangen, durchsucht.
Verwendung als Anwendung
$ java filesearchtools/MatlabfunctionFileSearch <directory>
wobei <directory> als Ausgangspunkt für die Suche verwendet wird.
Package fileconverttools
Interface
public interface IFileConverter { abstract public int convertInDir(File inputRootDir, File outputDir); }
Einfache Basisklasse
public abstract class SimpleFileConverter implements IFileConverter { public SimpleFileConverter(){} public int convertInDir(File inputDir, File outputDir){} abstract protected void convertFile(File inputFile, File outputFile); abstract protected void copyFile(File inputFile, File outputFile); abstract protected boolean isDirToConvert(String dir); abstract protected boolean isFileToConvert(String filename); abstract protected boolean isFileToCopy(String filename); }
Kapselt Funktionalität zum Kopieren einer Verzeichnisstruktur, wobei gewisse Files konvertiert werden.
Von ihr müssen konkrete Klassen abgeleitet werden, welche die durchzuführenden Operationen implementieren.
Konkrete Klasse MatlabHelpfileConverter
public class MatlabHelpfileConverter extends SimpleFileConverter{ ... }
Mit dieser Klasse kann eine Kopie des Inhalts eines Verzeichnisses erstellt werden, wobei .htm und .html Files konvertiert werden. Die Konvertierung besteht darin, dass Links der Form <a href="file:xxxxxxxx durch <a href="xxxxxxxx ausgetauscht werden. Dies erfolgt indem jedes Vorkommen der regex 'href\s*=\s*"file:' ersetzt wird durch 'href="'.
Verwendung als Anwendung
$ java fileconverttools/MatlabHelpfileConverter -i <input-directory> [-o <output-directory>]
Wird kein output-directory angegeben, so wird innerhalb des input-directories konvertiert (und man erspart sich das Kopieren der restlichen Dateien).