Name
global.SubscriptionMessageBuilder
Description
No description available
Script
var SubscriptionMessageBuilder = Class.create();
SubscriptionMessageBuilder.prototype = {
initialize: function() {
this.FULL_REMOVE = "Unsubscribed {0} user(s)";
this.NO_REMOVE = "No users were unsubscribed because the {0} user set contains no users";
this.NO_REMOVE_ALL_ALREAY_REF = "No users were removed from the subscription because all of the users in the {0} user set were either individually subscribed or were added from other user sets";
this.SOME_REMOVED_REST_REFERENCED = "The {0} user set was removed. {2} users were unsubscribed";
this.EMPTY_ADD_REQUEST = "No users were allocated because the {0} user set contains no users";
this.NO_ADD_ALL_EXCLUDED = "No users were allocated because all users are on the Excluded User list";
this.NO_ADD_ALL_ALREADY_ADDED = "No users were added to the subscription. All {0} users in the {1} user set are already subscribed.";
this.NO_ADD_SOME_ALREADY_ADDED_SOME_EXCLUDED = "No users were allocated because {0} users are already subscribed and {1} users are on the Excluded User list";
this.FULL_ADD = "Allocated {0} user(s) to the subscription from the {1} user set.";
this.FULL_PENDING_ADD = 'Because the subscription limit would be exceeded, {0} users could not be allocated and are listed on the <b>Pending Users</b> tab';
this.SOME_ADDED_REST_ALREADY_ADDED = "{0} users were allocated, {1} users were already subscribed";
this.SOME_PENDING_ADDED_REST_ALREADY_ADDED = 'Because the subscription limit would be exceeded, {0} users could not be allocated and are listed on the <b>Pending Users</b> tab';
this.SOME_ADDED_SOME_ALREADY_ADDED_REST_EXCLUDED = "{0} users were allocated, {1} users were already subscribed, and {2} users are on the Excluded Users list";
this.SOME_PENDING_ADDED_SOME_ALREADY_ADDED_REST_EXCLUDED = '{0} users were already subscribed and {1} users are on the Excluded Users list. Because the subscription limit would be exceeded, {2} users could not be allocated and are listed on the <b>Pending Users</b> tab.';
this.SOME_ADDED_REST_EXCLUDED = "{0} users were allocated, {1} users are on the Excluded Users list";
this.SOME_PENDING_ADDED_REST_EXCLUDED = '{0} users are on the Excluded Users list. Because the subscription limit would be exceeded, {1} users could not be allocated and are listed on the <b>Pending Users</b> tab.';
// Hint variables:
this.noOfUsersRequestedToBeAdded = 0;
this.noOfUsersToBeAdded = 0;
this.noOfExcludedUsers = 0;
this.noOfUsersActullyAdded = 0;
this.userSetName = "";
this.status = "";
// Derived Hint variables:
this.usersAlreadyAdded = 0;
this.usersFromUserSetExcluded = 0;
// Hint constants:
this.allocated = "assigned";
this.approvalRequired = "approval_required";
// Hint collection:
this.hints = {};
},
addHint: function(key, value) {
this.hints[key] = value;
},
getMessage: function() {
var operation = this.hints["operation"];
this._initializeHints();
if (operation === "insert")
return this._getInsertOpMessage();
else if (operation === "delete")
return this._getRemoveOpMessage();
},
_initializeHints: function() {
this.noOfUsersRequestedToBeAdded = this.hints["users_requested_to_be_added"].length;
this.noOfUsersToBeAdded = this.hints["users_to_be_added"].length;
this.noOfExcludedUsers = this.hints["users_excluded"].length;
this.noOfUsersActullyAdded = this.hints["num_users_added"];
this.userSetName = this.hints["new_source_name"];
this.status = this.hints["status"];
},
_getInsertOpMessage: function() {
var message = "";
var msgArr = [];
if (this._isEmptyAddRequest(msgArr)) {
message = this._get_EMPTY_ADD_REQUEST_MSG(msgArr);
}
else if (this._isActualAddedEmpty()) {
if (this._nothingToAdd(msgArr))
message = this._get_NO_ADD_ALL_EXCLUDED_MSG(msgArr);
else if (this._allAlreadyAdded(msgArr))
message = this._get_NO_ADD_ALL_ALREADY_ADDED_MSG(msgArr);
else
message = this._get_NO_ADD_SOME_ALREADY_ADDED_SOME_EXCLUDED_MSG(msgArr);
}
else if (this._isFullAdd()) {
msgArr.push(this.noOfUsersActullyAdded.toFixed());
msgArr.push(this.userSetName); // should this be commented???
message = (this._isPendingAdd()) ? gs.getMessage(this.FULL_PENDING_ADD, msgArr) : gs.getMessage(this.FULL_ADD, msgArr);
}
else if (this._isSomeAddedRestAlreadyAdded())
message = (this._isPendingAdd()) ? this._get_SOME_PENDING_ADD_REST_ALREADY_ADDED_MSG(msgArr) : this._get_SOME_ADD_REST_ALREADY_ADDED_MSG(msgArr);
else if (this._isSomeAddedSomeAlreadyAddedRestExcluded())
message = (this._isPendingAdd()) ? this._get_SOME_PENDING_ADDED_SOME_ALREADY_ADDED_REST_EXCLUDED_MSG(msgArr) : this._get_SOME_ADDED_SOME_ALREADY_ADDED_REST_EXCLUDED_MSG(msgArr);
else if (this._isSomeAddedRestExcluded())
message = (this._isPendingAdd()) ? this._get_SOME_PENDING_ADDED_REST_EXCLUDED_MSG(msgArr) : this._get_SOME_ADDED_REST_EXCLUDED_MSG(msgArr);
return message;
},
_getRemoveOpMessage: function() {
var numRequestedToBeRemoved = this.hints["users_requested_to_be_removed"];
var numActuallyRemoved = this.hints["users_removed"];
var userSetName = this.hints["new_source_name"];
var numUsersHavingReference = numRequestedToBeRemoved - numActuallyRemoved;
var message = "";
var msgArr = [];
if (numRequestedToBeRemoved === 0) {
msgArr.push(userSetName);
message = gs.getMessage(this.NO_REMOVE, msgArr);
}
else if (numRequestedToBeRemoved > 0 && numActuallyRemoved === 0) {
msgArr.push(userSetName);
message = gs.getMessage(this.NO_REMOVE_ALL_ALREAY_REF, msgArr);
}
else if (numRequestedToBeRemoved == numActuallyRemoved) {
msgArr.push(numActuallyRemoved.toFixed());
message = gs.getMessage(this.FULL_REMOVE, msgArr);
}
else if (numActuallyRemoved > 0 && numActuallyRemoved < numRequestedToBeRemoved) {
msgArr.push(userSetName);
msgArr.push(numRequestedToBeRemoved.toFixed());
msgArr.push(numActuallyRemoved.toFixed());
message = gs.getMessage(this.SOME_REMOVED_REST_REFERENCED, msgArr);
}
return message;
},
_isEmptyAddRequest: function(msgArr) {
return this.noOfUsersRequestedToBeAdded === 0;
},
_get_EMPTY_ADD_REQUEST_MSG: function(msgArr) {
msgArr.push(this.userSetName);
return gs.getMessage(this.EMPTY_ADD_REQUEST, msgArr);
},
_isActualAddedEmpty: function() {
return this.noOfUsersRequestedToBeAdded > 0 && this.noOfUsersActullyAdded == 0;
},
_nothingToAdd: function(msgArr) {
return this.noOfUsersToBeAdded === 0;
},
_get_NO_ADD_ALL_EXCLUDED_MSG: function(msgArr) {
//msgArr.push(this.userSetName);
//msgArr.push(this.noOfUsersRequestedToBeAdded.toFixed());
return gs.getMessage(this.NO_ADD_ALL_EXCLUDED, msgArr);
},
_allAlreadyAdded: function(msgArr) {
return this.usersFromUserSetExcluded == 0;
},
_get_NO_ADD_ALL_ALREADY_ADDED_MSG: function(msgArr) {
msgArr.push(this.noOfUsersRequestedToBeAdded.toFixed());
msgArr.push(this.userSetName);
return gs.getMessage(this.NO_ADD_ALL_ALREADY_ADDED, msgArr);
},
_get_NO_ADD_SOME_ALREADY_ADDED_SOME_EXCLUDED_MSG: function(msgArr) {
this.usersAlreadyAdded = this.noOfUsersToBeAdded;
this.usersFromUserSetExcluded = this.noOfUsersRequestedToBeAdded - this.noOfUsersToBeAdded;
msgArr.push(this.usersAlreadyAdded.toFixed());
msgArr.push(this.usersFromUserSetExcluded.toFixed());
return gs.getMessage(this.NO_ADD_SOME_ALREADY_ADDED_SOME_EXCLUDED, msgArr);
},
_isFullAdd: function() {
return (this.noOfUsersRequestedToBeAdded === this.noOfUsersActullyAdded);
},
_isPendingAdd: function() {
return (this.status === this.approvalRequired);
},
_isSemiAdd: function() {
return (this.noOfUsersActullyAdded < this.noOfUsersRequestedToBeAdded);
},
_isSomeAddedRestAlreadyAdded: function() {
this.usersFromUserSetExcluded = this.noOfUsersRequestedToBeAdded - this.noOfUsersToBeAdded;
return (this._isSemiAdd() && (this.usersFromUserSetExcluded === 0));
},
_get_SOME_ADD_REST_ALREADY_ADDED_MSG: function(msgArr) {
this.usersAlreadyAdded = this.noOfUsersRequestedToBeAdded - this.noOfUsersActullyAdded;
msgArr.push(this.noOfUsersActullyAdded.toFixed());
msgArr.push(this.usersAlreadyAdded.toFixed());
return gs.getMessage(this.SOME_ADDED_REST_ALREADY_ADDED, msgArr);
},
_get_SOME_PENDING_ADD_REST_ALREADY_ADDED_MSG: function(msgArr) {
this.usersAlreadyAdded = this.noOfUsersRequestedToBeAdded - this.noOfUsersActullyAdded;
msgArr.push(this.noOfUsersActullyAdded.toFixed());
return gs.getMessage(this.SOME_PENDING_ADDED_REST_ALREADY_ADDED, msgArr);
},
_isSomeAddedSomeAlreadyAddedRestExcluded: function() {
this.usersAlreadyAdded = this.noOfUsersToBeAdded - this.noOfUsersActullyAdded;
return (this._isSemiAdd() && (this.usersAlreadyAdded > 0));
},
_get_SOME_ADDED_SOME_ALREADY_ADDED_REST_EXCLUDED_MSG: function(msgArr) {
msgArr.push(this.noOfUsersActullyAdded.toFixed());
msgArr.push(this.usersAlreadyAdded.toFixed());
msgArr.push(this.usersFromUserSetExcluded.toFixed());
return gs.getMessage(this.SOME_ADDED_SOME_ALREADY_ADDED_REST_EXCLUDED, msgArr);
},
_get_SOME_PENDING_ADDED_SOME_ALREADY_ADDED_REST_EXCLUDED_MSG: function(msgArr) {
msgArr.push(this.usersAlreadyAdded.toFixed());
msgArr.push(this.usersFromUserSetExcluded.toFixed());
msgArr.push(this.noOfUsersActullyAdded.toFixed());
return gs.getMessage(this.SOME_PENDING_ADDED_SOME_ALREADY_ADDED_REST_EXCLUDED, msgArr);
},
_get_SOME_ADDED_REST_EXCLUDED_MSG: function(msgArr) {
msgArr.push(this.noOfUsersActullyAdded.toFixed());
msgArr.push(this.usersFromUserSetExcluded.toFixed());
return gs.getMessage(this.SOME_ADDED_REST_EXCLUDED, msgArr);
},
_isSomeAddedRestExcluded: function() {
this.usersAlreadyAdded = this.noOfUsersToBeAdded - this.noOfUsersActullyAdded;
return (this._isSemiAdd() && (this.usersAlreadyAdded === 0));
},
_get_SOME_PENDING_ADDED_REST_EXCLUDED_MSG: function(msgArr) {
msgArr.push(this.usersFromUserSetExcluded.toFixed());
msgArr.push(this.noOfUsersActullyAdded.toFixed());
return gs.getMessage(this.SOME_PENDING_ADDED_REST_EXCLUDED, msgArr);
},
type: 'SubscriptionMessageBuilder'
};
Sys ID
1ba0b6656700120090e4156f57415a22