package com.constellio.model.services.schemas.builders;
import java.util.ArrayList;
import java.util.List;
import com.constellio.model.entities.schemas.MetadataPopulateConfigs;
import com.constellio.model.entities.schemas.RegexConfig;
import com.constellio.model.services.records.extractions.MetadataPopulator;
public class MetadataPopulateConfigsBuilder {
private List<String> styles = new ArrayList<>();
private List<String> properties = new ArrayList<>();
private List<RegexConfig> regexes = new ArrayList<>();
private List<MetadataPopulator> metadataPopulators = new ArrayList<>();
public static MetadataPopulateConfigsBuilder modify(MetadataPopulateConfigs populateConfigs) {
MetadataPopulateConfigsBuilder builder = new MetadataPopulateConfigsBuilder();
builder.styles.addAll(populateConfigs.getStyles());
builder.properties.addAll(populateConfigs.getProperties());
builder.regexes.addAll(populateConfigs.getRegexes());
builder.metadataPopulators.addAll(populateConfigs.getMetadataPopulators());
return builder;
}
public static MetadataPopulateConfigsBuilder modify(MetadataPopulateConfigsBuilder populateConfigsBuilder) {
MetadataPopulateConfigsBuilder builder = new MetadataPopulateConfigsBuilder();
builder.styles.addAll(populateConfigsBuilder.getStyles());
builder.properties.addAll(populateConfigsBuilder.getProperties());
builder.regexes.addAll(populateConfigsBuilder.getRegexes());
builder.metadataPopulators.addAll(populateConfigsBuilder.getMetadataPopulators());
return builder;
}
public static MetadataPopulateConfigsBuilder create() {
return new MetadataPopulateConfigsBuilder();
}
public List<String> getStyles() {
return styles;
}
public List<String> getProperties() {
return properties;
}
public List<RegexConfig> getRegexes() {
return regexes;
}
public List<MetadataPopulator> getMetadataPopulators() {
return metadataPopulators;
}
public MetadataPopulateConfigsBuilder setStyles(List<String> styles) {
List<String> newStyles = new ArrayList<>();
for (String style : styles) {
if (!newStyles.contains(style)) {
newStyles.add(style);
}
}
this.styles = newStyles;
return this;
}
public MetadataPopulateConfigsBuilder setProperties(List<String> properties) {
List<String> newProperties = new ArrayList<>();
for (String property : properties) {
if (!newProperties.contains(property)) {
newProperties.add(property);
}
}
this.properties = newProperties;
return this;
}
public void setRegexes(List<RegexConfig> regexes) {
this.regexes = regexes;
}
public void setMetadataPopulators(List<MetadataPopulator> metadataPopulators) {
this.metadataPopulators = metadataPopulators;
}
public MetadataPopulateConfigsBuilder addStyle(String style) {
if (!styles.contains(style)) {
styles.add(style);
}
return this;
}
public MetadataPopulateConfigsBuilder removeStyle(String style) {
styles.remove(style);
return this;
}
public MetadataPopulateConfigsBuilder addProperty(String property) {
if (!properties.contains(property)) {
properties.add(property);
}
return this;
}
public MetadataPopulateConfigsBuilder removeProperty(String property) {
properties.remove(property);
return this;
}
public MetadataPopulateConfigsBuilder addRegex(RegexConfig regexConfig) {
regexes.add(regexConfig);
return this;
}
public boolean isEmpty() {
if (styles.isEmpty() && properties.isEmpty() && regexes.isEmpty() && metadataPopulators.isEmpty()) {
return true;
} else {
return false;
}
}
public MetadataPopulateConfigs build() {
return new MetadataPopulateConfigs(styles, properties, regexes, metadataPopulators);
}
@Override
public String toString() {
return "MetadataPopulateConfigsBuilder [styles=" + styles + ", properties=" + properties
+ ", regexes=" + regexes + "metadata_populator=" + metadataPopulators + "]";
}
}