public class Controller {
private static String url;
private static DBAbfragen dbabfragen= new DBAbfragen();
private static String ip;
private static String bereich;
private static int ibereich;
private static String kp;
private static JFrame frame = new JFrame();
private static Seitenleiste seitenleiste;
private static GUI.Anmeldebildschirm anmeldebildschirm;
private static Abmeldebildschirm benutzerabmeldung= new Abmeldebildschirm();
private static Abmeldebildschirm2 benutzerabmeldung2= new Abmeldebildschirm2();
private static Wartebildschirm wartebildschirm= new Wartebildschirm();
private static Einstellungen einstellungen= new Einstellungen();
private static boolean bildschirmtastaturmodus;
private static Bildschirmtastatur tastatur= new Bildschirmtastatur();
private static Passwortchg passwortchg= new Passwortchg();
private static Prozedur procedure= new Prozedur();
private static String username;
private static boolean login= false;
private static int login_retries= 0;
private static int max_login_retries;
private static String prozessname;
private static String prozessno;
private static String owner;
private static String ownerno;
private static Connection conn;
private static AQListener listener;
private static Protokollierung protokoll = new Protokollierung();
private static AQRegister aqreg= new AQRegister();
private static AQqueuing aq= new AQqueuing();
private static AQSession aq_sess;
private static Greifanzeige greifanzeige= new Greifanzeige();
private static boolean greifanzeigeon= false;
private static String aufNr;
private static String posNr;
private static String tnr;
private static String hkl;
private static String af;
private static String lz;
private static String kdnr;
private static String bs_Dat;
private static int greifmenge;
private static int ursgreifmenge;
private static int korgreifmenge;
private static int ursrestmenge;
private static int korrestmenge;
private static int beschTeile;
private static int korbeschTeile;
public static void main(String[] args) {
try{
url = args[0];
}
catch(ArrayIndexOutOfBoundsException e){
e.printStackTrace();
System.exit(1);
}
try{
/**
* aufbau der Datenbankverbindung
*/
AQ_session.setConnectionData(url);
conn=AQ_session.getInstance();
else if(args[1].equals("TEST")) {
produktionsmodus = false;
if (args[2].equals("0")) {
bereich = "Ebene 2.0";
ibereich=0;
} else if (args[2].equals("1")) {
bereich = "Ebene 0.0";
ibereich=1;
} else if (args[2].equals("2")) {
bereich = "Ebene 5.90";
ibereich=2;
}
kp=args[3];
String[] resaufruf=new String[2];
resaufruf=dbabfragen.abfrageAufruftest(kp,ibereich);
if(resaufruf[0]!=null){
prozessname=resaufruf[0];
prozessno=resaufruf[0]+"NO";
ownerno=resaufruf[1]+"NO";
}
else{
System.exit(1);
}
}
else{
}catch(ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}
max_login_retries=dbabfragen.abfrageMaxRetries();
frame.setLayout(new BorderLayout());
seitenleiste=new Seitenleiste();
seitenleiste.getButF5().setEnable(false);
seitenleiste.getButF6().setEnable(false);
seitenleiste.getButF9().setEnable(false);
seitenleiste.setPreferredSize(new Dimension(150,700));
frame.add(seitenleiste,BorderLayout.EAST);
anmeldebildschirm= new GUI.Anmeldebildschirm();
anmeldebildschirm.getButBestatigen().setEnable(false);
frame.add(anmeldebildschirm,BorderLayout.CENTER);
frame.setSize(800, 800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final Controller cont=new Controller();
frame.setVisible(true);
frame.setLocation(dim.width/2-frame.getSize().width/2, dim.height/2-frame.getSize().height/2);
if(dbabfragen.abfragteClientInfo(prozessname)){
procedure.setClientInfo(prozessname);
}
else{
System.exit(0);
}
listener=new AQListener("AQ_Q");
try{
/**
* registrieren bei der Queue zum abholen
*/
aqreg.register(listener, prozessno);
aqreg.register(listener, prozesssy);
aq_sess=aq.createSession();
}catch(SQLException e){
System.exit(1);
}
/**
* für die Shortcuts
*/
Toolkit.getDefaultToolkit().getSystemEventQueue().push(new EventQueue(){
protected void dispatchEvent(AWTEvent event){
if(event instanceof KeyEvent){
KeyEvent keyEvent= (KeyEvent) event;
if(keyEvent.getID()== KeyEvent.KEY_PRESSED && (keyEvent).getKeyCode()==KeyEvent.VK_F12){
if(seitenleiste.getButF12().isEnabled()){
cont.f12pressed();
}
}
}
super.dispatchEvent(event);
}
});
anmeldebildschirm.getTextField().addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent arg0) {
anmeldebildschirm.getPasswordField().requestFocusInWindow();
}
@Override
public void focusGained(FocusEvent arg0) {
if(anmeldebildschirm.getTextField().getText().equals("")){
if(bildschirmtastaturmodus){
tastatur.Bildschirmtastatur_Full();
}
}
}
});
anmeldebildschirm.getTextField().addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseClicked(MouseEvent arg0) {
if(bildschirmtastaturmodus){
tastatur.Bildschirmtastatur_Full();
}
}
});
anmeldebildschirm.getPasswordField().addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
anmeldebildschirm.requestFocus();
}
@Override
public void focusGained(FocusEvent e) {
if(anmeldebildschirm.getPasswordField().getText().equals("")){
tastatur.Bildschirmtastatur_Full();
}
}
});
anmeldebildschirm.getPasswordField().addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
tastatur.Bildschirmtastatur_Full();
}
});
anmeldebildschirm.getTextField().getDocument().addDocumentListener(new DocumentListener() {
private void check(){
boolean b1=!(anmeldebildschirm.getTextField().getText().equals(""));
boolean b2=!(anmeldebildschirm.getPasswordField().getPassword().length==0);
if(b1&&b2){
anmeldebildschirm.getButBestatigen().setEnable(true);
}
}
private void checkleer(){
boolean b1=!(anmeldebildschirm.getTextField().getText().equals(""));
boolean b2=!(anmeldebildschirm.getPasswordField().getPassword().length==0);
if(b1&&b2){
anmeldebildschirm.getButBestatigen().setEnable(true);
}
else{
anmeldebildschirm.getButBestatigen().setEnable(false);
}
}
@Override
public void removeUpdate(DocumentEvent arg0) {
checkleer();
}
@Override
public void insertUpdate(DocumentEvent arg0) {
check();
}
@Override
public void changedUpdate(DocumentEvent arg0) {
check();
}
});
/**
* Wartet auf Eingabe von Benutztername und Passwort bis Bestätigenbutton enabled wird
*/
anmeldebildschirm.getPasswordField().getDocument().addDocumentListener(new DocumentListener() {
private void check(){
boolean b1=!(anmeldebildschirm.getTextField().getText().equals(""));
boolean b2=!(anmeldebildschirm.getPasswordField().getPassword().length==0);
if(b1&&b2){
anmeldebildschirm.getButBestatigen().setEnable(true);
}
}
private void checkleer(){
boolean b1=!(anmeldebildschirm.getTextField().getText().equals(""));
boolean b2=!(anmeldebildschirm.getPasswordField().getPassword().length==0);
if(b1&&b2){
anmeldebildschirm.getButBestatigen().setEnable(true);
}
else{
anmeldebildschirm.getButBestatigen().setEnable(false);
}
}
@Override
public void removeUpdate(DocumentEvent arg0) {
checkleer();
}
@Override
public void insertUpdate(DocumentEvent arg0) {
check();
}
@Override
public void changedUpdate(DocumentEvent arg0) {
check();
}
});
anmeldebildschirm.getButBestatigen().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
username=anmeldebildschirm.getTextField().getText();
char[] cpwd=anmeldebildschirm.getPasswordField().getPassword();
String spwd="";
for(int i=0;i<cpwd.length;i++){
spwd=spwd+""+cpwd[i];
}
String[] valide=new String[2];
try {
valide = procedure.callValidieren( username, spwd);
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
}
if(valide[0].equals("0")){
seitenleiste.getBut_pwch().setText(username);
login=true;
} catch (SQLException e1) {
e1.printStackTrace();
} catch (AQException e1) {
e1.printStackTrace();
}
frame.remove(anmeldebildschirm);
frame.add(wartebildschirm, BorderLayout.CENTER);
frame.pack();
frame.setSize(800, 700);
}
}
else{
login_retries++;
if(login_retries>=max_login_retries){
System.exit(1);
}
int retries_left=max_login_retries-login_retries;
anmeldebildschirm.getButBestatigen().setEnable(false);
}
}
});
}
}
});
/**
* Wenn der einstellungs-Button gedrück wird
*/
seitenleiste.getButF12().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
cont.f12pressed();
}
});
benutzerabmeldung.getButAbbrechen().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
benutzerabmeldung.setVisible(false);
seitenleiste.getButF12().setEnable(true);
}
});
benutzerabmeldung.getButAbmelden().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
benutzerabmeldung.getButAbmelden().setEnable(false);
String[] abm=new String[2];
if(abm[1]!=null){
/**
* trennt den String an "<" und dann an ">" übrig bleibt eine Zahl
*/
String[] retcode1=abm[1].split(Pattern.quote("<"));
String[] retcode2=retcode1[2].split(Pattern.quote(">"));
if(retcode2[0].equals("1")){
frame.remove(anmeldebildschirm);
frame.add(wartebildschirm, BorderLayout.CENTER);
frame.pack();
frame.repaint();
cont.bildschirmeinstellen();
wartebildschirm.getLblMSG().setText("Benutzer "+username+" erfolgreich abgemeldet");
seitenleiste.getButF12().setEnable(false);
seitenleiste.getBut_pwch().setForeground(Color.red);
login=false;
}
else{
benutzerabmeldung.setVisible(false);
benutzerabmeldung2.setVisible(true);
}
}
}
});
benutzerabmeldung.getButBenutzerwechsel().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
cont.bedienerwechsel();
seitenleiste.getBut_pwch().setText("");
seitenleiste.getButF12().setEnable(true);
benutzerabmeldung.setVisible(false);
login=false;
}
});
benutzerabmeldung2.getButAbbrechen().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
benutzerabmeldung2.setVisible(false);
seitenleiste.getButF12().setEnable(true);
}
});
benutzerabmeldung2.getButBest().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
benutzerabmeldung2.setVisible(false);
}
});
greifanzeige.getTextrestmenge().getDocument().addDocumentListener( new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent arg0) {
}
@Override
public void insertUpdate(DocumentEvent arg0) {
checkrestmenge();
}
@Override
public void changedUpdate(DocumentEvent arg0) {
checkrestmenge();
}
private void checkrestmenge(){
if(isNumeric(greifanzeige.getGreifanzeigeMitteKorrektur().getTextrestmenge().getText())){
cont.pruefeBehaltervoll();
}
else{
greifanzeige.getTextrestmenge().setText(String.valueOf(restmenge));;
}
}
});
greifanzeige.getTextgegmeng().getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent arg0) {
}
@Override
public void insertUpdate(DocumentEvent arg0) {
checkgegmenge();
}
@Override
public void changedUpdate(DocumentEvent arg0) {
checkgegmenge();
}
private void checkgegmenge(){
if(isNumeric(greifanzeige.getTextgegmeng().getText())){
cont.pruefeBehaltervoll();
}
else{
}
cont.berechneRestmengeNeu();
}
});
greifanzeige.getTextbesteil().getDocument().addDocumentListener(new DocumentListener() {
private void checkbesteil(){
if(isNumeric(greifanzeige.getTextgegmeng().getText())){
cont.pruefeBehaltervoll();
}
else{
greifanzeige.getTextbesteil().setText(String.valueOf(beschTeile));
}
cont.berechneRestmengeNeu();
}
@Override
public void removeUpdate(DocumentEvent arg0) {
}
@Override
public void insertUpdate(DocumentEvent arg0) {
checkbesteil();
}
@Override
public void changedUpdate(DocumentEvent arg0) {
checkbesteil();
}
});
greifanzeige.getButBest().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
greifmenge=Integer.valueOf(greifanzeige.getTextgegmeng().getText());
beschTeile=Integer.valueOf(greifanzeige.getTextbesteil().getText());
restmenge=Integer.valueOf(greifanzeige.getTextrestmenge().getText());
behMenge=restmenge+greifmenge;
kbbool = greifanzeige.getGreifanzeigeMitteKorrektur().getTogButBehvoll().isSelected();
if(kbbool){
kb_status=3;
}
else{
kb_status=2;
}
if(behMenge==0){
nulldurchgang=true;
}
behAnkunft=behMenge;
if(((double)minfuellgrad/(double)100)<(((double)behMenge+(double)greifmenge))/(double)vollmenge){
fuellgrad=true;
}
else{
fuellgrad=false;
}
cont.korregiereWerte();
greifanzeige.wechselzuNormal();
frame.pack();
}
});
/**
* per Mausklick geht falls die option gewählt ist das Bildschirmnumpad auf
*/
greifanzeige.getTextgegmeng().addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
if(bildschirmtastaturmodus){
tastatur.BildschirmNumpad();
}
}
});
greifanzeige.getTextbesteil().addMouseListener( new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
if(bildschirmtastaturmodus){
tastatur.BildschirmNumpad();
}
}
});
greifanzeige.getTextrestmenge().addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
if(bildschirmtastaturmodus){
tastatur.BildschirmNumpad();
}
}
});
}
/**
* prüft ob die Vollmenge kleiner der greifmenge,beschädigeteTeile und Restmenge ist
*/
public void pruefeBehaltervoll() {
if((!greifanzeige.getTextgegmeng().getText().equals(""))&&(!greifanzeige.getTextbesteil().getText().equals(""))&&(!greifanzeigegetTextrestmenge().getText().equals(""))){
korgreifmenge=Integer.valueOf(greifanzeige.getTextgegmeng().getText());
korbeschTeile=Integer.valueOf(greifanzeige.getTextbesteil().getText());
korrestmenge=Integer.valueOf(greifanzeige.getTextrestmenge().getText());
if(vollmenge<(korgreifmenge+korbeschTeile+korrestmenge)){
//Fehlermeldung
}
}
}
Runnable entfernealteneintrag=new Runnable() {
@Override
public void run() {
try{
greifanzeige.getTextrestmenge().getDocument().remove(0, greifanzeige.getGreifanzeigeMitteKorrektur().getTextrestmenge().getDocument().getLength());
greifanzeige.getTextrestmenge().getDocument().insertString(0, String.valueOf(vorchgrestmenge), null);
greifanzeige.getTextgegmeng().getDocument().remove(0, greifanzeige.getTextgegmeng().getDocument().getLength());
greifanzeige.getTextgegmeng().getDocument().insertString(0, String.valueOf(vorchggreifmenge), null);
greifanzeige.getTextbesteil().getDocument().remove(0, greifanzeige.getTextbesteil().getDocument().getLength());
greifanzeige.getTextbesteil().getDocument().insertString(0, String.valueOf(vorchgbeschTeile), null);
}catch(BadLocationException e){
e.printStackTrace();
}
}
};
/**
* Berechnet die Restmenge neu aus Behälterinhalt beschädigte Teile und Gegriffene Menge
*/
public void berechneRestmengeNeu(){
if((!greifanzeige.getTextgegmeng().getText().equals(""))&&(!greifanzeige.getTextbesteil().getText().equals(""))&&(!greifanzeige.getTextrestmenge().getText().equals(""))){
//Prüfe ob die Felder leer sind wenn ja findet keine Berechung statt
restmenge=behalterinhalt-Integer.valueOf(greifanzeige.getTextbesteil().getText())-Integer.valueOf(greifanzeige.getGreifanzeigeMitteKorrektur().getTextgegmeng().getText());
if(restmenge<0){
SwingUtilities.invokeLater(entfernealteneintrag);
}
else{
greifanzeige.getTextrestmenge().setText(String.valueOf(restmenge));
vorchgrestmenge=restmenge;
vorchgbeschTeile=Integer.valueOf(greifanzeige.getTextbesteil().getText());
vorchggreifmenge=Integer.valueOf(greifanzeige.getTextgegmeng().getText());
}
}
}
public void f6pressed() {
greifanzeige.wechselzuKorrektur();
bildschirmeinstellen();
tragewerteinKorrektur();
greifanzeige.getLblAltegegMenge().setText("max Menge:"+String.valueOf(ursgreifmenge));
try {
aq.sendQueue(aq_sess,prozessno, ownerno, "8", "Station=<"+kp+">");
} catch (SQLException | AQException e) {
e.printStackTrace();
}
frame.pack();
}
/**
* Sendet den CODE der den Bedienerwechsel einläutet
*/
private void bedienerwechsel(){
try {
aq.sendQueue(aq_sess,prozessno, ownerno, "8", "Station=<"+kp+">");
} catch (SQLException | AQException e1) {
e1.printStackTrace();
}
}
public static boolean isNumeric(String str)
{
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition pos = new ParsePosition(0);
formatter.parse(str, pos);
return str.length() == pos.getIndex();
}
public void korregiereWerte(){
greifanzeige.getTxtGreifmenge().setText(String.valueOf(greifmenge));
greifanzeige.getTxtankunft().setText(String.valueOf(behAnkunft));
greifanzeige.getTxtRest().setText(String.valueOf(behMenge));
}
public void zerlegeString(String deap) throws ParseException, NumberFormatException, SQLException{
String[] retcode1=deap.split(Pattern.quote("<"));
String haufNr=retcode1[1].split(Pattern.quote(">"))[0];
haufNr=fuhrendeNullenauffullen(haufNr, 8);
aufNr=haufNr.substring(0, 3)+" "+haufNr.substring(3, 6)+" "+haufNr.substring(6,8);
posNr=retcode1[2].split(Pattern.quote(">"))[0];
String htnr=retcode1[3].split(Pattern.quote(">"))[0];
tnr=htnr.split(Pattern.quote("]"))[1];
String hhkl=retcode1[4].split(Pattern.quote(">"))[0];
hkl=hhkl.split(Pattern.quote("]"))[1];
lz=retcode1[6].split(Pattern.quote(">"))[0];
String hkdnr=retcode1[7].split(Pattern.quote(">"))[0];
hkdnr=fuhrendeNullenauffullen(hkdnr, 8);
kdnr=hkdnr.substring(0, 3)+" "+hkdnr.substring(3,6)+" "+hkdnr.substring(6, 8);
String hbs_Dat=retcode1[8].split(Pattern.quote(">"))[0];
bs_Dat=hbs_Dat.split(Pattern.quote("]"))[1];
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ddMMyyyyHHmm");
Date date=simpleDateFormat.parse(bs_Dat);
restmenge=behMenge;
ursrestmenge=restmenge;
behalterinhalt=restmenge+greifmenge;
kb_status= 2;
kbbool=false;
beschTeile=0;
}
/**
* Trägt die werte der Variablen in die Gui von Greifanzeigenormal ein
*/
public void trageWerteinGreifanzeige(){
greifanzeige.getTxtAufNr().setText(aufNr);
greifanzeige.getTxtAf().setText(af);
greifanzeige.getTxtBs_Dat().setText(bs_Dat);
greifanzeige.getTxtZielLhmid().setText(zielLhmId);
greifanzeige.getTxtTnr().setText(tnr);
}
public void tragewerteinKorrektur(){
vorchggreifmenge=greifmenge;
vorchgbeschTeile=beschTeile;
vorchgrestmenge=restmenge;
greifanzeige.getTextgegmeng().setText(String.valueOf(greifmenge));
greifanzeige.setBehvoll(kbbool);
greifanzeige.getTextbesteil().setText(String.valueOf(beschTeile));
greifanzeige.getTextrestmenge().setText(String.valueOf(restmenge));
}
public String fuhrendeNullenauffullen(String string,int stellen){
while (string.length() < stellen) {
string = "0" + string;
}
return string;
}
public void bildschirmeinstellen(){
if(produktionsmodus==false){
frame.setSize(800, 700);
}
else{
frame.getContentPane().setPreferredSize( Toolkit.getDefaultToolkit().getScreenSize());
}
}
}