package org.jfrog.build.extractor.clientConfiguration;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;
/**
* Holds include and exclude patterns to be used by the build server and extractor deployers
*
* @author Noam Y. Tenne
*/
public class IncludeExcludePatterns implements Serializable {
//Empty array constant for the empty patterns
private static final String[] EMPTY_PATTERN = new String[0];
//Helper instance of empty patterns
public static final IncludeExcludePatterns EMPTY = new IncludeExcludePatterns(EMPTY_PATTERN, EMPTY_PATTERN);
private String[] includePatterns;
private String[] excludePatterns;
/**
* Splitter constructor
*
* @param includePatterns Whitespace\comma-separated patterns. Can be null
* @param excludePatterns Whitespace\comma-separated patterns. Can be null
*/
public IncludeExcludePatterns(String includePatterns, String excludePatterns) {
this.includePatterns = splitPatterns(includePatterns);
this.excludePatterns = splitPatterns(excludePatterns);
}
/**
* Pattern list constructor
*
* @param includePatterns Pattern array. Can be null
* @param excludePatterns Pattern array. Can be null
*/
public IncludeExcludePatterns(String[] includePatterns, String[] excludePatterns) {
this.includePatterns = (includePatterns != null) ? includePatterns : EMPTY_PATTERN;
this.excludePatterns = (excludePatterns != null) ? excludePatterns : EMPTY_PATTERN;
}
/**
* Splits the given patterns string to an array
*
* @param patterns Whitespace\comma-separated patterns. Can be null
* @return Pattern array
*/
private String[] splitPatterns(String patterns) {
if (StringUtils.isNotBlank(patterns)) {
return StringUtils.split(patterns, ", ");
} else {
return EMPTY_PATTERN;
}
}
/**
* Add include pattern
*
* @param includePatterns
*/
public void addIncludePatterns(String includePatterns) {
this.includePatterns = (String[]) ArrayUtils.addAll(this.includePatterns, splitPatterns(includePatterns));
}
/**
* Add exclude pattern
*
* @param excludePatterns
*/
public void addExcludePatterns(String excludePatterns) {
this.excludePatterns = (String[]) ArrayUtils.addAll(this.excludePatterns, splitPatterns(excludePatterns));
}
public String[] getIncludePatterns() {
return ((String[]) ArrayUtils.clone(includePatterns));
}
public String[] getExcludePatterns() {
return ((String[]) ArrayUtils.clone(excludePatterns));
}
}