Filetools: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
Zeile 23: Zeile 23:
 
==Konkrete Klasse <tt>MatlabfunctionFileSearch</tt>==
 
==Konkrete Klasse <tt>MatlabfunctionFileSearch</tt>==
 
public class MatlabfunctionFileSearch extends SimpleFileSearch{
 
public class MatlabfunctionFileSearch extends SimpleFileSearch{
  +
public static void main(String[] args) {}
 
...
 
...
 
}
 
}
Zeile 45: Zeile 46:
 
public SimpleFileConverter(){}
 
public SimpleFileConverter(){}
 
public int convertInDir(File inputDir, File outputDir){}
 
public int convertInDir(File inputDir, File outputDir){}
  +
protected void copyFile(File inputFile, File outputFile);
 
abstract protected void convertFile(File inputFile, File outputFile);
 
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 isDirToConvert(String dir);
 
abstract protected boolean isFileToConvert(String filename);
 
abstract protected boolean isFileToConvert(String filename);
 
abstract protected boolean isFileToCopy(String filename);
 
abstract protected boolean isFileToCopy(String filename);
 
}
 
}
Kapselt Funktionalität zum Kopieren einer Verzeichnisstruktur, wobei gewisse Files konvertiert werden.
+
Kapselt Funktionalität zum Kopieren einer Verzeichnisstruktur, wobei gewisse Files konvertiert werden. Eine einfache Kopierfunktion wird zur Verfügung gestellt. In dieser wird ein File über Streams blockweise (1k) kopiert.
   
 
Von ihr müssen konkrete Klassen abgeleitet werden, welche die durchzuführenden Operationen implementieren.
 
Von ihr müssen konkrete Klassen abgeleitet werden, welche die durchzuführenden Operationen implementieren.
Zeile 57: Zeile 58:
 
==Konkrete Klasse <tt>MatlabHelpfileConverter</tt>==
 
==Konkrete Klasse <tt>MatlabHelpfileConverter</tt>==
 
public class MatlabHelpfileConverter extends SimpleFileConverter{
 
public class MatlabHelpfileConverter extends SimpleFileConverter{
  +
public static void main(String[] args) {}
 
...
 
...
 
}
 
}

Version vom 9. Februar 2006, 09:47 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{
    public static void main(String[] args) {}
    ...
}

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){}
    protected void copyFile(File inputFile, File outputFile);
    abstract protected void convertFile(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. Eine einfache Kopierfunktion wird zur Verfügung gestellt. In dieser wird ein File über Streams blockweise (1k) kopiert.

Von ihr müssen konkrete Klassen abgeleitet werden, welche die durchzuführenden Operationen implementieren.

Konkrete Klasse MatlabHelpfileConverter

public class MatlabHelpfileConverter extends SimpleFileConverter{
    public static void main(String[] args) {}
    ...
}

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