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); }