>
<activity
- android:name=".views.MainScreenDashboard"
+ android:name=".views.splashscreen.SplashActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
- >
- <intent-filter>
+ >
+ <intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
+ </intent-filter>
+ </activity>
+
+ <activity
+ android:name=".views.MainScreenDashboard"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.Light.NoTitleBar"
+ >
</activity>
<activity android:name=".views.AccountScreenDashboard"
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <gradient
+ android:angle="45"
+ android:endColor="#E5E5E5"
+ android:startColor="#FFFFFF" />
+
+</shape>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:background="@drawable/background_splash"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+
+ <ImageView
+ android:id="@+id/logo"
+ android:layout_width="280dip"
+ android:layout_height="wrap_content"
+ android:src="@drawable/evergreen_logo"
+ android:layout_centerInParent="true"
+
+ />
+
+
+
+ <ProgressBar
+ android:id="@+id/activity_splash_progress_bar"
+ style="@android:style/Widget.ProgressBar.Horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/logo"
+ android:paddingTop="40dip"
+ />
+
+ <TextView
+ android:id="@+id/action_in_progress"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/logo"
+ android:layout_above="@id/activity_splash_progress_bar"
+ android:paddingTop="20dip"
+ />
+</RelativeLayout>
\ No newline at end of file
import org.evergreen.android.accountAccess.checkout.CircRecord;
import org.evergreen.android.accountAccess.fines.FinesRecord;
import org.evergreen.android.accountAccess.holds.HoldRecord;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
import org.evergreen.android.globals.Utils;
import org.evergreen.android.searchCatalog.RecordInfo;
import org.opensrf.Method;
import org.opensrf.net.http.HttpRequest;
import org.opensrf.util.OSRFObject;
+import android.net.ConnectivityManager;
+
/**
* The Class AuthenticateUser.
* Singleton class
* */
public String authToken = null;
+ private ConnectivityManager cm;
+
/** The auth time. */
private Integer authTime = null;
*
* @param httpAddress the http address
*/
- private AccountAccess(String httpAddress) {
+ private AccountAccess(String httpAddress, ConnectivityManager cm) {
this.httpAddress = httpAddress;
-
+ this.cm = cm;
+
try {
// configure the connection
return false;
}
- public static AccountAccess getAccountAccess(String httpAddress){
+ public static AccountAccess getAccountAccess(String httpAddress, ConnectivityManager cm){
if(accountAccess == null){
- accountAccess = new AccountAccess(httpAddress);
+ accountAccess = new AccountAccess(httpAddress,cm);
}
System.out.println(" Addresses " + httpAddress + " " + accountAccess.httpAddress);
if(!httpAddress.equals(accountAccess.httpAddress))
/**
* Authenticate.
*/
- public boolean authenticate(){
+ public boolean authenticate() throws NoNetworkAccessException, NoAccessToServer{
String seed = authenticateInit();
* Authenticate init.
* @return seed for phase 2 of login
*/
- private String authenticateInit() {
+ private String authenticateInit() throws NoAccessToServer,NoNetworkAccessException{
String seed = null;
System.out.println("Send request to " + httpAddress);
- Object resp = (Object) Utils.doRequest(conn, SERVICE_AUTH, METHOD_AUTH_INIT, new Object[]{userName});
+ Object resp = (Object) Utils.doRequest(conn, SERVICE_AUTH, METHOD_AUTH_INIT, cm,new Object[]{userName});
if(resp != null)
seed = resp.toString();
* @param seed the seed
* @returns bollean if auth was ok
*/
- private boolean authenticateComplete(String seed) {
+ private boolean authenticateComplete(String seed) throws NoAccessToServer, NoNetworkAccessException {
//calculate hash to pass to server for authentication process phase 2
//seed = "b18a9063e0c6f49dfe7a854cc6ab5775";
System.out.println("Password " + password);
System.out.println("Compelx param " + complexParam);
- Object resp = Utils.doRequest(conn, SERVICE_AUTH, METHOD_AUTH_COMPLETE, new Object[]{complexParam});
+ Object resp = Utils.doRequest(conn, SERVICE_AUTH, METHOD_AUTH_COMPLETE, cm, new Object[]{complexParam});
if(resp == null)
return false;
//------------------------Checked Out Items Section -------------------------//
- public ArrayList<CircRecord> getItemsCheckedOut(){
+ public ArrayList<CircRecord> getItemsCheckedOut() throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
ArrayList<CircRecord> circRecords = new ArrayList<CircRecord>();
List<String> out_id;
- Object resp = Utils.doRequest(conn, SERVICE_ACTOR, METHOD_FETCH_CHECKED_OUT_SUM, new Object[]{authToken, userID});
+ Object resp = Utils.doRequest(conn, SERVICE_ACTOR, METHOD_FETCH_CHECKED_OUT_SUM, authToken, cm, new Object[]{authToken, userID});
long_overdue_id = (List<String>)((Map<String,?>)resp).get("long_overdue");
claims_returned_id = (List<String>)((Map<String,?>)resp).get("claims_returned");
* @param : target_copy from circ
* @returns : "circ" OSRFObject
*/
- private OSRFObject retrieveCircRecord(String id){
+ private OSRFObject retrieveCircRecord(String id) throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
- OSRFObject circ = (OSRFObject) Utils.doRequest(conn, SERVICE_CIRC, METHOD_FETCH_CIRC_BY_ID, new Object[]{authToken,id});
+ OSRFObject circ = (OSRFObject) Utils.doRequest(conn, SERVICE_CIRC, METHOD_FETCH_CIRC_BY_ID, authToken, cm, new Object[]{authToken,id});
return circ;
}
* Usefull info : title and author
* (for acp : dummy_title, dummy_author)
*/
- private OSRFObject fetchInfoForCheckedOutItem(Integer target_copy, CircRecord circRecord){
+ private OSRFObject fetchInfoForCheckedOutItem(Integer target_copy, CircRecord circRecord) throws NoNetworkAccessException, NoAccessToServer{
if(target_copy == null)
return null;
return result;
}
- private OSRFObject fetchModsFromCopy(Integer target_copy){
+ private OSRFObject fetchModsFromCopy(Integer target_copy) throws NoNetworkAccessException, NoAccessToServer{
//sync request
- OSRFObject mvr = (OSRFObject) Utils.doRequest(conn, SERVICE_SEARCH, METHOD_FETCH_MODS_FROM_COPY, new Object[]{target_copy});
+ OSRFObject mvr = (OSRFObject) Utils.doRequest(conn, SERVICE_SEARCH, METHOD_FETCH_MODS_FROM_COPY, cm, new Object[]{target_copy});
return mvr;
}
- private OSRFObject fetchAssetCopy(Integer target_copy){
+ private OSRFObject fetchAssetCopy(Integer target_copy) throws NoNetworkAccessException, NoAccessToServer{
- OSRFObject acp = (OSRFObject) Utils.doRequest(conn, SERVICE_SEARCH, METHOD_FETCH_COPY, new Object[]{target_copy});
+ OSRFObject acp = (OSRFObject) Utils.doRequest(conn, SERVICE_SEARCH, METHOD_FETCH_COPY, cm, new Object[]{target_copy});
return acp;
}
/* Method used to renew a circulation record based on target_copy_id
* Returns many objects, don't think they are needed
*/
- public void renewCirc(Integer target_copy) throws MaxRenewalsException{
+ public void renewCirc(Integer target_copy) throws MaxRenewalsException, SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
HashMap<String,Integer> complexParam = new HashMap<String, Integer>();
complexParam.put("patron", this.userID);
complexParam.put("copyid", target_copy);
complexParam.put("opac_renewal", 1);
- Object a_lot = (Object) Utils.doRequest(conn, SERVICE_CIRC, METHOD_RENEW_CIRC, new Object[]{authToken,complexParam});
+ Object a_lot = (Object) Utils.doRequest(conn, SERVICE_CIRC, METHOD_RENEW_CIRC, authToken, cm, new Object[]{authToken,complexParam});
Map<String,String> resp = (Map<String,String>)a_lot;
//------------------------Holds Section --------------------------------------//
- public Object fetchOrgSettings(Integer org_id, String setting){
+ public Object fetchOrgSettings(Integer org_id, String setting)throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
- OSRFObject response = (OSRFObject) Utils.doRequest(conn, SERVICE_ACTOR, METHOD_FETCH_ORG_SETTINGS, new Object[]{org_id,setting});
+ OSRFObject response = (OSRFObject) Utils.doRequest(conn, SERVICE_ACTOR, METHOD_FETCH_ORG_SETTINGS, cm, new Object[]{org_id,setting});
return response;
}
- public List<HoldRecord> getHolds(){
+ public List<HoldRecord> getHolds() throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
ArrayList<HoldRecord> holds = new ArrayList<HoldRecord>();
//fields of interest : expire_time
List<OSRFObject> listHoldsAhr = null;
- listHoldsAhr = (List<OSRFObject>) Utils.doRequest(conn, SERVICE_CIRC, METHOD_FETCH_HOLDS, new Object[]{authToken,userID});
+ listHoldsAhr = (List<OSRFObject>) Utils.doRequest(conn, SERVICE_CIRC, METHOD_FETCH_HOLDS, authToken, cm, new Object[]{authToken,userID});
for(int i=0;i<listHoldsAhr.size();i++){
//create hold item
* P - pat
*/
- private Object fetchHoldTitleInfo(OSRFObject holdArhObject, HoldRecord hold){
+ private Object fetchHoldTitleInfo(OSRFObject holdArhObject, HoldRecord hold) throws NoNetworkAccessException, NoAccessToServer{
String holdType = (String)holdArhObject.get("hold_type");
if(holdType.equals("T"))
method = METHOD_FETCH_RMODS;
System.out.println();
- holdInfo = Utils.doRequest(conn,SERVICE_SEARCH, method, new Object[]{holdArhObject.get("target")});
+ holdInfo = Utils.doRequest(conn,SERVICE_SEARCH, method, cm, new Object[]{holdArhObject.get("target")});
//System.out.println("Hold here " + holdInfo);
hold.title = ((OSRFObject)holdInfo).getString("title");
return holdInfo;
}
- private Object holdFetchObjects(OSRFObject hold, HoldRecord holdObj){
+ private Object holdFetchObjects(OSRFObject hold, HoldRecord holdObj) throws NoNetworkAccessException, NoAccessToServer{
String type = (String)hold.get("hold_type");
if(call_number != null){
- OSRFObject volume = (OSRFObject) Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_VOLUME, new Object[]{copyObject.getInt("call_number")});
+ OSRFObject volume = (OSRFObject) Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_VOLUME, cm, new Object[]{copyObject.getInt("call_number")});
//in volume object : record
Integer record = volume.getInt("record");
holdObj.part_label = volume.getString("label");
System.out.println("Record " + record);
- OSRFObject holdInfo = (OSRFObject)Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_RMODS, new Object[]{record});
+ OSRFObject holdInfo = (OSRFObject)Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_RMODS, cm, new Object[]{record});
holdObj.title = holdInfo.getString("title");
holdObj.author = holdInfo.getString("author");
//must test
//fetch_volume
- OSRFObject volume = (OSRFObject) Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_VOLUME, new Object[]{hold.getInt("target")});
+ OSRFObject volume = (OSRFObject) Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_VOLUME, cm, new Object[]{hold.getInt("target")});
//in volume object : record
//in volume object : record
holdObj.part_label = volume.getString("label");
System.out.println("Record " + record);
- OSRFObject holdInfo = (OSRFObject)Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_RMODS, new Object[]{record});
+ OSRFObject holdInfo = (OSRFObject)Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_RMODS, cm, new Object[]{record});
holdObj.title = holdInfo.getString("title");
holdObj.author = holdInfo.getString("author");
}
else
if(type.equals("I")){
- OSRFObject issuance = (OSRFObject) Utils.doRequest(conn,SERVICE_SERIAL, METHOD_FETCH_ISSUANCE, new Object[]{hold.getInt("target")});
+ OSRFObject issuance = (OSRFObject) Utils.doRequest(conn,SERVICE_SERIAL, METHOD_FETCH_ISSUANCE, cm, new Object[]{hold.getInt("target")});
//TODO
}
//returns [{record:id, label=part label}]
- List<Object> part = (List<Object>)Utils.doRequest(conn,SERVICE_FIELDER,"open-ils.fielder.bmp.atomic",new Object[]{param});
+ List<Object> part = (List<Object>)Utils.doRequest(conn,SERVICE_FIELDER,"open-ils.fielder.bmp.atomic", cm, new Object[]{param});
Map<String,?> partObj =(Map<String,?>)part.get(0);
Integer recordID = (Integer)partObj.get("record");
String part_label = (String)partObj.get("label");
- OSRFObject holdInfo = (OSRFObject)Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_RMODS, new Object[]{recordID});
+ OSRFObject holdInfo = (OSRFObject)Utils.doRequest(conn,SERVICE_SEARCH, METHOD_FETCH_RMODS, cm, new Object[]{recordID});
holdObj.part_label = part_label;
holdObj.title = holdInfo.getString("title");
}
- public Object fetchHoldStatus(OSRFObject hold, HoldRecord holdObj){
+ public Object fetchHoldStatus(OSRFObject hold, HoldRecord holdObj) throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
Integer hold_id = hold.getInt("id");
// MAP : potential_copies, status, total_holds, queue_position, estimated_wait
- Object hold_status = Utils.doRequest(conn,SERVICE_CIRC, METHOD_FETCH_HOLD_STATUS, new Object[]{authToken,hold_id});
+ Object hold_status = Utils.doRequest(conn,SERVICE_CIRC, METHOD_FETCH_HOLD_STATUS, authToken, cm, new Object[]{authToken,hold_id});
//get status
holdObj.status = ((Map<String,Integer>)hold_status).get("status");
}
- public boolean cancelHold(OSRFObject hold){
+ public boolean cancelHold(OSRFObject hold) throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
Integer hold_id = hold.getInt("id");
- Object response = Utils.doRequest(conn,SERVICE_CIRC, METHOD_CANCEL_HOLD, new Object[]{authToken,hold_id});
+ Object response = Utils.doRequest(conn,SERVICE_CIRC, METHOD_CANCEL_HOLD, authToken, cm, new Object[]{authToken,hold_id});
//delete successful
if(response.toString().equals("1"))
}
- public Object updateHold(OSRFObject ahr,Integer pickup_lib, boolean email_notify, boolean phone_notify, String phone, boolean suspendHold, String expire_time,String thaw_date){
+ public Object updateHold(OSRFObject ahr,Integer pickup_lib, boolean email_notify, boolean phone_notify, String phone, boolean suspendHold, String expire_time,String thaw_date)
+ throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
//TODO verify that object is correct passed to the server
ahr.put("pickup_lib", pickup_lib); //pick-up lib
//only if it is frozen
ahr.put("thaw_date",thaw_date);
- Object response = Utils.doRequest(conn,SERVICE_CIRC, METHOD_UPDATE_HOLD, new Object[]{authToken,ahr});
+ Object response = Utils.doRequest(conn,SERVICE_CIRC, METHOD_UPDATE_HOLD, authToken, cm, new Object[]{authToken,ahr});
return response;
}
- public String[] createHold(Integer recordID, Integer pickup_lib, boolean email_notify, boolean phone_notify, String phone, boolean suspendHold, String expire_time,String thaw_date){
+ public String[] createHold(Integer recordID, Integer pickup_lib, boolean email_notify, boolean phone_notify, String phone, boolean suspendHold, String expire_time,String thaw_date)
+ throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
OSRFObject ahr = new OSRFObject("ahr");
ahr.put("target", recordID);
//extra parameters (not mandatory for hold creation)
- Object response = Utils.doRequest(conn,SERVICE_CIRC, METHOD_CREATE_HOLD, new Object[]{authToken,ahr});
+ Object response = Utils.doRequest(conn,SERVICE_CIRC, METHOD_CREATE_HOLD, authToken, cm, new Object[]{authToken,ahr});
String[] resp = new String[3];
//if we can get hold ID then we return true
return resp;
}
// ?? return boolean
- public Object isHoldPossible(Integer pickup_lib,Integer recordID){
+ public Object isHoldPossible(Integer pickup_lib,Integer recordID)
+ throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
HashMap<String,Integer> mapAsk = getHoldPreCreateInfo(recordID, pickup_lib);
//"patronid":2,"depth":0,"pickup_lib":"8","partid":null}
- Object response = Utils.doRequest(conn,SERVICE_CIRC, METHOD_VERIFY_HOLD_POSSIBLE, new Object[]{authToken,mapAsk});
+ Object response = Utils.doRequest(conn,SERVICE_CIRC, METHOD_VERIFY_HOLD_POSSIBLE, authToken, cm, new Object[]{authToken,mapAsk});
return response;
}
//return
- public HashMap<String,Integer> getHoldPreCreateInfo(Integer recordID, Integer pickup_lib){
+ public HashMap<String,Integer> getHoldPreCreateInfo(Integer recordID, Integer pickup_lib)
+ throws NoNetworkAccessException, NoAccessToServer{
HashMap<String, Integer> param = new HashMap<String, Integer>();
param.put("pickup_lib",pickup_lib);
param.put("record", recordID);
- Map<String,?> response = (Map<String,?>)Utils.doRequest(conn, SERVICE_SEARCH, "open-ils.search.metabib.record_to_descriptors", new Object[]{param});
+ Map<String,?> response = (Map<String,?>)Utils.doRequest(conn, SERVICE_SEARCH, "open-ils.search.metabib.record_to_descriptors", cm, new Object[]{param});
Object obj = response.get("metarecord");
System.out.println(obj);
//----------------------------Fines Summary------------------------------------//
- public float[] getFinesSummary(){
+ public float[] getFinesSummary()
+ throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
//mous object
- OSRFObject finesSummary = (OSRFObject) Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FETCH_FINES_SUMMARY, new Object[]{authToken,userID});
+ OSRFObject finesSummary = (OSRFObject) Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FETCH_FINES_SUMMARY, authToken, cm, new Object[]{authToken,userID});
float fines[] = new float[3];
try{
return fines;
}
- public ArrayList<FinesRecord> getTransactions(){
+ public ArrayList<FinesRecord> getTransactions()
+ throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
ArrayList<FinesRecord> finesRecords = new ArrayList<FinesRecord>();
- Object transactions = Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FETCH_TRANSACTIONS, new Object[]{authToken,userID});
+ Object transactions = Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FETCH_TRANSACTIONS, authToken, cm, new Object[]{authToken,userID});
//get Array
//---------------------------------------Book bags-----------------------------------//
- public Object getBookbags(){
+ public Object getBookbags()
+ throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
- Object response = Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FLESH_CONTAINERS, new Object[]{authToken,userID,"biblio","bookbag"});
+ Object response = Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FLESH_CONTAINERS, authToken, cm, new Object[]{authToken,userID,"biblio","bookbag"});
List<OSRFObject> bookbags = (List<OSRFObject>)response;
return bookbags;
}
- private Object getBookbagContent(Integer bookbagID){
+ private Object getBookbagContent(Integer bookbagID)
+ throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
- return Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FLESH_PUBLIC_CONTAINER, new Object[]{authToken,"biblio",bookbagID});
+ return Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FLESH_PUBLIC_CONTAINER, authToken, cm, new Object[]{authToken,"biblio",bookbagID});
}
}
/**
*
*/
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 123232L;
}
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.AccountAccess;
import org.evergreen.android.accountAccess.MaxRenewalsException;
+import org.evergreen.android.accountAccess.SessionNotFoundException;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
+import org.evergreen.android.globals.Utils;
import android.app.Activity;
import android.app.ProgressDialog;
@Override
public void run() {
- circRecords = accountAccess.getItemsCheckedOut();
+
+ try {
+ circRecords = accountAccess.getItemsCheckedOut();
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+
+ }catch (SessionNotFoundException e) {
+ //TODO other way?
+ try{
+ if(accountAccess.authenticate())
+ circRecords = accountAccess.getItemsCheckedOut();
+ }catch(Exception eauth){
+ System.out.println("Exception in reAuth");
+ }
+ }
runOnUiThread(new Runnable() {
}
});
- try{
- ac.renewCirc(record.getTargetCopy());
- }catch(MaxRenewalsException e){
- runOnUiThread(new Runnable() {
+
+ try {
+ ac.renewCirc(record.getTargetCopy());
+ } catch (MaxRenewalsException e1) {
+ runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ progressDialog.dismiss();
+ Toast.makeText(context, "Max renewals reached", Toast.LENGTH_SHORT).show();
+ }
+ });
- @Override
- public void run() {
- progressDialog.dismiss();
- Toast.makeText(context, "Max renewals reached", Toast.LENGTH_SHORT).show();
+ refresh = false;
+ } catch (SessionNotFoundException e1) {
+ try{
+ if(accountAccess.authenticate())
+ ac.renewCirc(record.getTargetCopy());
+ }catch(Exception eauth){
+ System.out.println("Exception in reAuth");
}
- });
-
- refresh = false;
- }
+ } catch (NoNetworkAccessException e1) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e1) {
+ Utils.showServerNotAvailableDialog(context);
+ }
+
if(refresh){
- circRecords = accountAccess.getItemsCheckedOut();
+
+ try {
+ circRecords = accountAccess.getItemsCheckedOut();
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+
+ }catch (SessionNotFoundException e) {
+ //TODO other way?
+ try{
+ if(accountAccess.authenticate())
+ circRecords = accountAccess.getItemsCheckedOut();
+ }catch(Exception eauth){
+ System.out.println("Exception in reAuth");
+ }
+ }
+
listAdapter.clear();
for(int i=0;i<circRecords.size();i++){
listAdapter.add(circRecords.get(i));
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.AccountAccess;
+import org.evergreen.android.accountAccess.SessionNotFoundException;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
+import org.evergreen.android.globals.Utils;
import android.app.Activity;
import android.app.ProgressDialog;
@Override
public void run() {
- final float[] fines = ac.getFinesSummary();
+ float[] finesR = null;
+ try {
+ finesR = ac.getFinesSummary();
+ } catch (SessionNotFoundException e) {
+ try{
+ if(ac.authenticate())
+ finesR = ac.getFinesSummary();
+ }catch(Exception e1){}
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+ }
- final ArrayList<FinesRecord> finesRecords = ac.getTransactions();
+ ArrayList<FinesRecord> frecords = null;
+ try {
+ frecords = ac.getTransactions();
+ } catch (SessionNotFoundException e) {
+
+ try{
+ if(ac.authenticate())
+ frecords = ac.getTransactions();
+ }catch(Exception e1){}
+
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+ }
+ final ArrayList<FinesRecord> finesRecords = frecords;
+ final float[] fines = finesR;
runOnUiThread(new Runnable() {
@Override
public void run() {
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.AccountAccess;
+import org.evergreen.android.accountAccess.SessionNotFoundException;
import org.evergreen.android.globals.GlobalConfigs;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
+import org.evergreen.android.globals.Utils;
import android.app.Activity;
import android.app.AlertDialog;
@Override
public void run() {
- accountAccess.cancelHold(record.ahr);
-
+
+ try {
+ accountAccess.cancelHold(record.ahr);
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+
+ }catch (SessionNotFoundException e) {
+ //TODO other way?
+ try{
+ if(accountAccess.authenticate())
+ accountAccess.cancelHold(record.ahr);
+ }catch(Exception eauth){
+ System.out.println("Exception in reAuth");
+ }
+ }
+
+
+
+
+
runOnUiThread(new Runnable() {
@Override
public void run() {
if (thaw_date != null)
thaw_date_s = GlobalConfigs.getStringDate(thaw_date);
- accountAccess.updateHold(record.ahr, selectedOrgPos,
- email_notification.isChecked(), phone_notification
- .isChecked(),
- phone_number.getText().toString(), suspendHold
- .isChecked(), expire_date_s, thaw_date_s);
+
+
+ try {
+ accountAccess.updateHold(record.ahr, selectedOrgPos,
+ email_notification.isChecked(), phone_notification
+ .isChecked(),
+ phone_number.getText().toString(), suspendHold
+ .isChecked(), expire_date_s, thaw_date_s);
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+
+ }catch (SessionNotFoundException e) {
+ //TODO other way?
+ try{
+ if(accountAccess.authenticate())
+ accountAccess.updateHold(record.ahr, selectedOrgPos,
+ email_notification.isChecked(), phone_notification
+ .isChecked(),
+ phone_number.getText().toString(), suspendHold
+ .isChecked(), expire_date_s, thaw_date_s);
+ }catch(Exception eauth){
+ System.out.println("Exception in reAuth");
+ }
+ }
+
+
+
runOnUiThread(new Runnable() {
@Override
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.AccountAccess;
+import org.evergreen.android.accountAccess.SessionNotFoundException;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
+import org.evergreen.android.globals.Utils;
import android.app.Activity;
import android.app.ProgressDialog;
@Override
public void run() {
- holdRecords = accountAccess.getHolds();
+ try {
+ holdRecords = accountAccess.getHolds();
+ } catch (SessionNotFoundException e) {
+ //TODO other way?
+ try{
+ if(accountAccess.authenticate())
+ holdRecords = accountAccess.getHolds();
+ }catch(Exception eauth){
+ System.out.println("Exception in reAuth");
+ }
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+ }
runOnUiThread(new Runnable() {
@Override
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.AccountAccess;
+import org.evergreen.android.accountAccess.SessionNotFoundException;
import org.evergreen.android.globals.GlobalConfigs;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
+import org.evergreen.android.globals.Utils;
import org.evergreen.android.searchCatalog.RecordInfo;
import android.app.Activity;
progressDialog = ProgressDialog.show(context, "Please wait", "Placing hold");
}
});
+ //TODO verify hold possible
- accountAccess.getHoldPreCreateInfo(record_id, 4);
- accountAccess.isHoldPossible(4, record_id);
+ //accountAccess.getHoldPreCreateInfo(record_id, 4);
+ //accountAccess.isHoldPossible(4, record_id);
String expire_date_s = null;
if(globalConfigs.organisations.size() > selectedOrgPos)
selectedOrgID = globalConfigs.organisations.get(selectedOrgPos).id;
- final String[] holdPlaced = accountAccess.createHold(record_id,selectedOrgID,email_notification.isChecked(),phone_notification.isChecked(),phone_number.getText().toString(),suspendHold.isChecked(),expire_date_s,thaw_date_s);
+
+
+ String[] stringResponse = new String[]{"false"};
+ try {
+ stringResponse = accountAccess.createHold(record_id,selectedOrgID,email_notification.isChecked(),phone_notification.isChecked(),phone_number.getText().toString(),suspendHold.isChecked(),expire_date_s,thaw_date_s);
+ } catch (SessionNotFoundException e) {
+
+ try{
+ if(accountAccess.authenticate())
+ stringResponse = accountAccess.createHold(record_id,selectedOrgID,email_notification.isChecked(),phone_notification.isChecked(),phone_number.getText().toString(),suspendHold.isChecked(),expire_date_s,thaw_date_s);
+ }catch(Exception e1){}
+
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+ }
+ final String[] holdPlaced = stringResponse;
+
runOnUiThread(new Runnable() {
@Override
public void run() {
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.views.ApplicationPreferences;
import org.open_ils.idl.IDLParser;
boolean noNetworkAccess = false;
System.out.println("Check for network conenctivity");
try{
- Utils.checkNetworkStatus((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE), context);
+ Utils.checkNetworkStatus((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE));
}catch(NoNetworkAccessException e){
noNetworkAccess = true;
- }catch(NoAccessToHttpAddress e){
+ }catch(NoAccessToServer e){
System.out.println("No access to network");
Intent preferencesAnctivity = new Intent(context, ApplicationPreferences.class);
//authenticate
- AccountAccess ac = AccountAccess.getAccountAccess(GlobalConfigs.httpAddress);
- ac.authenticate();
+ AccountAccess ac = AccountAccess.getAccountAccess(GlobalConfigs.httpAddress,(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE));
+ try{
+ ac.authenticate();
+ }catch(Exception e){}
//TODO getorg hidding levels
//getOrgHiddentDepth();
public void getOrganisations(){
String orgFile = null;
+
+
+ organisations = new ArrayList<Organisation>();
+
try{
//using https: address
orgFile = Utils.getNetPageContent(httpAddress+collectionsRequest);
System.out.println("Request org " + httpAddress + collectionsRequest );
}catch(Exception e){};
-
- organisations = new ArrayList<Organisation>();
-
+
if(orgFile != null){
organisations = new ArrayList<Organisation>();
for(int i=0; i<organisations.size();i++){
AccountAccess ac = AccountAccess.getAccountAccess();
-
- Object obj = ac.fetchOrgSettings(organisations.get(i).id, "opac.org_unit_hiding.depth");
-
-
- }
+ try{
+ Object obj = ac.fetchOrgSettings(organisations.get(i).id, "opac.org_unit_hiding.depth");
+ }catch(NoNetworkAccessException e){}
+ catch(NoAccessToServer e){}
+ catch(SessionNotFoundException e) {// not used here
+ }
+
+ }
+
}
+++ /dev/null
-package org.evergreen.android.globals;
-
-public class NoAccessToHttpAddress extends Exception{
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
-}
--- /dev/null
+package org.evergreen.android.globals;
+
+public class NoAccessToServer extends Exception{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+}
--- /dev/null
+package org.evergreen.android.globals;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+
+class ShowNetworkNotAvailableRunnable implements Runnable{
+
+ public Context context;
+
+ public ShowNetworkNotAvailableRunnable(Context context) {
+ this.context = context;
+ }
+
+ @Override
+ public void run() {
+ // TODO Auto-generated method stub
+ AlertDialog alertDialog = new AlertDialog.Builder(context).create();
+ alertDialog.setTitle("Error");
+ alertDialog.setMessage("You need to have an internet connection");
+ alertDialog.setButton("OK",
+ new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.dismiss();
+ }
+ });
+
+ alertDialog.show();
+ }
+
+ }
\ No newline at end of file
--- /dev/null
+package org.evergreen.android.globals;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+
+public class ShowServerNotAvailableRunnable implements Runnable{
+
+ private Context context;
+
+ public ShowServerNotAvailableRunnable(Context context) {
+ this.context = context;
+ }
+
+ @Override
+ public void run() {
+ AlertDialog alertDialog = new AlertDialog.Builder(context).create();
+ alertDialog.setTitle("Error");
+ alertDialog.setMessage("There is no network connectivity to " + GlobalConfigs.httpAddress);
+ alertDialog.setButton("OK",
+ new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.dismiss();
+ }
+ });
+
+
+
+ alertDialog.show();
+ }
+
+}
\ No newline at end of file
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
-import org.evergreen.android.accountAccess.AccountAccess;
+import org.evergreen.android.accountAccess.SessionNotFoundException;
import org.opensrf.Method;
import org.opensrf.net.http.GatewayRequest;
import org.opensrf.net.http.HttpConnection;
import org.opensrf.net.http.HttpRequest;
+import android.app.AlertDialog;
import android.content.Context;
+import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
* NoAccessToHttpAddress if the library remote server can't be reached
*
*/
- public static boolean checkNetworkStatus(ConnectivityManager cm, Context context )
- throws NoNetworkAccessException, NoAccessToHttpAddress{
+ public static boolean checkNetworkStatus(ConnectivityManager cm)
+ throws NoNetworkAccessException, NoAccessToServer{
boolean HaveConnectedWifi = false;
boolean HaveConnectedMobile = false;
// 2 seconds timeout
httpAddressAccessReachable = checkIfNetAddressIsReachable(GlobalConfigs.httpAddress);
if(httpAddressAccessReachable == false)
- throw new NoAccessToHttpAddress();
+ throw new NoAccessToServer();
}
if(!networkAccessEnabled)
}
- public static boolean checkIfNetAddressIsReachable(String url){
+
+ public static boolean checkIfNetAddressIsReachable(String url) throws NoAccessToServer{
boolean result = false;
try
catch (SocketTimeoutException e)
{
result = false; // this is somewhat expected
+ throw new NoAccessToServer();
}
catch (Exception e) {
Log.d(TAG, "Exception in is reachable " + e.getMessage());
}
- //TODO throw NO_SESSION
- public static Object doRequest(HttpConnection conn, String service, String methodName, Object[] params) //throws SessionNotFoundException{
- {
+
+ public static Object doRequest(HttpConnection conn, String service, String methodName, String authToken, ConnectivityManager cm, Object[] params )
+ throws SessionNotFoundException, NoNetworkAccessException, NoAccessToServer{
+
+
+ //check for network connectivity
+ checkNetworkStatus(cm);
+
+ //check to see if EG http server is reachable
+ checkIfNetAddressIsReachable(GlobalConfigs.httpAddress);
+
+
//TODO check params and throw errors
Method method = new Method(methodName);
if(textcode != null){
if(textcode.equals("NO_SESSION")){
System.out.println("REQUIRE NEW SESSION");
- response = requireNewSession(conn, service, methodName, params);
+ throw new SessionNotFoundException();
}
}
}
- public static Object requireNewSession(HttpConnection conn, String service, String methodName, Object[] params){
+ //does not require authToken
+ public static Object doRequest(HttpConnection conn, String service, String methodName, ConnectivityManager cm, Object[] params )
+ throws NoNetworkAccessException, NoAccessToServer{
+
+
+ //check for network connectivity
+ checkNetworkStatus(cm);
+
+ //check to see if EG http server is reachable
+ checkIfNetAddressIsReachable(GlobalConfigs.httpAddress);
- AccountAccess ac = AccountAccess.getAccountAccess();
- boolean success = ac.authenticate();
- Object response = null;
+ //TODO check params and throw errors
+ Method method = new Method(methodName);
+
+ System.out.println("Method :" + methodName + " param:");
+ for(int i=0;i<params.length;i++){
+ method.addParam(params[i]);
+ System.out.print("Param "+i+":" + params[i]);
+ }
+ //need space
+ System.out.println();
- if(success){
- response = doRequest(conn, service, methodName, params);
+ //sync request
+ HttpRequest req = new GatewayRequest(conn, service, method).send();
+ Object resp;
+
+ while ((resp = req.recv()) != null) {
+ System.out.println("Sync Response: " + resp);
+ Object response = (Object) resp;
+
+ return response;
+
}
+ return null;
- return response;
}
+
+
+ public static ShowServerNotAvailableRunnable showServerNotAvailableDialog(Context context){
+
+ return new ShowServerNotAvailableRunnable(context);
+ }
+
+ public static ShowNetworkNotAvailableRunnable showNetworkNotAvailableDialog(Context context){
+
+ return new ShowNetworkNotAvailableRunnable(context);
+ }
+
}
package org.evergreen.android.searchCatalog;
+import java.io.NotSerializableException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.StringTokenizer;
+import org.evergreen.android.accountAccess.SessionNotFoundException;
import org.evergreen.android.globals.GlobalConfigs;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
import org.evergreen.android.globals.Utils;
-import org.open_ils.idl.IDLParser;
import org.opensrf.Method;
import org.opensrf.net.http.GatewayRequest;
import org.opensrf.net.http.HttpConnection;
import org.opensrf.util.OSRFObject;
import android.content.Context;
+import android.net.ConnectivityManager;
import android.util.Log;
/**
public Integer searchLimit = 10;
+ private ConnectivityManager cm;
-
- public static SearchCatalog getInstance(){
+ public static SearchCatalog getInstance(ConnectivityManager cm){
if(searchCatalogSingleton == null){
- searchCatalogSingleton = new SearchCatalog();
+ searchCatalogSingleton = new SearchCatalog(cm);
}
return searchCatalogSingleton;
* @param httpAddress the http address
* @param locale the locale
*/
- private SearchCatalog() {
+ private SearchCatalog(ConnectivityManager cm) {
super();
+
+ this.cm = cm;
+
try{
// configure the connection
conn = new HttpConnection(GlobalConfigs.httpAddress+"/osrf-gateway-v1");
* @param searchWords the search words
* @return the search results
*/
- public ArrayList<RecordInfo> getSearchResults(String searchWords, Integer offset){
+ public ArrayList<RecordInfo> getSearchResults(String searchWords, Integer offset) throws NoNetworkAccessException, NoAccessToServer{
ArrayList<RecordInfo> resultsRecordInfo = new ArrayList<RecordInfo>();
{
System.out.println("Exception in JSON " + e.getMessage());
}
+
- System.out.println("JSON argument " + complexParm);
- method.addParam(complexParm);
- method.addParam(searchWords);
- method.addParam(1);
-
-
- // sync test
- HttpRequest req = new GatewayRequest(conn, SERVICE, method).send();
- Object resp;
-
- //why in while ?
-
+ Object resp = Utils.doRequest(conn, SERVICE, METHOD_MULTICASS_SEARCH, cm, new Object[]{complexParm,searchWords,1});
+
ArrayList<String> ids = new ArrayList<String>();
-
-
- while ( (resp = req.recv()) != null){
- System.out.println("Sync Response: " + resp);
+
+ System.out.println("Sync Response: " + resp);
- Map<String,?> response = (Map<String,?>) resp;
+ Map<String,?> response = (Map<String,?>) resp;
- System.out.println(" ids : " + response.get("ids") + " " );
+ System.out.println(" ids : " + response.get("ids") + " " );
- List<List<String>> result_ids = (List) response.get("ids");
+ List<List<String>> result_ids = (List) response.get("ids");
- visible =Integer.parseInt((String)response.get("count"));
+ visible =Integer.parseInt((String)response.get("count"));
for(int i=0;i<result_ids.size();i++){
ids.add(result_ids.get(i).get(0));
}
- }
- // exceptions are captured instead of thrown,
- // primarily to better support async requests
- if (req.failed()) {
- req.getFailure().printStackTrace();
- return null;
- }
-
System.out.println("Ids " + ids);
* @param searchWords the search words
* @return the object
*/
- public Object searchCatalog(String searchWords){
-
-
- Method method = new Method(METHOD_SLIM_RETRIVE);
+ public Object searchCatalog(String searchWords)
+ throws NoNetworkAccessException, NoAccessToServer{
- method.addParam("keyword");
- method.addParam(searchWords);
+ Object response = Utils.doRequest(conn, SERVICE, METHOD_SLIM_RETRIVE, cm, new Object[]{"keyword", searchWords});
+ return response;
- // sync test
- HttpRequest req = new GatewayRequest(conn, SERVICE, method).send();
- Object resp;
- while ( (resp = req.recv()) != null) {
- System.out.println("Sync Response: " + resp);
- return resp;
- }
-
-
- // exceptions are captured instead of thrown,
- // primarily to better support async requests
- if (req.failed()) {
- req.getFailure().printStackTrace();
- return null;
- }
-
- return null;
}
/**
}
- public Object getLocationCount(Integer recordID, Integer orgID, Integer orgDepth){
-
- List<?> list = (List<?>)Utils.doRequest(conn, SERVICE, METHOD_COPY_LOCATION_COUNTS, new Object[]{recordID, orgID, orgDepth});
+ public Object getLocationCount(Integer recordID, Integer orgID, Integer orgDepth) throws NoNetworkAccessException, NoAccessToServer{
+ List<?> list = (List<?>)Utils.doRequest(conn, SERVICE, METHOD_COPY_LOCATION_COUNTS, cm, new Object[]{recordID, orgID, orgDepth});
return list;
+
}
/**
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.holds.PlaceHold;
import org.evergreen.android.globals.GlobalConfigs;
-
-import com.google.android.maps.ItemizedOverlay;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
+import org.evergreen.android.globals.Utils;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
+import android.net.ConnectivityManager;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
globalConfigs = GlobalConfigs.getGlobalConfigs(this);
context = this;
- search = SearchCatalog.getInstance();
+ search = SearchCatalog.getInstance((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE));
recordList= new ArrayList<RecordInfo>();
// Set the ListView adapter
lv.setAdapter(adapter);
+ searchResults = new ArrayList<RecordInfo>();
registerForContextMenu(lv);
@Override
public void run() {
- searchResults = search.getSearchResults(text,recordList.size()-1);
+
+ searchResults.clear();
+
+ try {
+ searchResults = search.getSearchResults(text,recordList.size()-1);
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(context);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(context);
+ }
runOnUiThread(new Runnable() {
progressDialog = new ProgressDialog(context);
progressDialog.setMessage("Fetching data");
- progressDialog.show();
+ //progressDialog.show();
if(text.length()>0){
@Override
public void run() {
- searchResults = search.getSearchResults(text,0);
+ searchResults.clear();
+
+ try {
+ searchResults = search.getSearchResults(text,0);
+ } catch (NoNetworkAccessException e) {
+ System.out.println("no network access in search");
+ SearchCatalogListView.this.runOnUiThread(Utils.showNetworkNotAvailableDialog(context));
+
+ } catch (NoAccessToServer e) {
+ SearchCatalogListView.this.runOnUiThread(Utils.showServerNotAvailableDialog(context));
+ }
+
runOnUiThread(new Runnable() {
@Override
public void run() {
recordList.clear();
+
if(searchResults.size()>0){
for(int j=0;j<searchResults.size();j++)
int selectedPos = 0;
ArrayList<String> list = new ArrayList<String>();
- for(int i=0;i<globalConfigs.organisations.size();i++){
- list.add(globalConfigs.organisations.get(i).padding + globalConfigs.organisations.get(i).name);
-
- if(globalConfigs.organisations.get(i).level -1 == 0)
- selectedPos = i;
+ if(globalConfigs.organisations != null){
+ for(int i=0;i<globalConfigs.organisations.size();i++){
+ list.add(globalConfigs.organisations.get(i).padding + globalConfigs.organisations.get(i).name);
+
+ if(globalConfigs.organisations.get(i).level -1 == 0)
+ selectedPos = i;
+ }
}
-
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
choseOrganisation.setAdapter(adapter);
package org.evergreen.android.searchCatalog;
import org.evergreen.android.R;
+import org.evergreen.android.globals.NoAccessToServer;
+import org.evergreen.android.globals.NoNetworkAccessException;
+import org.evergreen.android.globals.Utils;
import org.evergreen.android.utils.ui.AdvancedDetailsFragment;
import org.evergreen.android.utils.ui.BaseSampleActivity;
import org.evergreen.android.utils.ui.BasicDetailsFragment;
import org.evergreen.android.utils.ui.TestFragment;
import org.evergreen.android.utils.ui.TestFragmentAdapter;
+import android.content.Context;
+import android.net.ConnectivityManager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
mAdapter = new SearchFragmentAdapter(getSupportFragmentManager());
- search = SearchCatalog.getInstance();
- search.getLocationCount(record.doc_id, orgID, orgDepth);
-
-
+ search = SearchCatalog.getInstance((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE));
+ try {
+ search.getLocationCount(record.doc_id, orgID, orgDepth);
+ } catch (NoNetworkAccessException e) {
+ Utils.showNetworkNotAvailableDialog(this);
+ } catch (NoAccessToServer e) {
+ Utils.showServerNotAvailableDialog(this);
+ }
+
//mAdapter.getItem(0).
mPager = (ViewPager)findViewById(R.id.pager);
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.AccountAccess;
import org.evergreen.android.globals.GlobalConfigs;
-import org.evergreen.android.globals.NoAccessToHttpAddress;
+import org.evergreen.android.globals.NoAccessToServer;
import org.evergreen.android.globals.NoNetworkAccessException;
import org.evergreen.android.globals.Utils;
public void run() {
boolean routeToAddress = true;
- AccountAccess account = AccountAccess.getAccountAccess(GlobalConfigs.httpAddress);
+ AccountAccess account = AccountAccess.getAccountAccess(GlobalConfigs.httpAddress,(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE));
try{
- Utils.checkNetworkStatus((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE), context);
+ Utils.checkNetworkStatus((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE));
}catch(NoNetworkAccessException e){
routeToAddress = false;
}
});
- }catch(NoAccessToHttpAddress e){
+ }catch(NoAccessToServer e){
Log.d(TAG, " no route to hoast");
routeToAddress = false;
if(routeToAddress){
- if(account.authenticate()){
-
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- if(reference != null){
- progressDialog.dismiss();
- Toast.makeText(context, "Autenthication successfully established :" + GlobalConfigs.httpAddress, Toast.LENGTH_LONG).show();
+
+ try{
+ if(account.authenticate()){
+
+ runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ if(reference != null){
+ progressDialog.dismiss();
+ Toast.makeText(context, "Autenthication successfully established :" + GlobalConfigs.httpAddress, Toast.LENGTH_LONG).show();
+ }
}
- }
- });
- }else{
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- if(reference != null){
- progressDialog.dismiss();
- Toast.makeText(context, "Please check username and password ", Toast.LENGTH_LONG).show();
+ });
+ }else{
+ runOnUiThread(new Runnable() {
+
+ @Override
+ public void run() {
+ if(reference != null){
+ progressDialog.dismiss();
+ Toast.makeText(context, "Please check username and password ", Toast.LENGTH_LONG).show();
+ }
}
- }
- });
- }
+ });
+ }
+
+ }catch(Exception e){}
+
}
else
runOnUiThread(new Runnable() {
--- /dev/null
+package org.evergreen.android.views.splashscreen;
+
+import android.os.AsyncTask;
+import android.util.Log;
+import android.widget.ProgressBar;
+
+public class LoadingTask extends AsyncTask<String, Integer, Integer> {
+
+ public interface LoadingTaskFinishedListener {
+ void onTaskFinished(); // If you want to pass something back to the listener add a param to this method
+ }
+
+ // This is the progress bar you want to update while the task is in progress
+ private final ProgressBar progressBar;
+ // This is the listener that will be told when this task is finished
+ private final LoadingTaskFinishedListener finishedListener;
+
+ /**
+ * A Loading task that will load some resources that are necessary for the app to start
+ * @param progressBar - the progress bar you want to update while the task is in progress
+ * @param finishedListener - the listener that will be told when this task is finished
+ */
+ public LoadingTask(ProgressBar progressBar, LoadingTaskFinishedListener finishedListener) {
+ this.progressBar = progressBar;
+ this.finishedListener = finishedListener;
+ }
+
+ @Override
+ protected Integer doInBackground(String... params) {
+ Log.i("Tutorial", "Starting task with url: "+params[0]);
+ if(resourcesDontAlreadyExist()){
+ downloadResources();
+ }
+ // Perhaps you want to return something to your post execute
+ return 1234;
+ }
+
+ private boolean resourcesDontAlreadyExist() {
+ // Here you would query your app's internal state to see if this download had been performed before
+ // Perhaps once checked save this in a shared preference for speed of access next time
+ return true; // returning true so we show the splash every time
+ }
+
+
+ private void downloadResources() {
+ // We are just imitating some process thats takes a bit of time (loading of resources / downloading)
+ int count = 10;
+ for (int i = 0; i < count; i++) {
+
+ // Update the progress bar after every step
+ int progress = (int) ((i / (float) count) * 100);
+ publishProgress(progress);
+
+ // Do some long loading things
+ try { Thread.sleep(1000); } catch (InterruptedException ignore) {}
+ }
+ }
+
+ @Override
+ protected void onProgressUpdate(Integer... values) {
+ super.onProgressUpdate(values);
+ progressBar.setProgress(values[0]); // This is ran on the UI thread so it is ok to update our progress bar ( a UI view ) here
+ }
+
+ @Override
+ protected void onPostExecute(Integer result) {
+ super.onPostExecute(result);
+ finishedListener.onTaskFinished(); // Tell whoever was listening we have finished
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.evergreen.android.views.splashscreen;
+
+
+
+import org.evergreen.android.R;
+import org.evergreen.android.views.MainScreenDashboard;
+import org.evergreen.android.views.splashscreen.LoadingTask.LoadingTaskFinishedListener;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.ProgressBar;
+
+public class SplashActivity extends Activity implements LoadingTaskFinishedListener {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Show the splash screen
+ setContentView(R.layout.activity_splash);
+ // Find the progress bar
+ ProgressBar progressBar = (ProgressBar) findViewById(R.id.activity_splash_progress_bar);
+ // Start your loading
+ new LoadingTask(progressBar, this).execute("www.google.co.uk"); // Pass in whatever you need a url is just an example we don't use it in this tutorial
+ }
+
+ // This is the callback for when your async task has finished
+ @Override
+ public void onTaskFinished() {
+ completeSplash();
+ }
+
+ private void completeSplash(){
+ startApp();
+ finish(); // Don't forget to finish this Splash Activity so the user can't return to it!
+ }
+
+ private void startApp() {
+ Intent intent = new Intent(SplashActivity.this, MainScreenDashboard.class);
+ startActivity(intent);
+ }
+}
\ No newline at end of file