/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.content.authority.service; import org.dspace.content.MetadataField; import java.util.List; /** * Broker for metadata authority settings configured for each metadata field. * * Configuration keys, per metadata field (e.g. "dc.contributer.author") * * # is field authority controlled (i.e. store authority, confidence values)? * {@code authority.controlled.<FIELD> = true} * * # is field required to have an authority value, or may it be empty? * # default is false. * {@code authority.required.<FIELD> = true | false} * * # default value of minimum confidence level for ALL fields - must be * # symbolic confidence level, see org.dspace.content.authority.Choices * {@code authority.minconfidence = uncertain} * * # minimum confidence level for this field * {@code authority.minconfidence.SCHEMA.ELEMENT.QUALIFIER = SYMBOL} * e.g. * {@code authority.minconfidence.dc.contributor.author = accepted} * * NOTE: There is *expected* to be a "choices" (see ChoiceAuthorityManager) * configuration for each authority-controlled field. * * @see org.dspace.content.authority.ChoiceAuthorityServiceImpl * @see org.dspace.content.authority.Choices * @author Larry Stone */ public interface MetadataAuthorityService { /** * Predicate - is field authority-controlled? * @param metadataField metadata field * @return true/false */ public boolean isAuthorityControlled(MetadataField metadataField); /** * Predicate - is field authority-controlled? * @param fieldKey field key * @return true/false */ public boolean isAuthorityControlled(String fieldKey); /** * Predicate - is authority value required for field? * @param metadataField metadata field * @return true/false */ public boolean isAuthorityRequired(MetadataField metadataField); /** * Predicate - is authority value required for field? * @param fieldKey field key * @return true/false */ public boolean isAuthorityRequired(String fieldKey); /** * Construct a single key from the tuple of schema/element/qualifier * that describes a metadata field. Punt to the function we use for * submission UI input forms, for now. * @param metadataField metadata field * @return field key */ public String makeFieldKey(MetadataField metadataField); /** * Construct a single key from the tuple of schema/element/qualifier * that describes a metadata field. Punt to the function we use for * submission UI input forms, for now. * @param schema schema * @param element element * @param qualifier qualifier * @return field key */ public String makeFieldKey(String schema, String element, String qualifier); /** * Give the minimal level of confidence required to consider valid an authority value * for the given metadata. * @param metadataField metadata field * @return the minimal valid level of confidence for the given metadata */ public int getMinConfidence(MetadataField metadataField); /** * Return the list of metadata field with authority control. The strings * are in the form <code>schema.element[.qualifier]</code> * * @return the list of metadata field with authority control */ public List<String> getAuthorityMetadata(); }