Author: chathura
Date: Thu Dec 6 23:47:46 2007
New Revision: 10679
Log:
Completed the AJAX based rating.
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/RatingsDAO.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AjaxRatingAction.java
trunk/registry/modules/webapps/src/main/webapp/admin/ajax_rating.jsp
trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js
Modified:
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/RatingsDAO.java
==============================================================================
---
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/RatingsDAO.java
(original)
+++
trunk/registry/modules/core/src/main/java/org/wso2/registry/jdbc/dao/RatingsDAO.java
Thu Dec 6 23:47:46 2007
@@ -82,18 +82,35 @@
public float getAverageRating(String path, Connection conn) throws
SQLException {
- String sql = "SELECT AVG(R.RATING) FROM RATINGS R, ARTIFACTS A WHERE
A.PATH=? AND A.AID=R.AID";
+ String sql1 = "SELECT SUM(R.RATING) FROM RATINGS R, ARTIFACTS A WHERE
A.PATH=? AND A.AID=R.AID";
- PreparedStatement s = conn.prepareStatement(sql);
- s.setString(1, path);
+ PreparedStatement s1 = conn.prepareStatement(sql1);
+ s1.setString(1, path);
- ResultSet result = s.executeQuery();
+ ResultSet result1 = s1.executeQuery();
- float averageRating = 0;
- if (result.next()) {
- averageRating = result.getFloat(1);
+ int sumRating = 0;
+ if (result1.next()) {
+ sumRating = result1.getInt(1);
+ }
+
+ String sql2 = "SELECT COUNT(R.RATING) FROM RATINGS R, ARTIFACTS A
WHERE A.PATH=? AND A.AID=R.AID";
+
+ PreparedStatement s2 = conn.prepareStatement(sql2);
+ s2.setString(1, path);
+
+ ResultSet result2 = s2.executeQuery();
+
+ int countRating = 0;
+ if (result2.next()) {
+ countRating = result2.getInt(1);
}
+ float averageRating = 0;
+ if (countRating > 0) {
+ averageRating = (float) sumRating / countRating;
+ }
+
return averageRating;
}
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
Thu Dec 6 23:47:46 2007
@@ -236,6 +236,24 @@
request.getSession().setAttribute(UIConstants.AJAX_DESCRIPTION_STRING,
setDescriptionAction.getDescription());
request.getRequestDispatcher(UIConstants.AJAX_DESCRIPTION_JSP).forward(request,
response);
+ } else if (command.equals("/setRating")) {
+
+ int userRating = new
Integer(request.getParameter("ratingValue")).intValue();
+
+ AjaxRatingAction ajaxRatingAction = new AjaxRatingAction();
+ ajaxRatingAction.setResourcePath(path);
+ ajaxRatingAction.setUserRating(userRating);
+
+ try {
+ ajaxRatingAction.execute(request);
+ } catch (RegistryException e) {
+ setErrorMessage(request, e.getMessage());
+ e.printStackTrace();
+ }
+
+
request.getSession().setAttribute(UIConstants.AJAX_RATING_BEAN,
ajaxRatingAction);
+
request.getRequestDispatcher(UIConstants.AJAX_RATING_JSP).forward(request,
response);
+
} else if (command.equals("/addComment")) {
CommentAction commentAction = new CommentAction();
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AjaxRatingAction.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AjaxRatingAction.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AjaxRatingAction.java
Thu Dec 6 23:47:46 2007
@@ -16,7 +16,6 @@
package org.wso2.registry.web.actions;
-import org.wso2.registry.Registry;
import org.wso2.registry.RegistryException;
import org.wso2.registry.secure.SecureRegistry;
@@ -26,7 +25,10 @@
private String resourcePath;
private int userRating = -1;
- private float avarageRating;
+ private float averageRating;
+
+ private String[] userStars = new String[5];
+ private String[] averageStars = new String[5];
public void execute(HttpServletRequest request) throws RegistryException {
@@ -38,8 +40,57 @@
registry.rateResource(resourcePath, userRating);
}
- avarageRating = registry.getAverageRating(resourcePath);
+ averageRating = registry.getAverageRating(resourcePath);
+
+ // round the average rating to closest 3 decimal points
+ float tempRating = averageRating * 1000;
+ tempRating = Math.round(tempRating);
+ tempRating = tempRating / 1000;
+ averageRating = tempRating;
+
userRating = registry.getRating(resourcePath, registry.getUserID());
+
+ for (int i = 0; i < 5; i++) {
+
+ if (userRating >= i + 1) {
+ userStars[i] = "04";
+
+ } else if (userRating <= i) {
+ userStars[i] = "00";
+
+ }
+ }
+
+ for (int i = 0; i < 5; i++) {
+
+ if (averageRating >= i + 1) {
+ averageStars[i] = "04";
+
+ } else if (averageRating <= i) {
+ averageStars[i] = "00";
+
+ } else {
+
+ float fraction = averageRating - i;
+
+ if (fraction <= 0.125) {
+ averageStars[i] = "00";
+
+ } else if (fraction > 0.125 && fraction <= 0.375) {
+ averageStars[i] = "01";
+
+ } else if (fraction > 0.375 && fraction <= 0.625) {
+ averageStars[i] = "02";
+
+ } else if (fraction > 0.625 && fraction <= 0.875) {
+ averageStars[i] = "03";
+
+ } else {
+ averageStars[i] = "04";
+
+ }
+ }
+ }
}
public String getResourcePath() {
@@ -58,11 +109,27 @@
this.userRating = userRating;
}
- public float getAvarageRating() {
- return avarageRating;
+ public float getAverageRating() {
+ return averageRating;
+ }
+
+ public void setAverageRating(float averageRating) {
+ this.averageRating = averageRating;
+ }
+
+ public String[] getUserStars() {
+ return userStars;
+ }
+
+ public void setUserStars(String[] userStars) {
+ this.userStars = userStars;
+ }
+
+ public String[] getAverageStars() {
+ return averageStars;
}
- public void setAvarageRating(float avarageRating) {
- this.avarageRating = avarageRating;
+ public void setAverageStars(String[] averageStars) {
+ this.averageStars = averageStars;
}
}
Modified: trunk/registry/modules/webapps/src/main/webapp/admin/ajax_rating.jsp
==============================================================================
--- trunk/registry/modules/webapps/src/main/webapp/admin/ajax_rating.jsp
(original)
+++ trunk/registry/modules/webapps/src/main/webapp/admin/ajax_rating.jsp
Thu Dec 6 23:47:46 2007
@@ -11,61 +11,67 @@
<%
AjaxRatingAction ajaxRatingAction = (AjaxRatingAction)
request.getSession().getAttribute(UIConstants.AJAX_RATING_BEAN);
- //String averageRating = new
Float(ajaxRatingAction.getAvarageRating()).toString();
+ //String averageRating = new
Float(ajaxRatingAction.getAverageRating()).toString();
//String userRating = new
Integer(ajaxRatingAction.getUserRating()).toString();
//String path = request.getParameter("path");
//String ratingDivUserId = request.getParameter("ratingDivUserId");
- int rating=ajaxRatingAction.getUserRating();
-
+ float averageRating = ajaxRatingAction.getAverageRating();
- float averageRating =new Float(3.9333);//new
Float(ajaxRatingAction.getAvarageRating());
+ String[] userStars = ajaxRatingAction.getUserStars();
+ String[] averageStars = ajaxRatingAction.getAverageStars();
- String userStar;
- String averageStar;
- String[] stars = new String[5];
- for (int i = 1; i <= 5; i++) {
- if (rating < i) userStar = "0";
- else userStar = "4";
-
- if (averageRating >= i - 0.125) averageStar = "4";
- else if (averageRating >= i - 0.375) averageStar = "3";
- else if (averageRating >= i - 0.625) averageStar = "2";
- else if (averageRating >= i - 0.875) averageStar = "1";
- else averageStar = "0";
+ //String userStar;
+ //String averageStar;
+ //String[] stars = new String[5];
+ //for (int i = 1; i <= 5; i++) {
+ // if (rating < i) userStar = "0";
+ // else userStar = "4";
+ //
+ // if (averageRating >= i - 0.125) averageStar = "4";
+ // else if (averageRating >= i - 0.375) averageStar = "3";
+ // else if (averageRating >= i - 0.625) averageStar = "2";
+ // else if (averageRating >= i - 0.875) averageStar = "1";
+ // else averageStar = "0";
+ //
+ // stars[i - 1] = userStar + averageStar;
+ //}
- stars[i - 1] = userStar + averageStar;
- }
-
%>
<div id="ratingDivUser">
- <span initialState="<%=stars[0]%> <%=stars[1]%> <%=stars[2]%>
<%=stars[3]%> <%=stars[4]%>" />
+ <span initialState="<%=userStars[0]%> <%=userStars[1]%> <%=userStars[2]%>
<%=userStars[3]%> <%=userStars[4]%>" />
- <img src="/wso2registry/admin/images/r<%=stars[0]%>.gif"
+ <img src="/wso2registry/admin/images/r<%=userStars[0]%>.gif"
+ onclick="setRating(1)"
onmouseover="previewRating('ratingDivUser', 1)"
onmouseout="clearPreview('ratingDivUser')" />
- <img src="/wso2registry/admin/images/r<%=stars[1]%>.gif"
- onmouseover="previewRating('ratingDivUser', 2)"
- onmouseout="clearPreview('ratingDivUser')" />
- <img src="/wso2registry/admin/images/r<%=stars[2]%>.gif"
- onmouseover="previewRating('ratingDivUser', 3)"
- onmouseout="clearPreview('ratingDivUser')" />
- <img src="/wso2registry/admin/images/r<%=stars[3]%>.gif"
- onmouseover="previewRating('ratingDivUser', 4)"
- onmouseout="clearPreview('ratingDivUser')" />
- <img src="/wso2registry/admin/images/r<%=stars[4]%>.gif"
- onmouseover="previewRating('ratingDivUser', 5)"
- onmouseout="clearPreview('ratingDivUser')" />
+ <img src="/wso2registry/admin/images/r<%=userStars[1]%>.gif"
+ onclick="setRating(2)"
+ onmouseover="previewRating('ratingDivUser', 2)"
+ onmouseout="clearPreview('ratingDivUser')" />
+ <img src="/wso2registry/admin/images/r<%=userStars[2]%>.gif"
+ onclick="setRating(3)"
+ onmouseover="previewRating('ratingDivUser', 3)"
+ onmouseout="clearPreview('ratingDivUser')" />
+ <img src="/wso2registry/admin/images/r<%=userStars[3]%>.gif"
+ onclick="setRating(4)"
+ onmouseover="previewRating('ratingDivUser', 4)"
+ onmouseout="clearPreview('ratingDivUser')" />
+ <img src="/wso2registry/admin/images/r<%=userStars[4]%>.gif"
+ onclick="setRating(5)"
+ onmouseover="previewRating('ratingDivUser', 5)"
+ onmouseout="clearPreview('ratingDivUser')" />
</div>
+
<div id="ratingDivAvg">
-
- <img src="/wso2registry/admin/images/r<%=stars[0]%>.gif" />
- <img src="/wso2registry/admin/images/r<%=stars[1]%>.gif" />
- <img src="/wso2registry/admin/images/r<%=stars[2]%>.gif" />
- <img src="/wso2registry/admin/images/r<%=stars[3]%>.gif" />
- <img src="/wso2registry/admin/images/r<%=stars[4]%>.gif" />
-
+ <img src="/wso2registry/admin/images/r<%=averageStars[0]%>.gif" />
+ <img src="/wso2registry/admin/images/r<%=averageStars[1]%>.gif" />
+ <img src="/wso2registry/admin/images/r<%=averageStars[2]%>.gif" />
+ <img src="/wso2registry/admin/images/r<%=averageStars[3]%>.gif" />
+ <img src="/wso2registry/admin/images/r<%=averageStars[4]%>.gif" />
+ <br/>(<%=averageRating%>)
+
</div>
Modified: trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js
==============================================================================
--- trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js
(original)
+++ trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js Thu Dec
6 23:47:46 2007
@@ -193,6 +193,12 @@
}
/* Ajax Rating Functions */
+
+function setRating(rating) {
+
+ new Ajax.Updater('ratingDiv', '/wso2registry/system/setRating', { method:
'post', parameters: {ratingValue: rating} });
+}
+
function previewRating(ratingDivId, value) {
var images = $(ratingDivId).getElementsByTagName("img");
@@ -211,4 +217,4 @@
for (var i = 0; i < 5; i++)
images[i].src = "/wso2registry/admin/images/r" + initialState[i] +
".gif";
-}
\ No newline at end of file
+}
_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev