/**
  * Verifies that the user owns the analysis that is being edited.
  *
  * @param analysis the analysis.
  * @param userDetails details about the authenticated user.
  * @throws AnalysisOwnershipException if the user does not own the analysis.
  */
 private void verifyUserOwnership(TransformationActivity analysis, UserDetails userDetails) {
   String integratorEmail = analysis.getIntegrationDatum().getIntegratorEmail();
   String authenticatedEmail = userDetails.getEmail();
   if (!StringUtils.equals(integratorEmail, authenticatedEmail)) {
     throw new AnalysisOwnershipException(userDetails.getShortUsername(), analysis.getId());
   }
 }
 /**
  * Obtains the first template associated with an analysis.
  *
  * @param daoFactory used to obtain data access objects.
  * @param analysis the analysis.
  * @return the template.
  * @throws templateNotFoundException if the template can't be found.
  */
 private Template getFirstTemplate(DaoFactory daoFactory, TransformationActivity analysis) {
   String templateId = analysis.step(0).getTemplateId();
   Template template = daoFactory.getTemplateDao().findById(templateId);
   if (template == null) {
     throw new TemplateNotFoundException(templateId);
   }
   return template;
 }
 /**
  * Verifies that Tito is capable of editing the analysis based on the number of steps.
  *
  * @param analysis the analysis to validate.
  */
 private void verifyNumberOfSteps(TransformationActivity analysis) {
   if (analysis.getStepCount() != 1) {
     throw new AnalysisStepCountException(analysis.getId(), analysis.getStepCount());
   }
 }