package engine;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.swing.JOptionPane;
public class start {
/**
* @param args
*/
public static String InputFile;
public static String SourceFolder;
public static String SourceFolderComplete;
public static String DestFolder;
/*
* Funktion um jede einzelne Zeile aus der Datei mit den Dateinamen
* auszulesen.
*/
public static void readInputFile() throws FileNotFoundException {
BufferedReader File = new BufferedReader(new FileReader(InputFile));
try {
String Line;
while ((Line = File.readLine()) != null) {
generateFolder(Line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* Funktion um den Ordner aus dem Dateinamen zu generieren
*/
public static void generateFolder(String Line) {
if (Line.length() < 8)
Line = "00000000";
String folder1 = Line.substring(0, 2);
String folder2 = Line.substring(3, 5);
String SourceFolderComplete = SourceFolder + folder1 + "\\" + folder2
+ "\\";
String Filename = completeFileName(Line, SourceFolderComplete);
try {
if (Filename == null) {
logFile("Datei nicht gefunden: " + SourceFolderComplete
+ Line);
} else {
copy(SourceFolderComplete + Filename, DestFolder + Filename);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* Funktion um zwei Dateien zu Kopieren
*/
public static void copy(String src, String dest) throws IOException {
byte[] buffer = new byte[1024];
InputStream in = null;
try {
in = new FileInputStream(src);
} catch (FileNotFoundException e) {
}
OutputStream out = null;
try {
out = new FileOutputStream(dest);
logFile("File or directory copied: " + dest);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
for (int n; (n = in.read(buffer)) != -1; out.write(buffer, 0, n))
;
in.close();
out.close();
}
/*
* Funktion um den Dateinamen zu vervollständigen
*/
public static String completeFileName(String startsWith, String folderPath) {
File folder = new File(folderPath);
if (!folder.exists() || !folder.isDirectory()) {
logFile("Ordner existiert nicht: " + folderPath);
} else {
File[] filesInFolder = folder.listFiles();
for (int i = 0; i < filesInFolder.length; i++)
if (filesInFolder[i].getName().startsWith(startsWith))
return filesInFolder[i].getName();
}
return null;
}
/*
* Funktion zum mitloggen der Aktionen in einer Datei
*/
public static void logFile(String log) {
PrintWriter writer = null;
try {
writer = new PrintWriter(new FileWriter(DestFolder + "logfile.txt",
true));
} catch (IOException e) {
e.printStackTrace();
}
writer.println(log);
writer.flush();
writer.close();
}
/*
* Funktion um die globalen Variablen per Benutzereingabe zu füllen
*/
public static void messages() {
InputFile = JOptionPane.showInputDialog("Gib die ASCII File an:");
if (InputFile.length() < 2) {
JOptionPane.showMessageDialog(null, "Kein ASCII File angegeben - Abbruch!");
System.exit(0);
}
SourceFolder = JOptionPane
.showInputDialog("Gib den Ordner an in dem die CAD Dateien liegen:");
if (SourceFolder.length() < 2) {
JOptionPane.showMessageDialog(null, "Kein CAD Verzeichniss angegeben - Abbruch!");
System.exit(0);
}
DestFolder = JOptionPane
.showInputDialog("Gib den Ordner an in den die Dateien kopiert werden:");
if (DestFolder.length() < 2){
JOptionPane.showMessageDialog(null, "Kein Ordner fürs Kopieren angegeben - Abbruch!");
System.exit(0);
}
JOptionPane.showMessageDialog(null,
"Alles Klar! Ich Lege Los... Bitte warten bis ich mich wieder melde!");
}
/*
* Hauptfunktion
*/
public static void main(String[] args) throws FileNotFoundException {
messages();
readInputFile();
JOptionPane.showMessageDialog(null, "Fertig!");
System.exit(0);
}
}