Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r61c706419c438d5ef52d93bda3de1f7c415380ae -rf3be94729c90c7390a6aea11d1886a4b72d96670 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java =================================================================== diff -u --- lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java (revision 0) +++ lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,101 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.web; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.tomcat.util.json.JSONException; +import org.apache.tomcat.util.json.JSONObject; +import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.service.RatingService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + * Stores rating. + * + * @author Andrey Balan + * + * @web:servlet name="ratingServlet" + * @web:servlet-mapping url-pattern="/servlet/rateItem" + */ +public class RatingServlet extends HttpServlet { + + private static Logger log = Logger.getLogger(RatingServlet.class); + private static RatingService ratingService; + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + getRatingService(); + + float rating = Float.parseFloat((String) request.getParameter("rate")); + String objectId = WebUtil.readStrParam(request, "idBox"); + Long ratingCriteriaId = Long.parseLong(objectId.split("-")[0]); + Long itemId = Long.parseLong(objectId.split("-")[1]); + UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); + Integer userId = user.getUserID(); + + RatingDTO averageRatingDTO = ratingService.rateItem(ratingCriteriaId, userId, itemId, rating); + + // refresh numOfRatings + // int numOfRatings = ratingService.getNumOfRatingsByUserAndForum(userUid, forumUid); + + JSONObject JSONObject = new JSONObject(); + try { + JSONObject.put("averageRating", averageRatingDTO.getAverageRating()); + JSONObject.put("numberOfVotes", averageRatingDTO.getNumberOfVotes()); + + } catch (JSONException e) { + throw new ServletException(e); + } + // JSONObject.put("numOfRatings", numOfRatings); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().print(JSONObject); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, + IOException { + doGet(request, response); + } + + private RatingService getRatingService() { + if (ratingService == null) { + WebApplicationContext ctx = WebApplicationContextUtils + .getRequiredWebApplicationContext(getServletContext()); + ratingService = (RatingService) ctx.getBean("ratingService"); + } + return ratingService; + } +} Index: lams_central/web/css/defaultHTML.css =================================================================== diff -u -r3d40a9b2b5d648150397ef8a0aab05baa9dfb2cf -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_central/web/css/defaultHTML.css (.../defaultHTML.css) (revision 3d40a9b2b5d648150397ef8a0aab05baa9dfb2cf) +++ lams_central/web/css/defaultHTML.css (.../defaultHTML.css) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -1684,4 +1684,35 @@ border: thin solid #2E6E9E !important; color: #222222 !important; background-color: #D0E5F5;" -} \ No newline at end of file +} + +.rating-criteria-tag { + width: 60%; + padding-bottom: 25px; +} +.rating-criteria-tag input[type="text"] { + width: 100%; +} +#criterias-table td { + vertical-align:middle; +} +div.up-arrow, div.up-arrow-disabled, div.down-arrow, div.down-arrow-disabled, div.delete-arrow { + width:16px; + height:16px; + display: table-cell; +} +div.up-arrow { + background-image: url('../images/uparrow.gif'); +} +div.up-arrow-disabled { + background-image: url('../images/uparrow_disabled.gif'); +} +div.down-arrow { + background-image: url('../images/downarrow.gif'); +} +div.down-arrow-disabled { + background-image: url('../images/downarrow_disabled.gif'); +} +div.delete-arrow { + background-image: url('../images/disposal.gif'); +} Index: lams_central/web/css/jquery.jRating.css =================================================================== diff -u -rf7d806b0ab4f783c2dd89e920d7f6edf370c04db -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_central/web/css/jquery.jRating.css (.../jquery.jRating.css) (revision f7d806b0ab4f783c2dd89e920d7f6edf370c04db) +++ lams_central/web/css/jquery.jRating.css (.../jquery.jRating.css) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -40,11 +40,17 @@ text-align:center; padding-top:5px; } - p.jRatingInfos span.maxRate { - color:#c9c9c9; - font-size:14px; - } +p.jRatingInfos span.maxRate { + color:#c9c9c9; + font-size:14px; +} + /** Please, note this is a LAMS customization. In case of library upgrade copy these lines manually. **/ +.rating-stars-holder {width: 150px; text-align: center;} +.rating-stars-caption {padding-top: 6px;} +.rating-stars, .rating-stars-disabled {margin: 0px auto;} + +/** Remove the following once we move all tools to use Rating.tag. **/ .rating-stars-div {float:right; padding-right: 10px; margin-top: -8px; min-height: 45px;} -.rating-stars-caption {text-align: center; padding-top: 6px;} +.rating-stars-caption {text-align: center} \ No newline at end of file Index: lams_central/web/images/disposal.gif =================================================================== diff -u Binary files differ Index: lams_central/web/images/downarrow.gif =================================================================== diff -u Binary files differ Index: lams_central/web/images/downarrow_disabled.gif =================================================================== diff -u Binary files differ Index: lams_central/web/images/uparrow.gif =================================================================== diff -u Binary files differ Index: lams_central/web/images/uparrow_disabled.gif =================================================================== diff -u Binary files differ Index: lams_central/web/includes/javascript/jquery.jRating.js =================================================================== diff -u -rf7d806b0ab4f783c2dd89e920d7f6edf370c04db -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_central/web/includes/javascript/jquery.jRating.js (.../jquery.jRating.js) (revision f7d806b0ab4f783c2dd89e920d7f6edf370c04db) +++ lams_central/web/includes/javascript/jquery.jRating.js (.../jquery.jRating.js) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -62,7 +62,8 @@ $(this).height(starHeight); var average = parseFloat($(this).attr('data-average')), // get the average of all rates - idBox = parseInt($(this).attr('data-id')), // get the id of the box + //**LAMS** customized. originally it looked like idBox = parseInt($(this).attr('data-id')), + idBox = $(this).attr('data-id'), // get the id of the box widthRatingContainer = starWidth*opts.length, // Width of the Container widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/rating/Rating.hbm.xml =================================================================== diff -u --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/rating/Rating.hbm.xml (revision 0) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/rating/Rating.hbm.xml (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/rating/RatingCriteria.hbm.xml =================================================================== diff -u --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/rating/RatingCriteria.hbm.xml (revision 0) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/rating/RatingCriteria.hbm.xml (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,64 @@ + + + + + + + + @hibernate.class table="lams_rating_criteria" + true + + + @hibernate.id generator-class="native" type="java.lang.Long" column="rating_criteria_id" + + + + + + + @hibernate.property column="title" length="255" + + + + @hibernate.property column="order_id" length="11" + + + + @hibernate.property column="rating_criteria_type_id" length="11" + + + + + @hibernate.class + + + + @hibernate.class + + + + + @hibernate.class + + + + + @hibernate.class + + + + @hibernate.column name="lesson_id" + + + + + + + Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -r118a795019536460b08165470a13fe99544705e8 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 118a795019536460b08165470a13fe99544705e8) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -222,6 +222,31 @@ + + + + + + + + + + + + + + + true + + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + + + + @@ -417,6 +442,14 @@ + + + + + + + + Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040041.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040041.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040041.sql (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,57 @@ +-- Turn off autocommit, so nothing is committed if there is an error + +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; + +-- LDEV-3450 Implement peer review feature +CREATE TABLE lams_rating_criteria_type ( + rating_criteria_type_id INT(11) NOT NULL DEFAULT 0 + , description VARCHAR(255) NOT NULL + , PRIMARY KEY (rating_criteria_type_id) +)ENGINE=InnoDB; + +CREATE TABLE lams_rating_criteria ( + rating_criteria_id BIGINT(20) NOT NULL AUTO_INCREMENT + , title VARCHAR(255) + , rating_criteria_type_id INT(11) NOT NULL DEFAULT 0 + , order_id INT(11) NOT NULL + , tool_content_id BIGINT(20) + , item_id BIGINT(20) + , lesson_id BIGINT(20) + , PRIMARY KEY (rating_criteria_id) + , INDEX (rating_criteria_type_id) + , CONSTRAINT FK_lams_rating_criteria_1 FOREIGN KEY (rating_criteria_type_id) + REFERENCES lams_rating_criteria_type (rating_criteria_type_id) + , INDEX (tool_content_id) + , CONSTRAINT FK_lams_rating_criteria_2 FOREIGN KEY (tool_content_id) + REFERENCES lams_tool_content (tool_content_id) ON DELETE NO ACTION ON UPDATE NO ACTION + , INDEX (lesson_id) + , CONSTRAINT FK_lams_rating_criteria_3 FOREIGN KEY (lesson_id) + REFERENCES lams_lesson (lesson_id) ON DELETE NO ACTION ON UPDATE NO ACTION +)ENGINE=InnoDB; + +CREATE TABLE lams_rating ( + uid BIGINT(20) NOT NULL AUTO_INCREMENT + , rating_criteria_id BIGINT(20) NOT NULL + , item_id BIGINT(20) + , user_id BIGINT(20) NOT NULL + , rating FLOAT + , PRIMARY KEY (uid) + , INDEX (rating_criteria_id) + , CONSTRAINT FK_lams_rating_1 FOREIGN KEY (rating_criteria_id) + REFERENCES lams_rating_criteria (rating_criteria_id) ON DELETE CASCADE ON UPDATE CASCADE + , INDEX (user_id) + , CONSTRAINT FK_lams_rating_2 FOREIGN KEY (user_id) + REFERENCES lams_user (user_id) ON DELETE CASCADE ON UPDATE CASCADE +)ENGINE=InnoDB; + +INSERT INTO lams_rating_criteria_type VALUES (1, 'TOOL_ACTIVITY'); +INSERT INTO lams_rating_criteria_type VALUES (2, 'AUTHORED_ITEM'); +INSERT INTO lams_rating_criteria_type VALUES (3, 'LEARNER_ITEM'); +INSERT INTO lams_rating_criteria_type VALUES (4, 'LESSON'); + + +-- If there were no errors, commit and restore autocommit to on +SET FOREIGN_KEY_CHECKS=0; +COMMIT; +SET AUTOCOMMIT = 1; Index: lams_common/src/java/org/lamsfoundation/lams/rating/RatingCriteriaOrderComparator.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/RatingCriteriaOrderComparator.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/RatingCriteriaOrderComparator.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,70 @@ +/*************************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * ***********************************************************************/ +/* $Id$ */ +package org.lamsfoundation.lams.rating; + +import java.io.Serializable; +import java.util.Comparator; + +import org.lamsfoundation.lams.rating.model.RatingCriteria; + +/** + * The ratingCriteria order comparator used for sorted set. Order id is used as the primary comparing criteria as it is + * unique within a complex ratingCriteria. If they are the same, ratingCriteria id are used for comparison to ensure the + * sorted set won't treat two activities with the same order id as the same ratingCriteria. If either of the + * ratingCriteria ids are null (activities are not yet saved in the database) use the ratingCriteria ui id. The ui ids + * will compare nulls if required, with null being lower than not null. Two nulls will equal true. + * + * @author andreyb + */ +public class RatingCriteriaOrderComparator implements Comparator, Serializable { + + @Override + public int compare(Object o1, Object o2) { + RatingCriteria ratingCriteria1 = (RatingCriteria) o1; + RatingCriteria ratingCriteria2 = (RatingCriteria) o2; + + if (ratingCriteria1.getOrderId() == null || ratingCriteria2.getOrderId() == null) + return compareRatingCriteriaId(ratingCriteria1, ratingCriteria2); + + int orderDiff = ratingCriteria1.getOrderId().compareTo(ratingCriteria2.getOrderId()); + // return order id compare result if they are not the same + if (orderDiff != 0) + return orderDiff; + // if order id are the same, compare ratingCriteria id. + else + return compareRatingCriteriaId(ratingCriteria1, ratingCriteria2); + } + + private int compareRatingCriteriaId(RatingCriteria ratingCriteria1, RatingCriteria ratingCriteria2) { + if (ratingCriteria1.getRatingCriteriaId() == null && ratingCriteria2.getRatingCriteriaId() == null) { + return 0; + } + if (ratingCriteria1.getRatingCriteriaId() == null) { + return -1; + } + if (ratingCriteria2.getRatingCriteriaId() == null) { + return 1; + } + return ratingCriteria1.getRatingCriteriaId().compareTo(ratingCriteria2.getRatingCriteriaId()); + } +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingCriteriaDAO.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingCriteriaDAO.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingCriteriaDAO.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,40 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.rating.dao; + +import java.util.List; + +import org.lamsfoundation.lams.rating.model.RatingCriteria; + +public interface IRatingCriteriaDAO { + + void saveOrUpdate(RatingCriteria criteria); + + void deleteRatingCriteria(Long ratingCriteriaId); + + List getByToolContentId(Long toolContentId); + + RatingCriteria getByUid(Long ratingCriteriaId); + +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingDAO.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingDAO.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingDAO.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,51 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.rating.dao; + +import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.model.Rating; + +public interface IRatingDAO { + + void saveOrUpdate(Rating rating); + + Rating getRating(Long ratingCriteriaId, Integer userId, Long itemId); + + Rating getRating(Long ratingCriteriaId, Integer userId); + + /** + * Returns rating statistics by particular item + * + * @param itemId + * @return + */ + RatingDTO getRatingAverageDTOByItem(Long ratingCriteriaId, Long itemId); + + RatingDTO getRatingAverageDTOByUser(Long ratingCriteriaId, Long itemId, Integer userId); + + Rating get(Long uid); + +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingCriteriaDAO.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingCriteriaDAO.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingCriteriaDAO.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,61 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.rating.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; +import org.lamsfoundation.lams.rating.dao.IRatingCriteriaDAO; +import org.lamsfoundation.lams.rating.model.RatingCriteria; + +public class RatingCriteriaDAO extends LAMSBaseDAO implements IRatingCriteriaDAO { + + private static final String FIND_BY_TOOL_CONTENT_ID = "from " + RatingCriteria.class.getName() + + " as r where r.toolContentId=? order by r.orderId asc"; + + @Override + public void saveOrUpdate(RatingCriteria criteria) { + getSession().saveOrUpdate(criteria); + getSession().flush(); + } + + @Override + public void deleteRatingCriteria(Long ratingCriteriaId) { + this.deleteById(RatingCriteria.class, ratingCriteriaId); + } + + @Override + public List getByToolContentId(Long toolContentId) { + return (List) (doFind(FIND_BY_TOOL_CONTENT_ID, new Object[] { toolContentId })); + } + + public RatingCriteria getByUid(Long ratingCriteriaId) { + if (ratingCriteriaId != null) { + Object o = super.find(RatingCriteria.class, ratingCriteriaId); + return (RatingCriteria) o; + } else { + return null; + } + } +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingDAO.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingDAO.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingDAO.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,113 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.rating.dao.hibernate; + +import java.text.NumberFormat; +import java.util.List; +import java.util.Locale; + +import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; +import org.lamsfoundation.lams.rating.dao.IRatingDAO; +import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.model.Rating; + +public class RatingDAO extends LAMSBaseDAO implements IRatingDAO { + + private static final String FIND_RATING_BY_CRITERIA_AND_USER_AND_ITEM = "FROM " + Rating.class.getName() + + " AS r where r.ratingCriteria.ratingCriteriaId=? AND r.learner.userId=? AND r.itemId=?"; + private static final String FIND_RATING_VALUE = "SELECT r.rating FROM " + Rating.class.getName() + + " AS r where r.ratingCriteria.ratingCriteriaId=? AND r.learner.userId=? AND r.itemId=?"; + private static final String FIND_RATING_BY_CRITERIA_AND_USER = "FROM " + Rating.class.getName() + + " AS r where r.ratingCriteria.ratingCriteriaId=? AND r.learner.userId=?"; + private static final String FIND_RATING_AVERAGE_BY_ITEM = "SELECT AVG(r.rating), COUNT(*) FROM " + + Rating.class.getName() + " AS r where r.ratingCriteria.ratingCriteriaId=? AND r.itemId=?"; + + @Override + public void saveOrUpdate(Rating rating) { + getSession().saveOrUpdate(rating); + getSession().flush(); + } + + @Override + public Rating getRating(Long ratingCriteriaId, Integer userId, Long itemId) { + List list = (List) doFind(FIND_RATING_BY_CRITERIA_AND_USER_AND_ITEM, new Object[] { ratingCriteriaId, userId, + itemId }); + if (list.size() > 0) { + return (Rating) list.get(0); + } else { + return null; + } + } + + @Override + public Rating getRating(Long ratingCriteriaId, Integer userId) { + List list = (List) doFind(FIND_RATING_BY_CRITERIA_AND_USER, new Object[] { ratingCriteriaId, userId }); + if (list.size() > 0) { + return (Rating) list.get(0); + } else { + return null; + } + } + + @Override + public RatingDTO getRatingAverageDTOByItem(Long ratingCriteriaId, Long itemId) { + List list = (List) doFind(FIND_RATING_AVERAGE_BY_ITEM, new Object[] { ratingCriteriaId, itemId }); + Object[] results = list.get(0); + + Object averageRatingObj = (results[0] == null) ? 0 : results[0]; + NumberFormat numberFormat = NumberFormat.getInstance(Locale.US); + numberFormat.setMaximumFractionDigits(1); + String averageRating = numberFormat.format(averageRatingObj); + + String numberOfVotes = (results[1] == null) ? "0" : String.valueOf(results[1]); + return new RatingDTO(averageRating, numberOfVotes); + } + + @Override + public RatingDTO getRatingAverageDTOByUser(Long ratingCriteriaId, Long itemId, Integer userId) { + + RatingDTO ratingDTO = getRatingAverageDTOByItem(ratingCriteriaId, itemId); + + Float userRating = 0F; + List list = doFind(FIND_RATING_VALUE, new Object[] { ratingCriteriaId, userId, itemId }); + if (list.size() > 0) { + userRating = (Float) list.get(0); + } + ratingDTO.setUserRating(userRating.toString()); + ratingDTO.setItemId(itemId); + + return ratingDTO; + } + + public Rating get(Long uid) { + if (uid != null) { + Object o = super.find(Rating.class, uid); + return (Rating) o; + } else { + return null; + } + } +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/dto/RatingDTO.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/dto/RatingDTO.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/dto/RatingDTO.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,81 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.rating.dto; + +import org.lamsfoundation.lams.rating.model.RatingCriteria; + +public class RatingDTO { + + private String userRating; + private String averageRating; + private String numberOfVotes; + private Long itemId; + private RatingCriteria ratingCriteria; + + public RatingDTO(String rating, String numberOfVotes) { + this.averageRating = rating; + this.numberOfVotes = numberOfVotes; + } + + public String getUserRating() { + return userRating; + } + + public void setUserRating(String userRating) { + this.userRating = userRating; + } + + public String getAverageRating() { + return averageRating; + } + + public void setAverageRating(String averageRating) { + this.averageRating = averageRating; + } + + public String getNumberOfVotes() { + return numberOfVotes; + } + + public void setNumberOfVotes(String numberOfVotes) { + this.numberOfVotes = numberOfVotes; + } + + public Long getItemId() { + return itemId; + } + + public void setItemId(Long itemId) { + this.itemId = itemId; + } + + public RatingCriteria getRatingCriteria() { + return ratingCriteria; + } + + public void setRatingCriteria(RatingCriteria ratingCriteria) { + this.ratingCriteria = ratingCriteria; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/model/AuthoredItemRatingCriteria.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/model/AuthoredItemRatingCriteria.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/model/AuthoredItemRatingCriteria.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,69 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.rating.model; + +import java.io.Serializable; + +import org.apache.commons.lang.builder.ToStringBuilder; + +public class AuthoredItemRatingCriteria extends ToolActivityRatingCriteria implements Cloneable, Serializable { + /** Holds value of property itemId. */ + private Long itemId; + + @Override + public Object clone() { + AuthoredItemRatingCriteria newCriteria = (AuthoredItemRatingCriteria) super.clone(); + return newCriteria; + } + + public String toString() { + return new ToStringBuilder(this).append("ratingCriteriaId", getRatingCriteriaId()).toString(); + } + + /** + * @see org.lamsfoundation.lams.util.Nullable#isNull() + */ + public boolean isNull() { + return false; + } + + /** + * Getter for property itemId. + * + * @return Value of property itemId. + */ + public Long getItemId() { + return this.itemId; + } + + /** + * Setter for property itemId. + * + * @param itemId + * New value of property itemId. + */ + public void setItemId(Long itemId) { + this.itemId = itemId; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/model/LearnerItemRatingCriteria.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/model/LearnerItemRatingCriteria.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/model/LearnerItemRatingCriteria.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,48 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.rating.model; + +import java.io.Serializable; + +import org.apache.commons.lang.builder.ToStringBuilder; + +public class LearnerItemRatingCriteria extends ToolActivityRatingCriteria implements Cloneable, Serializable { + + @Override + public Object clone() { + LearnerItemRatingCriteria newCriteria = (LearnerItemRatingCriteria) super.clone(); + return newCriteria; + } + + public String toString() { + return new ToStringBuilder(this).append("ratingCriteriaId", getRatingCriteriaId()).toString(); + } + + /** + * @see org.lamsfoundation.lams.util.Nullable#isNull() + */ + public boolean isNull() { + return false; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/model/LessonRatingCriteria.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/model/LessonRatingCriteria.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/model/LessonRatingCriteria.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,71 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.rating.model; + +import java.io.Serializable; + +import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.lesson.Lesson; + +public class LessonRatingCriteria extends RatingCriteria implements Cloneable, Serializable { + /** Holds value of property lessonId. */ + private Lesson lesson; + + @Override + public Object clone() { + LessonRatingCriteria newCriteria = (LessonRatingCriteria) super.clone(); + newCriteria.setLesson(null); + return newCriteria; + } + + public String toString() { + return new ToStringBuilder(this).append("ratingCriteriaId", getRatingCriteriaId()).toString(); + } + + /** + * @see org.lamsfoundation.lams.util.Nullable#isNull() + */ + public boolean isNull() { + return false; + } + + /** + * Getter for property lesson. + * + * @return Value of property lesson. + */ + public Lesson getLesson() { + return this.lesson; + } + + /** + * Setter for property lesson. + * + * @param lessonId + * New value of property lesson. + */ + public void setLesson(Lesson lesson) { + this.lesson = lesson; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/model/Rating.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/model/Rating.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/model/Rating.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,105 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.rating.model; + +import org.lamsfoundation.lams.usermanagement.User; + +/** + */ +public class Rating implements java.io.Serializable, Cloneable { + + private static final long serialVersionUID = 4831819420875651676L; + + private Long uid; + + private RatingCriteria ratingCriteria; + + private Long itemId; + + private User learner; + + private float rating; + + public Rating() { + } + + public Rating(Long itemId, RatingCriteria ratingCriteria, User learner, Float rating) { + this.itemId = itemId; + this.ratingCriteria = ratingCriteria; + this.learner = learner; + this.rating = rating; + } + + /** + */ + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + */ + public Long getItemId() { + return itemId; + } + + public void setItemId(Long itemId) { + this.itemId = itemId; + } + + /** + */ + public RatingCriteria getRatingCriteria() { + return ratingCriteria; + } + + public void setRatingCriteria(RatingCriteria ratingCriteria) { + this.ratingCriteria = ratingCriteria; + } + + /** + */ + public User getLearner() { + return learner; + } + + public void setLearner(User learner) { + this.learner = learner; + } + + /** + */ + public void setRating(float rating) { + this.rating = rating; + } + + public float getRating() { + return this.rating; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/model/RatingCriteria.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/model/RatingCriteria.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/model/RatingCriteria.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,256 @@ +/*************************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * ************************************************************************ + */ +/* $Id$ */ +package org.lamsfoundation.lams.rating.model; + +import java.io.Serializable; +import java.util.Date; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.util.Nullable; + +/** + * Base class for all RatingCriterias. If you add another subclass, you must update + * RatingCriteriaDAO.getRatingCriteriaByRatingCriteriaId() and add a ACTIVITY_TYPE constant. + */ +public abstract class RatingCriteria implements Serializable, Nullable, Comparable, Cloneable { + + private static final Logger log = Logger.getLogger(RatingCriteria.class); + private static final long serialVersionUID = -2282899640789455260L; + // --------------------------------------------------------------------- + // Class Level Constants + // --------------------------------------------------------------------- + /* + * static final variables indicating the type of activities available for a LearningDesign. As new types of + * activities are added, these constants must be updated, as well as + * RatingCriteriaDAO.getRatingCriteriaByRatingCriteriaId() + * + * OPTIONS_WITH_SEQUENCES_TYPE is set up just to support Flash. The server treads OptionsRatingCriteria and + * OptionalSequenceRatingCriteria the same. + */ + /* **************************************************************** */ + public static final int TOOL_ACTIVITY_CRITERIA_TYPE = 1; + public static final int AUTHORED_ITEM_CRITERIA_TYPE = 2; + public static final int LEARNER_ITEM_CRITERIA_TYPE = 3; + public static final int LESSON_CRITERIA_TYPE = 4; + /** *************************************************************** */ + + /** + * Entries for an ratingCriteria in a language property file + */ + public static final String I18N_TITLE = "rating.criteria.title"; + public static final String I18N_DESCRIPTION = "rating.criteria.description"; + public static final String I18N_HELP_TEXT = "rating.criteria.helptext"; + + // --------------------------------------------------------------------- + // Instance variables + // --------------------------------------------------------------------- + + /** identifier field */ + private Long ratingCriteriaId; + + /** Title of the ratingCriteria */ + private String title; + + /** + * Indicates the order in which the activities appear inside complex activities. Starts from 0, 1 and so on. + */ + private Integer orderId; + + /** The type of ratingCriteria */ + private Integer ratingCriteriaTypeId; + + // --------------------------------------------------------------------- + // Object constructors + // --------------------------------------------------------------------- + + /* + * For the createDateTime fields, if the value is null, then it will default to the current time. + */ + + /** full constructor */ + public RatingCriteria(Long ratingCriteriaId, String title, Integer orderId, Date createDateTime, + Integer ratingCriteriaTypeId) { + this.ratingCriteriaId = ratingCriteriaId; + this.title = title; + this.orderId = orderId; + this.ratingCriteriaTypeId = ratingCriteriaTypeId; + } + + /** default constructor */ + public RatingCriteria() { + } + + /** minimal constructor */ + public RatingCriteria(Long ratingCriteriaId, Date createDateTime, RatingCriteria parentRatingCriteria, + Integer ratingCriteriaTypeId) { + this.ratingCriteriaId = ratingCriteriaId; + this.ratingCriteriaTypeId = ratingCriteriaTypeId; + } + + public static RatingCriteria getRatingCriteriaInstance(int ratingCriteriaType) { + // the default constructors don't set up the ratingCriteria type + // so we need to do that manually + // also default to a sensible category type + RatingCriteria ratingCriteria = null; + switch (ratingCriteriaType) { + case TOOL_ACTIVITY_CRITERIA_TYPE: + ratingCriteria = new ToolActivityRatingCriteria(); + break; + case AUTHORED_ITEM_CRITERIA_TYPE: + ratingCriteria = new AuthoredItemRatingCriteria(); + break; + case LEARNER_ITEM_CRITERIA_TYPE: + ratingCriteria = new LearnerItemRatingCriteria(); + break; + case LESSON_CRITERIA_TYPE: + default: + ratingCriteria = new LessonRatingCriteria(); + break; + } + ratingCriteria.setRatingCriteriaTypeId(new Integer(ratingCriteriaType)); + return ratingCriteria; + } + + // --------------------------------------------------------------------- + // Getters and Setters + // --------------------------------------------------------------------- + public Long getRatingCriteriaId() { + return ratingCriteriaId; + } + + public void setRatingCriteriaId(Long ratingCriteriaId) { + this.ratingCriteriaId = ratingCriteriaId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Integer getOrderId() { + return orderId; + } + + public void setOrderId(Integer orderId) { + this.orderId = orderId; + } + + public Integer getRatingCriteriaTypeId() { + return ratingCriteriaTypeId; + } + + public void setRatingCriteriaTypeId(Integer ratingCriteriaTypeId) { + this.ratingCriteriaTypeId = ratingCriteriaTypeId; + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("ratingCriteriaId", ratingCriteriaId).toString(); + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } + if (!(other instanceof RatingCriteria)) { + return false; + } + RatingCriteria castOther = (RatingCriteria) other; + return new EqualsBuilder().append(this.getOrderId(), castOther.getOrderId()) + .isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(getOrderId()).toHashCode(); + } + + // --------------------------------------------------------------------- + // Service Methods + // --------------------------------------------------------------------- + + // --------------------------------------------------------------------- + // RatingCriteria Type checking methods + // --------------------------------------------------------------------- + /** + * Check up whether an ratingCriteria is tool ratingCriteria or not. + * + * @return is this ratingCriteria a tool ratingCriteria? + */ + public boolean isToolActivityRatingCriteria() { + return getRatingCriteriaTypeId().intValue() == RatingCriteria.TOOL_ACTIVITY_CRITERIA_TYPE; + } + + /** + * Check up whether an ratingCriteria is authored ratingCriteria or not. + * + * @return is this ratingCriteria authored? + */ + public boolean isAuthoredItemRatingCriteria() { + return getRatingCriteriaTypeId().intValue() == RatingCriteria.AUTHORED_ITEM_CRITERIA_TYPE; + } + + public boolean isLearnerItemRatingCriteria() { + return getRatingCriteriaTypeId().intValue() == RatingCriteria.LEARNER_ITEM_CRITERIA_TYPE; + } + + public boolean isLessonRatingCriteria() { + return getRatingCriteriaTypeId().intValue() == RatingCriteria.LESSON_CRITERIA_TYPE; + } + + // --------------------------------------------------------------------- + // Data Transfer object creation methods + // --------------------------------------------------------------------- + + @Override + public Object clone() { + RatingCriteria criteria = null; + try { + criteria = (RatingCriteria) super.clone(); + criteria.setRatingCriteriaId(null); + } catch (CloneNotSupportedException e) { + RatingCriteria.log.error("When clone " + RatingCriteria.class + " failed"); + } + + return criteria; + } + + public int compareTo(Object o) { + + if ((o != null) && o instanceof RatingCriteria) { + RatingCriteria anotherCriteria = (RatingCriteria) o; + return (int) (orderId - anotherCriteria.getOrderId()); + } else { + return 1; + } + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/rating/model/ToolActivityRatingCriteria.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/model/ToolActivityRatingCriteria.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/model/ToolActivityRatingCriteria.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,75 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $Id$ */ +package org.lamsfoundation.lams.rating.model; + +import java.io.Serializable; + +import org.apache.commons.lang.builder.ToStringBuilder; + +/** + */ +public class ToolActivityRatingCriteria extends RatingCriteria implements Serializable, Cloneable { + + private static final long serialVersionUID = 6459453751049962314L; + /** Holds value of property toolContentId. */ + private Long toolContentId; + + @Override + public Object clone() { + ToolActivityRatingCriteria newCriteria = (ToolActivityRatingCriteria) super.clone(); + newCriteria.setToolContentId(null); + return newCriteria; + } + + public String toString() { + return new ToStringBuilder(this).append("ratingCriteriaId", getRatingCriteriaId()).toString(); + } + + /** + * @see org.lamsfoundation.lams.util.Nullable#isNull() + */ + public boolean isNull() { + return false; + } + + /** + * Getter for property toolContentId. + * + * @return Value of property toolContentId. + */ + public Long getToolContentId() { + return this.toolContentId; + } + + /** + * Setter for property toolContentId. + * + * @param toolContentId + * New value of property toolContentId. + */ + public void setToolContentId(Long toolContentId) { + this.toolContentId = toolContentId; + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/service/IRatingService.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/service/IRatingService.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/service/IRatingService.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,91 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.rating.service; + +import java.util.List; + +import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.model.Rating; +import org.lamsfoundation.lams.rating.model.RatingCriteria; +import org.lamsfoundation.lams.rating.model.ToolActivityRatingCriteria; + +public interface IRatingService { + +// Long createRating(Long id, Integer idType, String signature, Integer userID, String title, String entry); +// +// TreeMap> getEntryByLesson(Integer userID, Integer idType); +// +// List getEntry(Long id, Integer idType, String signature, Integer userID); +// +// List getEntry(Long id, Integer idType, String signature); +// +// List getEntry(Long id, Integer idType, Integer userID); +// +// List getEntry(Integer userID); +// +// List getEntry(Integer userID, Integer idType); +// +// List getEntry(Integer userID, Long lessonID); +// +// Rating getEntry(Long uid); +// +// void updateEntry(Long uid, String title, String entry); +// +// void updateEntry(Rating rating); + + void saveOrUpdateRating(Rating rating); + + void saveOrUpdateRatingCriteria(RatingCriteria criteria); + + void deleteRatingCriteria(Long ratingCriteriaId); + + List getCriteriasByToolContentId(Long toolContentId); + + /** + * Return Rating by the given itemId and userId. + * + * @param itemId + * @param userId + * @return + */ + Rating getRatingByItemAndUser(Long itemId, Integer userId); + + /** + * Return list of imageRatings by the the given itemId. + * + * @param itemId + * @return + */ + List getRatingsByItem(Long itemId); + + RatingDTO rateItem(Long ratingCriteriaId, Integer userId, Long itemId, float ratingFloat); + + RatingDTO getRatingDTOByUser(Long ratingCriteriaId, Long itemId, Integer userId); + +// IUserManagementService getUserManagementService(); +// +// MessageService getMessageService(); +} Index: lams_common/src/java/org/lamsfoundation/lams/rating/service/RatingService.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/rating/service/RatingService.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/rating/service/RatingService.java (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,203 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.rating.service; + +import java.util.List; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.rating.dao.IRatingCriteriaDAO; +import org.lamsfoundation.lams.rating.dao.IRatingDAO; +import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.model.Rating; +import org.lamsfoundation.lams.rating.model.RatingCriteria; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.MessageService; + +public class RatingService implements IRatingService { + + private static Logger log = Logger.getLogger(RatingService.class); + + private IRatingDAO ratingDAO; + + private IRatingCriteriaDAO ratingCriteriaDAO; + + protected IUserManagementService userManagementService; + + protected MessageService messageService; + +// public TreeMap> getEntryByLesson(Integer userID, Integer idType) { +// TreeMap> entryMap = new TreeMap>(); +// List list = getEntry(userID, idType); +// +// for (Rating entry : list) { +// if (entryMap.containsKey(entry.getItemId())) { +// String lessonName = (String) entryMap.get(entry.getItemId()).get(0).getRating(); +// entry.setRating(lessonName); +// entryMap.get(entry.getItemId()).add(entry); +// } else { +// Lesson lesson = (Lesson) baseDAO.find(Lesson.class, entry.getItemId()); +// List newEntryList = new ArrayList(); +// +// entry.setRating(lesson.getLessonName()); +// newEntryList.add(entry); +// +// entryMap.put(entry.getItemId(), newEntryList); +// } +// } +// +// return entryMap; +// } +// +// public List getEntry(Long id, Integer idType, String signature, Integer userID) { +// return ratingDAO.get(id, idType, signature, userID); +// } +// +// public List getEntry(Long id, Integer idType, String signature) { +// return ratingDAO.get(id, idType, signature); +// } +// +// public List getEntry(Long id, Integer idType, Integer userID) { +// return ratingDAO.get(id, idType, userID); +// } +// +// public List getEntry(Integer userID) { +// return ratingDAO.get(userID); +// } +// +// public List getEntry(Integer userID, Integer idType) { +// return ratingDAO.get(userID, idType); +// } +// +// public List getEntry(Integer userID, Long lessonID) { +// return ratingDAO.get(userID, lessonID); +// } +// +// public Rating getEntry(Long uid) { +// return ratingDAO.get(uid); +// } +// +// public void updateEntry(Long uid, String title, String entry) { +// Rating ne = getEntry(uid); +// if (ne != null) { +// ne.setTitle(title); +// ne.setEntry(entry); +// ne.setLastModified(new Date()); +// saveOrUpdateRating(ne); +// } else { +// log.debug("updateEntry: uid " + uid + "does not exist"); +// } +// } +// +// public void updateEntry(Rating rating) { +// rating.setLastModified(new Date()); +// saveOrUpdateRating(rating); +// } + + @Override + public Rating getRatingByItemAndUser(Long itemId, Integer userId) { + return null; + } + + @Override + public List getRatingsByItem(Long itemId) { + return null; + } + + @Override + public void saveOrUpdateRating(Rating rating) { + ratingDAO.saveOrUpdate(rating); + } + + @Override + public RatingDTO rateItem(Long ratingCriteriaId, Integer userId, Long itemId, float ratingFloat) { + Rating rating = ratingDAO.getRating(ratingCriteriaId, userId, itemId); + + //persist MessageRating changes in DB + if (rating == null) { // add + rating = new Rating(); + rating.setItemId(itemId); + + User learner = (User) userManagementService.findById(User.class, userId); + rating.setLearner(learner); + + RatingCriteria ratingCriteria = (RatingCriteria) userManagementService.findById(RatingCriteria.class, ratingCriteriaId); + rating.setRatingCriteria(ratingCriteria); + } + rating.setRating(ratingFloat); + ratingDAO.saveOrUpdate(rating); + + //to make available new changes be visible on a jsp page + return ratingDAO.getRatingAverageDTOByItem(ratingCriteriaId, itemId); + } + + @Override + public RatingDTO getRatingDTOByUser(Long ratingCriteriaId, Long itemId, Integer userId) { + return ratingDAO.getRatingAverageDTOByUser(ratingCriteriaId, itemId, userId); + } + + @Override + public List getCriteriasByToolContentId(Long toolContentId) { + List criterias = ratingCriteriaDAO.getByToolContentId(toolContentId); + return criterias; + } + + @Override + public void saveOrUpdateRatingCriteria(RatingCriteria criteria) { + ratingCriteriaDAO.saveOrUpdate(criteria); + } + + @Override + public void deleteRatingCriteria(Long ratingCriteriaId) { + ratingCriteriaDAO.deleteRatingCriteria(ratingCriteriaId); + } + + /* ********** Used by Spring to "inject" the linked objects ************* */ + + public void setRatingDAO(IRatingDAO ratingDAO) { + this.ratingDAO = ratingDAO; + } + + public void setRatingCriteriaDAO(IRatingCriteriaDAO ratingCriteriaDAO) { + this.ratingCriteriaDAO = ratingCriteriaDAO; + } + + /** + * + * @param IUserManagementService + * The userManagementService to set. + */ + public void setUserManagementService(IUserManagementService userManagementService) { + this.userManagementService = userManagementService; + } + + /** + * Set i18n MessageService + */ + public void setMessageService(MessageService messageService) { + this.messageService = messageService; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java =================================================================== diff -u -rc135649b64e98c9233da20bdcfb7689598116314 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java (.../AttributeNames.java) (revision c135649b64e98c9233da20bdcfb7689598116314) +++ lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java (.../AttributeNames.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -84,6 +84,8 @@ public static final String ATTR_SESSION_STATUS = "sessionStatus"; public static final String ATTR_ACTIVITY_POSITION = "activityPosition"; public static final String ATTR_LEARNER_CONTENT_FOLDER = "learnerContentFolder"; + public static final String ATTR_RATING_CRITERIAS = "ratingCriterias"; + public static final String ATTR_RATINGS = "ratings"; // for Pedagogical Planner public static final String PARAM_COMMAND = "command"; Index: lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml =================================================================== diff -u --- lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml (revision 0) +++ lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_images/conf/xdoclet/struts-actions.xml =================================================================== diff -u -r6d674e346dea6ce7a824366c8a7c315660677744 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 6d674e346dea6ce7a824366c8a7c315660677744) +++ lams_tool_images/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -172,14 +172,6 @@ validate="false"> - - - - + + Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java =================================================================== diff -u -r4d7dfe83093db060d8edeab425ce01543b38b530 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java (.../ImageGallery.java) (revision 4d7dfe83093db060d8edeab425ce01543b38b530) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java (.../ImageGallery.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -23,25 +23,18 @@ /* $Id$ */ package org.lamsfoundation.lams.tool.imageGallery.model; -import java.util.ArrayList; import java.util.Date; import java.util.HashSet; -import java.util.Iterator; -import java.util.List; import java.util.Set; -import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.log4j.Logger; -import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; -import org.lamsfoundation.lams.tool.imageGallery.util.ImageGalleryToolContentHandler; +import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; /** * ImageGallery * - * @hibernate.class table="tl_laimag10_imagegallery" - * */ public class ImageGallery implements Cloneable { @@ -56,13 +49,13 @@ private String title; private String instructions; - + private Long nextImageTitle; // advance private boolean allowVote; - + private boolean allowCommentImages; private boolean allowShareImages; @@ -75,6 +68,8 @@ private boolean allowRank; + private Set ratingCriterias; + // general infomation private Date created; @@ -88,7 +83,7 @@ private boolean reflectOnActivity; private String reflectInstructions; - + private boolean notifyTeachersOnImageSumbit; /** @@ -116,6 +111,15 @@ item.setCreateBy(toContent.getCreatedBy()); } } + + // reset contentId + if (toContent.getRatingCriterias() != null) { + Set criterias = toContent.getRatingCriterias(); + for (LearnerItemRatingCriteria criteria : criterias) { + criteria.setToolContentId(contentId); + } + } + return toContent; } @@ -126,21 +130,34 @@ try { imageGallery = (ImageGallery) super.clone(); imageGallery.setUid(null); + + // clone imageGalleryItems as well if (imageGalleryItems != null) { - Iterator iter = imageGalleryItems.iterator(); - Set set = new HashSet(); - while (iter.hasNext()) { - ImageGalleryItem item = (ImageGalleryItem) iter.next(); + Set newItems = new HashSet(); + for (ImageGalleryItem item : (Set) imageGalleryItems) { ImageGalleryItem newItem = (ImageGalleryItem) item.clone(); // just clone old file without duplicate it in repository - set.add(newItem); + newItems.add(newItem); } - imageGallery.imageGalleryItems = set; + imageGallery.imageGalleryItems = newItems; } - // clone ReourceUser as well + + // clone ImageGalleryUser as well if (createdBy != null) { imageGallery.setCreatedBy((ImageGalleryUser) createdBy.clone()); } + + // clone ratingCriterias as well + if (ratingCriterias != null) { + Set newCriterias = new HashSet(); + for (LearnerItemRatingCriteria criteria : (Set) ratingCriterias) { + LearnerItemRatingCriteria newCriteria = (LearnerItemRatingCriteria) criteria.clone(); + // just clone old file without duplicate it in repository + newCriterias.add(newCriteria); + } + imageGallery.ratingCriterias = newCriterias; + } + } catch (CloneNotSupportedException e) { ImageGallery.log.error("When clone " + ImageGallery.class + " failed"); } @@ -159,14 +176,15 @@ final ImageGallery genericEntity = (ImageGallery) o; - return new EqualsBuilder().append(uid, genericEntity.uid).append(title, genericEntity.title).append( - instructions, genericEntity.instructions).append(created, genericEntity.created) + return new EqualsBuilder().append(uid, genericEntity.uid).append(title, genericEntity.title) + .append(instructions, genericEntity.instructions).append(created, genericEntity.created) .append(updated, genericEntity.updated).append(createdBy, genericEntity.createdBy).isEquals(); } @Override public int hashCode() { - return new HashCodeBuilder().append(uid).append(title).append(instructions).append(created).append(updated).append(createdBy).toHashCode(); + return new HashCodeBuilder().append(uid).append(title).append(instructions).append(created).append(updated) + .append(createdBy).toHashCode(); } /** @@ -188,7 +206,6 @@ * Returns the object's creation date * * @return date - * @hibernate.property column="create_date" */ public Date getCreated() { return created; @@ -207,7 +224,6 @@ * Returns the object's date of last update * * @return date updated - * @hibernate.property column="update_date" */ public Date getUpdated() { return updated; @@ -225,23 +241,20 @@ /** * @return Returns the userid of the user who created the Share imageGallery. * - * @hibernate.many-to-one cascade="save-update" column="create_by" - * */ public ImageGalleryUser getCreatedBy() { return createdBy; } /** * @param createdBy - * The userid of the user who created this Share imageGallery. + * The userid of the user who created this Share imageGallery. */ public void setCreatedBy(ImageGalleryUser createdBy) { this.createdBy = createdBy; } /** - * @hibernate.id column="uid" generator-class="native" */ public Long getUid() { return uid; @@ -254,16 +267,14 @@ /** * @return Returns the title. * - * @hibernate.property column="title" - * */ public String getTitle() { return title; } /** * @param title - * The title to set. + * The title to set. */ public void setTitle(String title) { this.title = title; @@ -272,25 +283,21 @@ /** * @return Returns the lockWhenFinish. * - * @hibernate.property column="lock_on_finished" - * */ public boolean getLockWhenFinished() { return lockWhenFinished; } /** * @param lockWhenFinished - * Set to true to lock the imageGallery for finished users. + * Set to true to lock the imageGallery for finished users. */ public void setLockWhenFinished(boolean lockWhenFinished) { this.lockWhenFinished = lockWhenFinished; } /** * @return Returns the instructions set by the teacher. - * - * @hibernate.property column="instructions" type="text" */ public String getInstructions() { return instructions; @@ -299,11 +306,9 @@ public void setInstructions(String instructions) { this.instructions = instructions; } - + /** * @return Returns the next condecutive integer for constructing image title. - * - * @hibernate.property column="next_image_title" */ public Long getNextImageTitle() { return nextImageTitle; @@ -315,11 +320,6 @@ /** * - * - * @hibernate.set lazy="true" inverse="false" cascade="all" order-by="create_date desc" - * @hibernate.collection-key column="imageGallery_uid" - * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem" - * * @return */ public Set getImageGalleryItems() { @@ -331,7 +331,6 @@ } /** - * @hibernate.property column="content_in_use" * @return */ public boolean isContentInUse() { @@ -343,7 +342,6 @@ } /** - * @hibernate.property column="define_later" * @return */ public boolean isDefineLater() { @@ -355,7 +353,6 @@ } /** - * @hibernate.property column="content_id" unique="true" * @return */ public Long getContentId() { @@ -367,7 +364,6 @@ } /** - * @hibernate.property column="allow_comment_images" * @return */ public boolean isAllowCommentImages() { @@ -379,7 +375,6 @@ } /** - * @hibernate.property column="allow_share_images" * @return */ public boolean isAllowShareImages() { @@ -391,7 +386,6 @@ } /** - * @hibernate.property column="allow_vote" * @return */ public boolean isAllowVote() { @@ -403,7 +397,6 @@ } /** - * @hibernate.property column="reflect_instructions" * @return */ public String getReflectInstructions() { @@ -415,7 +408,6 @@ } /** - * @hibernate.property column="reflect_on_activity" * @return */ public boolean isReflectOnActivity() { @@ -427,7 +419,6 @@ } /** - * @hibernate.property column="allow_rank" * @return */ public boolean isAllowRank() { @@ -439,9 +430,20 @@ } /** - * @hibernate.property column="image_submit_notify" + * * @return */ + public Set getRatingCriterias() { + return ratingCriterias; + } + + public void setRatingCriterias(Set ratingCriterias) { + this.ratingCriterias = ratingCriterias; + } + + /** + * @return + */ public boolean isNotifyTeachersOnImageSumbit() { return notifyTeachersOnImageSumbit; } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java =================================================================== diff -u -rdbbdbe1fcf86e07c4d5163178b4c679b4dedfed9 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java (.../ImageGalleryItem.java) (revision dbbdbe1fcf86e07c4d5163178b4c679b4dedfed9) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java (.../ImageGalleryItem.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -36,7 +36,6 @@ * @hibernate.class table="tl_laimag10_imagegallery_item" * * @author Andrey Balan - * */ public class ImageGalleryItem implements Cloneable { @@ -108,6 +107,7 @@ try { image = (ImageGalleryItem) super.clone(); image.setUid(null); + // clone ImageGalleryUser as well if (this.createBy != null) { image.setCreateBy((ImageGalleryUser) this.createBy.clone()); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallerySession.java =================================================================== diff -u -rde59f382658daefe4f6679aaaea621284d1c72cc -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallerySession.java (.../ImageGallerySession.java) (revision de59f382658daefe4f6679aaaea621284d1c72cc) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallerySession.java (.../ImageGallerySession.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -30,7 +30,7 @@ /** * ImageGallery * - * @author Dapeng Ni + * @author Andrey Balan * * @hibernate.class table="tl_laimag10_session" * Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java =================================================================== diff -u -rbb597b8155375e6ac4dfe280f630d323b6e5e575 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision bb597b8155375e6ac4dfe280f630d323b6e5e575) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -28,21 +28,19 @@ import java.util.Set; import org.apache.struts.upload.FormFile; -import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.tool.imageGallery.dto.ReflectDTO; import org.lamsfoundation.lams.tool.imageGallery.dto.Summary; import org.lamsfoundation.lams.tool.imageGallery.dto.UserImageContributionDTO; import org.lamsfoundation.lams.tool.imageGallery.model.ImageComment; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallery; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryAttachment; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryConfigItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallerySession; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageRating; import org.lamsfoundation.lams.tool.imageGallery.model.ImageVote; -import org.lamsfoundation.lams.usermanagement.User; /** * @author Dapeng.Ni @@ -151,14 +149,13 @@ */ void deleteImage(Long toolSessionId, Long imageUid); - /** - * Save/update ImageRating. - * - * @param rating - * ImageRating - * @return - */ - void saveOrUpdateImageRating(ImageRating rating); + List getRatingCriterias(Long toolContentId); + + void saveOrUpdateRatingCriteria(RatingCriteria criteria); + + void deleteRatingCriteria(Long ratingCriteriaId); + + List getRatingDtos(ImageGallery imageGallery, Long imageUid, Long userId); /** * Save/update ImageVote. @@ -216,15 +213,6 @@ ImageGallery getImageGalleryByContentId(Long contentId); /** - * Returns imageRating by the given imageUid and userId - * - * @param imageUid - * @param userId - * @return - */ - ImageRating getImageRatingByImageAndUser(Long imageUid, Long userId); - - /** * Returns imageVote by the given imageUid and userId * * @param imageUid Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== diff -u -r0f642a940696f0245f882fd0e2a7d2f347e5b48e -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 0f642a940696f0245f882fd0e2a7d2f347e5b48e) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -33,6 +33,7 @@ import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -52,10 +53,12 @@ import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; -import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.model.RatingCriteria; +import org.lamsfoundation.lams.rating.service.IRatingService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; @@ -152,6 +155,8 @@ private IExportToolContentService exportContentService; private ICoreNotebookService coreNotebookService; + + private IRatingService ratingService; private IEventNotificationService eventNotificationService; @@ -230,16 +235,6 @@ saveOrUpdateImageGallery(imageGallery); } - @Override - public ImageRating getImageRatingByImageAndUser(Long imageUid, Long userId) { - return imageRatingDao.getImageRatingByImageAndUser(imageUid, userId); - } - - @Override - public void saveOrUpdateImageRating(ImageRating rating) { - imageRatingDao.saveObject(rating); - } - public ImageVote getImageVoteByImageAndUser(Long imageUid, Long userId) { return imageVoteDao.getImageVoteByImageAndUser(imageUid, userId); } @@ -377,6 +372,22 @@ public void updateEntry(NotebookEntry notebookEntry) { coreNotebookService.updateEntry(notebookEntry); } + + @Override + public List getRatingCriterias(Long toolContentId) { + List ratingCriterias = ratingService.getCriteriasByToolContentId(toolContentId); + return ratingCriterias; + } + + @Override + public void saveOrUpdateRatingCriteria(RatingCriteria criteria) { + ratingService.saveOrUpdateRatingCriteria(criteria); + } + + @Override + public void deleteRatingCriteria(Long ratingCriteriaId) { + ratingService.deleteRatingCriteria(ratingCriteriaId); + } @Override public ImageGalleryUser getUser(Long uid) { @@ -1092,6 +1103,10 @@ public void setCoreNotebookService(ICoreNotebookService coreNotebookService) { this.coreNotebookService = coreNotebookService; } + + public void setRatingService(IRatingService ratingService) { + this.ratingService = ratingService; + } public void setEventNotificationService(IEventNotificationService eventNotificationService) { this.eventNotificationService = eventNotificationService; @@ -1134,9 +1149,7 @@ return images; } - /** - * {@inheritDoc} - */ + @Deprecated public Object[] getRatingForGroup(Long imageUid, Long sessionId) { List users = imageGalleryUserDao.getBySessionID(sessionId); Long numberRatings = new Long(0); @@ -1157,6 +1170,20 @@ return new Object[] { numberRatings, averageRating }; } + + @Override + public List getRatingDtos(ImageGallery imageGallery, Long imageUid, Long userId) { + List ratingDtos = new LinkedList(); + + for (RatingCriteria criteria : imageGallery.getRatingCriterias()) { + RatingDTO ratingDto = ratingService.getRatingDTOByUser(criteria.getRatingCriteriaId(), imageUid, userId.intValue()); + ratingDto.setRatingCriteria(criteria); + + ratingDtos.add(ratingDto); + } + + return ratingDtos; + } // ***************************************************************************** // private methods Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java =================================================================== diff -u -rdbbdbe1fcf86e07c4d5163178b4c679b4dedfed9 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision dbbdbe1fcf86e07c4d5163178b4c679b4dedfed9) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -26,10 +26,11 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; +import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -52,11 +53,11 @@ import org.apache.struts.action.ActionMessages; import org.apache.struts.upload.FormFile; import org.lamsfoundation.lams.authoring.web.AuthoringConstants; -import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; +import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; +import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallery; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryAttachment; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; import org.lamsfoundation.lams.tool.imageGallery.service.IImageGalleryService; @@ -223,6 +224,10 @@ SortedSet imageGalleryItemList = getImageList(sessionMap); imageGalleryItemList.clear(); imageGalleryItemList.addAll(items); + + // get rating criterias from DB + List ratingCriterias = service.getRatingCriterias(contentId); + sessionMap.put(AttributeNames.ATTR_RATING_CRITERIAS, ratingCriterias); sessionMap.put(ImageGalleryConstants.ATTR_IMAGE_GALLERY_FORM, imageGalleryForm); sessionMap.put(ImageGalleryConstants.ATTR_NEXT_IMAGE_TITLE, imageGallery.getNextImageTitle()); @@ -293,10 +298,10 @@ ImageGallery imageGallery = imageGalleryForm.getImageGallery(); IImageGalleryService service = getImageGalleryService(); + Long contentId = imageGalleryForm.getImageGallery().getContentId(); // **********************************Get ImageGallery PO********************* - ImageGallery imageGalleryPO = service.getImageGalleryByContentId(imageGalleryForm.getImageGallery() - .getContentId()); + ImageGallery imageGalleryPO = service.getImageGalleryByContentId(contentId); if (imageGalleryPO == null) { // new ImageGallery, create it. imageGalleryPO = imageGallery; @@ -327,7 +332,7 @@ // get back login user DTO UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); ImageGalleryUser imageGalleryUser = service.getUserByIDAndContent(new Long(user.getUserID().intValue()), - imageGalleryForm.getImageGallery().getContentId()); + contentId); if (imageGalleryUser == null) { imageGalleryUser = new ImageGalleryUser(user, imageGalleryPO); } @@ -368,7 +373,42 @@ ImageGalleryItem delAtt = (ImageGalleryItem) iter.next(); iter.remove(); } + + // ************************* Handle rating criterias ******************* + List ratingCriterias = (List) sessionMap.get(AttributeNames.ATTR_RATING_CRITERIAS); + Map mapOrderIdToRatingCriteria = new HashMap(); + for (RatingCriteria ratingCriteriaIter : ratingCriterias) { + mapOrderIdToRatingCriteria.put(ratingCriteriaIter.getOrderId(), ratingCriteriaIter); + } + + int criteriaMaxOrderId = WebUtil.readIntParam(request, "criteriaMaxOrderId"); + //i is equal to an old orderId + for (int i=1; i<=criteriaMaxOrderId; i++) { + + String criteriaTitle = WebUtil.readStrParam(request, "criteriaTitle" + i, true); + + RatingCriteria ratingCriteria = mapOrderIdToRatingCriteria.get(i); + if (StringUtils.isNotBlank(criteriaTitle)) { + int newCriteriaOrderId = WebUtil.readIntParam(request, "criteriaOrderId" + i); + // modify existing one if it exists. add otherwise + if (ratingCriteria == null) { + ratingCriteria = new LearnerItemRatingCriteria(); + ratingCriteria.setRatingCriteriaTypeId(LearnerItemRatingCriteria.LEARNER_ITEM_CRITERIA_TYPE); + ((LearnerItemRatingCriteria) ratingCriteria).setToolContentId(contentId); + } + + ratingCriteria.setOrderId(newCriteriaOrderId); + ratingCriteria.setTitle(criteriaTitle); + service.saveOrUpdateRatingCriteria(ratingCriteria); + + //delete + } else if (ratingCriteria != null) { + service.deleteRatingCriteria(ratingCriteria.getRatingCriteriaId()); + } + + } + // ********************************************** // finally persist imageGalleryPO again service.saveOrUpdateImageGallery(imageGalleryPO); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java =================================================================== diff -u -rfac97347394b311e0f7123bc72d54c056be5275e -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision fac97347394b311e0f7123bc72d54c056be5275e) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -37,7 +37,6 @@ import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionErrors; @@ -49,12 +48,11 @@ import org.apache.struts.action.ActionRedirect; import org.apache.struts.config.ForwardConfig; import org.apache.struts.upload.FormFile; -import org.lamsfoundation.lams.events.DeliveryMethodMail; -import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.learning.web.bean.ActivityPositionDTO; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; +import org.lamsfoundation.lams.rating.dto.RatingDTO; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants; import org.lamsfoundation.lams.tool.imageGallery.model.ImageComment; @@ -63,7 +61,6 @@ import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallerySession; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageRating; import org.lamsfoundation.lams.tool.imageGallery.model.ImageVote; import org.lamsfoundation.lams.tool.imageGallery.service.IImageGalleryService; import org.lamsfoundation.lams.tool.imageGallery.service.ImageGalleryException; @@ -74,7 +71,6 @@ import org.lamsfoundation.lams.tool.imageGallery.web.form.ImageRatingForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.MultipleImagesForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.ReflectionForm; -import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.FileValidatorUtil; import org.lamsfoundation.lams.util.WebUtil; @@ -127,9 +123,6 @@ if (param.equals("addNewComment")) { return addNewComment(mapping, form, request, response); } - if (param.equals("saveOrUpdateRating")) { - return saveOrUpdateRating(mapping, form, request, response); - } if (param.equals("vote")) { return vote(mapping, form, request, response); } @@ -203,6 +196,7 @@ sessionMap.put(ImageGalleryConstants.ATTR_LOCK_ON_FINISH, imageGallery.getLockWhenFinished()); sessionMap.put(ImageGalleryConstants.ATTR_USER_FINISHED, imageGalleryUser != null && imageGalleryUser.isSessionFinished()); + sessionMap.put(AttributeNames.PARAM_USER_ID, imageGalleryUser.getUserId()); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); sessionMap.put(AttributeNames.ATTR_MODE, mode); @@ -467,9 +461,7 @@ Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); IImageGalleryService service = getImageGalleryService(); ImageGallery imageGallery = service.getImageGalleryBySessionId(sessionId); - UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); - ImageGalleryUser imageGalleryUser = service.getUserByIDAndSession(new Long(user.getUserID().intValue()), - sessionId); + Long userId = (Long) sessionMap.get(AttributeNames.PARAM_USER_ID); Long imageUid = new Long(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_UID)); ImageGalleryItem image = service.getImageGalleryItemByUid(imageUid); @@ -487,7 +479,7 @@ ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); boolean isTeacher = mode != null && mode.isTeacher(); boolean isAuthor = !isTeacher && !image.isCreateByAuthor() && (createdBy != null) - && (createdBy.getUserId().equals(imageGalleryUser.getUserId())); + && (createdBy.getUserId().equals(userId)); if (imageGallery.isAllowCommentImages()) { TreeSet comments = new TreeSet(new ImageCommentComparator()); @@ -504,18 +496,13 @@ } if (!isTeacher && imageGallery.isAllowRank()) { - ImageRating imageRating = service.getImageRatingByImageAndUser(imageUid, imageGalleryUser.getUserId()); - int rating = imageRating == null ? 0 : imageRating.getRating(); - - Object[] ratingForGroup = service.getRatingForGroup(imageUid, sessionId); - sessionMap.put(ImageGalleryConstants.PARAM_NUMBER_RATINGS, ((Long) ratingForGroup[0]).toString()); - sessionMap.put(ImageGalleryConstants.PARAM_AVERAGE_RATING, ((Float) ratingForGroup[1]).toString()); - sessionMap.put(ImageGalleryConstants.PARAM_CURRENT_RATING, rating); + List ratingDtos = service.getRatingDtos(imageGallery, imageUid, userId); + sessionMap.put(ImageGalleryConstants.ATTR_RATING_DTOS, ratingDtos); } if (!isTeacher && imageGallery.isAllowVote()) { boolean isVotedForThisImage = false; - ImageVote imageVote = service.getImageVoteByImageAndUser(image.getUid(), imageGalleryUser.getUserId()); + ImageVote imageVote = service.getImageVoteByImageAndUser(image.getUid(), userId); if (imageVote != null && imageVote.isVoted()) { isVotedForThisImage = true; } @@ -595,47 +582,6 @@ * @param response * @return */ - private ActionForward saveOrUpdateRating(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); - IImageGalleryService service = getImageGalleryService(); - - int rating = NumberUtils.stringToInt(((ImageRatingForm) form).getRating()); - Long imageUid = new Long(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_UID)); - UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); - ImageGalleryUser imageGalleryUser = service.getUserByIDAndSession(new Long(user.getUserID().intValue()), - sessionId); - ImageRating imageRating = service.getImageRatingByImageAndUser(imageUid, imageGalleryUser.getUserId()); - - // persist ImageGalleryItem changes in DB - ImageGalleryItem dbImage = service.getImageGalleryItemByUid(imageUid); - if (imageRating == null) { // add - imageRating = new ImageRating(); - imageRating.setCreateBy(imageGalleryUser); - imageRating.setImageGalleryItem(dbImage); - } - imageRating.setRating(rating); - service.saveOrUpdateImageRating(imageRating); - - // to make available new changes be visible in jsp page - sessionMap.put(ImageGalleryConstants.PARAM_CURRENT_IMAGE, dbImage); - sessionMap.put(ImageGalleryConstants.PARAM_CURRENT_RATING, rating); - - request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMapID); - return mapping.findForward(ImageGalleryConstants.SUCCESS); - } - - /** - * Move down current item. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ private ActionForward vote(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java =================================================================== diff -u -rdbbdbe1fcf86e07c4d5163178b4c679b4dedfed9 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision dbbdbe1fcf86e07c4d5163178b4c679b4dedfed9) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -48,7 +48,6 @@ import org.lamsfoundation.lams.tool.imageGallery.dto.UserImageContributionDTO; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallery; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallerySession; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; import org.lamsfoundation.lams.tool.imageGallery.service.IImageGalleryService; import org.lamsfoundation.lams.tool.imageGallery.service.ImageGalleryException; Index: lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag =================================================================== diff -u --- lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag (revision 0) +++ lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,212 @@ +<% + /** + * AuthoringRatingCriteria.tag + * Author: Andrey Balan + * Description: Creates list of rating criterias for authoring page + */ + %> +<%@ tag body-content="scriptless" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-function" prefix="fn" %> + + +<%@ attribute name="criterias" required="true" rtexprvalue="true" type="java.util.Collection" %> + +<%-- Optional attribute --%> +<%@ attribute name="headerLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="addLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="deleteLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="upLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="downLabel" required="false" rtexprvalue="true" %> + +<%-- Default value for message key --%> + + + + + + + + + + + + + + + + + + + +
+

+ +

+ + + + + + + + + + + + + + +
+ + + + +
">
+ +
">
+
+
+ + + +
">
+
+ +
">
+
+
+
" >
+
+ +
+ + + +
+ +
+ \ No newline at end of file Index: lams_tool_images/web/WEB-INF/tags/Rating.tag =================================================================== diff -u --- lams_tool_images/web/WEB-INF/tags/Rating.tag (revision 0) +++ lams_tool_images/web/WEB-INF/tags/Rating.tag (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -0,0 +1,117 @@ +<% + /** + * Rating.tag + * Author: Andrey Balan + * Description: Shows rating stars widget + */ + %> +<%@ tag body-content="scriptless" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-function" prefix="fn" %> + + +<%@ attribute name="ratingDtos" required="false" rtexprvalue="true" type="java.util.Collection" %> + +<%-- Optional attribute --%> +<%@ attribute name="disabled" required="false" rtexprvalue="true" %> +<%@ attribute name="numberVotesLabel" required="false" rtexprvalue="true" %> + +<%-- Default value for message key --%> + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

+ ${ratingDto.ratingCriteria.title} +

+ +
+
+ +
+ + + + + + + + ${ratingDto.numberOfVotes} + + +
+ +
+ +
+ \ No newline at end of file Index: lams_tool_images/web/WEB-INF/tlds/lams/lams.tld =================================================================== diff -u -r86a2855c49422f236ac31c35df38fa3c66220dcc -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 86a2855c49422f236ac31c35df38fa3c66220dcc) +++ lams_tool_images/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -426,6 +426,14 @@ AuthoringButton /WEB-INF/tags/AuthoringButton.tag + + + AuthoringRatingCriteria + /WEB-INF/tags/AuthoringRatingCriteria.tag + + + Rating + /WEB-INF/tags/Rating.tag headItems Index: lams_tool_images/web/includes/javascript/imageGallerycommon.js =================================================================== diff -u -r8a7c47632a6a93892f015f068d12adb376c0ae2d -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/web/includes/javascript/imageGallerycommon.js (.../imageGallerycommon.js) (revision 8a7c47632a6a93892f015f068d12adb376c0ae2d) +++ lams_tool_images/web/includes/javascript/imageGallerycommon.js (.../imageGallerycommon.js) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -1,10 +1,10 @@ - function showBusy(targetDiv){ - if($(targetDiv+"_Busy") != null){ - Element.show(targetDiv+"_Busy"); - } +function showBusy(targetDiv){ + if($(targetDiv+"_Busy") != null){ + document.getElementById(targetDiv+"_Busy").style.display = ''; } - function hideBusy(targetDiv){ - if($(targetDiv+"_Busy") != null){ - Element.hide(targetDiv+"_Busy"); - } - } +} +function hideBusy(targetDiv){ + if($(targetDiv+"_Busy") != null){ + document.getElementById(targetDiv+"_Busy").style.display = 'none'; + } +} Index: lams_tool_images/web/includes/javascript/imageGalleryitem.js =================================================================== diff -u -rfb9d13eb115f5281b03ab1624ec10a22ba3b81b7 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/web/includes/javascript/imageGalleryitem.js (.../imageGalleryitem.js) (revision fb9d13eb115f5281b03ab1624ec10a22ba3b81b7) +++ lams_tool_images/web/includes/javascript/imageGalleryitem.js (.../imageGalleryitem.js) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -51,7 +51,7 @@ } if(area != null){ - area.style.width="650px"; + area.style.width="100%"; area.src=url; area.style.display="block"; } Index: lams_tool_images/web/pages/authoring/advance.jsp =================================================================== diff -u -rdb681dba0a5e44ae9f4e4cf6b9bc575d6175212f -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/web/pages/authoring/advance.jsp (.../advance.jsp) (revision db681dba0a5e44ae9f4e4cf6b9bc575d6175212f) +++ lams_tool_images/web/pages/authoring/advance.jsp (.../advance.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -1,6 +1,15 @@ <%@ include file="/common/taglibs.jsp"%> - + + @@ -44,8 +54,7 @@

-

-        +

@@ -70,26 +79,30 @@ -

-        - checked="checked" - disabled="disabled" - /> - -

- -        - checked="checked" - disabled="disabled" - /> - +

+ checked="checked" + disabled="disabled" + /> + +

+ + checked="checked" + disabled="disabled" + /> + + +
style="display:none;" > + +
+

Index: lams_tool_images/web/pages/authoring/authoring.jsp =================================================================== diff -u -rdbbdbe1fcf86e07c4d5163178b4c679b4dedfed9 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision dbbdbe1fcf86e07c4d5163178b4c679b4dedfed9) +++ lams_tool_images/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -9,7 +9,7 @@ <fmt:message key="label.author.title" /> <%@ include file="/common/tabbedheader.jsp"%> - + @@ -132,8 +149,8 @@ - width="100%" + contentFolderID="${formBean.contentFolderID}" + width="100%"> Index: lams_tool_images/web/pages/authoring/parts/addimage.jsp =================================================================== diff -u -rdbbdbe1fcf86e07c4d5163178b4c679b4dedfed9 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/web/pages/authoring/parts/addimage.jsp (.../addimage.jsp) (revision dbbdbe1fcf86e07c4d5163178b4c679b4dedfed9) +++ lams_tool_images/web/pages/authoring/parts/addimage.jsp (.../addimage.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -75,13 +75,14 @@ - - - + + + + + + Index: lams_tool_images/web/pages/learning/learning.jsp =================================================================== diff -u -rdbbdbe1fcf86e07c4d5163178b4c679b4dedfed9 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision dbbdbe1fcf86e07c4d5163178b4c679b4dedfed9) +++ lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -20,7 +20,6 @@ - - - @@ -314,75 +224,14 @@

- - -
- - <%--Ranking/Voting area---------------------------------------%> - - -
- - - - - -
- - - - - -
- -
-
- - -
-
-
- - - - - - -

- - -

- -
-
-
-
- - <%--"Check for new", "Add new image" and "Delete" buttons---------------%> - - - - - - - - - - - - - - - - -
-
- <%--Comments area----------------------------------------------%> - -
- <%@ include file="/pages/learning/parts/commentsarea.jsp"%> -
+ <%--Comments & Ranking/Voting area----------------------------------------------%> + + +
+ <%@ include file="/pages/learning/parts/commentsarea.jsp"%> +
+
<%--Reflection--------------------------------------------------%> Index: lams_tool_images/web/pages/learning/parts/commentsarea.jsp =================================================================== diff -u -rdbbdbe1fcf86e07c4d5163178b4c679b4dedfed9 -rf3be94729c90c7390a6aea11d1886a4b72d96670 --- lams_tool_images/web/pages/learning/parts/commentsarea.jsp (.../commentsarea.jsp) (revision dbbdbe1fcf86e07c4d5163178b4c679b4dedfed9) +++ lams_tool_images/web/pages/learning/parts/commentsarea.jsp (.../commentsarea.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) @@ -1,74 +1,155 @@ <%@ include file="/common/taglibs.jsp"%> - - - - - - + + + + + - - - - - - - - - - + + - <%@ include file="/common/messages.jsp"%> +<%--Comments area---------------------------------------%> +
+ -
- + <%@ include file="/common/messages.jsp"%> + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+ + + + + + + + - +
+
+ +
+ +
- + +
+ + + + + + + +
+
+ + +
+ + +
+ + <%--Ranking area---------------------------------------%> -
- - - - - - - - + +
+ +
+

+
- - - - -
- - - - - - - - - -
-
- -
-
+
+ + <%--Voting area--------------%> + + + + + + +

+ disabled="disabled" + checked="checked" + /> + +

+
+
- - - -
- - + <%--"Check for new", "Add new image" and "Delete" buttons---------------%> + + + + + + + + +

+ + + +
+ + +

+ + + +
+
- - - -
-
- +