private Map<String, Object> mergeCollectionItemMetaData(Map<String, Object> content) {
    Object data = content.get(META_DATA);
    if (data != null) {
      Map<String, Object> metaData =
          JsonDeserializer.deserialize(
              String.valueOf(data), new TypeReference<Map<String, Object>>() {});
      content.putAll(metaData);
    }
    Map<String, Object> resourceFormat = new HashMap<String, Object>();
    resourceFormat.put(VALUE, content.get(VALUE));
    resourceFormat.put(DISPLAY_NAME, content.get(DISPLAY_NAME));
    content.put(RESOURCEFORMAT, resourceFormat);
    Object ratingAverage = content.get(AVERAGE);
    String typeName = (String) content.get(RESOURCE_TYPE);
    Map<String, Object> resourceType = new HashMap<String, Object>();
    resourceType.put(NAME, typeName);
    content.put(RESOURCE_TYPE, resourceType);
    if (ratingAverage != null) {
      Map<String, Object> rating = new HashMap<String, Object>();
      rating.put(AVERAGE, content.get(AVERAGE));
      rating.put(COUNT, content.get(COUNT));
      content.put(RATING, rating);
    }

    Object thumbnail = content.get(THUMBNAIL);
    if (thumbnail != null) {
      StringBuilder imagePath = new StringBuilder();
      imagePath.append(content.get(FOLDER)).append(thumbnail);
      content.put(THUMBNAILS, GooruImageUtil.getThumbnails(imagePath.toString()));
    }
    if (typeName.equalsIgnoreCase(ResourceType.Type.ASSESSMENT_QUESTION.getType())) {
      // To-Do, need fix later, by getting answer and hints details
      // without querying the assessment object
      String gooruOid = (String) content.get(GOORU_OID);
      AssessmentQuestion assessmentQuestion = this.getQuestionService().getQuestion(gooruOid);
      if (assessmentQuestion != null && !assessmentQuestion.isQuestionNewGen()) {
        content.put(ANSWERS, assessmentQuestion.getAnswers());
        content.put(HINTS, assessmentQuestion.getHints());
      } else {
        String json = getMongoQuestionsService().getQuestionByIdWithJsonAdjustments(gooruOid);
        if (json != null) {
          content.putAll(
              JsonDeserializer.deserialize(json, new TypeReference<Map<String, Object>>() {}));
        }
      }
    }
    content.put(USER, setUser(content.get(GOORU_UID), content.get(USER_NAME)));
    content.put(ASSET_URI, ConfigProperties.getBaseRepoUrl());
    content.remove(THUMBNAIL);
    content.remove(META_DATA);
    content.remove(VALUE);
    content.remove(DISPLAY_NAME);
    content.remove(AVERAGE);
    content.remove(COUNT);
    content.remove(GOORU_UID);
    content.remove(USER_NAME);
    return content;
  }
 @Override
 @Transactional(
     readOnly = false,
     propagation = Propagation.REQUIRED,
     rollbackFor = Exception.class)
 public CollectionItem createQuestion(String collectionId, String data, User user) {
   Collection collection = getCollectionDao().getCollectionByType(collectionId, COLLECTION_TYPES);
   rejectIfNull(collection, GL0056, 404, COLLECTION);
   AssessmentQuestion question = getQuestionService().createQuestion(data, user);
   CollectionItem collectionItem = new CollectionItem();
   collectionItem.setItemType(ADDED);
   collectionItem = createCollectionItem(collectionItem, collection, question, user);
   getCollectionEventLog()
       .collectionItemEventLog(
           collectionId, collectionItem, user.getPartyUid(), QUESTION, data, ADD);
   collectionItem.setQuestion(question);
   collectionItem.setTitle(question.getTitle());
   updateCollectionMetaDataSummary(collection.getContentId(), QUESTION, ADD);
   Map<String, Object> metaData = generateQuestionMetaData(question, question, user);
   createContentMeta(question, metaData);
   return collectionItem;
 }