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.width2,
117         (dim.height - abounds.height2);
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 }