@Override
 public void execute(ComputationContext context) {
   int rootComponentRef = context.getReportMetadata().getRootComponentRef();
   recursivelyProcessComponent(context, rootComponentRef);
   processDeletedComponents(context);
   issueComputation.afterReportProcessing();
 }
 private void processDeletedComponents(ComputationContext context) {
   int deletedComponentsCount = context.getReportMetadata().getDeletedComponentsCount();
   for (int componentRef = 1; componentRef <= deletedComponentsCount; componentRef++) {
     BatchReport.Issues issues =
         context.getReportReader().readDeletedComponentIssues(componentRef);
     issueComputation.processComponentIssues(
         context, issues.getIssueList(), issues.getComponentUuid(), null);
   }
 }
 private void recursivelyProcessComponent(ComputationContext context, int componentRef) {
   BatchReportReader reportReader = context.getReportReader();
   BatchReport.Component component = reportReader.readComponent(componentRef);
   List<BatchReport.Issue> issues = reportReader.readComponentIssues(componentRef);
   issueComputation.processComponentIssues(context, issues, component.getUuid(), componentRef);
   for (Integer childRef : component.getChildRefList()) {
     recursivelyProcessComponent(context, childRef);
   }
 }