package org.jabref.model.metadata;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
public class ContentSelectors {
private final List<ContentSelector> contentSelectors;
public ContentSelectors() {
contentSelectors = new ArrayList<>();
}
public void addContentSelector(ContentSelector contentSelector) {
Objects.requireNonNull(contentSelector);
this.contentSelectors.add(contentSelector);
}
public List<String> getSelectorValuesForField(String fieldName) {
for (ContentSelector selector: contentSelectors) {
if (selector.getFieldName().equals(fieldName)) {
return selector.getValues();
}
}
return Collections.emptyList();
}
public void removeSelector(String fieldName) {
ContentSelector toRemove = null;
for (ContentSelector selector: contentSelectors) {
if (selector.getFieldName().equals(fieldName)) {
toRemove = selector;
break;
}
}
if (toRemove != null) {
contentSelectors.remove(toRemove);
}
}
public List<ContentSelector> getContentSelectors() {
return Collections.unmodifiableList(contentSelectors);
}
public static ContentSelector parse(String key, String values) {
Objects.requireNonNull(key);
Objects.requireNonNull(values);
List<String> valueList = Arrays.asList(values.split(";"));
return new ContentSelector(key, valueList);
}
public List<String> getFieldNamesWithSelectors() {
List<String> result = new ArrayList<>(contentSelectors.size());
for (ContentSelector selector: contentSelectors) {
result.add(selector.getFieldName());
}
return result;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ContentSelectors that = (ContentSelectors) o;
return Objects.equals(contentSelectors, that.contentSelectors);
}
@Override
public int hashCode() {
return Objects.hash(contentSelectors);
}
}