use of org.sonar.server.qualityprofile.builtin.BuiltInQPChangeNotificationBuilder.Profile in project sonarqube by SonarSource.
the class BuiltInQPChangeNotificationTemplate method format.
@Override
@CheckForNull
public EmailMessage format(Notification notification) {
if (!BuiltInQPChangeNotification.TYPE.equals(notification.getType())) {
return null;
}
BuiltInQPChangeNotificationBuilder profilesNotification = parse(notification);
StringBuilder message = new StringBuilder("The following built-in profiles have been updated:\n\n");
profilesNotification.getProfiles().stream().sorted(Comparator.comparing(Profile::getLanguageName).thenComparing(Profile::getProfileName)).forEach(profile -> {
message.append("\"").append(profile.getProfileName()).append("\" - ").append(profile.getLanguageName()).append(": ").append(server.getPublicRootUrl()).append("/profiles/changelog?language=").append(profile.getLanguageKey()).append("&name=").append(encode(profile.getProfileName())).append("&since=").append(formatDate(new Date(profile.getStartDate()))).append("&to=").append(formatDate(new Date(profile.getEndDate()))).append("\n");
int newRules = profile.getNewRules();
if (newRules > 0) {
message.append(" ").append(newRules).append(" new rule").append(plural(newRules)).append('\n');
}
int updatedRules = profile.getUpdatedRules();
if (updatedRules > 0) {
message.append(" ").append(updatedRules).append(" rule").append(updatedRules > 1 ? "s have been updated" : " has been updated").append("\n");
}
int removedRules = profile.getRemovedRules();
if (removedRules > 0) {
message.append(" ").append(removedRules).append(" rule").append(plural(removedRules)).append(" removed\n");
}
message.append("\n");
});
message.append("This is a good time to review your quality profiles and update them to benefit from the latest evolutions: ");
message.append(server.getPublicRootUrl()).append("/profiles");
// And finally return the email that will be sent
return new EmailMessage().setMessageId(BuiltInQPChangeNotification.TYPE).setSubject("Built-in quality profiles have been updated").setPlainTextMessage(message.toString());
}
Aggregations