Package erki.talk.clients.erki.event

Examples of erki.talk.clients.erki.event.OutputTextEvent


                                } else {
                                    Logger.warning(Controller.this, "No one "
                                            + "observes "
                                            + event.getClass().getSimpleName()
                                            + "s!");
                                    dispatchEvent(new OutputTextEvent(
                                            "No one observes "
                                                    + event.getClass()
                                                            .getSimpleName()
                                                    + "s!", Formatter
                                                    .getWarningFormat()));
View Full Code Here


                try {
                    port = Integer
                            .parseInt(cmd.substring(cmd.indexOf(' ') + 1));
                } catch (NumberFormatException e) {
                    Controller.getInstance().dispatchEvent(
                            new OutputTextEvent(Localizor.getInstance().get(
                                    "INVALID_PORT_NUMBER"), Formatter
                                    .getErrorFormat()));
                    return;
                }
               
            } else {
                host = cmd;
                port = 23;
            }
           
            Controller.getInstance()
                    .dispatchEvent(new ConnectEvent(host, port));
            return;
        }
       
        if (event.getText().toLowerCase().equals("/connect")) {
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get(
                            "NO_HOST_AND_PORT"), Formatter.getErrorFormat()));
            return;
        }
       
        if (event.getText().toLowerCase().equals("/disconnect")) {
            Controller.getInstance().dispatchEvent(new DisconnectEvent());
            return;
        }
       
        if (event.getText().toLowerCase().startsWith("/quit ")) {
            Controller.getInstance()
                    .dispatchEvent(
                            new QuitEvent(event.getText().substring(
                                    "/quit ".length())));
            return;
        }
       
        if (event.getText().toLowerCase().equals("/quit")) {
            Controller.getInstance().dispatchEvent(new QuitEvent());
            return;
        }
       
        if (event.getText().toLowerCase().equals("/encrypt")) {
            Controller.getInstance().dispatchEvent(new StartEncryptionEvent());
            return;
        }
       
        if (event.getText().toLowerCase().equals("/plain")) {
            Controller.getInstance().dispatchEvent(new StartPlainEvent());
            return;
        }
       
        String textToSend = event.getText();
       
        if (textToSend.startsWith("/")) {
            textToSend = textToSend.substring(1);
        } else {
            textToSend = "TEXT " + textToSend;
        }
       
        if (!Connection.send(textToSend)) {
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get(
                            "NO_CONNECTION"), Formatter.getErrorFormat()));
        }
    }
View Full Code Here

    private Connection(final String host, final int port)
            throws UnknownHostException, IOException {
        Logger.info(this, "Trying to connect to »" + host + "« on port " + port
                + ".");
        Controller.getInstance().dispatchEvent(
                new OutputTextEvent(Localizor.getInstance().get("TRY_CONNECT",
                        host, "" + port), Formatter.getInfoFormat()));
       
        // Start the ServerInputParser (if it's not already started).
        ServerInputParser.start();
        socket = new Socket(host, port);
        final BufferedReader socketIn = new BufferedReader(
                new InputStreamReader(socket.getInputStream(), "UTF-8"));
        socketOut = new PrintWriter(new OutputStreamWriter(socket
                .getOutputStream(), "UTF-8"), true);
       
        Logger.info(this, "Connection established.");
        Controller.getInstance().dispatchEvent(
                new OutputTextEvent(Localizor.getInstance().get(
                        "CONNECTION_ESTABLISHED"), Formatter.getInfoFormat()));
       
        // Now as a connection has been established we have to listen for
        // QuitEvents etc.
        registerEventObservers();
       
        socketOut.println("PONG");
        socketOut.println("NICK " + Controller.getNick());
       
        // Quite a hack ...
        // This line is »PING«
        String line = socketIn.readLine();
        // This line contains either the NICKINUSE or something else.
        line = socketIn.readLine();
       
        if (line.startsWith("NICKINUSE")) {
            socketOut.println("NICK " + Controller.getAlternateNick());
        } else {
            Controller.getInstance().dispatchEvent(
                    new ReceivedLineFromServerEvent(line));
        }
       
        Logger.info(this, "Requesting user list.");
        Controller.getInstance().dispatchEvent(
                new OutputTextEvent(Localizor.getInstance().get(
                        "REQUEST_USER_LIST"), Formatter.getInfoFormat()));
        socketOut.println("LIST");
       
        // Start ping thread that checks that the server is alive.
        pingThread = new Thread("PingThread") {
           
            @Override
            public void run() {
                super.run();
               
                EventObserver<PongEvent> pongObserver = new EventObserver<PongEvent>() {
                   
                    @Override
                    public void inform(PongEvent event) {
                        // Do nothing as we know that the connection is alive.
                    }
                };
               
                Controller.getInstance()
                        .register(PongEvent.class, pongObserver);
               
                while (!killed) {
                    send("PING");
                   
                    try {
                        Thread.sleep(60000);
                    } catch (InterruptedException e) {
                        // It doesn not matter if we check too often.
                    }
                }
               
                Controller.getInstance().deregister(PongEvent.class,
                        pongObserver);
            }
           
        };
       
        pingThread.start();
       
        // Start new thread that reads from socket in background.
        new Thread("ReadServerThread") {
           
            @Override
            public void run() {
                super.run();
                String line;
               
                try {
                   
                    while ((line = socketIn.readLine()) != null) {
                        String decLine = line;
                       
                        synchronized (cryptoLock) {
                           
                            if (crypto != null) {
                               
                                try {
                                    Logger.debug(Connection.class, "Trying to "
                                            + "decrypt »" + line + "«.");
                                    decLine = crypto.decrypt(line);
                                    Logger.debug(Connection.class, "Text "
                                            + "decrypted.");
                                } catch (IllegalBlockSizeException e) {
                                    Logger.error(Connection.class, "A fatal "
                                            + "error occurred while "
                                            + "decrypting ("
                                            + e.getLocalizedMessage() + ")!");
                                    Controller.getInstance().dispatchEvent(
                                            new QuitEvent());
                                    return;
                                } catch (BadPaddingException e) {
                                    Logger.error(Connection.class, "A fatal "
                                            + "error occurred while "
                                            + "decrypting ("
                                            + e.getLocalizedMessage() + ")!");
                                    Controller.getInstance().dispatchEvent(
                                            new QuitEvent());
                                    return;
                                }
                            }
                        }
                       
                        Controller.getInstance().dispatchEvent(
                                new ReceivedLineFromServerEvent(decLine));
                    }
                   
                } catch (IOException e) {
                    deregisterEventObservers();
                    connection = null;
                    Controller.getInstance().dispatchEvent(
                            new OutputTextEvent(Localizor.getInstance().get(
                                    "ERROR_WHILE_READING",
                                    e.getLocalizedMessage()), Formatter
                                    .getErrorFormat()));
                    Logger.error(this, e);
                }
               
                deregisterEventObservers();
                connection = null;
                Logger.error(Connection.this, "Connection to server lost!");
                Controller.getInstance()
                        .dispatchEvent(
                                new OutputTextEvent(Localizor.getInstance()
                                        .get("LOST_CONNECTION"), Formatter
                                        .getErrorFormat()));
               
                // Terminate application if everything just waited for the
                // connection to finish.
View Full Code Here

            connection = new Connection(host, port);
        } catch (UnknownHostException e) {
            connection.deregisterEventObservers();
            connection = null;
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get(
                            "LOOKUP_ERROR", host), Formatter.getErrorFormat()));
            Logger.error(Connection.class, e);
        } catch (IOException e) {
            connection.deregisterEventObservers();
            connection = null;
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get(
                            "ERROR_AT_OPENING", host, "" + port,
                            e.getLocalizedMessage()), Formatter
                            .getErrorFormat()));
            Logger.error(Connection.class, e);
        }
View Full Code Here

   
    private void parse(String line) {
       
        if (line.toUpperCase().equals("AUTHED")) {
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get("AUTHED"),
                            Formatter.getInfoFormat()));
            return;
        }
       
        if (line.toUpperCase().equals("BEGINUSERS")) {
            userList = new LinkedList<User>();
            return;
        }
       
        if (line.toUpperCase().equals("DEREGISTERED")) {
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get(
                            "DEREGISTERED"), Formatter.getInfoFormat()));
            return;
        }
       
        if (line.toUpperCase().equals("ENDUSERS")) {
            Controller.getInstance().dispatchEvent(
                    new UserListReceivedEvent(new LinkedList<User>(userList)));
            return;
        }
       
        if (line.toUpperCase().startsWith("ENCRYPT ")) {
            Controller.getInstance().dispatchEvent(
                    new CompleteEncryptionEvent(line.substring("ENCRYPT "
                            .length())));
            return;
        }
       
        if (line.toUpperCase().startsWith("ERROR ")) {
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(line.substring("ERROR ".length()),
                            Formatter.getServerErrorFormat()));
            return;
        }
       
        if (line.toUpperCase().startsWith("INDIRECT ")) {
            String user = line.substring("INDIRECT ".length(), line
                    .indexOf(':'));
            String text = line.substring(line.indexOf(':') + 2);
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(user + " " + text));
            return;
        }
       
        if (line.toUpperCase().startsWith("INFO ")) {
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(line.substring("INFO ".length()),
                            Formatter.getInfoFormat()));
            return;
        }
       
        if (line.toUpperCase().startsWith("ISAUTHED ")) {
            String user = line.substring("ISAUTHED ".length(), line
                    .indexOf(':'));
            String bool = line.substring(line.indexOf(':') + 2);
           
            if (bool.toUpperCase().equals("TRUE")) {
                Controller.getInstance().dispatchEvent(
                        new AuthedEvent(user, true));
                return;
            } else if (bool.toUpperCase().equals("FALSE")) {
                Controller.getInstance().dispatchEvent(
                        new AuthedEvent(user, false));
                return;
            }
        }
       
        if (line.toUpperCase().startsWith("ISENCRYPTED ")) {
            String user = line.substring("ISENCRYPTED ".length(), line
                    .indexOf(':'));
            String bool = line.substring(line.indexOf(':') + 2);
           
            if (bool.toUpperCase().equals("TRUE")) {
                Controller.getInstance().dispatchEvent(
                        new EncryptedEvent(user, true));
                return;
            } else if (bool.toUpperCase().equals("FALSE")) {
                Controller.getInstance().dispatchEvent(
                        new EncryptedEvent(user, false));
                return;
            }
        }
       
        if (line.toUpperCase().startsWith("JOIN ")) {
            Controller.getInstance().dispatchEvent(
                    new UserJoinedEvent(line.substring("JOIN ".length())));
            return;
        }
       
        if (line.toUpperCase().startsWith("NEWNICK ")) {
            String oldNick = line.substring("NEWNICK ".length(), line
                    .indexOf(':'));
            String newNick = line.substring(line.indexOf(':') + 2);
            Controller.getInstance().dispatchEvent(
                    new NickChangeEvent(oldNick, newNick));
            return;
        }
       
        if (line.toUpperCase().startsWith("NEWTOPIC ")) {
            String user = line.substring("NEWTOPIC ".length(), line
                    .indexOf(':'));
            String topic = line.substring(line.indexOf(':') + 2);
            Controller.getInstance().dispatchEvent(
                    new TopicChangedEvent(user, topic));
            return;
        }
       
        if (line.toUpperCase().startsWith("NICKINUSE ")) {
            String nick = line.substring("NICKINUSE ".length());
            Controller.getInstance().dispatchEvent(new NickInUseEvent(nick));
            return;
        }
       
        if (line.toUpperCase().equals("PING")) {
            Connection.send("PONG");
            return;
        }
       
        if (line.toUpperCase().equals("PLAIN")) {
            Controller.getInstance().dispatchEvent(new CompletePlainEvent());
            return;
        }
       
        if (line.toUpperCase().equals("PONG")) {
            Controller.getInstance().dispatchEvent(new PongEvent());
            return;
        }
       
        if (line.toUpperCase().startsWith("PM ")) {
            String user = line.substring("PM ".length(), line.indexOf(':'));
            String text = line.substring(line.indexOf(':') + 2);
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(user + ": " + text, Formatter
                            .getPMFormat()));
            return;
        }
       
        if (line.toUpperCase().startsWith("QUIT ") && line.contains(":")) {
            String user = line.substring("QUIT ".length(), line.indexOf(':'));
            String message = line.substring(line.indexOf(':') + 2);
            Controller.getInstance().dispatchEvent(
                    new UserQuitEvent(user, message));
            return;
        }
       
        if (line.toUpperCase().startsWith("QUIT ") && !line.contains(":")) {
            String user = line.substring("QUIT ".length());
            Controller.getInstance().dispatchEvent(new UserQuitEvent(user));
            return;
        }
       
        if (line.toUpperCase().equals("REGISTERED")) {
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get(
                            "REGISTERED"), Formatter.getInfoFormat()));
            return;
        }
       
        if (line.toUpperCase().startsWith("TEXT ")) {
            String user = line.substring("TEXT ".length(), line.indexOf(':'));
            String text = line.substring(line.indexOf(':') + 2);
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(user + ": " + text));
            return;
        }
       
        if (line.toUpperCase().startsWith("TOPIC ")) {
            String user = line.substring("TOPIC ".length(), line.indexOf(':'));
            String rest = line.substring(line.indexOf(':') + 2);
            String date = rest.substring(0, "dd.mm.yyyy hh:mm".length());
            String topic = rest.substring("dd.mm.yyyy hh:mm: ".length());
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get("TOPIC",
                            date, user, topic), Formatter.getInfoFormat()));
            return;
        }
       
        if (line.toUpperCase().startsWith("UPTIME ")) {
            String date = line.substring("UPTIME ".length());
            Controller.getInstance().dispatchEvent(
                    new OutputTextEvent(Localizor.getInstance().get("UPTIME",
                            date), Formatter.getInfoFormat()));
            return;
        }
       
        if (line.toUpperCase().startsWith("USER ")) {
            String authed = line.substring("USER ".length(),
                    "USER ".length() + 1);
            String encrypted = line.substring("USER A".length(), "USER A"
                    .length() + 1);
            String nick = line.substring("USER AE ".length());
            boolean a, e;
           
            if (authed.equals("T")) {
                a = true;
            } else if (authed.equals("F")) {
                a = false;
            } else {
                Logger.warning(this, "Could not parse user flags!");
                a = false;
            }
           
            if (encrypted.equals("T")) {
                e = true;
            } else if (encrypted.equals("F")) {
                e = false;
            } else {
                Logger.warning(this, "Could not parse user flags!");
                e = false;
            }
           
            userList.add(new User(nick, a, e));
            return;
        }
       
        Controller.getInstance().dispatchEvent(
                new OutputTextEvent(Localizor.getInstance().get(
                        "SERVER_CMD_NOT_UNDERSTOOD", line), Formatter
                        .getWarningFormat()));
    }
View Full Code Here

TOP

Related Classes of erki.talk.clients.erki.event.OutputTextEvent

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.