Issue #2938 - Fix site/role change logic for messages

Change-Id: I5a08020f28b986c7815bb5ab2b71a34d9e105500

Former-commit-id: 169ad502de [formerly 9ffc540c21245b308334040234be03d78a501656]
Former-commit-id: 8967ddd94a
This commit is contained in:
Mike Duff 2014-04-01 15:04:04 -05:00
parent 311337f5fc
commit 66181ca3a5

View file

@ -73,6 +73,7 @@ import com.raytheon.uf.viz.core.icon.IconUtil;
* having the color update to reflect the change. * having the color update to reflect the change.
* Mar 24, 2014 2936 mpduff Remove join alerts from feed view. * Mar 24, 2014 2936 mpduff Remove join alerts from feed view.
* Mar 25, 2014 2938 mpduff Show status message for site and role changes. * Mar 25, 2014 2938 mpduff Show status message for site and role changes.
* Apr 01, 2014 2938 mpduff Update logic for site and role changes.
* *
* </pre> * </pre>
* *
@ -414,34 +415,22 @@ public class SessionFeedView extends SessionView {
return; return;
} }
Object roleObj = presence.getProperty(SiteConfigInformation.ROLE_NAME); String siteName = getSiteName(presence);
String roleName = roleObj == null ? "" : roleObj.toString();
Object siteObj = presence.getProperty(SiteConfigInformation.SITE_NAME);
String siteName = siteObj == null ? "" : siteObj.toString();
String user = participant.getName();
// only show sites you care about // only show sites you care about
if (enabledSites.contains(siteName) if (enabledSites.contains(siteName)
|| userEnabledSites.contains(siteName)) { || userEnabledSites.contains(siteName)) {
if (!enabledUsers.containsKey(user)) { String user = participant.getName();
// Add user
enabledUsers.put(user, presence);
if (!presence.isAway()) {
// Send message
StringBuilder message = getMessage(roleName, siteName, user);
sendSystemMessage(message);
}
} else if (!presence.isAway()) {
Presence prev = enabledUsers.get(user); Presence prev = enabledUsers.get(user);
if (!prev.getProperty(SiteConfigInformation.ROLE_NAME)
.toString().equals(roleName) String roleName = getRoleName(presence);
|| !prev.getProperty(SiteConfigInformation.SITE_NAME) if (presence.isAvailable()) {
.toString().equals(siteName)) { if (prev == null || hasPresenceChanged(prev, presence)) {
// Send message
StringBuilder message = getMessage(roleName, siteName, user); StringBuilder message = getMessage(roleName, siteName, user);
sendSystemMessage(message); sendSystemMessage(message);
enabledUsers.put(user, presence);
} }
enabledUsers.put(user, presence);
} }
} }
@ -453,6 +442,51 @@ public class SessionFeedView extends SessionView {
refreshParticipantList(); refreshParticipantList();
} }
/**
* Determine if the user's presence has changed.
*
* @param prev
* The previous Presence object
* @param current
* The current Presence object
* @return true if the presence has changed
*/
private boolean hasPresenceChanged(Presence prev, Presence current) {
if (!getRoleName(prev).equals(getRoleName(current))) {
return true;
}
if (!getSiteName(prev).equals(getSiteName(current))) {
return true;
}
return false;
}
/**
* Get the role name from the presence.
*
* @param presence
* The Presence
* @return the role name for this presence
*/
private String getRoleName(Presence presence) {
Object roleObj = presence.getProperty(SiteConfigInformation.ROLE_NAME);
return roleObj == null ? "" : roleObj.toString();
}
/**
* Get the site name from the presence.
*
* @param presence
* The Presence
* @return the site name for this presence
*/
private String getSiteName(Presence presence) {
Object siteObj = presence.getProperty(SiteConfigInformation.SITE_NAME);
return siteObj == null ? "" : siteObj.toString();
}
/** /**
* Get the status message. * Get the status message.
* *