package au.edu.anu.datacommons.external; import java.util.List; import javax.ws.rs.core.MultivaluedMap; import au.edu.anu.datacommons.webservice.bindings.FedoraItem; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.WebResource; /** * Interface implemented by Metadata Provider classes that retrieve information for a record from an external source * and creates a FedoraItem object. * * @author Rahul Khanna * */ public interface ExternalMetadataProvider { /** * Gets the friendly name of the Metadata Provider. * * @return Name of provider as String */ public String getFriendlyName(); /** * Gets the fully qualified class name of the metadata provider. * * @return Fully qualified class name as String */ public String getFqClassName(); /** * Gets the parameters required by this provider. * * @return List of ParamInfo objects */ public List<ParamInfo> getRequiredParams(); /** * Retrieves the metadata from the provider. * * @param params * MultivaluedMap containing parameter name as keys and its value(s) * @return Fedora Item that's retrieved. * @throws ExternalMetadataException * when unable to complete request */ public FedoraItem retrieveMetadata(MultivaluedMap<String, String> params) throws ExternalMetadataException; }