Search in sources :

Example 6 with CheckboxSearchField

use of de.geeksfactory.opacclient.searchfields.CheckboxSearchField in project opacclient by opacapp.

the class Pica method addParameters.

protected int addParameters(SearchQuery query, List<NameValuePair> params, int index) throws JSONException {
    if (query.getValue().equals("") || query.getValue().equals("false")) {
        return index;
    }
    if (query.getSearchField() instanceof TextSearchField || query.getSearchField() instanceof BarcodeSearchField) {
        if (query.getSearchField().getData().getBoolean("ADI")) {
            params.add(new BasicNameValuePair(query.getKey(), query.getValue()));
        } else {
            if (index == 0) {
                params.add(new BasicNameValuePair("ACT" + index, "SRCH"));
            } else {
                params.add(new BasicNameValuePair("ACT" + index, "*"));
            }
            params.add(new BasicNameValuePair("IKT" + index, query.getKey()));
            params.add(new BasicNameValuePair("TRM" + index, query.getValue()));
            return index + 1;
        }
    } else if (query.getSearchField() instanceof CheckboxSearchField) {
        boolean checked = Boolean.valueOf(query.getValue());
        if (checked) {
            params.add(new BasicNameValuePair(query.getKey(), "Y"));
        }
    } else if (query.getSearchField() instanceof DropdownSearchField) {
        params.add(new BasicNameValuePair(query.getKey(), query.getValue()));
    }
    return index;
}
Also used : CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) BasicNameValuePair(org.apache.http.message.BasicNameValuePair) TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField) DropdownSearchField(de.geeksfactory.opacclient.searchfields.DropdownSearchField)

Example 7 with CheckboxSearchField

use of de.geeksfactory.opacclient.searchfields.CheckboxSearchField in project opacclient by opacapp.

the class SRU method parseSearchFields.

@Override
public List<SearchField> parseSearchFields() throws OpacErrorException, NotReachableException {
    List<SearchField> searchFields = new ArrayList<>();
    Set<String> fieldsCompat = searchQueries.keySet();
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_FREE)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_FREE, "", false, false, "Freie Suche", true, false);
        field.setMeaning(Meaning.FREE);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_TITLE)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_TITLE, "Titel", false, false, "Stichwort", false, false);
        field.setMeaning(Meaning.TITLE);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_AUTHOR)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_AUTHOR, "Verfasser", false, false, "Nachname, Vorname", false, false);
        field.setMeaning(Meaning.AUTHOR);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_PUBLISHER)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_PUBLISHER, "Verlag", false, false, "", false, false);
        field.setMeaning(Meaning.PUBLISHER);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_DIGITAL)) {
        SearchField field = new CheckboxSearchField(KEY_SEARCH_QUERY_DIGITAL, "nur digitale Medien", false);
        field.setMeaning(Meaning.DIGITAL);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_AVAILABLE)) {
        SearchField field = new CheckboxSearchField(KEY_SEARCH_QUERY_AVAILABLE, "nur verfügbare Medien", false);
        field.setMeaning(Meaning.AVAILABLE);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_ISBN)) {
        SearchField field = new BarcodeSearchField(KEY_SEARCH_QUERY_ISBN, "Strichcode", false, false, "ISBN");
        field.setMeaning(Meaning.ISBN);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_BARCODE)) {
        SearchField field = new BarcodeSearchField(KEY_SEARCH_QUERY_BARCODE, "Strichcode", false, true, "Buchungsnr.");
        field.setMeaning(Meaning.BARCODE);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_YEAR)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_YEAR, "Jahr", false, false, "", false, true);
        field.setMeaning(Meaning.YEAR);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_YEAR_RANGE_START)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_YEAR_RANGE_START, "Jahr", false, false, "von", false, true);
        field.setMeaning(Meaning.YEAR);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_YEAR_RANGE_END)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_YEAR_RANGE_END, "Jahr", false, true, "bis", false, true);
        field.setMeaning(Meaning.YEAR);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_PUBLISHER)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_PUBLISHER, "Verlag", false, false, "", false, false);
        field.setMeaning(Meaning.PUBLISHER);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_KEYWORDA)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_KEYWORDA, "Schlagwort", true, false, "", false, false);
        field.setMeaning(Meaning.KEYWORD);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_KEYWORDB)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_KEYWORDB, "Schlagwort", true, true, "", false, false);
        field.setMeaning(Meaning.KEYWORD);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_SYSTEM)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_SYSTEM, "Systematik", true, false, "", false, false);
        field.setMeaning(Meaning.SYSTEM);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_AUDIENCE)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_AUDIENCE, "Interessenkreis", true, false, "", false, false);
        field.setMeaning(Meaning.AUDIENCE);
        searchFields.add(field);
    }
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_LOCATION)) {
        SearchField field = new TextSearchField(KEY_SEARCH_QUERY_LOCATION, "Ort", false, false, "", false, false);
        field.setMeaning(Meaning.LOCATION);
        searchFields.add(field);
    }
    // noinspection StatementWithEmptyBody
    if (fieldsCompat.contains(KEY_SEARCH_QUERY_ORDER)) {
    // TODO: Implement this (was this even usable before?)
    }
    return searchFields;
}
Also used : TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField) CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) SearchField(de.geeksfactory.opacclient.searchfields.SearchField) CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) ArrayList(java.util.ArrayList) TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField)

Example 8 with CheckboxSearchField

use of de.geeksfactory.opacclient.searchfields.CheckboxSearchField in project opacclient by opacapp.

the class SearchFragment method clear.

public void clear() {
    if (fields == null)
        return;
    for (SearchField field : fields) {
        if (!field.isVisible()) {
            continue;
        }
        if (field instanceof TextSearchField && ((TextSearchField) field).isFreeSearch()) {
            etSimpleSearch.setText("");
        }
        ViewGroup v = (ViewGroup) view.findViewWithTag(field.getId());
        if (v == null) {
            continue;
        }
        if (field instanceof TextSearchField) {
            EditText text = (EditText) v.findViewById(R.id.edittext);
            text.setText("");
        } else if (field instanceof BarcodeSearchField) {
            EditText text = (EditText) v.findViewById(R.id.edittext);
            text.setText("");
        } else if (field instanceof DropdownSearchField) {
            Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
            spinner.setSelection(0);
        } else if (field instanceof CheckboxSearchField) {
            CheckBox checkbox = (CheckBox) v.findViewById(R.id.checkbox);
            checkbox.setChecked(false);
        }
    }
}
Also used : EditText(android.widget.EditText) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) SearchField(de.geeksfactory.opacclient.searchfields.SearchField) TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField) CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) DropdownSearchField(de.geeksfactory.opacclient.searchfields.DropdownSearchField) CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) ViewGroup(android.view.ViewGroup) Spinner(android.widget.Spinner) CheckBox(android.widget.CheckBox) TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField) DropdownSearchField(de.geeksfactory.opacclient.searchfields.DropdownSearchField)

Example 9 with CheckboxSearchField

use of de.geeksfactory.opacclient.searchfields.CheckboxSearchField in project opacclient by opacapp.

the class SearchFragment method saveQuery.

public Map<String, String> saveQuery() {
    if (app.getLibrary() == null) {
        return null;
    }
    saveHomeBranch();
    Map<String, String> query = new HashMap<>();
    if (fields == null) {
        SearchFieldDataSource dataSource = new JsonSearchFieldDataSource(app);
        int versionCode = 0;
        try {
            versionCode = app.getPackageManager().getPackageInfo(app.getPackageName(), 0).versionCode;
        } catch (NameNotFoundException e) {
            // should not happen
            e.printStackTrace();
        }
        if (dataSource.hasSearchFields(app.getLibrary().getIdent()) && dataSource.getLastSearchFieldUpdateVersion(app.getLibrary().getIdent()) == versionCode) {
            if (task != null && !task.isCancelled()) {
                task.cancel(true);
            }
            fields = dataSource.getSearchFields(app.getLibrary().getIdent());
            if (fields == null) {
                return null;
            }
        } else {
            return null;
        }
    }
    for (SearchField field : fields) {
        if (!field.isVisible()) {
            continue;
        }
        if (field instanceof TextSearchField && ((TextSearchField) field).isFreeSearch()) {
            query.put(field.getId(), etSimpleSearch.getEditableText().toString());
            continue;
        }
        ViewGroup v = (ViewGroup) view.findViewWithTag(field.getId());
        if (v == null) {
            continue;
        }
        if (field instanceof TextSearchField) {
            EditText text = (EditText) v.findViewById(R.id.edittext);
            query.put(field.getId(), text.getEditableText().toString());
        } else if (field instanceof BarcodeSearchField) {
            EditText text = (EditText) v.findViewById(R.id.edittext);
            query.put(field.getId(), text.getEditableText().toString());
        } else if (field instanceof DropdownSearchField) {
            Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
            if (spinner.getSelectedItemPosition() > 0) {
                query.put(field.getId(), ((DropdownSearchField) field).getDropdownValues().get(spinner.getSelectedItemPosition()).getKey());
            }
        } else if (field instanceof CheckboxSearchField) {
            CheckBox checkbox = (CheckBox) v.findViewById(R.id.checkbox);
            query.put(field.getId(), String.valueOf(checkbox.isChecked()));
        }
    }
    return query;
}
Also used : EditText(android.widget.EditText) HashMap(java.util.HashMap) NameNotFoundException(android.content.pm.PackageManager.NameNotFoundException) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) ViewGroup(android.view.ViewGroup) Spinner(android.widget.Spinner) JsonSearchFieldDataSource(de.geeksfactory.opacclient.storage.JsonSearchFieldDataSource) TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField) DropdownSearchField(de.geeksfactory.opacclient.searchfields.DropdownSearchField) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) SearchField(de.geeksfactory.opacclient.searchfields.SearchField) TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField) CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) DropdownSearchField(de.geeksfactory.opacclient.searchfields.DropdownSearchField) SearchFieldDataSource(de.geeksfactory.opacclient.storage.SearchFieldDataSource) JsonSearchFieldDataSource(de.geeksfactory.opacclient.storage.JsonSearchFieldDataSource) CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) CheckBox(android.widget.CheckBox)

Example 10 with CheckboxSearchField

use of de.geeksfactory.opacclient.searchfields.CheckboxSearchField in project opacclient by opacapp.

the class Open method search.

@Override
public SearchRequestResult search(List<SearchQuery> queries) throws IOException, OpacErrorException, JSONException {
    String url = opac_url + "/" + data.getJSONObject("urls").getString("advanced_search") + NO_MOBILE;
    Document doc = Jsoup.parse(httpGet(url, getDefaultEncoding()));
    doc.setBaseUri(url);
    int selectableCount = 0;
    for (SearchQuery query : queries) {
        if (query.getValue().equals("") || query.getValue().equals("false"))
            continue;
        if (query.getSearchField() instanceof TextSearchField | query.getSearchField() instanceof BarcodeSearchField) {
            SearchField field = query.getSearchField();
            if (field.getData().getBoolean("selectable")) {
                selectableCount++;
                if (selectableCount > 3) {
                    throw new OpacErrorException(stringProvider.getQuantityString(StringProvider.LIMITED_NUM_OF_CRITERIA, 3, 3));
                }
                String number = numberToText(selectableCount);
                Element searchField = doc.select("select[name$=" + number + "SearchField]").first();
                Element searchValue = doc.select("input[name$=" + number + "SearchValue]").first();
                setSelectValue(searchField, field.getId());
                searchValue.val(query.getValue());
            } else {
                Element input = doc.select("input[name=" + field.getId() + "]").first();
                input.val(query.getValue());
            }
        } else if (query.getSearchField() instanceof DropdownSearchField) {
            DropdownSearchField field = (DropdownSearchField) query.getSearchField();
            Element select = doc.select("select[name=" + field.getId() + "]").first();
            setSelectValue(select, query.getValue());
        } else if (query.getSearchField() instanceof CheckboxSearchField) {
            CheckboxSearchField field = (CheckboxSearchField) query.getSearchField();
            Element input = doc.select("input[name=" + field.getId() + "]").first();
            input.attr("checked", query.getValue());
        }
    }
    // Submit form
    FormElement form = (FormElement) doc.select("form").first();
    MultipartBody data = formData(form, "BtnSearch").build();
    String postUrl = form.attr("abs:action");
    String html = httpPost(postUrl, data, "UTF-8");
    Document doc2 = Jsoup.parse(html);
    doc2.setBaseUri(postUrl);
    return parse_search(doc2, 0);
}
Also used : SearchQuery(de.geeksfactory.opacclient.searchfields.SearchQuery) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) Element(org.jsoup.nodes.Element) FormElement(org.jsoup.nodes.FormElement) Document(org.jsoup.nodes.Document) TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField) FormElement(org.jsoup.nodes.FormElement) DropdownSearchField(de.geeksfactory.opacclient.searchfields.DropdownSearchField) TextSearchField(de.geeksfactory.opacclient.searchfields.TextSearchField) CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) BarcodeSearchField(de.geeksfactory.opacclient.searchfields.BarcodeSearchField) DropdownSearchField(de.geeksfactory.opacclient.searchfields.DropdownSearchField) SearchField(de.geeksfactory.opacclient.searchfields.SearchField) CheckboxSearchField(de.geeksfactory.opacclient.searchfields.CheckboxSearchField) MultipartBody(okhttp3.MultipartBody)

Aggregations

BarcodeSearchField (de.geeksfactory.opacclient.searchfields.BarcodeSearchField)10 CheckboxSearchField (de.geeksfactory.opacclient.searchfields.CheckboxSearchField)10 TextSearchField (de.geeksfactory.opacclient.searchfields.TextSearchField)10 DropdownSearchField (de.geeksfactory.opacclient.searchfields.DropdownSearchField)9 SearchField (de.geeksfactory.opacclient.searchfields.SearchField)9 ViewGroup (android.view.ViewGroup)5 CheckBox (android.widget.CheckBox)5 EditText (android.widget.EditText)5 Spinner (android.widget.Spinner)5 ArrayList (java.util.ArrayList)4 Document (org.jsoup.nodes.Document)3 Element (org.jsoup.nodes.Element)3 SearchQuery (de.geeksfactory.opacclient.searchfields.SearchQuery)2 JSONObject (org.json.JSONObject)2 FormElement (org.jsoup.nodes.FormElement)2 Elements (org.jsoup.select.Elements)2 ActivityNotFoundException (android.content.ActivityNotFoundException)1 Intent (android.content.Intent)1 NameNotFoundException (android.content.pm.PackageManager.NameNotFoundException)1 View (android.view.View)1