package de.geeksfactory.opacclient.storage;
import java.util.List;
import de.geeksfactory.opacclient.searchfields.SearchField;
/**
* Interface for providing access to cached SearchField data
*
* @author Johan von Forstner
*/
public interface SearchFieldDataSource {
/**
* Save search fields for a specific library.
*
* @param libraryId The ID of the library (Library.getIdent())
* @param fields the list of search fields to save
*/
void saveSearchFields(String libraryId, List<SearchField> fields);
/**
* Get the saved search fields of a library.
*
* @param libraryId The ID of the library (Library.getIdent())
* @return List of search fields or null if the library has no cached data
*/
List<SearchField> getSearchFields(String libraryId);
/**
* @param libraryId The ID of the library (Library.getIdent())
* @return whether the library has cached data
*/
boolean hasSearchFields(String libraryId);
/**
* Clear the cached data for a specific library
*
* @param libraryId The ID of the library (Library.getIdent())
*/
void clearSearchFields(String libraryId);
/**
* Clear the cached data for all libraries
*/
void clearAll();
/**
* @param libraryId The ID of the library (Library.getIdent())
* @return Timecode (like System.currentTimeMillis()) for when the data of this library was last
* updated
*/
long getLastSearchFieldUpdateTime(String libraryId);
/**
* @param libraryId The ID of the library (Library.getIdent())
* @return Version code of the last app version that updated the search field for this library
*/
int getLastSearchFieldUpdateVersion(String libraryId);
/**
* @param libraryId The ID of the library (Library.getIdent())
* @return System language with which the search fields were saved (ISO-639-1 code)
*/
String getSearchFieldLanguage(String libraryId);
}