package neatgui;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
/**
*
* @author
*/
public class Eingaben extends JPanel {
public DefaultTableModel model = new DefaultTableModel(); // Tabelle erzeugen
JTable table = new JTable(model); // View/Controller erzeugen
JLabel firma = new JLabel("Firmenname"); //Eingabe des Firmennamens
JTextField firma2 = new JTextField();
JLabel Container = new JLabel("Anzahl kleine Container"); //auswählen anz. Container
JComboBox container = new JComboBox(containers());
JLabel uhrzeit = new JLabel("Zeit"); //auswählen der Uhrzeit
String[] uhr = new String[]{"7:10", "7:30", "8:10", "8:30", "9:10", "10:10", "10:30",
"11:10", "12:10", "12:30", "13:10", "14:10", "14:30", "15:10",
"16:10", "16:30", "17:10", "18:10", "18:30", "19:10", "20:10",
"21:10", "21:30", "21:50", "22:10", "22:50"};
JComboBox zeiten = new JComboBox(uhr);
JButton best = new JButton("Bestätigen"); //Button um Daten aus GUI an Server zu übermitteln
JButton stats = new JButton("Status Abfragen"); // Button um Status abzufragen
JTextField id = new JTextField();
JTextArea stat = new JTextArea(5, 60);
JLabel buffer = new JLabel(); // buffer Label um GridLayout richtig darzustellen (keine ausgabe)
final int MAXCONT = 150;
public Eingaben() { //Konstruktor der klasse Eingaben
tabelle();
MyActionListener listener = new MyActionListener();
best.addActionListener(listener);
stats.addActionListener(listener);
setLayout(new GridLayout(7, 2));
container.setSize(50, 50);
add(firma);
add(firma2);
add(Container);
add(container);
add(uhrzeit);
add(zeiten);
add(buffer);
add(best);
}//end Konstruktor
public String[] containers() { // String auf maximale anzahl Container füllen um danach die ComboBox zu füllen
String[] anzContainer = new String[MAXCONT];
for (int i = 0; i < 150; i++) {
anzContainer[i] = "" + i;
}
return anzContainer;
} // end Methode
public void tabelle() { // Methode um Spalten Titel zu vergeben
String[] columnTitle = {"Transport ID",
"Ankunftszeit",
"Zug Nr.",
"Preis"};
model.setColumnIdentifiers(columnTitle);
} // end Methode
class MyActionListener implements ActionListener { // Klasse mit Actionlistener
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
if (button == best) {
request();
} else if (button == stats){
String data2 = new String();
data2 = "STATE;" + id.getText();
System.out.println(data2);
String returnValue = Eingaben.komm(data2);
stat.insert("\n"+returnValue,0);
}
}//end Methode
}//end Class
public void request(){
String data = new String();
String[] splitValue = new String[4];
data = firma2.getText();
if (pruefeName(data) == false) {
JOptionPane.showMessageDialog(null, "Der Firmenname darf kein ; oder : oder , enthalten!", "Ungültige Eingabe", JOptionPane.WARNING_MESSAGE);
} else {
String request = "REQUEST;" + data + ";" + container.getSelectedItem() + ";" + zeiten.getSelectedItem();
System.out.println(request);
String returnValue = komm(request);
splitValue = returnValue.split(";");
if (splitValue[0].equals("ERROR")) {
System.out.println(splitValue[1]);
String error = splitValue[1];
stat.insert("\n"+error,1);
} else {
insert();
model.fireTableDataChanged();
//Object[] test = new Object[]{"test1","test2"};
//model.setRowCount(MAXCONT);
//zeile.add(new Object[]{"Test", "13"});
//model.addRow(new Object[]{"Test", "13"});
//model.addRow(test)
}
}
}
public void insert() {
Object[] test = new Object[]{"test1","test2","test3","test4"};
model.addRow(test);
model.fireTableDataChanged();
System.out.println("insert wird aufgerufen");
}
public static String komm(String pRequest) { // Kommunikationsmethode um Verbindung mit Server aufzubauen und Daten austauschen
try {
Socket socket = new Socket("10.3.1.128", 5432);
// Socket mit In/Out-Stream verbinden
OutputStream os = socket.getOutputStream();
PrintWriter out = new PrintWriter(os);
InputStreamReader isr = new InputStreamReader(socket.getInputStream());
BufferedReader in = new BufferedReader(isr);
// Datenaustausch mit Server
out.println(pRequest); // senden
out.flush();
String receiveString = in.readLine(); // empfangen
System.out.println("empfangen: " + receiveString);
// Dem Server mitteilen, das Datenaustausch zu ende ist
out.println("exit"); // senden
out.flush();
// Verbindung schliessen
isr.close();
os.close();
socket.close();
return receiveString;
} catch (IOException h) {
System.out.println("Exception: " + h.toString());
}
return "Fehler";
}//end methode
public boolean pruefeName(String pName) { //Methode um zu Prüfen, ob ein ; oder ein , verwendet wurde..
if (pName.contains(";") || pName.contains(",") || pName.contains(":")) {
return false;
} else {
return true;
}
} // end methode
}