def get_citation_dict(message): dictname = str(message.getParam('dictname')) hm = sj.HashMap.cast_(message.getParam('result')) # we will call the local module (not dispatched remotely) cd = api_calls._dispatch("get_citation_dict", dictname) message.threadInfo("%s: %s" % (dictname, str(len(cd)))) if cd: #hm = sj.HashMap().of_(sj.Integer, sj.JArray_int) message.threadInfo('creating hashmap') for k,v in cd.items(): j_array = sj.JArray_int(v) hm.put(int(k), j_array) message.threadInfo('finished')
def sort_and_format(message): req = message.getSolrQueryRequest() rsp = message.getSolrQueryResponse() recids = intbitset(message.getParamArray_int("recids")) kwargs = sj.HashMap.cast_(message.getParam('kwargs')) kws = {} kset = kwargs.keySet().toArray() vset = kwargs.values().toArray() max_size = len(vset) i = 0 while i < max_size: v = str(vset[i]) if v[0:1] in ["'", '[', '{'] : try: v = eval(v) except: pass kws[str(kset[i])] = v i += 1 start = time.time() message.threadInfo("start: citation_summary") c_time = time.time() message.threadInfo("int[] converted to intbitset in: %s, size=%s" % (time.time() - c_time, len(recids))) (wid, (output)) = api_calls._dispatch('sort_and_format', recids, kws) message.threadInfo("end: citation_summary pid=%s, finished in %s" % (wid, time.time() - start)) if isinstance(output, list): message.setResults(sj.JArray_int(output)) message.setParam("rtype", "int") else: message.setResults(output) message.setParam("rtype", "string")