
com.atlassian.bamboo.specs.api.model.repository.VcsChangeDetectionProperties Maven / Gradle / Ivy
package com.atlassian.bamboo.specs.api.model.repository;
import com.atlassian.bamboo.specs.api.builders.repository.VcsChangeDetection.FileFilteringOption;
import com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException;
import com.atlassian.bamboo.specs.api.model.EntityProperties;
import com.atlassian.bamboo.specs.api.validators.repository.VcsChangeDetectionValidator;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.annotation.concurrent.Immutable;
import java.time.Duration;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import static com.atlassian.bamboo.specs.api.validators.common.ImporterUtils.checkNoErrors;
import static com.atlassian.bamboo.specs.api.validators.common.ImporterUtils.checkNotNull;
@Immutable
public final class VcsChangeDetectionProperties implements EntityProperties {
private final boolean quietPeriodEnabled;
private final Duration quietPeriod;
private final int maxRetries;
private final boolean commitIsolationEnabled;
private final String changesetFilterPatternRegex;
private final FileFilteringOption filterFilePatternOption;
private final String filterFilePatternRegex;
private final Map configuration;
private VcsChangeDetectionProperties() {
quietPeriodEnabled = false;
quietPeriod = Duration.ofSeconds(10);
maxRetries = 5;
commitIsolationEnabled = false;
changesetFilterPatternRegex = "";
filterFilePatternOption = FileFilteringOption.NONE;
filterFilePatternRegex = "";
configuration = Collections.emptyMap();
}
public VcsChangeDetectionProperties(boolean quietPeriodEnabled,
Duration quietPeriod,
int maxRetries,
boolean commitIsolationEnabled,
@NotNull Map configuration,
@Nullable String changesetFilterPatternRegex,
@Nullable FileFilteringOption filterFilePatternOption,
@Nullable String filterFilePatternRegex
) throws PropertiesValidationException {
this.quietPeriodEnabled = quietPeriodEnabled;
this.quietPeriod = quietPeriod;
this.maxRetries = maxRetries;
this.commitIsolationEnabled = commitIsolationEnabled;
this.changesetFilterPatternRegex = changesetFilterPatternRegex;
this.filterFilePatternOption = filterFilePatternOption;
this.filterFilePatternRegex = filterFilePatternRegex;
this.configuration = Collections.unmodifiableMap(new LinkedHashMap<>(configuration));
validate();
}
@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
final VcsChangeDetectionProperties that = (VcsChangeDetectionProperties) o;
return isQuietPeriodEnabled() == that.isQuietPeriodEnabled() &&
getMaxRetries() == that.getMaxRetries() &&
isCommitIsolationEnabled() == that.isCommitIsolationEnabled() &&
Objects.equals(getQuietPeriod(), that.getQuietPeriod()) &&
Objects.equals(getChangesetFilterPatternRegex(), that.getChangesetFilterPatternRegex()) &&
Objects.equals(getFilterFilePatternOption(), that.getFilterFilePatternOption()) &&
Objects.equals(getFilterFilePatternRegex(), that.getFilterFilePatternRegex()) &&
Objects.equals(getConfiguration(), that.getConfiguration());
}
@Override
public int hashCode() {
return Objects.hash(isQuietPeriodEnabled(), getQuietPeriod(), getMaxRetries(), isCommitIsolationEnabled(), getChangesetFilterPatternRegex(), getFilterFilePatternOption(), getFilterFilePatternRegex(), getConfiguration());
}
public boolean isQuietPeriodEnabled() {
return quietPeriodEnabled;
}
public Duration getQuietPeriod() {
return quietPeriod;
}
public int getMaxRetries() {
return maxRetries;
}
public boolean isCommitIsolationEnabled() {
return commitIsolationEnabled;
}
@NotNull
public Map getConfiguration() {
return configuration;
}
@Nullable
public String getChangesetFilterPatternRegex() {
return changesetFilterPatternRegex;
}
@Nullable
public FileFilteringOption getFilterFilePatternOption() {
return filterFilePatternOption;
}
@Nullable
public String getFilterFilePatternRegex() {
return filterFilePatternRegex;
}
@Override
public void validate() {
checkNotNull("configuration", configuration);
checkNoErrors(VcsChangeDetectionValidator.validate(this));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy