Package com.rila.chat.service

Source Code of com.rila.chat.service.MessageService

package com.rila.chat.service;

import java.util.Iterator;

import org.springframework.stereotype.Component;

import com.rila.chat.dao.mongo.IMessagesHistoryMongo;
import com.rila.chat.server.Server;

import fr.cesi.chat.domain.Event;
import fr.cesi.chat.domain.Message;
import fr.cesi.chat.domain.User;
import fr.cesi.chat.utils.Utils;

@Component
public class MessageService implements IMessageService{
 
  @Override
  public Message manageMessage(Server server, Message msgReceived, User userServer,IMessagesHistoryMongo messagesHistoryMongo){
    /*
     * Quand je reçois un message avec l'evenement CONNECTION_USER j'envoie aux users connectés 'toto vient de se connecté'.
     */
    if (Event.CONNECTION_USER == msgReceived.getEvent()) {
      msgReceived.setMessage(msgReceived.getUserFrom().getNickname() + " s'est connecté.");
      msgReceived.setUserFrom(userServer);
    }
    /*
     * Quand je reçois un message avec l'evenement pour changer de nom d'utilisateur je parcours la liste des utilisateurs, supprime l'ancien et rajoute le nouveau
     */
    if (Event.CHANGING_STATUS_USERNAME == msgReceived.getEvent()) {
      Iterator<User> iterator = server.getUsers().iterator();
      while (iterator.hasNext()) {
        User user = iterator.next();
        String username = msgReceived.getUserFrom().getNickname();
        if (username.equals(user.getNickname())) {
          server.getUsers().remove(user);
          server.getUsers().add(new User(username, msgReceived.getUserFrom().getStatut(), msgReceived.getUserFrom().getIp()));
          server.sendUsers(server.getUsers());
          // msgReceived = new Message(Utils.getDateNow(), userServer, null, username + " est passé " + user.getStatut().getLibelle(), Evenement.SERVER);
        }
      }
    }

    /*
     * Quand je reçois un message avec l'evenement pour changer de nom d'utilisateur je parcours la liste des utilisateurs, supprime l'ancien et rajoute le nouveau
     */
    if (Event.CHANGING_USERNAME == msgReceived.getEvent()) {
      Iterator<User> iterator = server.getUsers().iterator();
      while (iterator.hasNext()) {
        User user = iterator.next();
        String[] usernames = msgReceived.getUserFrom().getNickname().split(",");
        String oldUsername = usernames[0];
        String username = usernames[1];
        if (oldUsername.equals(user.getNickname())) {
          server.getUsers().remove(user);
          server.getUsers().add(new User(username, msgReceived.getUserFrom().getStatut(), msgReceived.getUserFrom().getIp()));
          server.sendUsers(server.getUsers());
          msgReceived = new Message(Utils.getDateNow(), userServer, null, oldUsername + " a changé en " + username, Event.SERVER);
        }
      }
    }

    // Si on reçoit l'évenement deleting username
    // on parcours la liste
    if (Event.DELETING_USERNAME == msgReceived.getEvent()) {
      Iterator<User> iterator = server.getUsers().iterator();
      while (iterator.hasNext()) {
        User user = iterator.next();
        if (msgReceived.getUserFrom().getNickname().equals(user.getNickname())) {
          msgReceived = new Message(Utils.getDateNow(), userServer, null, user.getNickname() + " s'est déconnecté.", Event.SERVER);
          iterator.remove();
          server.sendUsers(server.getUsers());
          break;
        }
      }
    }

    if (msgReceived.getMessage() != null && !msgReceived.getMessage().isEmpty()) {
      server.sendMessages(msgReceived);

      // Enregistrement en bdd du message
      // Envoie du message aux clients connectés
      if (msgReceived.getEvent() != Event.SERVER && msgReceived.getEvent() != Event.CONNECTION_USER) {
        messagesHistoryMongo.saveMessage(msgReceived); // A chaque message reçus on le sauvegarde en base
      }
    }
   
    return null;
  }

}
TOP

Related Classes of com.rila.chat.service.MessageService

TOP
Copyright © 2018 www.massapi.com. 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.