/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.dataprocess.server.handlercommand; import net.codjo.dataprocess.common.DataProcessConstants; import net.codjo.dataprocess.common.DataProcessConstants.ListCommand; import net.codjo.dataprocess.common.util.UserLoginTracker; import net.codjo.dataprocess.server.plugin.DataProcessServerPlugin; import net.codjo.mad.server.handler.HandlerCommand; import net.codjo.mad.server.handler.HandlerException; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * */ public class UserLoginTrackerCommand extends HandlerCommand { private final List<UserLoginTracker> userLoginTrackerList; public UserLoginTrackerCommand(DataProcessServerPlugin dataProcessServerPlugin) { userLoginTrackerList = dataProcessServerPlugin.getConfiguration().getUserLoginTrackerList(); } @Override public CommandResult executeQuery(CommandQuery query) throws HandlerException, SQLException { String command = query.getArgumentString("command"); String value = query.getArgumentString("value"); String result = executeCommand(command, value); return createResult(result); } synchronized private String executeCommand(String commandStr, String value) { ListCommand command = ListCommand.valueOf(commandStr); switch (command) { case ADD: UserLoginTracker userLoginTracker = UserLoginTracker.decode(value); userLoginTracker.setDate(getCurrentDatetime()); remove(userLoginTracker.getUserName()); userLoginTrackerList.add(userLoginTracker); break; case GET: UserLoginTracker loginTracker = getUserLoginTracker(value); if (loginTracker != null) { return UserLoginTracker.encode(loginTracker); } else { return DataProcessConstants.NO_RESULT; } case REMOVE: remove(value); break; case GET_SIZE: return Integer.toString(userLoginTrackerList.size()); case CLEAR: userLoginTrackerList.clear(); break; case GET_LIST: return UserLoginTracker.encodeList(new ArrayList<UserLoginTracker>(userLoginTrackerList)); } return DataProcessConstants.NO_RESULT; } private void remove(String userName) { UserLoginTracker userLoginTracker = getUserLoginTracker(userName); if (userLoginTracker != null) { userLoginTrackerList.remove(userLoginTracker); } } private UserLoginTracker getUserLoginTracker(String userName) { synchronized (userLoginTrackerList) { for (UserLoginTracker userLoginTracker : userLoginTrackerList) { if (userName.equals(userLoginTracker.getUserName())) { return userLoginTracker; } } } return null; } private static String getCurrentDatetime() { SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); Date dateDebut = Calendar.getInstance().getTime(); return dateFormat.format(dateDebut); } }