From 26c0a9e68d3695fac2158474bf640c63fa1cd453 Mon Sep 17 00:00:00 2001 From: drizea Date: Sun, 15 Jul 2012 11:41:05 +0300 Subject: [PATCH] added copy information for record search details the copy statuses are downloaded at the beggining of the program so each library can have it's own personalised copy statuses. The ui is not finished but the information is available (must also convert org_id into name) --- .../src/Android/res/layout/copy_information.xml | 48 ++++++++++++++++++++ .../res/layout/record_details_basic_fragment.xml | 8 +++- .../evergreen/android/globals/GlobalConfigs.java | 19 ++++++++ .../android/searchCatalog/CopyInformation.java | 44 +++++++++++++++--- .../android/searchCatalog/RecordInfo.java | 6 ++- .../searchCatalog/SampleUnderlinesNoFade.java | 2 - .../android/searchCatalog/SearchCatalog.java | 41 +++++++++++++++-- .../android/utils/ui/BasicDetailsFragment.java | 53 ++++++++++++++++++++-- 8 files changed, 205 insertions(+), 16 deletions(-) create mode 100644 Open-ILS/src/Android/res/layout/copy_information.xml diff --git a/Open-ILS/src/Android/res/layout/copy_information.xml b/Open-ILS/src/Android/res/layout/copy_information.xml new file mode 100644 index 0000000000..2b6abf004f --- /dev/null +++ b/Open-ILS/src/Android/res/layout/copy_information.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Open-ILS/src/Android/res/layout/record_details_basic_fragment.xml b/Open-ILS/src/Android/res/layout/record_details_basic_fragment.xml index 7bc52f2f4d..61bb72d6fb 100644 --- a/Open-ILS/src/Android/res/layout/record_details_basic_fragment.xml +++ b/Open-ILS/src/Android/res/layout/record_details_basic_fragment.xml @@ -20,11 +20,11 @@ @@ -99,6 +99,12 @@ + + + diff --git a/Open-ILS/src/Android/src/org/evergreen/android/globals/GlobalConfigs.java b/Open-ILS/src/Android/src/org/evergreen/android/globals/GlobalConfigs.java index 33a2808582..be96aa2345 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/globals/GlobalConfigs.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/globals/GlobalConfigs.java @@ -10,6 +10,7 @@ import java.util.StringTokenizer; import org.evergreen.android.accountAccess.AccountAccess; import org.evergreen.android.accountAccess.SessionNotFoundException; import org.evergreen.android.searchCatalog.Organisation; +import org.evergreen.android.searchCatalog.SearchCatalog; import org.evergreen.android.views.ApplicationPreferences; import org.open_ils.idl.IDLParser; @@ -91,6 +92,8 @@ public class GlobalConfigs { loadIDLFile(); getOrganisations(); + getCopyStatusesAvailable((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)); + AccountAccess.setAccountInfo(preferences.getString("username", ""), preferences.getString("password", "")); @@ -271,6 +274,22 @@ public class GlobalConfigs { } } + public void getCopyStatusesAvailable(ConnectivityManager cm){ + + SearchCatalog search = SearchCatalog.getInstance(cm); + + try { + search.getCopyStatuses(); + } catch (NoNetworkAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (NoAccessToServer e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + public void getOrgHiddentDepth(){ // logic can be found in the opac_utils.js file in web/opac/common/js diff --git a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/CopyInformation.java b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/CopyInformation.java index 9b96807c93..bb686791f4 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/CopyInformation.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/CopyInformation.java @@ -1,28 +1,60 @@ package org.evergreen.android.searchCatalog; +import java.io.Serializable; import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map.Entry; +import java.util.Set; -public class CopyInformation { +public class CopyInformation implements Serializable{ - public Integer org_id; + /** + * + */ + private static final long serialVersionUID = -7269334218707079463L; + + public Integer org_id = -1; public String call_number_sufix; public String copy_location; public HashMap statuses; + + //the hash from the request method + private HashMap hashValCopy; + + //global, it is initialized when orgTree and fm_ild is downloaded + public static LinkedHashMap availableOrgStatuses; - public CopyInformation(List list){ + public LinkedHashMap statusInformation = null; + + public CopyInformation(List list){ + + org_id = Integer.parseInt((String)list.get(0)); + call_number_sufix = (String)list.get(2); + copy_location = (String)list.get(4); + + hashValCopy = (HashMap)list.get(5); + statusInformation = new LinkedHashMap(); - org_id = Integer.parseInt(list.get(0)); - call_number_sufix = list.get(1); - copy_location = list.get(2); + Set> set = availableOrgStatuses.entrySet(); + Iterator> it = set.iterator(); + while(it.hasNext()){ + Entry entry = it.next(); + + if(hashValCopy.containsKey(entry.getKey())){ + statusInformation.put(entry.getValue(), hashValCopy.get(entry.getKey())+""); + System.out.println("Added " + entry.getKey()+ " " + entry.getValue() + " " + hashValCopy.get(entry.getKey())); + } + } } diff --git a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/RecordInfo.java b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/RecordInfo.java index af1ce81313..0169ba98b2 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/RecordInfo.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/RecordInfo.java @@ -1,6 +1,7 @@ package org.evergreen.android.searchCatalog; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -46,16 +47,19 @@ public class RecordInfo implements Serializable{ public boolean dummy = false; + public List copyInformationList = null; + public RecordInfo(){ this.title = "Test title"; this.author = "Test author"; this.pubdate = "Publication date"; + copyInformationList = new ArrayList(); //marks the fact that this is a record made from no info this.dummy = true; } public RecordInfo(OSRFObject info){ - + copyInformationList = new ArrayList(); try{ this.title = info.getString("title"); diff --git a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java index c3151c3293..e4a0e36d1d 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SampleUnderlinesNoFade.java @@ -57,8 +57,6 @@ public class SampleUnderlinesNoFade extends BaseSampleActivity { public Fragment getItem(int position) { // position +1 for 1 - size values return BasicDetailsFragment.newInstance(records.get(position),position+1,records.size()); - - } @Override diff --git a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java index f4dccd0a41..c21d0de3e0 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java @@ -1,13 +1,12 @@ package org.evergreen.android.searchCatalog; -import java.io.NotSerializableException; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.evergreen.android.accountAccess.SessionNotFoundException; import org.evergreen.android.globals.GlobalConfigs; import org.evergreen.android.globals.NoAccessToServer; import org.evergreen.android.globals.NoNetworkAccessException; @@ -19,7 +18,6 @@ import org.opensrf.net.http.HttpRequest; import org.opensrf.net.http.HttpRequestHandler; import org.opensrf.util.OSRFObject; -import android.content.Context; import android.net.ConnectivityManager; import android.util.Log; @@ -53,10 +51,17 @@ public class SearchCatalog { */ public static String METHOD_COPY_LOCATION_COUNTS = "open-ils.search.biblio.copy_location_counts.summary.retrieve"; + /** + * Get copy statuses like Available, Checked_out , in_progress and others, ccs OSRFObjects + */ + public static String METHOD_GET_COPY_STATUSES = "open-ils.search.config.copy_status.retrieve.all"; + public static SearchCatalog searchCatalogSingleton = null; /** The conn. */ public HttpConnection conn; + //TODO get statuses on load + //open-ils.search.config.copy_status.retrieve.all /** The TAG. */ public String TAG = "SearchCatalog"; @@ -174,7 +179,18 @@ public class SearchCatalog { for(int i=0;i> list= (List>)getLocationCount(Integer.parseInt(ids.get(i)), this.selectedOrganization.id, this.selectedOrganization.level-1); + + for(int j=0; j ccs_list = (List)Utils.doRequest(conn, SERVICE, METHOD_COPY_STATUS_ALL, cm, new Object[]{}); + + CopyInformation.availableOrgStatuses = new LinkedHashMap(); + + for(int i=0;i list = (List)Utils.doRequest(conn, SERVICE, METHOD_COPY_LOCATION_COUNTS, cm, new Object[]{recordID, orgID, orgDepth}); diff --git a/Open-ILS/src/Android/src/org/evergreen/android/utils/ui/BasicDetailsFragment.java b/Open-ILS/src/Android/src/org/evergreen/android/utils/ui/BasicDetailsFragment.java index bcbe9c81a8..948c08e487 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/utils/ui/BasicDetailsFragment.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/utils/ui/BasicDetailsFragment.java @@ -1,18 +1,21 @@ package org.evergreen.android.utils.ui; +import java.util.Iterator; +import java.util.Map.Entry; +import java.util.Set; + import org.evergreen.android.R; +import org.evergreen.android.searchCatalog.CopyInformation; import org.evergreen.android.searchCatalog.RecordInfo; import android.os.Bundle; import android.support.v4.app.Fragment; -import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; -import android.widget.ScrollView; import android.widget.TextView; -import android.widget.LinearLayout.LayoutParams; public class BasicDetailsFragment extends Fragment{ @@ -83,6 +86,50 @@ public class BasicDetailsFragment extends Fragment{ isbnTextView.setText(record.isbn); + + for(int i=0;i> set = info.statusInformation.entrySet(); + + Iterator> it = set.iterator(); + + while(it.hasNext()){ + + Entry ent = it.next(); + TextView statusName = new TextView(getActivity()); + statusName.setText(ent.getKey() + " : " + ent.getValue()); + + copy_statuses.addView(statusName, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); + + } + + + + } + + + + return layout; } -- 2.11.0