package de.geeksfactory.opacclient.meanings;
import org.json.JSONException;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
import de.geeksfactory.opacclient.OpacApiFactory;
import de.geeksfactory.opacclient.apis.BaseApi;
import de.geeksfactory.opacclient.apis.OpacApi;
import de.geeksfactory.opacclient.apis.OpacApi.OpacErrorException;
import de.geeksfactory.opacclient.objects.Library;
import de.geeksfactory.opacclient.searchfields.SearchField;
public class GetSearchFieldsCallable implements Callable<Map<String, List<SearchField>>> {
private Library lib;
public GetSearchFieldsCallable(Library lib) {
this.lib = lib;
}
@Override
public Map<String, List<SearchField>> call() {
OpacApi api = OpacApiFactory.create(lib, "OpacApp/Test");
if (api instanceof BaseApi) {
((BaseApi) api).setHttpLoggingEnabled(false);
}
Set<String> langs = null;
try {
langs = api.getSupportedLanguages();
} catch (IOException e) {
}
if (langs == null) {
// Use default language
try {
Map<String, List<SearchField>> map = new HashMap<>();
map.put("default", api.getSearchFields());
return map;
} catch (IOException | OpacErrorException | JSONException e) {
}
} else {
Map<String, List<SearchField>> map = new HashMap<>();
for (String lang : langs) {
api.setLanguage(lang);
try {
map.put(lang, api.getSearchFields());
} catch (IOException | OpacErrorException | JSONException e) {
}
}
return map;
}
return null;
}
}