示例#1
0
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')
示例#2
0
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")