private Optional<Build> createBuild(String tagsPath, SVNSyncProperty syncProperty, Branch branch, TCopyEvent copy, ConfiguredBuildSvnRevisionLink<?> revisionLink, SVNRepository repository) {
return getBuildNameFromPath(tagsPath, revisionLink, copy.copyToLocation())
.flatMap(buildName -> {
Optional<Build> build = structureService.findBuildByName(branch.getProject().getName(), branch.getName(), buildName);
if (!build.isPresent()) {
logger.debug("[svn-sync] Build {} does not exist - creating.", buildName);
return Optional.of(doCreateBuild(branch, copy, buildName, repository));
}
else if (syncProperty.isOverride()) {
logger.debug("[svn-sync] Build {} already exists - overriding.", buildName);
structureService.deleteBuild(build.get().getId());
return Optional.of(doCreateBuild(branch, copy, buildName, repository));
}
else {
logger.debug("[svn-sync] Build {} already exists - not overriding.", buildName);
return Optional.empty();
}
});
}