search by format, e.g. "All Formats" or "DVD"
authorkenstir <kenstir@gmail.com>
Mon, 12 Oct 2015 02:39:53 +0000 (22:39 -0400)
committerkenstir <kenstir@gmail.com>
Mon, 12 Oct 2015 02:39:53 +0000 (22:39 -0400)
Open-ILS/src/Android/core/res/layout-land/search_result_list.xml
Open-ILS/src/Android/core/res/layout/search_result_list.xml
Open-ILS/src/Android/core/res/values/resources.xml
Open-ILS/src/Android/core/res/values/strings.xml
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SampleUnderlinesNoFade.java
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalog.java
Open-ILS/src/Android/core/src/org/evergreen_ils/searchCatalog/SearchCatalogListView.java

index e0f3c7a..525b118 100644 (file)
                 android:layout_height="wrap_content"
                 android:layout_gravity="right"
                 android:entries="@array/advanced_search_index"/>
-
+        <Spinner
+                android:id="@+id/search_format_spinner"
+                android:layout_width="120dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="right"
+                android:entries="@array/search_format_options"/>
         <Spinner
                 android:id="@+id/chose_organisation"
                 android:layout_width="fill_parent"
index 3f8c534..e6bd9df 100644 (file)
                     android:layout_height="wrap_content"
                     android:layout_gravity="right"
                     android:entries="@array/advanced_search_index"/>
+            <Spinner
+                    android:id="@+id/search_format_spinner"
+                    android:layout_width="120dp"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="right"
+                    android:entries="@array/search_format_options"/>
         </LinearLayout>
 
         <LinearLayout
 
             <ImageButton
                     android:id="@+id/searchButton"
-                    android:layout_width="wrap_content"
+                    android:layout_width="120dp"
                     android:layout_height="wrap_content"
-                    android:paddingBottom="5dp"
-                    android:paddingLeft="10dp"
-                    android:paddingRight="10dp"
-                    android:paddingTop="5dp"
+                    android:layout_margin="0dp"
                     android:src="@drawable/abc_ic_search"/>
         </LinearLayout>
     </LinearLayout>
index 2912dc1..9c5fcc0 100644 (file)
                <item>Does not contain</item>
                <item>Matches exactly</item>
     </string-array>
+
+    <string-array name="search_format_options">
+        <item>All Formats</item>
+        <item>All Books</item>
+        <item>All Music</item>
+        <!--<item>Audiocassette music recording</item>-->
+        <item>Blu-ray</item>
+        <!--<item>Braille</item>-->
+        <!--<item>Cassette audiobook</item>-->
+        <item>CD Audiobook</item>
+        <item>CD Music recording</item>
+        <item>DVD</item>
+        <item>E-audio</item>
+        <item>E-book</item>
+        <item>E-video</item>
+        <!--<item>Equipment, games, toys</item>-->
+        <!--<item>Kit</item>-->
+        <item>Large Print Book</item>
+        <!--<item>Map</item>-->
+        <!--<item>Microform</item>-->
+        <!--<item>Music Score</item>-->
+        <!--<item>Phonograph music recording</item>-->
+        <!--<item>Phonograph spoken recording</item>-->
+        <item>Picture</item>
+        <item>Serials and magazines</item>
+        <item>Software and video games</item>
+        <!--<item>VHS</item>-->
+    </string-array>
     
     <string-array name="notification_preferences_list_values">
         <item>1</item>
index f9f95dd..526072b 100644 (file)
@@ -37,7 +37,7 @@
 
     <!-- Search -->
 
-    <string name="search_hint">Search keywords</string>
+    <string name="search_hint">Search words</string>
     <string name="advanced_search">Advanced Search</string>
     <string name="loading_dialog_text"></string>
     <string name="dialog_please_wait"></string>
index 385a2d5..a228e8d 100644 (file)
@@ -22,7 +22,6 @@ package org.evergreen_ils.searchCatalog;
 import java.util.ArrayList;
 
 import android.support.v7.app.ActionBar;
-import android.support.v7.app.ActionBarActivity;
 import android.view.MenuItem;
 import org.evergreen_ils.R;
 import org.evergreen_ils.accountAccess.AccountAccess;
@@ -38,8 +37,6 @@ import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.view.ViewPager;
 import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.TextView;
 
@@ -114,7 +111,7 @@ public class SampleUnderlinesNoFade extends BaseSampleActivity {
                     }
                 });
                 
-                searchRecords = search.getSearchResults(search.searchText, search.searchClass, records.size());
+                searchRecords = search.getSearchResults(search.searchText, search.searchClass, search.searchFormat, records.size());
 
                 runOnUiThread(new Runnable() {
 
@@ -124,8 +121,7 @@ public class SampleUnderlinesNoFade extends BaseSampleActivity {
                         // recordList.clear();
                         if (searchRecords.size() > 0) {
 
-                            for (int j = 0; j < searchRecords
-                                    .size(); j++)
+                            for (int j = 0; j < searchRecords.size(); j++)
                                 records.add(searchRecords.get(j));
 
                             // add extra record to display more
index 6914ce8..b5e7426 100644 (file)
@@ -115,6 +115,7 @@ public class SearchCatalog {
     
     public String searchText = null;
     public String searchClass = null;
+    public String searchFormat = null;
 
     public static SearchCatalog getInstance(ConnectivityManager cm) {
 
@@ -153,14 +154,15 @@ public class SearchCatalog {
     /**
      * Gets the search results
      * 
-     * @param searchWords
+     * @param searchText
      *            the search words
      * @return the search results
      */
-    public ArrayList<RecordInfo> getSearchResults(String searchWords, String searchClass, Integer offset) {
+    public ArrayList<RecordInfo> getSearchResults(String searchText, String searchClass, String searchFormat, Integer offset) {
 
-        searchText = searchWords;
+        this.searchText = searchText;
         this.searchClass = searchClass;
+        this.searchFormat = searchFormat;
         
         ArrayList<RecordInfo> resultsRecordInfo = new ArrayList<RecordInfo>();
         HashMap complexParm = new HashMap<String, Integer>();
@@ -172,6 +174,8 @@ public class SearchCatalog {
                     complexParm.put("org_unit", this.selectedOrganization.id);
                 if (this.selectedOrganization.level != null)
                     complexParm.put("depth", this.selectedOrganization.level - 1);
+//                if (!this.searchFormat.isEmpty())
+//                    complexParm.put("format", this.searchFormat);
             }
             complexParm.put("limit", searchLimit);
             complexParm.put("offset", offset);
@@ -184,12 +188,13 @@ public class SearchCatalog {
             Log.d(TAG, "Exception in JSON " + e.getMessage());
         }
 
-        //kcxxx: for searching by format
-        //searchWords = searchWords + " search_format(vhs)";
+        String queryString = searchText;
+        if (!searchFormat.isEmpty())
+            queryString += " search_format(" + searchFormat + ")";
 
         // do request and check for connectivity
         Object resp = Utils.doRequest(conn, SERVICE, METHOD_MULTICLASS_QUERY,
-                new Object[] { complexParm, searchWords, 1 });
+                new Object[] { complexParm, queryString, 1 });
 
         ArrayList<String> ids = new ArrayList<String>();
 
index fe33ffb..b1065bd 100644 (file)
@@ -106,6 +106,7 @@ public class SearchCatalogListView extends ActionBarActivity {
 
     private View searchOptionsMenu = null;
     private Spinner searchClassSpinner;
+    private Spinner searchFormatSpinner;
 
     // marks when the fetching record thread is started
     private boolean loadingElements = false;
@@ -118,6 +119,39 @@ public class SearchCatalogListView extends ActionBarActivity {
         return searchClassSpinner.getSelectedItem().toString().toLowerCase();
     }
 
+    // todo: find a way to get these programmatically.  C/W MARS has an extended set of search formats.
+    private String getSearchFormat() {
+        String value = "";
+        String s = searchFormatSpinner.getSelectedItem().toString();
+        if (!s.isEmpty()) value=s;
+        if (s.equalsIgnoreCase("All Formats"))                             value="";
+        else if (s.equalsIgnoreCase("All Books"))                          value="book";
+        else if (s.equalsIgnoreCase("All Music"))                          value="music";
+        else if (s.equalsIgnoreCase("Audiocassette music recording"))      value="casmusic";
+        else if (s.equalsIgnoreCase("Blu-ray"))                            value="blu-ray";
+        else if (s.equalsIgnoreCase("Braille"))                            value="braille";
+        else if (s.equalsIgnoreCase("Cassette audiobook"))                 value="casaudiobook";
+        else if (s.equalsIgnoreCase("CD Audiobook"))                       value="cdaudiobook";
+        else if (s.equalsIgnoreCase("CD Music recording"))                 value="cdmusic";
+        else if (s.equalsIgnoreCase("DVD"))                                value="dvd";
+        else if (s.equalsIgnoreCase("E-audio"))                            value="eaudio";
+        else if (s.equalsIgnoreCase("E-book"))                             value="ebook";
+        else if (s.equalsIgnoreCase("E-video"))                            value="evideo";
+        else if (s.equalsIgnoreCase("Equipment, games, toys"))             value="equip";
+        else if (s.equalsIgnoreCase("Kit"))                                value="kit";
+        else if (s.equalsIgnoreCase("Large Print Book"))                   value="lpbook";
+        else if (s.equalsIgnoreCase("Map"))                                value="map";
+        else if (s.equalsIgnoreCase("Microform"))                          value="microform";
+        else if (s.equalsIgnoreCase("Music Score"))                        value="score";
+        else if (s.equalsIgnoreCase("Phonograph music recording"))         value="phonomusic";
+        else if (s.equalsIgnoreCase("Phonograph spoken recording"))        value="phonospoken";
+        else if (s.equalsIgnoreCase("Picture"))                            value="picture";
+        else if (s.equalsIgnoreCase("Serials and magazines"))              value="serial";
+        else if (s.equalsIgnoreCase("Software and video games"))           value="software";
+        else if (s.equalsIgnoreCase("VHS"))                                value="vhs";
+        return value;
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -149,8 +183,8 @@ public class SearchCatalogListView extends ActionBarActivity {
                 R.layout.search_result_item, recordList);
 
         //searchOptionsMenu = findViewById(R.id.search_preference_options);
-        //final Spinner searchFormatSpinner = (Spinner) findViewById(R.id.search_format_spinner);
         searchClassSpinner = (Spinner) findViewById(R.id.search_class_spinner);
+        searchFormatSpinner = (Spinner) findViewById(R.id.search_format_spinner);
         searchResultsNumber = (TextView) findViewById(R.id.search_result_number);
 
         // Get reference to ListView holder
@@ -174,7 +208,7 @@ public class SearchCatalogListView extends ActionBarActivity {
                 if (text.length() < 1)
                     return;
                 int searchQueryType = searchClassSpinner.getSelectedItemPosition();
-                Log.d(TAG, "type="+searchQueryType+" class="+getSearchClass());
+                Log.d(TAG, "type="+searchQueryType+" class="+getSearchClass()+" format="+getSearchFormat());
 
                 runOnUiThread(new Runnable() {
                     @Override
@@ -193,7 +227,7 @@ public class SearchCatalogListView extends ActionBarActivity {
                     }
                 });
 
-                searchResults = search.getSearchResults(text, getSearchClass(), 0);
+                searchResults = search.getSearchResults(text, getSearchClass(), getSearchFormat(), 0);
 
                 runOnUiThread(new Runnable() {
 
@@ -250,7 +284,7 @@ public class SearchCatalogListView extends ActionBarActivity {
 
                             searchResults.clear();
 
-                            searchResults = search.getSearchResults(text, getSearchClass(), recordList.size());
+                            searchResults = search.getSearchResults(text, getSearchClass(), getSearchFormat(), recordList.size());
 
                             runOnUiThread(new Runnable() {
 
@@ -352,6 +386,7 @@ public class SearchCatalogListView extends ActionBarActivity {
                                         String text = getSearchText();
                                         searchResults.clear();
                                         searchResults = search.getSearchResults(text, getSearchClass(),
+                                                getSearchFormat(),
                                                 adapter.getCount());
 
                                         runOnUiThread(new Runnable() {