From: drizea Date: Fri, 8 Jun 2012 15:15:22 +0000 (+0300) Subject: Added Holds functions to AccountAccess X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=2e6c7336c035e2784f282478ecf4630a844b809f;p=working%2FEvergreen.git Added Holds functions to AccountAccess --- diff --git a/Open-ILS/src/Android/src/org/evergreen/android/accountAccess/AccountAccess.java b/Open-ILS/src/Android/src/org/evergreen/android/accountAccess/AccountAccess.java index 38b6bbd3db..1360de0ff5 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/accountAccess/AccountAccess.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/accountAccess/AccountAccess.java @@ -43,6 +43,10 @@ public class AccountAccess { public static String SERVICE_SEARCH = "open-ils.search"; + public static String SERVICE_SERIAL = "open-ils.serial"; + + public static String SERVICE_FIELDER = "open-ils.fielder"; + /** The METHOD_FETCH_CHECKED_OUT_SUM * description : for a given user returns a a structure of circulation objects sorted by * out, overdue, lost, claims_returned, long_overdue; A list of ID's returned for each type : "out":[id1,id2,...] @@ -89,20 +93,85 @@ public class AccountAccess { // Used for Holds Tab - /** METHOD_FETCH_HOLDS + /** The METHOD_FETCH_HOLDS * @param : authtoken, userID - * @returns: List of "ahr" OSPFObject - * + * @returns: List of "ahr" OSPFObject . Fields of interest : pickup_lib */ public static String METHOD_FETCH_HOLDS = "open-ils.circ.holds.retrieve"; + + /** The METHOD_FETCH_ORG_SETTINGS + * description : retrieves a setting from the organization unit + * @param : org_id, String with setting property to return + * @returns : returns the requested value of the setting + */ + public static String METHOD_FETCH_ORG_SETTINGS = "open-ils.actor.ou_setting.ancestor_default"; + + /** The METHOD_FETCH_MRMODS + * + */ // if holdtype == M public static String METHOD_FETCH_MRMODS = "open-ils.search.biblio.metarecord.mods_slim.retrieve"; // if holdtype == T public static String METHOD_FETCH_RMODS = "open-ils.search.biblio.records.mods_slim.retrieve"; + //if hold type V + public static String METHOD_FETCH_VOLUME = "open-ils.search.asset.call_number.retrieve"; + //if hold type I + public static String METHOD_FETCH_ISSUANCE = "open-ils.serial.issuance.pub_fleshed.batch.retrieve"; public static String METHOD_FETCH_HOLD_STATUS = "open-ils.circ.hold.queue_stats.retrieve"; + /** The METHOD_UPDATE_HOLD + * description : Updates the specified hold. If session user != hold user then session user + * must have UPDATE_HOLD permissions + * @param : authtoken, ahr object + * @returns : hold_is on success, event or error on failure + */ public static String METHOD_UPDATE_HOLD = "open-ils.circ.hold.update"; + + /** The METHOD_CANCEL_HOLD + * description : Cancels the specified hold. session user != hold user + * must have CANCEL_HOLD permissions. + * @param : authtoken, hold_ids, one after another : 1,21,33,.... + * @returns : 1 on success, event or error on failure + */ + public static String METHOD_CANCEL_HOLD = "open-ils.circ.hold.cancel"; + + /** The METHOD_VERIFY_HOLD_POSSIBLE + * description : + * @param : authtoken , hashmap {"titleid":38,"mrid":35,"volume_id":null,"issuanceid":null, + * "copy_id":null,"hold_type":"T","holdable_formats":null,"patronid":2,"depth":0,"pickup_lib":"8","partid":null} + * @returns : hashmap with "success" : 1 field or + */ + public static String METHOD_VERIFY_HOLD_POSSIBLE = "open-ils.circ.title_hold.is_possible"; + + /** The METHOD_CREATE_HOLD + * description : + * @param : authtoken, ahr OSRFObject + * @returns : hash with messages : "success" : 1 field or + */ + public static String METHOD_CREATE_HOLD = " open-ils.circ.holds.create"; + + /** The METHODS_FETCH_FINES_SUMMARY + * description : + * @param : authToken, UserID + * @returns: "mous" OSRFObject. fields: balance_owed, total_owed, total_paid + */ + public static String METHOD_FETCH_FINES_SUMMARY = "open-ils.actor.user.fines.summary"; + + /** The METHOD_FETCH_TRANSACTIONS + * description: For a given user retrieves a list of fleshed transactions. List of objects, each object is a hash + * containing : transaction, circ, record + * @param : authToken, userID + * @returns : array of objects, must investigate + */ + public static String METHOD_FETCH_TRANSACTIONS = "open-ils.actor.user.transactions.have_charged.fleshed"; + + /** The METHOD_FETCH_MONEY_BILLING + * description : + * @param : authToken, transaction_id; + */ + public static String METHOD_FETCH_MONEY_BILLING = "open-ils.circ.money.billing.retrieve.all"; + /** The conn. */ public HttpConnection conn; @@ -300,6 +369,8 @@ public class AccountAccess { } + //------------------------Checked Out Items Section -------------------------// + public void getItemsCheckedOut(){ Method method = new Method(METHOD_FETCH_CHECKED_OUT_SUM); @@ -437,7 +508,9 @@ public class AccountAccess { return null; } - + /* Method used to renew a circulation record based on target_copy_id + * Returns many objects, don't think they are needed + */ private void renewCirc(Integer target_copy){ Method method = new Method(METHOD_RENEW_CIRC); @@ -455,9 +528,229 @@ public class AccountAccess { while ((resp = req.recv()) != null) { System.out.println("Sync Response: " + resp); - OSRFObject acp = (OSRFObject) resp; + OSRFObject a_lot = (OSRFObject) resp; + + } + } + + //------------------------Holds Section --------------------------------------// + + public Object fetchOrgSettings(Integer org_id, String setting){ + + Method method = new Method(METHOD_FETCH_ORG_SETTINGS); + + method.addParam(org_id); + method.addParam(setting); + + //sync request + HttpRequest req = new GatewayRequest(conn, SERVICE_ACTOR, method).send(); + Object resp; + while ((resp = req.recv()) != null) { + System.out.println("Sync Response: " + resp); + //TODO Do something with the property + OSRFObject response = (OSRFObject) resp; + return response; } + return null; } + + + + public void getHolds(){ + + Method method = new Method(METHOD_FETCH_HOLDS); + + method.addParam(authToken); + method.addParam(userID); + + //sync request + HttpRequest req = new GatewayRequest(conn, SERVICE_CIRC, method).send(); + Object resp; + List listHoldsAhr = null; + + // holds description for each hold + List listHoldsMvr = null; + + //status of holds, fields like : potential_copies, status, total_holds, queue_position, estimated_wait + List> listHoldsStatus = null; + + while ((resp = req.recv()) != null) { + System.out.println("Sync Response: " + resp); + //list of ahr objects + listHoldsAhr = (List) resp; + + } + + for(int i=0;i param = new HashMap(0); + + param.put("cache", 1); + param.put("fields", new String[]{"label","record"}); + HashMap queryParam = new HashMap(); + //PART_ID use "target field in hold" + queryParam.put("id", hold.getInt("target")); + param.put("query",queryParam); + + //returns mvr object + OSRFObject part = (OSRFObject) doRequest(SERVICE_FIELDER,"open-ils.fielder.bmp.atomic",new Object[]{}); + } + + return null; + } + + + public Object fetchHoldStatus(OSRFObject hold){ + + Integer hold_id = hold.getInt("id"); + // MAP : potential_copies, status, total_holds, queue_position, estimated_wait + Object hold_status = doRequest(SERVICE_CIRC, METHOD_FETCH_HOLD_STATUS, new Object[]{authToken,hold_id}); + + return hold_status; + } + + + public Object cancelHold(OSRFObject hold){ + + Integer hold_id = hold.getInt("id"); + + Object response = doRequest(SERVICE_CIRC, METHOD_CANCEL_HOLD, new Object[]{authToken,hold_id}); + + return response; + } + + public Object updateHold(OSRFObject newHoldObject){ + //TODO verify that object is correct passed to the server + Object response = doRequest(SERVICE_CIRC, METHOD_UPDATE_HOLD, new Object[]{authToken,newHoldObject}); + + return response; + } + + public Object createHold(OSRFObject newHoldObject){ + + Object response = doRequest(SERVICE_CIRC, METHOD_CREATE_HOLD, new Object[]{authToken,newHoldObject}); + + return response; + } + // ?? return boolean + public Object isHoldPossible(HashMap valuesHold){ + + + Object response = doRequest(SERVICE_CIRC, METHOD_VERIFY_HOLD_POSSIBLE, new Object[]{authToken,valuesHold}); + + return response; + } + + //----------------------------Fines Summary------------------------------------// + + private OSRFObject getFinesSummary(){ + + OSRFObject finesSummary = (OSRFObject) doRequest(SERVICE_ACTOR, METHOD_FETCH_FINES_SUMMARY, new Object[]{authToken,userID}); + + return finesSummary; + } + + private Object getTransactions(){ + + Object transactions = doRequest(SERVICE_ACTOR, METHOD_FETCH_TRANSACTIONS, new Object[]{authToken,userID}); + + return transactions; + } + + private Object doRequest(String service, String methodName, Object[] params){ + + + //TODO check params and throw errors + Method method = new Method(methodName); + + for(int i=0;i