Hi,
ich habe eine klasse erstellt die mir direkt im konstruktor eine datei einließt (max. 30mb groß)
funkitoniert soweit wunderbar, jedoch wenn ich das ganze mit einem progressbar ausstatten will, dann funktioniert das ganze nicht, grund dafür - meine form friert ein - was ja auch klar ist.
Da ich von c# das thema "threads" kenne, bin ich mir sicher, dass ich damit auf dem holzweg bin.
Wie ist es mir möglich, den konstruktor bzw. die ganze klasse in einen thread zu packen?
per buttonclick erstelle ich mir einfach eine neue instanz meiner klasse
meine klasse
root klasse
ich habe eine klasse erstellt die mir direkt im konstruktor eine datei einließt (max. 30mb groß)
funkitoniert soweit wunderbar, jedoch wenn ich das ganze mit einem progressbar ausstatten will, dann funktioniert das ganze nicht, grund dafür - meine form friert ein - was ja auch klar ist.
Da ich von c# das thema "threads" kenne, bin ich mir sicher, dass ich damit auf dem holzweg bin.
Wie ist es mir möglich, den konstruktor bzw. die ganze klasse in einen thread zu packen?
per buttonclick erstelle ich mir einfach eine neue instanz meiner klasse
Code:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Kundout kOut = new Kundout("Exports\\KUNDOUT.TXT", jProgressBar1);
} catch (IOException ex) {
Logger.getLogger(mainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
meine klasse
Code:
package tsg.trackntrace;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.swing.JProgressBar;
public class Kundout extends Root {
private String category = "1";
public Kundout(String fileName, JProgressBar progressbar) throws FileNotFoundException, IOException {
File file = new File(this.rootDirectory + fileName);
if (file.exists()) {
new Log(Log.severities.Informational, this.category, "Kundout Datei mit " + file.length() + " Bytes gefunden und wird weiterverarbeitet");
Path source = Paths.get(this.rootDirectory).resolve(fileName);
Path target = Paths.get(this.rootDirectory + "Temp\\KUNDOUT.TXT");
Files.move(source, target);
BufferedReader br = new BufferedReader(new FileReader(this.rootDirectory + "Temp\\KUNDOUT.TXT"));
LineNumberReader lnr = new LineNumberReader(new FileReader(this.rootDirectory + "Temp\\KUNDOUT.TXT"));
String zeile = null;
while ((zeile = br.readLine()) != null) {
progressbar.setValue(progressbar.getValue() +1);
String kundenNummer = "";
String kundenBezeichnung = "";
String kundenStrasse = "";
String kundenLand = "";
String kundenPlz = "";
String kundenOrt = "";
try {
kundenNummer = this.getData(zeile, 1, 5).replace("'", "`");
kundenBezeichnung = this.getData(zeile, 6, 75).replace("'", "`");
kundenStrasse = this.getData(zeile, 76, 110).replace("'", "`");
kundenLand = this.getData(zeile, 111, 112).replace("'", "`");
kundenPlz = this.getData(zeile, 113, 121).replace("'", "`");
kundenOrt = this.getData(zeile, 122, zeile.length()).replace("'", "`");
}
catch(Exception e) {
System.out.println(kundenNummer + " " + e);
}
//System.out.println(kundenNummer + " " + kundenBezeichnung + " " + kundenStrasse + " " + kundenLand + " " + kundenPlz + " " + kundenOrt);
String query = "INSERT INTO Kunden (kundennummer, kundenname, kundenstrasse, kundenpostleitzahl, kundenort, isoland) VALUES ('" + kundenNummer + "', '" + kundenBezeichnung + "', '" + kundenStrasse + "', '" + kundenPlz + "', '" + kundenOrt + "', '" + kundenLand + "') ON DUPLICATE KEY UPDATE kundennummer = VALUES(kundennummer), kundenname = VALUES(kundenname), kundenstrasse = VALUES(kundenstrasse), kundenpostleitzahl = VALUES(kundenpostleitzahl), kundenort = VALUES(kundenort), isoland = VALUES(isoland)";
this.mysqlInterface.insertData(query);
}
br.close();
file = new File(this.rootDirectory + "Temp\\KUNDOUT.TXT");
if (file.delete()) {
new Log(Log.severities.Informational, this.category, "Kundout.txt erfolgreich gelöscht");
}
else {
new Log(Log.severities.Error, this.category, "Kondout.txt konnte nicht gelöscht werden");
}
}
else {
new Log(Log.severities.Informational, this.category, "Keine Kundout Datei zum verarbeiten gefunden");
}
}
}
root klasse
Code:
package tsg.trackntrace;
import com.mysql.jdbc.MySQLConnection;
/**
*
* @author t.schafferer
*/
public class Root {
protected MySqlClass mysqlInterface = new MySqlClass("XXXXX", "XXXXX", "XXXX");
protected String rootDirectory = "\\\\Sy-55\\Jobs$\\Labor\\";
protected String getData (String str, int from, int to) {
String tempString = "";
for (int i = from -1; i <= to -1; i++) {
tempString += str.charAt(i);
}
return tempString;
}
}