001/*
002 * GWTEventService
003 * Copyright (c) 2011 and beyond, strawbill UG (haftungsbeschr?nkt)
004 *
005 * This is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU Lesser General Public License as
007 * published by the Free Software Foundation; either version 3 of
008 * the License, or (at your option) any later version.
009 * Other licensing for GWTEventService may also be possible on request.
010 * Please view the license.txt of the project for more information.
011 *
012 * This software is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * Lesser General Public License for more details.
016 *
017 * You should have received a copy of the GNU Lesser General Public
018 * License along with this software; if not, write to the Free
019 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021 */
022package de.novanic.eventservice.service.registry.user;
023
024import java.util.Collection;
025
026/**
027 * The UserManager is a container for {@link de.novanic.eventservice.service.registry.user.UserInfo} and provides various
028 * methods to manage users. To activate the user timeout recognition, the method {@link UserManager#activateUserActivityScheduler()})
029 * must be called. The UserManager can be created with {@link de.novanic.eventservice.service.registry.user.UserManagerFactory#getUserManager(long)})
030 * as a singleton.
031 *
032 * @author sstrohschein
033 *         <br>Date: 03.02.2009
034 *         <br>Time: 00:20:09
035 */
036public interface UserManager
037{
038    /**
039     * Creates and adds the {@link de.novanic.eventservice.service.registry.user.UserInfo} for the user id.
040     * @param aUserId id of the user to add
041     * @return created {@link de.novanic.eventservice.service.registry.user.UserInfo}
042     */
043    UserInfo addUser(String aUserId);
044
045    /**
046     * Adds the {@link de.novanic.eventservice.service.registry.user.UserInfo} to the UserManager.
047     * @param aUserInfo {@link de.novanic.eventservice.service.registry.user.UserInfo} to add
048     */
049    void addUser(UserInfo aUserInfo);
050
051    /**
052     * Removes the {@link de.novanic.eventservice.service.registry.user.UserInfo} for the user id.
053     * @param aUserId user id of the {@link de.novanic.eventservice.service.registry.user.UserInfo} to remove
054     * @return removed {@link de.novanic.eventservice.service.registry.user.UserInfo}
055     */
056    UserInfo removeUser(String aUserId);
057
058    /**
059     * Removes the {@link de.novanic.eventservice.service.registry.user.UserInfo}.
060     * @param aUserInfo {@link de.novanic.eventservice.service.registry.user.UserInfo} to remove
061     * @return true if it had an effect, otherwise false
062     */
063    boolean removeUser(UserInfo aUserInfo);
064
065    /**
066     * Removes all added {@link UserInfo} objects.
067     */
068    void removeUsers();
069
070    /**
071     * Checks if a user is added to a domain.
072     * @param aUserInfo user
073     * @return true when the user is added to a domain, otherwise false
074     */
075    boolean isUserContained(UserInfo aUserInfo);
076
077    /**
078     * Returns the {@link de.novanic.eventservice.service.registry.user.UserInfo} for the user id. It returns NULL when no
079     * {@link de.novanic.eventservice.service.registry.user.UserInfo} for the user id is added.
080     * @param aUserId user id of the requested {@link de.novanic.eventservice.service.registry.user.UserInfo}
081     * @return {@link de.novanic.eventservice.service.registry.user.UserInfo} for the user id. NULL when no
082     * {@link de.novanic.eventservice.service.registry.user.UserInfo} for the user id is added.
083     */
084    UserInfo getUser(String aUserId);
085
086    /**
087     * Returns the count of the added {@link de.novanic.eventservice.service.registry.user.UserInfo} objects.
088     * @return count of the added {@link de.novanic.eventservice.service.registry.user.UserInfo} objects
089     */
090    int getUserCount();
091
092    /**
093     * Returns all added {@link de.novanic.eventservice.service.registry.user.UserInfo} objects. It returns an empty
094     * {@link java.util.Collection} when no
095     * {@link de.novanic.eventservice.service.registry.user.UserInfo} objects are added.
096     * @return all added {@link de.novanic.eventservice.service.registry.user.UserInfo} objects
097     */
098    Collection<UserInfo> getUsers();
099
100    /**
101     * Activates the {@link UserActivityScheduler} to observe the user activities. When the users/clients should be
102     * removed automatically, please use {@link de.novanic.eventservice.service.registry.user.UserManager#activateUserActivityScheduler(boolean)}.
103     */
104    void activateUserActivityScheduler();
105
106    /**
107     * Activates the {@link UserActivityScheduler} to observe the user activities.
108     * @param isAutoClean when set to true, the users/clients are removed automatically on timeout
109     */
110    void activateUserActivityScheduler(boolean isAutoClean);
111
112    /**
113     * Deactivates the {@link UserActivityScheduler}. See {@link UserActivityScheduler} for more information.
114     */
115    void deactivateUserActivityScheduler();
116
117    /**
118     * Returns the {@link UserActivityScheduler} which is instantiated with the UserManager. The method
119     * {@link UserManager#activateUserActivityScheduler()} must be called to start the {@link UserActivityScheduler}.
120     * @return the {@link UserActivityScheduler} which is instantiated with the UserManager
121     */
122    UserActivityScheduler getUserActivityScheduler();
123
124    /**
125     * Resets the UserManager (removes all users, stops the user activity scheduler, etc.)
126     */
127    void reset();
128}