NotificationUtilities.java
/*
* This software was designed and created by Jason Carroll.
* Copyright (c) 2002, 2003, 2004 Jason Carroll.
* The author can be reached at jcarroll@cowsultants.com
* ITracker website: http://www.cowsultants.com
* ITracker forums: http://www.cowsultants.com/phpBB/index.php
*
* This program is free software; you can redistribute it and/or modify
* it only under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package org.itracker.model.util;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.itracker.core.resources.ITrackerResources;
import org.itracker.model.Notification;
import org.itracker.model.Notification.Role;
import org.itracker.model.User;
import java.util.*;
public class NotificationUtilities {
/**
* @deprecated, use enumeration Notification.Role instead
*/
private static HashMap<Locale, HashMap<Role, String>> roleNames = new HashMap<Locale, HashMap<Role, String>>();
public NotificationUtilities() {
super();
}
/**
* @deprecated
*/
public static String getRoleName(int value) {
return getRoleName(value, ITrackerResources.getLocale());
}
/**
* @deprecated
*/
public static String getRoleName(int value, Locale locale) {
return ITrackerResources.getString("itracker.notification.role."
+ value, locale);
}
public static String getRoleName(Role role) {
return getRoleName(role, ITrackerResources.getLocale());
}
public static String getRoleName(Role role, Locale locale) {
String s;
if (null != (s = ITrackerResources.getString(
"itracker.notification.role." + role, locale))) {
return s;
}
return ITrackerResources.getString("itracker.notification.role."
+ role.getCode(), locale);
}
public static HashMap<Role, String> getRoleNames(Locale locale) {
HashMap<Role, String> roles = roleNames.get(locale);
if (roles == null) {
roles = new HashMap<Role, String>();
roles.put(Notification.Role.CREATOR,
getRoleName(Notification.Role.CREATOR, locale));
roles.put(Notification.Role.OWNER, getRoleName(Role.OWNER, locale));
roles.put(Notification.Role.CONTRIBUTER, getRoleName(
Notification.Role.CONTRIBUTER, locale));
roles.put(Notification.Role.QA, getRoleName(Role.QA, locale));
roles.put(Notification.Role.PM, getRoleName(Role.PM, locale));
roles.put(Notification.Role.PO, getRoleName(Role.PO, locale));
roles.put(Notification.Role.CO, getRoleName(Role.CO, locale));
roles.put(Notification.Role.VO, getRoleName(Role.VO, locale));
roles.put(Notification.Role.IP, getRoleName(Role.IP, locale));
}
roleNames.put(locale, roles);
return roles;
}
public static final Map<User, Set<Notification.Role>> mappedRoles(List<Notification> notifications) {
Map<User, Set<Role>> mapping = new Hashtable<User, Set<Role>>();
Iterator<Notification> notificationIt = notifications.iterator();
while (notificationIt.hasNext()) {
Notification notification = (Notification) notificationIt.next();
Set<Role> roles;
if (mapping.keySet().contains(notification.getUser())) {
roles = mapping.get(notification.getUser());
roles.add(notification.getRole());
} else {
roles = new TreeSet<Role>(new Comparator<Role>() {
public int compare(Role o1, Role o2) {
return new CompareToBuilder().append(o1.getCode(), o2.getCode()).toComparison();
}
});
roles.add(notification.getRole());
mapping.put(notification.getUser(), roles);
}
}
return mapping;
}
}