import java.awt.Component;
import java.io.*;
import java.io.DataInputStream;
import java.io.FileWriter;
import java.io.FileOutputStream;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.JFileChooser;
import java.util.*;
import java.util.Arrays;
/**
*
* Programm zum Öffnen von Dateien, deren Auswertung und Erzeugung einer Datei mit den
* Auswertungsergebnissen.
*
* @author edelman2
* @version 2.0 , 7.Juli 2004
*
*/
public class RBSucheAuto
{
private static String dateien, verzeichnis;
private static int kapazitaet, verz, dat;
private static Vector vektor = new Vector(100);
private static String[] suffix = { ".txt" }, nichtenthalten;
private static Vector files, datnamen, ungenutzt;
/**
* Method main - Startet die Auswertung.
* Ruft das Listfeld auf
* @param args
*/
public static void main(String args[])
{
vektor.clear();
vektor.add("");
dateien = " ";
Listfeld();
}
/**
* Method Listfeld - Erzeugt ein Listfeld in dem die Projekte, die ausgewertet werden können
* gezeigt werden..
*/
public static void Listfeld()
{
final JFrame frame = new JFrame("Liste der Auswählbaren Dateien");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final String data[] =
{
"Ende",
"D:\\wsad\\TrimzahlenWeb",
"D:\\wsad\\Michael",
"D:\\wsad",
"D:\\wsad\\Heiko1",
"D:\\wsad\\RBTest" };
final JList liste = new JList(data);
liste.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
if (e.getValueIsAdjusting())
{
System.out.println(
"new Value is " + liste.getSelectedValue());
if (liste.getSelectedIndex() == -1)
{
System.exit(0);
}
if (liste.getSelectedIndex() >= 0)
{
Object obj = liste.getSelectedValue();
frame.setVisible(false);
verzeichnis = obj.toString();
datnamen = DateiSuche(verzeichnis, suffix);
String namen = datnamen.toString();
File[] datname =
(File[]) datnamen.toArray(
new File[datnamen.size()]);
for (int i = 0; i < datname.length; i++)
{
//Start der eigentlichen Analyse
StreamOeffnen(
datname[i].getAbsolutePath(),
datname[i].getName());
}
System.exit(0);
}
}
}
});
frame.getContentPane().add(liste);
frame.pack();
frame.setVisible(true);
}
/**
* Method StreamOeffnen - öffnet einen Stream zu der Datei, deren Pfad übergeben wird.
* @param datei - String (Pfad der Datei, die gelesen werden soll)
* @param name - String (Dateiname ohne Pfad)
*/
public static void StreamOeffnen(String datei, String name)
{
try
{
//Erhält von der Main-Methode die zu analysierende Dateibezeichnung
String datname = datei;
//Öffnen der Streams
FileInputStream indat = new FileInputStream(datname);
InputStreamReader instream = new InputStreamReader(indat);
BufferedReader stream = new BufferedReader(instream);
//Übergabe zur Streamauswertung
StreamLesen(stream, name);
//Beenden der Streams
indat.close();
instream.close();
stream.close();
} catch (Exception e)
{
System.out.println("Fehler in Methode StreamOeffnen");
}
}
/**
* Method StreamLesen - ließt den übergebenen Stream in einen Vektor ein.
* @param file - BufferedReader
* @param datei - String
*/
public static void StreamLesen(BufferedReader file, String datei)
{
try
{
String ausgabe = "";
String zeile;
String ziffern;
String[] zeilen;
int count = 1;
//Ausgabe in der Konsole
System.out.println(datei);
//Schleife, die die Datei Zeilenweise erfasst
while ((zeile = file.readLine()) != null)
{
int schleife = zeile.indexOf("rb.getString(".msh);
int anfang = 0;
int temp = 0;
//Schleife, die die Zeilen durchsucht
while (schleife >= 0)
{
if (temp == 0)
{
temp = schleife;
}
int beginn = zeile.indexOf("rb.getString(", temp);
temp = beginn + 1;
if (beginn >= 0)
{
anfang = zeile.indexOf("", beginn);
} else
{
schleife = -1;
}
int ende = anfang + 5;
//Auslesen der gewünschten Informationen
if (ende >= beginn)
{
if (beginn >= 0)
{
ende = zeile.indexOf(")", beginn);
ziffern = zeile.substring(anfang + 1, ende);
Integer Iziffern =
new Integer(Integer.parseInt(ziffern));
int pos;
//Ausgabe in der Konsole
ausgabe = ziffern + " " + datei;
//Befüllt den Vektor mit den Werten aus der Datei
//inklusive der richtigen Dateinamen
if ((pos = vektor.indexOf(Iziffern)) >= 0)
{
Object obj = vektor.get(pos + 1);
String wert = obj.toString();
if (wert.indexOf(datei) < 0)
{
Object object = vektor.get(pos + 1);
String einfueg =
datei + ", " + object.toString();
vektor.set(pos + 1, einfueg);
}
} else
{
vektor.add(Iziffern);
vektor.add(datei);
}
//Ausgabe in der Konsole
System.out.println(ausgabe);
}
}
}
count++;
}
zeilen = ErstellArray(vektor);
StreamSchreiben(zeilen);
} catch (Exception e)
{
System.out.println("Fehler in Methode StreamLesen");
}
}
/**
* Method ErstellArray - verarbeitet einen Vektor zu einem Array.
* Der Vektor wird sortiert und die Werte einheitlich formatiert.
* @param vektor - Ein Vektor
* @return String[]
*/
public static String[] ErstellArray(Vector vektor)
{
Vector neu = new Vector(100);
ungenutzt = new Vector(100);
String temp1 = "", temp2 = "", satz = "";
for (int i = 1; i < vektor.size(); i++)
{
//Holt sich die Ziffernfolge aus dem Vektor
Object obj1 = vektor.get(i);
temp1 = obj1.toString();
i++;
//Macht die Ziffernfolgen wieder 4-stellig
for (int j = 0; j < temp1.length(); j++)
{
if (temp1.length() < 4)
{
temp1 = "0" + temp1;
}
}
//Holt sich die Dateinamen aus dem Vektor
Object obj2 = vektor.get(i);
temp2 = obj2.toString();
temp1.trim();
temp2.trim();
satz = temp1 + " " + temp2;
neu.add(satz);
ungenutzt.add(obj1);
}
kapazitaet = neu.size();
//Sortiert den Vektor
Collections.sort(neu);
Collections.sort(ungenutzt);
String[] vektorInhalt = new String[kapazitaet];
for (int i = 0; i < vektorInhalt.length; i++)
{
vektorInhalt[i] = neu.get(i).toString();
}
return vektorInhalt;
}
/**
* Method ErstellArray2.
* @param ungenutzt
*/
public static void ErstellArray2(Vector ungenutzt)
{
int kap = ungenutzt.size()-1;
int grwert =
Integer.parseInt(ungenutzt.get(kap).toString());
String[] vektor2 = new String[grwert];
Vector letzt = new Vector(100);
for (int i = 0; i < kap; i++)
{
int k = Integer.parseInt(ungenutzt.get(i).toString());
vektor2[k] = ungenutzt.get(i).toString();
}
for (int i = 0; i < vektor2.length; i++)
{
String temp;
if (vektor2[i] == null || vektor2[i] == "")
{
temp = "" + i;
//Macht die Ziffernfolgen wieder 4-stellig
for (int j = 0; j < temp.length(); j++)
{
if (temp.length() < 4)
{
temp = "0" + temp;
}
}
letzt.add(temp);
}
}
nichtenthalten = new String[letzt.size()];
for (int i = 0; i < nichtenthalten.length; i++)
{
nichtenthalten[i] = letzt.get(i).toString();
}
}
/**
* Method StreamSchreiben - Schreibt eine neue Datei mit den Ergebnissen.
* @param datei - String Array
*/
public static void StreamSchreiben(String[] datei)
{
try
{
String projekt =
verzeichnis.substring(verzeichnis.lastIndexOf("\") + 1);
if (projekt.equals("wsad"))
{
projekt = "AlleProjekte";
}
File test = new File("Ergebnis_" + projekt + ".html");
FileOutputStream test2 = new FileOutputStream(test);
OutputStreamWriter osw = new OutputStreamWriter(test2, "Cp1252");
ErstellArray2(ungenutzt);
String temp = ErstellHTML(datei);
osw.write(temp);
osw.close();
} catch (Exception e)
{
}
}}