package eu.dnetlib.openaire.common;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import eu.dnetlib.openaire.dsm.dao.utils.IndexDsInfo;
import eu.dnetlib.openaire.exporter.model.context.Context;

public interface ISClient {

	IndexDsInfo calculateCurrentIndexDsInfo() throws Exception;

	String getObjectStoreId(String dsId) throws Exception;

	Map<String, Context> getFunderContextMap() throws IOException;

	Map<String, Context> getCommunityContextMap() throws IOException;

	Map<String, Context> getContextMap(final List<String> type) throws IOException;

	void updateContextParam(String id, String name, String value, boolean toEscape);

	void updateContextAttribute(String id, String name, String value);

	void addConcept(String id, String categoryId, String data);

	void removeConcept(String id, String categoryId, String conceptId);

	void dropCache();

	/**
	 *
	 * @param id
	 *            id of the concept to be updated (i.e. ni::projects::2)
	 * @param name
	 *            name of the attribute to be updated
	 * @param value
	 *            new value for the attribute
	 */
	void updateConceptAttribute(String id, String name, String value);

	void updateConceptParam(String id, String name, String value);

	void updateConceptParamNoEscape(String id, String name, String value);

}
