001 /*
002 *
003 * Datei: Durchlauf.java
004 *
005 * ---------------------------------
006 *
007 * Datum: 25.03.2004
008 * Autor: Simon Tiffert
009 * Version: 1.0
010 *
011 * ---------------------------------
012 *
013 * Änderungen:
014 * Simon Tiffert - 25.03.2004 - 11:16:11 - Initiale Version erstellt
015 *
016 */
017 package test;
018
019 import java.awt.BorderLayout;
020 import java.awt.Dimension;
021 import java.awt.Rectangle;
022 import java.awt.event.ActionEvent;
023 import java.awt.event.ActionListener;
024 import java.io.File;
025
026 import javax.swing.AbstractButton;
027 import javax.swing.BorderFactory;
028 import javax.swing.JButton;
029 import javax.swing.JFrame;
030 import javax.swing.JPanel;
031 import javax.swing.JScrollPane;
032 import javax.swing.JTextArea;
033
034 /**
035 * Klasse, die eine GUI bietet und dann durch die festgelegten
036 * Verzeichnisse mit Testdateien läuft.
037 *
038 * @version 1.0 25.03.2004
039 * @author Simon Tiffert
040 */
041 public class Durchlauf
042 {
043 // Verzeichnis in dem die Ordner mit Testdateien liegen
044 public static final String testVerzeichnis = new String(".");
045
046 // Pfad zum Programm
047 public static final String programmName =
048 new String("../Programm/programm.jar");
049
050 // TextArea, in die Logdaten geschrieben werden
051 static JTextArea t;
052
053 /**
054 * Main Funktion, die die GUI startet
055 * @param args
056 */
057 public static void main(String[] args)
058 {
059 // legt das GUI für Startbutton und Logdaten an
060 JFrame f = new JFrame("Automatischer Test");
061 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
062
063 // Panel mit Border für die Elemente
064 JPanel p = new JPanel(new BorderLayout());
065 p.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
066 f.getContentPane().add(p, BorderLayout.CENTER);
067
068 // Scrollpane mit vertikalem Scrollbalken
069 JScrollPane scroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
070 p.add(scroll,BorderLayout.CENTER);
071
072 // Textarea in Scrollpane
073 t = new JTextArea("",40,40);
074 scroll.setViewportView(t);
075
076 // Action Listener für Startbutton, es können mehrere Tests nacheinander
077 // mit der GUI gestartet werden
078 ActionListener al = new ActionListener()
079 {
080 public void actionPerformed(ActionEvent e)
081 {
082 String cmd = e.getActionCommand();
083
084 if (cmd.equals("Start"))
085 {
086 // Thread, damit die Anzeige in der Textarea realtime ist
087 (new Thread()
088 {
089 public void run()
090 {
091 durchlaufeVerzeichnis();
092 }
093 }).start();
094
095
096 }
097 }
098 };
099
100 // Button für den Programmstart
101 AbstractButton b;
102 JPanel buttonPanel = new JPanel();
103
104 buttonPanel.add(b = new JButton("Start"));
105 p.add(buttonPanel,BorderLayout.NORTH);
106 b.addActionListener(al);
107
108
109 // Größe und Position des Fensters
110 f.pack();
111
112 Dimension dim = f.getToolkit().getScreenSize();
113 Rectangle abounds = f.getBounds();
114
115 f.setLocation(
116 (dim.width - abounds.width) / 2,
117 (dim.height - abounds.height) / 2);
118
119
120 f.show();
121
122 }
123
124 /**
125 * Funktion, die die Verzeichnisse durchläuft
126 *
127 */
128 public static void durchlaufeVerzeichnis()
129 {
130 // Felder für Verzeichnisse und Dateien
131 File verzeichnisse[];
132 File dateien[];
133
134 verzeichnisse = new File(testVerzeichnis).listFiles();
135
136 t.append("Neuer Test \n");
137 t.append("*************\n");
138
139
140 // laufe über alle Verzeichnisse
141 for (int i = 0; i < verzeichnisse.length; i++)
142 {
143 // überprüfe auf Verzeichnisse
144 if ( verzeichnisse[i].isDirectory() )
145 {
146 t.append("\n"+verzeichnisse[i]+"\n");
147
148 // speicher die Dateien der Verzeichnisse
149 dateien = verzeichnisse[i].listFiles();
150 if ( dateien != null )
151 {
152 // Laufe über alle Dateien
153 for (int j = 0; j < dateien.length; j++)
154 {
155 // nehme die Dateien mit den Endungen .txt
156 if (dateien[j].toString().endsWith(".txt"))
157 {
158 if (!dateien[j].toString().endsWith("erg.txt"))
159 {
160 // Schreibe Name und Dauer in die Textarea
161 t.append(
162 " "
163 + dateien[j]
164 + " Dauer: "
165 + (Testfall
166 .doTest("java -jar " + programmName + " " + dateien[j]))
167 + " ms\n");
168 }
169 }
170 }
171 }
172 }
173 }
174 t.append("\n\n");
175
176 }
177
178 }
|