public Prediction createPrediction(SecurityContext sec, Prediction pred) {
   User user = securityCheck(sec, Roles.CREATE_PREDICTION);
   pred.setTags(TextUtils.tag(pred.getTags()));
   int id;
   pred = InputSanitizer.sanitize(pred);
   if (StringUtils.isBlank(pred.getSourceAuthor())) {
     pred.setType(Prediction.PredictionType.quote.name());
   } else {
     pred.setType(Prediction.PredictionType.prediction.name());
   }
   if (pred.getTitle() == null || pred.getTitle().trim().isEmpty()) {
     pred.setTitle(StringUtils.abbreviate(pred.getText(), 64));
   } else {
     pred.setTitle(StringUtils.abbreviate(pred.getTitle(), 64));
   }
   pred.setText(StringUtils.abbreviate(pred.getText(), MAX_PREDICTION_LENGTH));
   if (sec != getAdminSecurityContext()) {
     pred.setCreatedByUserId(user.getId());
     pred.setCreatedByUser(user.getFullName());
   }
   pred.setTime(TextUtils.getProbablePredictionTime(pred.getText()));
   id = db.createPrediction(pred);
   pred.setId(id);
   return db.getPrediction(id);
 }