Filetools: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
Zeile 19: Zeile 19:
 
Kapselt Funktionalität zum Durchsuchen einer Verzeichnisstruktur.
 
Kapselt Funktionalität zum Durchsuchen einer Verzeichnisstruktur.
   
Konkrete Klassen müssen Funktionen überschreiben, in denen spezifiziert wird, welche Files in welchen Verzeichnissen gesucht werden.
+
Konkrete Klassen müssen Funktionen überschreiben, in denen spezifiziert wird, welche Files in welchen Verzeichnissen gesucht werden. In <tt>processFile(File)</tt> wird definiert wie mit einem "gefundenen" File umgegangen wird.
   
 
==Konkrete Klasse <tt>MatlabfunctionFileSearch</tt>==
 
==Konkrete Klasse <tt>MatlabfunctionFileSearch</tt>==
Zeile 30: Zeile 30:
   
 
'''Verwendung als Anwendung'''
 
'''Verwendung als Anwendung'''
$ java filesearchtools/SimpleFileSearch <directory>
+
$ java filesearchtools/MatlabfunctionFileSearch <directory>
 
wobei <tt><directory></tt> als Ausgangspunkt für die Suche verwendet wird.
 
wobei <tt><directory></tt> 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 <tt>MatlabHelpfileConverter</tt>==
  +
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 <tt><a href="file:xxxxxxxx</tt> durch <tt><a href="xxxxxxxx</tt> ausgetauscht werden. Dies erfolgt indem jedes Vorkommen der regex '<tt>href\s*=\s*"file:</tt>' ersetzt wird durch '<tt>href="</tt>'.
  +
  +
  +
'''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).

Version vom 8. Februar 2006, 22:27 Uhr

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).

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).