Ejemplo n.º 1
0
  public ActionForward rate(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Throwable {

    String itemNaturalKey = (String) request.getParameter("itemNaturalKey");
    String value = (String) request.getParameter("rate");
    ContentSessionBean contentSessionBean = getContentBean(request).getContentSessionBean();
    Site site = contentSessionBean.getSiteDomain().getSite();
    String siteId = site.getSiteId();
    if (value != null) {
      EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
      Item item = ItemDAO.loadNatural(siteId, itemNaturalKey);
      int itemRatingCount = item.getItemRatingCount().intValue();
      float itemRating = item.getItemRating().floatValue();

      int rate = Integer.parseInt(value);
      if (itemRatingCount != 0) {
        itemRating = ((itemRating * itemRatingCount) + rate) / (itemRatingCount + 1);
        itemRatingCount += 1;
      } else {
        itemRatingCount = 1;
        itemRating = rate;
      }
      item.setItemRating(new Float(itemRating));
      item.setItemRatingCount(new Integer(itemRatingCount));
      em.persist(item);
    }
    ActionForward forward = actionMapping.findForward("success");
    forward =
        new ActionForward(
            forward.getPath()
                + contentSessionBean.getSiteDomain().getSiteDomainPrefix()
                + "/"
                + contentSessionBean
                    .getSiteProfile()
                    .getSiteProfileClass()
                    .getSiteProfileClassName()
                + "/item/"
                + itemNaturalKey,
            forward.getRedirect());
    return forward;
  }