001package org.gbif.api.vocabulary;
002
003import org.gbif.dwc.terms.Term;
004
005import java.util.Set;
006
007/**
008 * Represents a remark flagged during the interpretation phase.
009 */
010public interface InterpretationRemark {
011
012  /**
013   * Returns the identifier of the {@link InterpretationRemark}.
014   * This is normally implemented to return the result of {@link Enum#name}.
015   * Potential name clashes are detected by unit tests.
016   *
017   * @return identifier of the {@link InterpretationRemark}. Never null.
018   */
019  String getId();
020
021  /**
022   * {@link Set} containing the {@link Term} considered to flag this remark.
023   *
024   * @return {@link Set} of {@link Term} or empty {@link Set}. Never null.
025   */
026  Set<Term> getRelatedTerms();
027
028  /**
029   * Returns the default severity of this {@link InterpretationRemark}.
030   * Severity can be relative to the context and profile. This {@link InterpretationRemarkSeverity}
031   * should be seen as the default severity in the general context of interpretation.
032   *
033   * @return default severity of this {@link InterpretationRemark}. Never null.
034   */
035  InterpretationRemarkSeverity getSeverity();
036
037  /**
038   * Checks if the {@link InterpretationRemark} is deprecated or not.
039   * @return true if the {@link InterpretationRemark} is marked with @Deprecated.
040   */
041  boolean isDeprecated();
042
043}