Rating Service. Now limited to one rating scheme per user per node.

Without an explicit requirement for multiple rating schemes being applied to a node by a user and in order to simplify
the code and ease maintenance, the RatingService now only supports one rating scheme per node per user.
A rating can be applied, removed and a new rating in another scheme applied. But if the first is not removed, an exception will be thrown by the service.

This change was a simple edit in the model with changes to the service implementation and test code.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21585 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Neil McErlean
2010-08-04 07:44:07 +00:00
parent f2c0221855
commit 87a95e7e8d
7 changed files with 150 additions and 604 deletions

View File

@@ -64,13 +64,18 @@ public interface RatingService
/**
* This method applies the given rating to the specified target node. If a rating
* from the current user in the specified scheme already exists, it will be replaced.
* <p/>
* Note that only one rating scheme per user per targetNode is supported at present.
* If a user attempts to apply a second rating in a different rating scheme to any given
* target node, a {@link RatingServiceException} will be thrown.
*
* @param targetNode the node to which the rating is to be applied.
* @param rating the rating which is to be applied.
* @param ratingSchemeName the name of the rating scheme to use.
*
* @throws RatingServiceException if the rating is not within the range defined by the named scheme
* or if the named scheme is not registered.
* or if the named scheme is not registered or if the rating would result
* in multiple ratings by the same user.
* @see RatingService#getRatingSchemes()
* @see RatingScheme
*/
@@ -91,6 +96,20 @@ public interface RatingService
@NotAuditable
int getRatingsCount(NodeRef targetNode, String ratingSchemeName);
/**
* This method gets the total accumulated rating score for
* the specified node in the specified {@link RatingScheme}.
* That is, the rating scores for all users for the specified
* node are summed to give the result.
*
* @param targetNode the node on which the rating total is sought.
* @param ratingScheme the rating scheme to use.
*
* @return the sum of all individual ratings applied to this node in the specified scheme.
* @see RatingService#getRatingSchemes()
* @see RatingScheme
*/
@NotAuditable
float getTotalRating(NodeRef targetNode, String ratingSchemeName);
/**
@@ -100,6 +119,7 @@ public interface RatingService
* @param ratingSchemeName the rating scheme name in which the average is defined.
* @return the average (mean) value if there is one, else -1.
*/
@NotAuditable
float getAverageRating(NodeRef targetNode, String ratingSchemeName);
/**