Search in sources :

Example 1 with Profile

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());
}
Also used : EmailMessage(org.sonar.server.issue.notification.EmailMessage) Profile(org.sonar.server.qualityprofile.builtin.BuiltInQPChangeNotificationBuilder.Profile) DateUtils.formatDate(org.sonar.api.utils.DateUtils.formatDate) Date(java.util.Date) CheckForNull(javax.annotation.CheckForNull)

Aggregations

Date (java.util.Date)1 CheckForNull (javax.annotation.CheckForNull)1 DateUtils.formatDate (org.sonar.api.utils.DateUtils.formatDate)1 EmailMessage (org.sonar.server.issue.notification.EmailMessage)1 Profile (org.sonar.server.qualityprofile.builtin.BuiltInQPChangeNotificationBuilder.Profile)1