package netz;
import java.awt.Color;
import java.awt.HeadlessException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import com.sun.corba.se.impl.orbutil.LogKeywords;
import produkte.Produkt;
import schnittstellen.DatenbankZugriff;
public class ServerVerbindung implements Runnable {
private Socket zumServer = null;
private Thread leseThread = null;
private JMenuItem meServerVerbindung = null;
private JTextPane melogKonsole = null;
private Document logDokument = null;
private SimpleAttributeSet schrift = null;
private InetAddress lokal = null;
private String nachrichtenHistorie = null;
private Produkt meAktProdukt = null;
private int port;
private int vectorGroesse = -1;
public ServerVerbindung(JMenuItem serverVerbindung, Produkt aktProdukt, JTextPane logKonsole) {
this.meServerVerbindung = serverVerbindung;
this.meAktProdukt = aktProdukt;
this.melogKonsole = logKonsole;
}
public void verbindungAufbauen() {
String sqlBefehl = "SELECT hostname FROM Produkt WHERE pnr = " + meAktProdukt.getMePnr();
DatenbankZugriff datenbankZugriff = new DatenbankZugriff();
datenbankZugriff.getProperties();
datenbankZugriff.verbindungHerstellen();
ResultSet sqlResult = datenbankZugriff.datenHolen(sqlBefehl);
try {
sqlResult.next();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (sqlResult.getString("hostname").length() != 0) {
System.out.println(zumServer + " ......................................................");
System.out.println("Verbindung zum Server sollte stehen....");
//JOptionPane.showMessageDialog(null, "Connecting to server: \"" + lokal.toString() + ":" + port + "\"", "Information",
// JOptionPane.INFORMATION_MESSAGE);
melogKonsole.setCaretPosition(melogKonsole.getDocument().getLength());
melogKonsole.setEditable(false);
melogKonsole.setForeground(Color.RED);
logDokument = melogKonsole.getDocument();
meServerVerbindung.setEnabled(false);
leseThread = new Thread(this);
leseThread.start();
}
else {
JOptionPane.showMessageDialog(null, "No server is listening", "Error", JOptionPane.ERROR_MESSAGE);
meServerVerbindung.setEnabled(true);
}
} catch (HeadlessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() {
while(true) {
try {
try {
lokal = InetAddress.getByName(meAktProdukt.getMeHostname());
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
port = 40000 + meAktProdukt.getMePnr();
try {
zumServer = new Socket(lokal, port);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(zumServer);
System.out.println("Anfang");
System.out.println(zumServer);
System.out.println(zumServer);
System.out.println("Vor Vector holen");
System.out.println(zumServer);
ObjectInputStream lesen = new ObjectInputStream(zumServer.getInputStream());
//nachrichtenHistorie = new Vector();
nachrichtenHistorie = (String) lesen.readObject();
System.out.println("-----------------------------------------------------------");
//melogKonsole.setText("");
//System.out.println(nachrichtenHistorie.size() + " Vector size");
System.out.println(vectorGroesse + " iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
//if (nachrichtenHistorie.size() > vectorGroesse) {
melogKonsole.setText("");
//for (int i = 0; i < nachrichtenHistorie.size(); i++) {
//String aktNachricht = (String) nachrichtenHistorie.get(i);
//Nachricht aktNachricht = (Nachricht) nachrichtenHistorie.get(i);
System.out.println(nachrichtenHistorie);
schrift = new SimpleAttributeSet();
//tyleConstants.setForeground(schrift, aktNachricht.getFarbe());
StyleConstants.setFontSize(schrift, 12);
StyleConstants.setBold(schrift, true);
logDokument.insertString(logDokument.getLength(), nachrichtenHistorie.toString() + "\n", schrift);
melogKonsole.setCaretPosition(melogKonsole.getDocument().getLength());
//}
//vectorGroesse = nachrichtenHistorie.size();
//zumServer.setSoLinger(true, 0);
System.out.println(lesen);
System.out.println("ERster Durchgangöööööööööööööööööööööööööööööööööööööööööööö");
//}
lesen.close();
zumServer.close();
} catch (BadLocationException e)
{
e.printStackTrace();
}
catch (Exception e) {
//e.printStackTrace();
System.out.println(zumServer);
System.out.println("111111111111111111111111111111111111111111111");
JOptionPane.showMessageDialog(null, "Connection To Server Lost", "Error", JOptionPane.ERROR_MESSAGE);
meServerVerbindung.setEnabled(true);
zumServer = null;
leseThread = null;
break;
}
}
}
}