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

Reply via email to