All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.gwdg.metadataqa.marc.cli.utils.IgnorableFields Maven / Gradle / Ivy

package de.gwdg.metadataqa.marc.cli.utils;

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;

public class IgnorableFields {
  private List fields;
  private List maskedFields;

  public void parseFields(String raw) {
    if (StringUtils.isNotBlank(raw)) {
      fields = new ArrayList<>();
      maskedFields = new ArrayList<>();
      List candidates = Arrays.asList(raw.split(","));
      for (String candidate : candidates) {
        if (candidate.contains("."))
          maskedFields.add(Pattern.compile(candidate));
        else
          fields.add(candidate);
      }
    }
  }

  public boolean isEmpty() {
    return (fields == null || fields.isEmpty()) && (maskedFields == null || maskedFields.isEmpty());
  }

  public List getFields() {
    return fields;
  }

  public boolean contains(String tag) {
    if (isEmpty())
      return false;
    if (fields.contains(tag))
      return true;
    if (!maskedFields.isEmpty()) {
      for (Pattern pattern : maskedFields) {
        if (pattern.matcher(tag).matches()) {
          fields.add(tag); // caching known fields
          return true;
        }
      }
    }

    return false;
  }

  public String toString() {
    if (isEmpty())
      return "";
    String value = "";
    if (!fields.isEmpty())
      value += StringUtils.join(fields, ", ");
    if (!maskedFields.isEmpty()) {
      value += value == "" ? "" : ", ";
      value += "masked fields: " + StringUtils.join(maskedFields, ", ");
    }
    return value;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy