package se.bjurr.sbcc.data; import static com.google.common.collect.Maps.newTreeMap; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; import java.util.List; import java.util.Map; import se.bjurr.sbcc.settings.SbccGroup; import se.bjurr.sbcc.settings.SbccMatch; import com.google.common.base.Optional; public class SbccRefChangeVerificationResult { private final Map<SbccChangeSet, SbccChangeSetVerificationResult> sbccChangeSets = newTreeMap(); private boolean branchNameValid = TRUE; private final String refId; private final String toHash; private final String fromHash; public SbccRefChangeVerificationResult(String refId, String fromHash, String toHash) { this.refId = refId; this.fromHash = fromHash; this.toHash = toHash; } public void addAuthorEmailValidationResult( SbccChangeSet sbccChangeSet, boolean validateChangeSetForAuthorEmail) { getOrAdd(sbccChangeSet).setEmailAuthorResult(validateChangeSetForAuthorEmail); } public void addCommitterEmailValidationResult( SbccChangeSet sbccChangeSet, boolean validateChangeSetForCommitterEmail) { getOrAdd(sbccChangeSet).setEmailCommitterResult(validateChangeSetForCommitterEmail); } public void addAuthorNameValidationResult( SbccChangeSet sbccChangeSet, boolean validateChangeSetForName) { getOrAdd(sbccChangeSet).setNameAuthorResult(validateChangeSetForName); } public void addCommitterNameValidationResult( SbccChangeSet sbccChangeSet, boolean validateChangeSetForName) { getOrAdd(sbccChangeSet).setNameCommitterResult(validateChangeSetForName); } private SbccChangeSetVerificationResult getOrAdd(SbccChangeSet sbccChangeSet) { if (!sbccChangeSets.containsKey(sbccChangeSet)) { sbccChangeSets.put(sbccChangeSet, new SbccChangeSetVerificationResult()); } return sbccChangeSets.get(sbccChangeSet); } public Map<SbccChangeSet, SbccChangeSetVerificationResult> getSbccChangeSets() { return sbccChangeSets; } public boolean hasReportables() { if (hasErrors()) { return TRUE; } for (final SbccChangeSet sbccChangeSet : sbccChangeSets.keySet()) { if (sbccChangeSets.get(sbccChangeSet).hasReportables()) { return TRUE; } } return FALSE; } public boolean hasErrors() { if (!branchNameValid) { return TRUE; } for (final SbccChangeSet sbccChangeSet : sbccChangeSets.keySet()) { if (sbccChangeSets.get(sbccChangeSet).hasErrors()) { return TRUE; } } return FALSE; } public void setGroupsResult(SbccChangeSet sbccChangeSet, Map<SbccGroup, SbccMatch> groupsResult) { getOrAdd(sbccChangeSet).setGroupsResult(groupsResult); } public void addContentSizeValidationResult( SbccChangeSet sbccChangeSet, Map<String, Long> validateChangeSetForContentSize) { getOrAdd(sbccChangeSet).addContentSizeValidationResult(validateChangeSetForContentSize); } public void addContentDiffValidationResult( SbccChangeSet sbccChangeSet, Optional<String> validateChangeSetForContentDiff) { getOrAdd(sbccChangeSet).addContentDiffValidationResult(validateChangeSetForContentDiff); } public void setFailingJql(SbccChangeSet sbccChangeSet, List<String> failingJqlQueries) { getOrAdd(sbccChangeSet).setFailingJql(failingJqlQueries); } public boolean isBranchNameValid() { return branchNameValid; } public void setBranchValidationResult(boolean branchNameValid) { this.branchNameValid = branchNameValid; } public void addAuthorEmailInBitbucketValidationResult( SbccChangeSet sbccChangeSet, boolean validateChangeSetForAuthorEmailInBitbucket) { getOrAdd(sbccChangeSet) .addAuthorEmailInBitbucketValidationResult(validateChangeSetForAuthorEmailInBitbucket); } public void addAuthorNameInBitbucketValidationResult( SbccChangeSet sbccChangeSet, boolean validateChangeSetForAuthorNameInBitbucket) { getOrAdd(sbccChangeSet) .addAuthorNameInBitbucketValidationResult(validateChangeSetForAuthorNameInBitbucket); } public String getRefId() { return refId; } public String getToHash() { return toHash; } public String getFromHash() { return fromHash; } }