package org.ovirt.engine.core.bll; import java.util.LinkedList; import java.util.List; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.VmDynamic; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; public class UserMessageController { private final static UserMessageController _instance = new UserMessageController(); private final java.util.HashMap<Guid, List<String>> mUsersMessages = new java.util.HashMap<Guid, List<String>>(); public static UserMessageController getInstance() { return _instance; } public void AddUserMessage(Guid user, String userMessage) { List<String> userMessages; if (mUsersMessages.containsKey(user)) { userMessages = mUsersMessages.get(user); } else { userMessages = new LinkedList<String>(); mUsersMessages.put(user, userMessages); } userMessages.add(userMessage); } public void AddUserMessageByVds(Guid vdsId, String userMessage) { List<Guid> users = new LinkedList<Guid>(); for (VmDynamic vm : DbFacade.getInstance().getVmDynamicDAO().getAllRunningForVds(vdsId)) { AddVmUsersToList(users, vm.getId()); } AddUsersMessages(users, userMessage); } public void AddUserMessageByVm(Guid vmId, String userMessage) { List<Guid> users = new LinkedList<Guid>(); AddVmUsersToList(users, vmId); AddUsersMessages(users, userMessage); } private static void AddVmUsersToList(List<Guid> input, Guid vmId) { List<DbUser> users = DbFacade.getInstance().getDbUserDAO() .getAllForVm(vmId); if (users != null) { for (DbUser user : users) { if (!input.contains((user.getuser_id()))) { input.add(user.getuser_id()); } } } } private void AddUsersMessages(Iterable<Guid> users, String message) { for (Guid userId : users) { AddUserMessage(userId, message); } } public String GetUserMessage(Guid user) { if (mUsersMessages.containsKey(user)) { List<String> userMessages = mUsersMessages.get(user); StringBuilder builder = new StringBuilder(); for (String message : userMessages) { builder.append(message); builder.append("\n"); } mUsersMessages.remove(user); } return ""; } }