/** Add a new comment entry for a user. */ public void addNotification( String username, String relatedUser, String questionId, long answerCount, NotificationType notificationType) { try { Mutator mutator = Pelops.createMutator(TRENDOCEAN_POOL, TRENDOCEAN_KEYSPACE); byte[] timeUUIDBytes = UUIDUtil.toBytes(UUIDUtil.getTimeUUID()); UUID id = UUIDUtil.getRandomUUID(); byte[] idAsBytes = UUIDUtil.toBytes(id); // add new notification if (notificationType == NotificationType.COMMENT || notificationType == NotificationType.LIKE || notificationType == NotificationType.MENTION) { mutator.writeSubColumns( username, WALL_CF, timeUUIDBytes, mutator.newColumnList( mutator.newColumn("_id", idAsBytes), mutator.newColumn("_type", toBytes(notificationType.getId())), mutator.newColumn("questionId", toBytes(questionId)), mutator.newColumn("relatedUser", relatedUser))); } else if (notificationType == NotificationType.NEW_FOLLOWER || notificationType == NotificationType.FOLLOW_REQUEST_ACCEPT) { mutator.writeSubColumns( username, WALL_CF, timeUUIDBytes, mutator.newColumnList( mutator.newColumn("_id", idAsBytes), mutator.newColumn("_type", toBytes(notificationType.getId())), mutator.newColumn("relatedUser", relatedUser))); } else if (notificationType == NotificationType.ANSWER_COUNT) { mutator.writeSubColumns( username, WALL_CF, timeUUIDBytes, mutator.newColumnList( mutator.newColumn("_id", idAsBytes), mutator.newColumn("_type", toBytes(notificationType.getId())), mutator.newColumn("questionId", toBytes(questionId)), mutator.newColumn("answerCount", toBytes(answerCount)))); } // write reverse mapping for delete mutator.writeColumn(username, ID_TO_TIMEUUID_CF, mutator.newColumn(idAsBytes, timeUUIDBytes)); mutator.execute(ConsistencyLevel.QUORUM); } catch (Exception ex) { logger.error("Can not add follow entry", username + ":" + questionId, ex); throw new TrendOceanException(ex); } }