LCOV - code coverage report
Current view: top level - server/mail/send - DeleteReviewerSender.java (source / functions) Hit Total Coverage
Test: _coverage_report.dat Lines: 32 33 97.0 %
Date: 2022-11-19 15:00:39 Functions: 8 8 100.0 %

          Line data    Source code
       1             : // Copyright (C) 2016 The Android Open Source Project
       2             : //
       3             : // Licensed under the Apache License, Version 2.0 (the "License");
       4             : // you may not use this file except in compliance with the License.
       5             : // You may obtain a copy of the License at
       6             : //
       7             : // http://www.apache.org/licenses/LICENSE-2.0
       8             : //
       9             : // Unless required by applicable law or agreed to in writing, software
      10             : // distributed under the License is distributed on an "AS IS" BASIS,
      11             : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      12             : // See the License for the specific language governing permissions and
      13             : // limitations under the License.
      14             : 
      15             : package com.google.gerrit.server.mail.send;
      16             : 
      17             : import com.google.gerrit.common.Nullable;
      18             : import com.google.gerrit.entities.Account;
      19             : import com.google.gerrit.entities.Address;
      20             : import com.google.gerrit.entities.Change;
      21             : import com.google.gerrit.entities.NotifyConfig.NotifyType;
      22             : import com.google.gerrit.entities.Project;
      23             : import com.google.gerrit.exceptions.EmailException;
      24             : import com.google.gerrit.extensions.api.changes.RecipientType;
      25             : import com.google.inject.Inject;
      26             : import com.google.inject.assistedinject.Assisted;
      27             : import java.util.ArrayList;
      28             : import java.util.Collection;
      29             : import java.util.HashSet;
      30             : import java.util.List;
      31             : import java.util.Set;
      32             : 
      33             : /** Let users know that a reviewer and possibly her review have been removed. */
      34             : public class DeleteReviewerSender extends ReplyToChangeSender {
      35          10 :   private final Set<Account.Id> reviewers = new HashSet<>();
      36          10 :   private final Set<Address> reviewersByEmail = new HashSet<>();
      37             : 
      38             :   public interface Factory extends ReplyToChangeSender.Factory<DeleteReviewerSender> {
      39             :     @Override
      40             :     DeleteReviewerSender create(Project.NameKey project, Change.Id changeId);
      41             :   }
      42             : 
      43             :   @Inject
      44             :   public DeleteReviewerSender(
      45             :       EmailArguments args, @Assisted Project.NameKey project, @Assisted Change.Id changeId) {
      46          10 :     super(args, "deleteReviewer", newChangeData(args, project, changeId));
      47          10 :   }
      48             : 
      49             :   public void addReviewers(Collection<Account.Id> cc) {
      50          10 :     reviewers.addAll(cc);
      51          10 :   }
      52             : 
      53             :   public void addReviewersByEmail(Collection<Address> cc) {
      54           2 :     reviewersByEmail.addAll(cc);
      55           2 :   }
      56             : 
      57             :   @Override
      58             :   protected void init() throws EmailException {
      59          10 :     super.init();
      60             : 
      61          10 :     ccAllApprovals();
      62          10 :     bccStarredBy();
      63          10 :     ccExistingReviewers();
      64          10 :     includeWatchers(NotifyType.ALL_COMMENTS);
      65          10 :     reviewers.stream().forEach(r -> add(RecipientType.TO, r));
      66          10 :     addByEmail(RecipientType.TO, reviewersByEmail);
      67          10 :   }
      68             : 
      69             :   @Override
      70             :   protected void formatChange() throws EmailException {
      71          10 :     appendText(textTemplate("DeleteReviewer"));
      72          10 :     if (useHtml()) {
      73          10 :       appendHtml(soyHtmlTemplate("DeleteReviewerHtml"));
      74             :     }
      75          10 :   }
      76             : 
      77             :   @Nullable
      78             :   public List<String> getReviewerNames() {
      79          10 :     if (reviewers.isEmpty() && reviewersByEmail.isEmpty()) {
      80           0 :       return null;
      81             :     }
      82          10 :     List<String> names = new ArrayList<>();
      83          10 :     for (Account.Id id : reviewers) {
      84          10 :       names.add(getNameFor(id));
      85          10 :     }
      86          10 :     for (Address a : reviewersByEmail) {
      87           2 :       names.add(a.toString());
      88           2 :     }
      89          10 :     return names;
      90             :   }
      91             : 
      92             :   @Override
      93             :   protected void setupSoyContext() {
      94          10 :     super.setupSoyContext();
      95          10 :     soyContextEmailData.put("reviewerNames", getReviewerNames());
      96          10 :   }
      97             : }

Generated by: LCOV version 1.16+git.20220603.dfeb750