예제 #1
0
  @Override
  public OntrackSVNRevisionInfo getOntrackRevisionInfo(SVNRepository repository, long revision) {

    // Gets information about the revision
    SVNRevisionInfo basicInfo = svnService.getRevisionInfo(repository, revision);
    SVNChangeLogRevision changeLogRevision =
        svnService.createChangeLogRevision(repository, basicInfo);

    // Gets the first copy event on this path after this revision
    SVNLocation firstCopy = svnService.getFirstCopyAfter(repository, basicInfo.toLocation());

    // Data to collect
    Collection<BuildView> buildViews = new ArrayList<>();
    Collection<BranchStatusView> branchStatusViews = new ArrayList<>();
    // Loops over all authorised branches
    for (Project project : structureService.getProjectList()) {
      // Filter on SVN configuration: must be present and equal to the one the revision info is
      // looked into
      Property<SVNProjectConfigurationProperty> projectSvnConfig =
          propertyService.getProperty(project, SVNProjectConfigurationPropertyType.class);
      if (!projectSvnConfig.isEmpty()
          && repository
              .getConfiguration()
              .getName()
              .equals(projectSvnConfig.getValue().getConfiguration().getName())) {
        for (Branch branch : structureService.getBranchesForProject(project.getId())) {
          // Filter on branch type
          // Filter on SVN configuration: must be present
          if (branch.getType() != BranchType.TEMPLATE_DEFINITION
              && propertyService.hasProperty(branch, SVNBranchConfigurationPropertyType.class)) {
            // Identifies a possible build given the path/revision and the first copy
            Optional<Build> build = lookupBuild(basicInfo.toLocation(), firstCopy, branch);
            // Build found
            if (build.isPresent()) {
              // Gets the build view
              BuildView buildView = structureService.getBuildView(build.get());
              // Adds it to the list
              buildViews.add(buildView);
              // Collects the promotions for the branch
              branchStatusViews.add(structureService.getEarliestPromotionsAfterBuild(build.get()));
            }
          }
        }
      }
    }

    // OK
    return new OntrackSVNRevisionInfo(
        repository.getConfiguration(), changeLogRevision, buildViews, branchStatusViews);
  }
 @Before
 public void before() {
   SecurityService securityService = mock(SecurityService.class);
   ValidationRunStatusService validationRunStatusService = mock(ValidationRunStatusService.class);
   structureRepository = mock(StructureRepository.class);
   EventPostService eventService = mock(EventPostService.class);
   EventFactory eventFactory = mock(EventFactory.class);
   ExtensionManager extensionManager = mock(ExtensionManager.class);
   PropertyService propertyService = mock(PropertyService.class);
   PredefinedPromotionLevelService predefinedPromotionLevelService =
       mock(PredefinedPromotionLevelService.class);
   PredefinedValidationStampService predefinedValidationStampService =
       mock(PredefinedValidationStampService.class);
   DecorationService decorationService = mock(DecorationService.class);
   ProjectFavouriteService projectFavouriteService = mock(ProjectFavouriteService.class);
   service =
       new StructureServiceImpl(
           securityService,
           eventService,
           eventFactory,
           validationRunStatusService,
           structureRepository,
           extensionManager,
           propertyService,
           predefinedPromotionLevelService,
           predefinedValidationStampService,
           decorationService,
           projectFavouriteService);
   // Model
   Project project = Project.of(nd("P", "Project")).withId(ID.of(1));
   Branch branch = Branch.of(project, nd("B", "Branch")).withId(ID.of(1));
   copper = PromotionLevel.of(branch, nd("COPPER", "")).withId(ID.of(1));
   build = Build.of(branch, nd("1", "Build 1"), Signature.of("test")).withId(ID.of(1));
 }