import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.io.*; public class Haupt extends Thread { String status = "start"; String dat; Thread t; // Constructor public void start(Thread thread) { t = thread; super.start(); } public Haupt(String d) { dat = d; } // Run Parameter public void run() { if(t != null){ try{t.join();t = null;} catch(InterruptedException e) {} } try { System.out.println(dat); // Dateinamen der .cdf ermitteln in der .cdf String cdfname, cdferg = "", out = "", celout = ""; int point = dat.indexOf("."); celout = dat.substring(0, point); cdferg = celout+"cdf.erg"; out = celout+"celcdf.mrg"; celout = celout+"_zw.erg"; cdfname = getCel(dat)+".cdf"; System.out.println("Dateiname der CDF ermittelt: "+cdfname); // Werte aus der cdf lesen und speichern in Datei readCDF(cdfname); System.out.println("CDF Ergebnis erstellt!"); // Werte aus der cel lesen und speichern in Datei readCEL(dat, celout); System.out.println("CEL Ergebnis erstellt!"); buildout(celout, out); Stammfenster.progress.setValue(Stammfenster.progress.getValue()+1); System.out.println("Zusammenfassung erstellt!"); System.out.println("Fertig!"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //try{notifyAll();}catch(Exception ex){} } // Dateinamen der .cel ermitteln // Hashmap zum Speichern CDF erstellen HashMap cdfhm = new HashMap (); public String getCel(String datei) throws FileNotFoundException, IOException { boolean run = true; BufferedReader dat = new BufferedReader(new FileReader(datei)); String output = "", datname = ""; while(run == true) { String tmp = dat.readLine(); if(tmp.startsWith("DatHeader=")) { // Regex erstellen Pattern p = Pattern.compile("DatHeader=.*\\s(.*)\\.1sq"); // Matcher den Text von p geben Matcher m = p.matcher(tmp); // auszuführende Aktion von Matcher m.find(); // Je nach Klammer Gruppe wählen datname = m.group(1); run = false; //System.out.println(datname); } } return datname; } // Einlesen CEL-File. Übergabe Dateiname. Auswertung für X,Y,MEAN in out public void readCEL(String datei, String out) throws FileNotFoundException, IOException { // Datei zum Lesen öffnen BufferedReader cel = new BufferedReader(new FileReader(datei)); // Datei zum Schreiben öffnen try {PrintWriter daten = new PrintWriter(out); boolean absch = true; String tmp = ""; int count = 0; while(tmp != null) { absch = true; boolean search = true; while(search == true) { tmp = cel.readLine(); if(tmp != null) { Pattern p = Pattern.compile("CellHeader=.*"); Matcher wm = p.matcher(tmp); if(wm.find()){search = false;} } else{search = false;} } while(absch == true) { tmp = cel.readLine(); if(tmp != null) { Pattern w = Pattern.compile("\\s*(\\d+)\\s+(\\d+)\\s+(\\d+\\.\\d).*"); Matcher mw = w.matcher(tmp); if(mw.find()) { count++; //System.out.println(count); daten.print(count+": "); daten.print("X="+mw.group(1)+" "); daten.print("Y="+mw.group(2)+" "); daten.print("MEAN="+mw.group(3)+" "); daten.print("\n"); } else{absch = false;} } else{absch = false;} } } daten.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } // Einlesen CDF-File. Übergabe Dateinamen. Auswertung X,Y,QUAL,ATOM,CBASE,PBASE,TBASE in cdferg.txt public void readCDF(String datei) throws FileNotFoundException, IOException { // Datei zum Lesen öffnen BufferedReader cdf = new BufferedReader(new FileReader(datei)); // Datei zum Schreiben öffnen try {PrintWriter daten = new PrintWriter("cdferg.txt"); boolean absch = true; String tmp = ""; int count = 0; while(tmp != null) { absch = true; boolean search = true; while(search == true) { tmp = cdf.readLine(); if(tmp != null) { Pattern p = Pattern.compile("[Unit\\d+.*]"); Matcher wm = p.matcher(tmp); if(wm.find()){search = false;} } else{search = false;} } while(absch == true) { tmp = cdf.readLine(); if(tmp != null) { Pattern w = Pattern.compile("Cell\\d+=(\\d+)\\s+(\\d+)\\s+\\w\\s+\\w+\\s+(.*)\\s+\\d+\\s+\\d+\\s+(\\w)\\s+(\\w)\\s+(\\w)\\s+(\\d+)\\s+.*"); Matcher mw = w.matcher(tmp); if(mw.find()) { count++; //System.out.println(count); daten.print(count+": "); daten.print("X="+mw.group(1)+" "); daten.print("Y="+mw.group(2)+" "); daten.print("QUAL="+mw.group(3)+" "); daten.print("ATOM="+mw.group(7)+" "); daten.print("CBASE="+mw.group(4)+" "); daten.print("PBASE="+mw.group(5)+" "); daten.print("TBASE="+mw.group(6)+" "); if(mw.group(4).equals(mw.group(5))&& mw.group(5).equals(mw.group(6))) { daten.print("MM"); cdfhm.put(mw.group(1)+ "_" +mw.group(2), mw.group(3)+ "\t\t"+mw.group(7)+"\t"+mw.group(4)+"\t"+mw.group(5)+"\t"+mw.group(6)+"\tMM"); } else { daten.print("PM"); cdfhm.put(mw.group(1)+ "_" +mw.group(2), mw.group(3)+"\t\t"+mw.group(7)+"\t"+mw.group(4)+"\t"+mw.group(5)+"\t"+mw.group(6)+"\tPM"); } daten.print("\n"); } else{absch = false;} } else{absch = false;} } } daten.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } public void buildout(String celdatei, String output) throws IOException { // CELErg zum Lesen öffnen BufferedReader cel = new BufferedReader(new FileReader(celdatei)); // Datei zum Schreiben öffnen try {PrintWriter daten = new PrintWriter(output); String celline = ""; boolean search = true; daten.println("X\tY\tMEAN\t\tQUAL\t\tATOM\tCBASE\tPBASE\tTBASE\tMM/PM\n"); while(celline != null) { celline = cel.readLine(); if(celline != null) { Pattern ce = Pattern.compile("\\d+:\\sX=(\\d+)\\sY=(\\d+)\\sMEAN=(\\d+\\.\\d)"); Matcher mce = ce.matcher(celline); mce.find(); String cex = mce.group(1), cey = mce.group(2), cemean = mce.group(3); // CDFErg zum Lesen öffnen // System.out.println(cex + " " + cey); String ausg = cdfhm.get(cex +"_"+ cey); if(ausg != null) { daten.println(cex +"\t"+ cey +"\t"+ cemean +"\t\t"+ ausg); } else{daten.println(cex +"\t"+ cey +"\t"+ cemean);} } } daten.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }