@UiConstructor
  public PreviewResourceView(CollectionItemDo collectionItemDo, int itemIndex) {
    initWidget(uiBinder.createAndBindUi(this));
    resourceThumbContainer.getElement().setId("fpnlResourceThumbContainer");
    resourceImageContainer.getElement().setId("fpnlResourceImageContainer");
    resourceThumbnail.getElement().setId("imgResourceThumbnail");
    resourceTypeImage.getElement().setId("lblResourceTypeImage");
    resourceNumber.getElement().setId("lblResourceNumber");
    resourceTitle.getElement().setId("htmlResourceTitle");
    resourceIndex.getElement().setId("lblResourceIndex");
    resourceHoverTitle.getElement().setId("htmlResourceHoverTitle");
    resourceCategory.getElement().setId("lblResourceCategory");
    resourceSourceName.getElement().setId("lblResourceSourceName");
    ratingWidgetPanel.getElement().setId("fpnlRatingWidgetPanel");
    this.collectionItemDo = collectionItemDo;
    setNavigationResourceTitle(collectionItemDo.getResource().getTitle());
    if (collectionItemDo.getResource().getResourceFormat() != null) {
      setResourceTypeIcon(collectionItemDo.getResource().getResourceFormat().getDisplayName());
    }
    setResourceCategory();
    setReourceSourceName();
    setResourceSequence(itemIndex + 1);
    setResourcePlayLink();

    if (AppClientFactory.getCurrentPlaceToken().equalsIgnoreCase(PlaceTokens.COLLECTION_PLAY)) {
      setAvgRatingWidget();
      AppClientFactory.getEventBus()
          .addHandler(UpdateRatingsInRealTimeEvent.TYPE, setRatingWidgetMetaData);
    }
  }
 public String getResourceLink() {
   String collectionId = AppClientFactory.getPlaceManager().getRequestParameter("id", null);
   if (collectionItemDo.getNarration() != null
       && !collectionItemDo.getNarration().trim().equals("")) {
     String resourceLink =
         "#"
             + AppClientFactory.getCurrentPlaceToken()
             + "&id="
             + collectionId
             + "&rid="
             + collectionItemDo.getCollectionItemId()
             + "&tab=narration";
     resourceLink += PreviewPlayerPresenter.setConceptPlayerParameters();
     return resourceLink;
   } else {
     String resourceLink =
         "#"
             + AppClientFactory.getCurrentPlaceToken()
             + "&id="
             + collectionId
             + "&rid="
             + collectionItemDo.getCollectionItemId();
     resourceLink += PreviewPlayerPresenter.setConceptPlayerParameters();
     return resourceLink;
   }
 }
  public void setResourceCategory() {
    if (collectionItemDo.getResource().getResourceFormat() != null) {
      String resourceType = collectionItemDo.getResource().getResourceFormat().getDisplayName();
      resourceType = resourceType.toLowerCase();

      if (resourceType.equalsIgnoreCase("lesson")
          || resourceType.equalsIgnoreCase("textbook")
          || resourceType.equalsIgnoreCase("handout")) {
        resourceType =
            resourceType
                .replaceAll("lesson", "text")
                .replaceAll("textbook", "text")
                .replaceAll("handout", "text");
      }
      if (resourceType.equalsIgnoreCase("slide")) {
        resourceType = resourceType.replaceAll("slide", "image");
      }
      if (resourceType.equalsIgnoreCase("exam")
          || resourceType.equalsIgnoreCase("website")
          || resourceType.equalsIgnoreCase("challenge")) {
        resourceType =
            resourceType
                .replaceAll("exam", "webpage")
                .replaceAll("website", "webpage")
                .replaceAll("challenge", "webpage");
      }
      resourceCategory.setText(resourceType);
      resourceCategory.getElement().setAttribute("alt", resourceType);
      resourceCategory.getElement().setAttribute("title", resourceType);
    }
  }
 @UiHandler("resourceThumbnail")
 public void onErrorResourceImage(ErrorEvent errorEvent) {
   resourceThumbnail.setUrl("images/resource_trans.png");
   if (collectionItemDo.getResource().getResourceFormat() != null) {
     String resourceType = collectionItemDo.getResource().getResourceFormat().getDisplayName();
     resourceType = resourceType.toLowerCase();
     if (resourceType.equalsIgnoreCase("lesson")
         || resourceType.equalsIgnoreCase("textbook")
         || resourceType.equalsIgnoreCase("handout")) {
       resourceType =
           resourceType
               .replaceAll("lesson", "text")
               .replaceAll("textbook", "text")
               .replaceAll("handout", "text");
     }
     if (resourceType.equalsIgnoreCase("slide")) {
       resourceType = resourceType.replaceAll("slide", "image");
     }
     if (resourceType.equalsIgnoreCase("exam")
         || resourceType.equalsIgnoreCase("website")
         || resourceType.equalsIgnoreCase("challenge")) {
       resourceType =
           resourceType
               .replaceAll("exam", "webpage")
               .replaceAll("website", "webpage")
               .replaceAll("challenge", "webpage");
     }
     resourceThumbnail.setStyleName(getResourceDefaultImage(resourceType));
   }
 }
 @UiHandler("explanaionButton")
 public void ClickOnExplanationButton(ClickEvent clickEvent) {
   if (explanaionButton.getStyleName().equals(oeStyle.hintsActiveButton())) {
     explanationContainer.add(getHTML(collectionItemDo.getResource().getExplanation()));
     explanationContainer.addStyleName(oeStyle.explanationTextBorder());
     explanaionButton.setStyleName(oeStyle.hintsInActiveButton());
     startExplanationDataLogEvent(collectionItemDo.getResource().getExplanation());
   }
 }
 public void setReourceSourceName() {
   if (collectionItemDo.getResource().getResourceSource() != null) {
     if ((!collectionItemDo.getResource().getUrl().startsWith("https://docs.google.com"))
         && (!collectionItemDo.getResource().getUrl().startsWith("http://docs.google.com"))) {
       resourceSourceName.setText(
           collectionItemDo.getResource().getResourceSource().getAttribution() != null
               ? collectionItemDo.getResource().getResourceSource().getAttribution()
               : "");
       resourceSourceName
           .getElement()
           .setAttribute(
               "alt",
               collectionItemDo.getResource().getResourceSource().getAttribution() != null
                   ? collectionItemDo.getResource().getResourceSource().getAttribution()
                   : "");
       resourceSourceName
           .getElement()
           .setAttribute(
               "title",
               collectionItemDo.getResource().getResourceSource().getAttribution() != null
                   ? collectionItemDo.getResource().getResourceSource().getAttribution()
                   : "");
     }
   } else {
     resourceSourceName.setText("");
   }
 }
 @Override
 public void updateRatingInRealTime(String gooruOid, double average, Integer count) {
   if (collectionItemDo != null
       && collectionItemDo.getResource() != null
       && collectionItemDo.getResource().getGooruOid() != null
       && collectionItemDo.getResource().getGooruOid().equals(gooruOid)) {
     collectionItemDo.getResource().getRatings().setCount(count);
     collectionItemDo.getResource().getRatings().setAverage(average);
     setAvgRatingWidget();
   }
 }
 /** Average star ratings widget will get integrated. */
 private void setAvgRatingWidget() {
   ratingWidgetView = new RatingWidgetView();
   if (collectionItemDo.getResource().getRatings() != null) {
     if (collectionItemDo.getResource().getRatings().getCount() != null
         && collectionItemDo.getResource().getRatings().getCount() != 0) {
       ratingWidgetView.getRatingCountOpenBrace().setText(i18n.GL_SPL_OPEN_SMALL_BRACKET());
       ratingWidgetView
           .getRatingCountLabel()
           .setText(collectionItemDo.getResource().getRatings().getCount().toString());
       ratingWidgetView.getRatingCountCloseBrace().setText(i18n.GL_SPL_CLOSE_SMALL_BRACKET());
       ratingWidgetView.setAvgStarRating(collectionItemDo.getResource().getRatings().getAverage());
       ratingWidgetPanel.getElement().setId("fpnlRatingWidgetPanel");
     }
   }
   ratingWidgetPanel.clear();
   ratingWidgetPanel.add(ratingWidgetView);
 }
 @Override
 public void onLoad() {
   if (collectionItemDo
       .getResource()
       .getResourceType()
       .getName()
       .equalsIgnoreCase("assessment-question")) {
     resourceThumbnail.setUrl(getQuestionImage());
   } else if (collectionItemDo
       .getResource()
       .getResourceType()
       .getName()
       .equalsIgnoreCase("video/youtube")) {
     resourceThumbnail.setUrl(
         ResourceImageUtil.youtubeImageLink(
             ResourceImageUtil.getYoutubeVideoId(collectionItemDo.getResource().getUrl()),
             Window.Location.getProtocol()));
   } else {
     resourceThumbnail.setUrl(collectionItemDo.getResource().getThumbnails().getUrl());
   }
 }
 @UiHandler("hintsButton")
 public void ClickOnHintButton(ClickEvent clickEvent) {
   if (hintsButton.getStyleName().equals(oeStyle.hintsActiveButton())) {
     if (collectionItemDo.getResource().getHints().size() > hintsLength) {
       startHintDataLogEvent(getQuestionHintsDo(hintsLength).getHintId());
       hintsContainer.add(
           getHTML(getQuestionHintsDo(hintsLength).getHintText(), oeStyle.hintsText()));
       hintsButton.setText(
           ""
               + i18n.GL0317()
               + " ("
               + ((collectionItemDo.getResource().getHints().size() - hintsLength) - 1)
               + " Left)");
       hintsButton
           .getElement()
           .setAttribute(
               "alt",
               " "
                   + i18n.GL0317()
                   + " ("
                   + collectionItemDo.getResource().getHints().size()
                   + " Left)");
       hintsButton
           .getElement()
           .setAttribute(
               "title",
               " "
                   + i18n.GL0317()
                   + " ("
                   + collectionItemDo.getResource().getHints().size()
                   + " Left)");
       hintsLength++;
       if (collectionItemDo.getResource().getHints().size() == hintsLength) {
         hintsButton.setStyleName(oeStyle.hintsInActiveButton());
       }
     } else {
       hintsButton.setStyleName(oeStyle.hintsInActiveButton());
     }
   }
 }
 public QuestionHintsDo getQuestionHintsDo(int hintPosition) {
   TreeSet<QuestionHintsDo> questionHintsList = collectionItemDo.getResource().getHints();
   Iterator<QuestionHintsDo> it = questionHintsList.iterator();
   int i = 0;
   QuestionHintsDo currentQuestionHintsDo = null;
   while (it.hasNext()) {
     currentQuestionHintsDo = it.next();
     if (i == hintPosition) {
       return currentQuestionHintsDo;
     }
     i++;
   }
   return currentQuestionHintsDo;
 }
 private String getQuestionImage() {
   String thumbnailImage = "";
   String assetName = "";
   try {
     if (collectionItemDo.getResource().getAssets() != null
         && collectionItemDo.getResource().getAssets().size() > 0) {
       assetName = collectionItemDo.getResource().getAssets().get(0).getAsset().getName();
       thumbnailImage =
           collectionItemDo.getResource().getAssetURI()
               + collectionItemDo.getResource().getFolder()
               + assetName;
     } else {
       thumbnailImage = collectionItemDo.getResource().getThumbnails().getUrl();
     }
   } catch (Exception e) {
     AppClientFactory.printSevereLogger(e.getMessage());
   }
   return thumbnailImage != null ? thumbnailImage : "images/defaultRes.png";
 }
 private void renderAnswerView(AttemptedAnswersDo attemptedAnswerDo) {
   clearAnswerOptionsContainer();
   if (collectionItemDo != null && collectionItemDo.getResource() != null) {
     if (collectionItemDo.getResource().getType() == 1
         || collectionItemDo.getResource().getType() == 3) {
       multipleChoicesQuestionWidget =
           new MultipleChoicesQuestionWidget(collectionItemDo, attemptedAnswerDo);
       questionContainer.add(multipleChoicesQuestionWidget);
     } else if (collectionItemDo.getResource().getType() == 6) {
       opendEndedQuestionWidget =
           new OpendEndedQuestionWidget(collectionItemDo, attemptedAnswerDo);
       questionContainer.add(opendEndedQuestionWidget);
     } else if (collectionItemDo.getResource().getType() == 4) {
       fillInTheBlankQuestionWidget =
           new FillInTheBlankQuestionWidget(collectionItemDo, attemptedAnswerDo);
       questionContainer.add(fillInTheBlankQuestionWidget);
     } else if (collectionItemDo.getResource().getType() == 7) {
       multipleAnswersQuestionWidget =
           new MultipleAnswersQuestionWidget(collectionItemDo, attemptedAnswerDo);
       questionContainer.add(multipleAnswersQuestionWidget);
     }
   }
 }
  public void collection(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    String id = request.getParameter("id");
    StringBuffer htmlOutput = new StringBuffer();
    PrintWriter out = response.getWriter();
    response.setContentType("text/html");
    if (id != null) {
      String protocolRequest = request.getScheme();
      String homeEndPoint = resourceService.getHomeEndPointForEmbed();
      String restEndPoint = resourceService.getRestEndPointForEmbed();
      String cssEndPoint =
          homeEndPoint
              .replaceAll(MessageProperties.HTTP + ":", "")
              .replaceAll(MessageProperties.HTTPS + ":", "");

      if (protocolRequest.equalsIgnoreCase(MessageProperties.HTTPS)) {
        homeEndPoint = homeEndPoint.replaceAll(MessageProperties.HTTP, MessageProperties.HTTPS);
        restEndPoint = restEndPoint.replaceAll(MessageProperties.HTTP, MessageProperties.HTTPS);
      }

      CollectionDo collectionDo = resourceService.getCollectionFromEmbed(id, restEndPoint);
      if (collectionDo != null && collectionDo.getGooruOid() != null) {
        int resourceCount = 0;
        int questoionResourceCount = 0;
        for (CollectionItemDo collectionItemDo : collectionDo.getCollectionItems()) {
          if (collectionItemDo.getResource().getCategory().equalsIgnoreCase("Question")) {
            questoionResourceCount++;
          } else {
            resourceCount++;
          }
        }
        String resourcesString = resourceCount == 1 ? "1 resource," : resourceCount + " resources,";
        String questoionResourceCountString =
            questoionResourceCount == 1 ? "1 question" : questoionResourceCount + " questions";
        String collectionItems = resourcesString + " " + questoionResourceCountString;
        htmlOutput
            .append(" <!DOCTYPE html>")
            .append("<html><head>")
            .append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />")
            .append(
                "<link rel=\"stylesheet\" type=\"text/css\" href=\""
                    + cssEndPoint
                    + "/css/embed.css\">")
            .append("</head>")
            .append(
                "<body><div class=\"embed-container\"><div class=\"collection-image\"><a href=\""
                    + homeEndPoint
                    + "/#collection-play&id="
                    + collectionDo.getGooruOid()
                    + "\"target=\"_blank\" class=\"collectionImage\"><image onerror=\"this.src='"
                    + homeEndPoint
                    + "/images/collection-default-image.png'\" src="
                    + collectionDo.getThumbnails().getUrl()
                    + " width=\"310px\" height=\"208px\"><div class=\"button\">Study</div></a></div>")
            .append("<div class=\"metadata\">")
            .append(
                "<h1 class=\"title\"><a href=\""
                    + homeEndPoint
                    + "/#collection-play&id="
                    + collectionDo.getGooruOid()
                    + "\"target=\"_blank\">"
                    + collectionDo.getTitle()
                    + "</a></h1>")
            .append(
                "<div class=\"description\"><span class=\"label\">Description: </span>"
                    + collectionDo.getGoals()
                    + "</div>")
            .append(
                "<div class=\"resources\">"
                    + collectionItems
                    + "</div></div></div></div> </body></html>");
      }
    }
    out.println(htmlOutput.toString());
  }
  /**
   * @function openResurceLink
   * @created_date : Jan 2, 2014
   * @description To open original resource link in new tab.
   * @parm(s) : @param ClickEvent
   * @return : void
   * @throws : <Mentioned if any exceptions>
   */
  @UiHandler("btnResourceLink")
  public void openResurceLink(ClickEvent event) {
    MixpanelUtil.mixpanelEvent("Player_Click_Linked_Out_Resource");

    Window.open(collectionItemDo.getResource().getUrl(), "_blank", "");
  }
  /** @param collectionItemDo */
  @UiConstructor
  public ResourceFrameBreakerView(final CollectionItemDo collectionItemDo, boolean isGoogleFile) {
    initWidget(uiBinder.createAndBindUi(this));
    PlayerBundle.INSTANCE.getPlayerStyle().ensureInjected();
    this.collectionItemDo = collectionItemDo;
    if (!isGoogleFile) {
      setLabelsAndIds();
      supportTip.setStyleName(PlayerBundle.INSTANCE.getPlayerStyle().supportTip());
      supportTip.setText(i18n.GL1453());
      supportTip.getElement().setId("lblSupportTip");
      supportTip.getElement().setAttribute("alt", i18n.GL1453());
      supportTip.getElement().setAttribute("title", i18n.GL1453());
      btnResourceLink.addStyleName(PlayerBundle.INSTANCE.getPlayerStyle().btnResourceLink());
    } else {
      btnResourceLink.removeFromParent();
    }
    imgFieldTrip.setUrl(collectionItemDo.getResource().getThumbnailUrl());
    if (collectionItemDo.getResource().getResourceFormat() != null) {
      defaultResourceCategory = collectionItemDo.getResource().getResourceFormat().getDisplayName();
    }
    if (defaultResourceCategory != null) {
      if (defaultResourceCategory.equalsIgnoreCase("Lesson")
          || defaultResourceCategory.equalsIgnoreCase("Textbook")
          || defaultResourceCategory.equalsIgnoreCase("Handout")) {
        defaultResourceCategory =
            defaultResourceCategory
                .replaceAll("Lesson", "Text")
                .replaceAll("Textbook", "Text")
                .replaceAll("Handout", "Text")
                .replaceAll("lesson", "Text")
                .replaceAll("textbook", "Text")
                .replaceAll("handout", "Text");
      }
      if (defaultResourceCategory.equalsIgnoreCase("Slide")) {
        defaultResourceCategory =
            defaultResourceCategory.replaceAll("Slide", "Image").replaceAll("slide", "Image");
      }
      if (defaultResourceCategory.equalsIgnoreCase("Exam")
          || defaultResourceCategory.equalsIgnoreCase("Challenge")
          || defaultResourceCategory.equalsIgnoreCase("Website")) {
        defaultResourceCategory =
            defaultResourceCategory
                .replaceAll("Exam", "Webpage")
                .replaceAll("Challenge", "Webpage")
                .replaceAll("exam", "Webpage")
                .replaceAll("challenge", "Webpage");
      }
    }
    imgFieldTrip.addErrorHandler(
        new ErrorHandler() {

          @Override
          public void onError(ErrorEvent event) {
            imgFieldTrip.setUrl(DEFULT_IMAGE_PREFIX + defaultResourceCategory.toLowerCase() + PNG);
          }
        });
    if (collectionItemDo.getResource().getResourceFormat() != null) {
      resourceCategory.addStyleName(
          getResourceTypeImage(
              collectionItemDo.getResource().getResourceFormat().getDisplayName()));
    }
  }
 private void renderQuestionView() {
   hintsLength = 0;
   if (collectionItemDo != null && collectionItemDo.getResource() != null) {
     String titlelbl1 =
         InfoUtil.removeQuestionTagsOnBoldClick(
             StringUtil.isEmpty(collectionItemDo.getResource().getQuestionText())
                 ? ""
                 : collectionItemDo.getResource().getQuestionText());
     openEndedQuestionText.setHTML(removeHtmlTags(titlelbl1));
     openEndedQuestionText
         .getElement()
         .setAttribute(
             "alt",
             StringUtil.removeAllHtmlCss(
                 StringUtil.isEmpty(collectionItemDo.getResource().getQuestionText())
                     ? ""
                     : collectionItemDo.getResource().getQuestionText()));
     openEndedQuestionText
         .getElement()
         .setAttribute(
             "title",
             StringUtil.removeAllHtmlCss(
                 StringUtil.isEmpty(collectionItemDo.getResource().getQuestionText())
                     ? ""
                     : collectionItemDo.getResource().getQuestionText()));
     if (collectionItemDo.getResource().getHints() != null
         && collectionItemDo.getResource().getHints().size() > 0) {
       hintsButton.setText(
           " "
               + i18n.GL0317()
               + " ("
               + collectionItemDo.getResource().getHints().size()
               + " Left)");
       hintsButton
           .getElement()
           .setAttribute(
               "alt",
               " "
                   + i18n.GL0317()
                   + " ("
                   + collectionItemDo.getResource().getHints().size()
                   + " Left)");
       hintsButton
           .getElement()
           .setAttribute(
               "title",
               " "
                   + i18n.GL0317()
                   + " ("
                   + collectionItemDo.getResource().getHints().size()
                   + " Left)");
     } else {
       hintsButton.setStyleName(oeStyle.hintsInActiveButton());
     }
     if (collectionItemDo.getResource().getExplanation() != null
         && collectionItemDo.getResource().getExplanation().trim().length() > 0) {
     } else {
       explanaionButton.setStyleName(oeStyle.hintsInActiveButton());
     }
     if (!StringUtil.isEmpty(getQuestionImage())) {
       openEndedQuestionImage.setUrl(getQuestionImage());
     }
   }
 }