Merge "Issue #2938 - Fix site/role change logic for messages" into development

Former-commit-id: 4ec98ab846 [formerly 654d5abb57] [formerly 6637623c4f] [formerly 4ec98ab846 [formerly 654d5abb57] [formerly 6637623c4f] [formerly eab75cab11 [formerly 6637623c4f [formerly 8fe6aa419874d54755836fa44e252d53b32b7f8c]]]]
Former-commit-id: eab75cab11
Former-commit-id: 2b7a95598e [formerly 4494674310] [formerly 2db9cd45dbb0b28cc1547e80c8c6e446eb551909 [formerly a9e2e856d6]]
Former-commit-id: 37c3665743b2e2fea0303e9315db212f7f0fd1f6 [formerly 09f9090d3d]
Former-commit-id: 7cfff411fb
This commit is contained in:
Nate Jensen 2014-04-02 09:55:19 -05:00 committed by Gerrit Code Review
commit 693d919d5b

View file

@ -73,6 +73,7 @@ import com.raytheon.uf.viz.core.icon.IconUtil;
* having the color update to reflect the change.
* Mar 24, 2014 2936 mpduff Remove join alerts from feed view.
* 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>
*
@ -414,34 +415,22 @@ public class SessionFeedView extends SessionView {
return;
}
Object roleObj = presence.getProperty(SiteConfigInformation.ROLE_NAME);
String roleName = roleObj == null ? "" : roleObj.toString();
Object siteObj = presence.getProperty(SiteConfigInformation.SITE_NAME);
String siteName = siteObj == null ? "" : siteObj.toString();
String user = participant.getName();
String siteName = getSiteName(presence);
// only show sites you care about
if (enabledSites.contains(siteName)
|| userEnabledSites.contains(siteName)) {
if (!enabledUsers.containsKey(user)) {
// Add user
String user = participant.getName();
Presence prev = enabledUsers.get(user);
String roleName = getRoleName(presence);
if (presence.isAvailable()) {
if (prev == null || hasPresenceChanged(prev, presence)) {
StringBuilder message = getMessage(roleName, siteName, user);
sendSystemMessage(message);
}
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);
if (!prev.getProperty(SiteConfigInformation.ROLE_NAME)
.toString().equals(roleName)
|| !prev.getProperty(SiteConfigInformation.SITE_NAME)
.toString().equals(siteName)) {
// Send message
StringBuilder message = getMessage(roleName, siteName, user);
sendSystemMessage(message);
enabledUsers.put(user, presence);
}
}
}
@ -453,6 +442,51 @@ public class SessionFeedView extends SessionView {
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.
*