Package ch.fusun.baron.core.service

Source Code of ch.fusun.baron.core.service.UserServiceImpl

package ch.fusun.baron.core.service;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import ch.fusun.baron.core.rmi.User;
import ch.fusun.baron.data.AbstractDataProvider;
import ch.fusun.baron.data.DataListener;
import ch.fusun.baron.data.DataUpdate;
import ch.fusun.baron.data.EmptyUpdate;

/**
* Default implementation of the user service
*/
public class UserServiceImpl extends AbstractDataProvider implements
    UserService {
  private final List<User> registeredUsers = new ArrayList<User>();
  /**
   * The users logged in at the moment
   */
  private final Map<Integer, User> idUserMap = new HashMap<Integer, User>();
  private User currentUser;

  /**
   * Constructor
   */
  public UserServiceImpl() {
  }

  @Override
  public void createUser(User user) {
    registeredUsers.add(user);
    for (DataListener listener : getListeners()) {
      if (listener instanceof UserListener) {
        ((UserListener) listener).userCreated(user);
      } else {
        listener.dataChanged(new CreateUserDataUpdate(user));
      }
    }
  }

  private User findUser(User user) {
    int index = registeredUsers.indexOf(user);
    if (index != -1) {
      return registeredUsers.get(index);
    }
    return null;
  }

  @Override
  public void login(User user, int id) {
    User persistentUser = findUser(user);
    if (persistentUser != null) {
      if (persistentUser.getPassword().equals(user.getPassword())) {
        idUserMap.put(id, persistentUser);
        for (DataListener listener : getListeners()) {
          if (listener instanceof UserListener) {
            ((UserListener) listener).userLoggedIn(persistentUser);
          } else {
            listener.dataChanged(new UserLoggedInDataUpdate(user,
                id));
          }
        }
      }
    }
  }

  @Override
  public boolean exists(String name) {
    for (User user : registeredUsers) {
      if (user.getName().equals(name)) {
        return true;
      }
    }
    return false;
  }

  @Override
  public void logout(int id) {
    User user = idUserMap.get(id);
    if (user != null) {
      idUserMap.remove(id);
      for (DataListener listener : getListeners()) {
        if (listener instanceof UserListener) {
          ((UserListener) listener).userLoggedOut(user);
        } else {
          listener.dataChanged(new UserLoggedOutDataUpdate(id));
        }
      }
    }
  }

  @Override
  public boolean isLoggedIn(User user) {
    return idUserMap.containsValue(user);
  }

  @Override
  public Collection<User> getUsers() {
    return registeredUsers;
  }

  @Override
  public User getUser() {
    return this.currentUser;
  }

  @Override
  public void setUser(User user) {
    this.currentUser = user;
  }

  @Override
  public DataUpdate createFullUpdate() {
    return new EmptyUpdate(); // We don't update the user data yet //TODO
                  // Should we?
  }

}
TOP

Related Classes of ch.fusun.baron.core.service.UserServiceImpl

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.