Example usage for org.apache.solr.client.solrj SolrQuery setRows

List of usage examples for org.apache.solr.client.solrj SolrQuery setRows

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery setRows.

Prototype

public SolrQuery setRows(Integer rows) 

Source Link

Usage

From source file:edu.vt.vbi.patric.portlets.TranscriptomicsGene.java

License:Apache License

private JSONArray getExperimentStats(DataApiHandler dataApi, JSONArray data, String samples,
        JSONArray sample_data) throws IOException {

    JSONArray results = new JSONArray();

    Map<String, ExpressionDataGene> genes = new HashMap<>();
    Map<String, String> sample = new HashMap<>();

    for (Object aSample_data : sample_data) {
        JSONObject a = (JSONObject) aSample_data;
        sample.put(a.get("pid").toString(), a.get("expname").toString());
    }//from w  ww .  j a v  a  2s  .com

    for (final Object aData : data) {

        final JSONObject a = (JSONObject) aData;
        String id;

        if (a.containsKey("feature_id")) {
            id = (String) a.get("feature_id");
        } else if (a.containsKey("na_feature_id")) {
            id = (String) a.get("na_feature_id");
        } else {
            LOGGER.debug("data error: {}", a);
            id = "";
        }
        ExpressionDataGene b;

        if (genes.containsKey(id)) {
            b = genes.get(id);
        } else {
            b = new ExpressionDataGene(a);
        }

        b.addSamplestoGene(a, sample); // Sample HashMap is used to create absence/presence string
        genes.put(id, b);
    }

    List<String> featureIdList = new ArrayList<>();
    List<String> p2FeatureIdList = new ArrayList<>();

    JSONObject temp = new JSONObject();

    for (final Map.Entry<String, ExpressionDataGene> entry : genes.entrySet()) {

        final ExpressionDataGene value = entry.getValue();

        JSONObject a = new JSONObject();

        a.put("refseq_locus_tag", value.getRefSeqLocusTag());
        a.put("feature_id", value.getFeatureID());
        value.setSampleBinary(samples);
        a.put("sample_binary", value.getSampleBinary());
        a.put("sample_size", value.getSampleCounts());
        a.put("samples", value.getSamples());

        if (value.hasFeatureId()) {
            featureIdList.add(value.getFeatureID());
            temp.put(value.getFeatureID(), a);
        } else {
            p2FeatureIdList.add(value.getP2FeatureId());
            temp.put(value.getP2FeatureId(), a);
        }
    }

    featureIdList.remove(null);
    p2FeatureIdList.remove(null);

    LOGGER.trace("featureIdList[{}], p2FeatureIdList[{}]", featureIdList.size(), p2FeatureIdList.size());

    SolrQuery query = new SolrQuery("*:*");
    if (!featureIdList.isEmpty() && !p2FeatureIdList.isEmpty()) {
        query.addFilterQuery("feature_id:(" + StringUtils.join(featureIdList, " OR ") + ") OR p2_feature_id:("
                + StringUtils.join(p2FeatureIdList, " OR ") + ")");
    } else if (featureIdList.isEmpty() && !p2FeatureIdList.isEmpty()) {
        query.addFilterQuery("p2_feature_id:(" + StringUtils.join(p2FeatureIdList, " OR ") + ")");
    } else if (!featureIdList.isEmpty() && p2FeatureIdList.isEmpty()) {
        query.addFilterQuery("feature_id:(" + StringUtils.join(featureIdList, " OR ") + ")");
    } else {
        // this should not occur
        query.addFilterQuery("feature_id:1");
    }
    query.setFields(
            "feature_id,p2_feature_id,strand,product,accession,start,end,patric_id,alt_locus_tag,genome_name,gene");
    query.setRows(featureIdList.size() + p2FeatureIdList.size());

    LOGGER.trace("getExperimentStats:[{}] {}", SolrCore.FEATURE.getSolrCoreName(), query);

    final String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query);

    final Map resp = jsonReader.readValue(apiResponse);
    final Map respBody = (Map) resp.get("response");

    final List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"),
            GenomeFeature.class);

    for (final GenomeFeature feature : features) {
        JSONObject json = (JSONObject) temp.get(feature.getId());
        if (json == null) {
            json = (JSONObject) temp.get("" + feature.getP2FeatureId());
        }

        json.put("feature_id", feature.getId());
        json.put("strand", feature.getStrand());
        json.put("patric_product", feature.getProduct());
        json.put("patric_accession", feature.getAccession());
        json.put("start", feature.getStart());
        json.put("end", feature.getEnd());
        json.put("alt_locus_tag", feature.getAltLocusTag());
        json.put("patric_id", feature.getPatricId());
        json.put("genome_name", feature.getGenomeName());
        json.put("gene", feature.getGene());

        // for default sorting
        json.put("accession_start", feature.getAccession() + "_" + String.format("%08d", feature.getStart()));

        results.add(json);
    }

    return results;
}

From source file:edu.vt.vbi.patric.portlets.TranscriptomicsGeneExp.java

License:Apache License

private JSONObject processSummary(ResourceRequest request) {
    JSONObject jsonResult = new JSONObject();

    String paramFeatureId = request.getParameter("featureId");
    String paramSampleId = request.getParameter("sampleId");
    String paramKeyword = request.getParameter("keyword");
    String paramLogRatio = request.getParameter("log_ratio");
    String paramZScore = request.getParameter("zscore");

    try {//from   www .j ava  2  s. c o  m
        DataApiHandler dataApi = new DataApiHandler(request);
        //select?q=feature_id:PATRIC.83332.12.NC_000962.CDS.34.1524.fwd&rows=0&facet=true&facet.range.other=before&facet.range.other=after
        // &facet.range.start=-2&facet.range.end=2&facet.range.gap=0.5&facet.range=z_score&facet.range=log_ratio

        //select?q=feature_id:PATRIC.83332.12.NC_000962.CDS.34.1524.fwd&rows=0&facet=true&facet.mincount=1&facet.field=strain&facet.field=mutant&facet.field=condition
        SolrQuery query = new SolrQuery();

        if (paramKeyword != null && !paramKeyword.equals("")) {
            query.setQuery(paramKeyword + " AND feature_id:" + paramFeatureId);
        } else {
            query.setQuery("feature_id:" + paramFeatureId);
        }

        if (paramSampleId != null && !paramSampleId.equals("")) {
            String[] pids = paramSampleId.split(",");

            query.addFilterQuery("pid:(" + StringUtils.join(pids, " OR ") + ")");
        }
        if (paramLogRatio != null && !paramLogRatio.equals("") && !paramLogRatio.equals("0")) {
            query.addFilterQuery(
                    "log_ratio:[* TO -" + paramLogRatio + "] OR log_ratio:[" + paramLogRatio + " TO *]");
        }
        if (paramZScore != null && !paramZScore.equals("") && !paramZScore.equals("0")) {
            query.addFilterQuery("z_score:[* TO -" + paramZScore + "] OR z_score:[" + paramZScore + " TO *]");
        }

        query.setRows(dataApi.MAX_ROWS);
        query.setFacet(true).setFacetMinCount(1).set("json.nl", "map");
        query.set("facet.range.other", "before").add("facet.range.other", "after");
        query.addNumericRangeFacet("log_ratio", -2, 2, 0.5).addNumericRangeFacet("z_score", -2, 2, 0.5);
        query.addFacetField("strain").addFacetField("mutant").addFacetField("condition");

        LOGGER.debug("[{}] {}", SolrCore.TRANSCRIPTOMICS_GENE.getSolrCoreName(), query.toString());

        String apiResponse = dataApi.solrQuery(SolrCore.TRANSCRIPTOMICS_GENE, query);

        Map resp = jsonReader.readValue(apiResponse);
        Map respBody = (Map) resp.get("response");

        List<Map> sdl = (List<Map>) respBody.get("docs");

        // features
        JSONArray features = new JSONArray();
        for (Map doc : sdl) {
            JSONObject feature = new JSONObject();
            feature.put("exp_accession", doc.get("accession"));
            // feature.put("exp_channels", doc.get(""));
            feature.put("exp_condition", doc.get("condition"));
            feature.put("exp_id", doc.get("eid"));
            feature.put("exp_locustag", doc.get("refseq_locus_tag"));
            feature.put("exp_mutant", doc.get("mutant"));
            feature.put("exp_name", doc.get("expname"));
            feature.put("exp_organism", doc.get("organism"));
            feature.put("exp_pavg", doc.get("avg_intensity"));
            feature.put("exp_platform", doc.get("")); // ??
            feature.put("exp_pratio", doc.get("log_ratio"));
            feature.put("exp_samples", doc.get("")); // ??
            feature.put("exp_strain", doc.get("")); // ??
            feature.put("exp_timepoint", doc.get("timepoint"));
            feature.put("exp_zscore", doc.get("z_score"));
            // feature.put("figfam_id", doc.get("")); // ??
            feature.put("locus_tag", doc.get("alt_locus_tag"));
            feature.put("feature_id", doc.get("feature_id"));
            feature.put("pid", doc.get("pid"));
            feature.put("pmid", doc.get("pmid"));

            features.add(feature);
        }
        jsonResult.put("features", features);

        Map facets = (Map) resp.get("facet_counts");

        Map facetRanges = (Map) facets.get("facet_ranges");

        if (facetRanges.containsKey("log_ratio")) {
            Map facetLogRatio = (Map) facetRanges.get("log_ratio");
            final int before = (Integer) facetLogRatio.get("before");
            final int after = (Integer) facetLogRatio.get("after");
            Map facetRangeLogRatio = (Map) facetLogRatio.get("counts");

            List<JSONObject> list = new ArrayList<>();

            for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetRangeLogRatio.entrySet()) {
                JSONObject json = new JSONObject();
                json.put("category", entry.getKey());
                json.put("count", entry.getValue());

                list.add(json);
            }

            boolean hasMinBucket = false;
            boolean hasMaxBucket = false;
            for (JSONObject entry : list) {
                if (entry.get("category").equals("-2.0")) {
                    entry.put("count", ((Integer) entry.get("count") + before));
                    hasMinBucket = true;
                } else if (entry.get("category").equals("2.0")) {
                    entry.put("count", ((Integer) entry.get("count") + after));
                    hasMaxBucket = true;
                }
            }
            if (!hasMinBucket) {
                JSONObject json = new JSONObject();
                json.put("category", "-2.0");
                json.put("count", before);
                list.add(json);
            }
            if (!hasMaxBucket) {
                JSONObject json = new JSONObject();
                json.put("category", "2.0");
                json.put("count", after);
                list.add(json);
            }

            jsonResult.put("log_ratio", list);
        }

        if (facetRanges.containsKey("z_score")) {
            Map facetZscore = (Map) facetRanges.get("z_score");
            final int before = (Integer) facetZscore.get("before");
            final int after = (Integer) facetZscore.get("after");
            Map facetRangeZscore = (Map) facetZscore.get("counts");

            List<JSONObject> list = new ArrayList<>();
            for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetRangeZscore.entrySet()) {
                JSONObject json = new JSONObject();
                json.put("category", entry.getKey());
                json.put("count", entry.getValue());

                list.add(json);
            }

            boolean hasMinBucket = false;
            boolean hasMaxBucket = false;
            for (JSONObject entry : list) {
                if (entry.get("category").equals("-2.0")) {
                    entry.put("count", ((Integer) entry.get("count") + before));
                    hasMinBucket = true;
                } else if (entry.get("category").equals("2.0")) {
                    entry.put("count", ((Integer) entry.get("count") + after));
                    hasMaxBucket = true;
                }
            }
            if (!hasMinBucket) {
                JSONObject json = new JSONObject();
                json.put("category", "-2.0");
                json.put("count", before);
                list.add(json);
            }
            if (!hasMaxBucket) {
                JSONObject json = new JSONObject();
                json.put("category", "2.0");
                json.put("count", after);
                list.add(json);
            }

            jsonResult.put("z_score", list);
        }

        Map facetFields = (Map) facets.get("facet_fields");

        // strain
        if (facetFields.containsKey("strain")) {
            Map facetStrain = (Map) facetFields.get("strain");
            List<JSONObject> list = new ArrayList<>();
            for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetStrain.entrySet()) {
                JSONObject json = new JSONObject();
                json.put("category", entry.getKey());
                json.put("count", entry.getValue());

                list.add(json);
            }
            jsonResult.put("strain", list);
        }

        // mutant
        if (facetFields.containsKey("mutant")) {
            Map facetMutant = (Map) facetFields.get("mutant");
            List<JSONObject> list = new ArrayList<>();
            for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetMutant.entrySet()) {
                JSONObject json = new JSONObject();
                json.put("category", entry.getKey());
                json.put("count", entry.getValue());

                list.add(json);
            }
            jsonResult.put("mutant", list);
        }

        // condition
        if (facetFields.containsKey("condition")) {
            Map facetCondition = (Map) facetFields.get("condition");
            List<JSONObject> list = new ArrayList<>();
            for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetCondition.entrySet()) {
                JSONObject json = new JSONObject();
                json.put("category", entry.getKey());
                json.put("count", entry.getValue());

                list.add(json);
            }
            jsonResult.put("condition", list);
        }
    } catch (IOException e) {
        LOGGER.error(e.getMessage(), e);
    }

    return jsonResult;
}

From source file:edu.vt.vbi.patric.portlets.TranscriptomicsGeneExp.java

License:Apache License

@SuppressWarnings("unchecked")
private JSONObject processCorrelation(ResourceRequest request) {

    String featureId = request.getParameter("featureId");
    String cutoffValue = request.getParameter("cutoffValue");
    String cutoffDir = request.getParameter("cutoffDir");

    JSONObject jsonResult = new JSONObject();
    DataApiHandler dataApi = new DataApiHandler(request);

    GenomeFeature feature = dataApi.getFeature(featureId);
    Map<String, Map<String, Object>> correlationMap = new HashMap<>();
    int numFound = 0;

    try {/*w  w  w .  j a  v a 2 s.c o  m*/
        SolrQuery query = new SolrQuery("genome_id:" + feature.getGenomeId());
        query.setFilterQueries(
                "{!correlation fieldId=refseq_locus_tag fieldCondition=pid fieldValue=log_ratio srcId="
                        + feature.getRefseqLocusTag() + " filterCutOff=" + cutoffValue + " filterDir="
                        + cutoffDir.substring(0, 3) + " cost=101}");
        query.setRows(0).set("json.nl", "map");

        LOGGER.trace("[{}] {}", SolrCore.TRANSCRIPTOMICS_GENE.getSolrCoreName(), query.toString());
        String apiResponse = dataApi.solrQuery(SolrCore.TRANSCRIPTOMICS_GENE, query);

        Map resp = jsonReader.readValue(apiResponse);
        List<Map> transcriptomicsGenes = (List) resp.get("correlation");

        numFound = transcriptomicsGenes.size();

        for (Map doc : transcriptomicsGenes) {
            correlationMap.put(doc.get("id").toString(), doc);
        }
    } catch (IOException e) {
        LOGGER.error(e.getMessage(), e);
    }

    jsonResult.put("total", numFound);
    JSONArray results = new JSONArray();

    if (!correlationMap.isEmpty()) {
        try {
            SolrQuery query = new SolrQuery(
                    "refseq_locus_tag:(" + StringUtils.join(correlationMap.keySet(), " OR ")
                            + ") AND genome_id:" + feature.getGenomeId());
            query.setFilterQueries("annotation:PATRIC AND feature_type:CDS");
            query.setFields(
                    "genome_id,genome_name,accession,feature_id,start,end,strand,feature_type,annotation,alt_locus_tag,refseq_locus_tag,patric_id,na_length,aa_length,protein_id,gene,product");
            query.setRows(numFound);

            LOGGER.trace("[{}] {}", SolrCore.FEATURE.getSolrCoreName(), query.toString());
            String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query);

            Map resp = jsonReader.readValue(apiResponse);
            Map respBody = (Map) resp.get("response");

            List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"),
                    GenomeFeature.class);

            for (GenomeFeature f : features) {
                JSONObject obj = new JSONObject();
                obj.put("genome_id", f.getGenomeId());
                obj.put("genome_name", f.getGenomeName());
                obj.put("accession", f.getAccession());
                obj.put("feature_id", f.getId());
                obj.put("alt_locus_tag", f.getAltLocusTag());
                obj.put("refseq_locus_tag", f.getRefseqLocusTag());
                obj.put("patric_id", f.getPatricId());
                obj.put("gene", f.getGene());
                obj.put("annotation", f.getAnnotation());
                obj.put("feature_type", f.getFeatureType());
                obj.put("start", f.getStart());
                obj.put("end", f.getEnd());
                obj.put("na_length", f.getNaSequenceLength());
                obj.put("strand", f.getStrand());
                obj.put("protein_id", f.getProteinId());
                obj.put("aa_length", f.getProteinLength());
                obj.put("product", f.getProduct());

                Map<String, Object> corr = correlationMap.get(f.getRefseqLocusTag());
                obj.put("correlation", corr.get("correlation"));
                obj.put("count", corr.get("conditions"));

                results.add(obj);
            }
        } catch (IOException e) {
            LOGGER.error(e.getMessage(), e);
        }
    }
    jsonResult.put("results", results);

    return jsonResult;
}

From source file:edu.vt.vbi.patric.portlets.WorkspacePortlet.java

License:Apache License

@SuppressWarnings("unchecked")
public void serveResource(ResourceRequest request, ResourceResponse response)
        throws PortletException, IOException {
    String action_type = request.getParameter("action_type");
    String action = request.getParameter("action");

    if (action_type != null && action != null) {

        if (action_type.equals("WSSupport")) {

            switch (action) {
            case "inlinestatus": {

                String linkWorkspace = "";
                if (isLoggedIn(request)) {
                    linkWorkspace = "<a class=\"arrow-white-e\" href=\"/workspace/\">WORKSPACE: HOME</a>";
                }//from  w  w w. j  av a 2 s  .c o m

                response.setContentType("text/plain");
                PrintWriter writer = response.getWriter();
                writer.write(linkWorkspace);
                writer.close();
                break;
            }
            case "getGenomeGroupList": {
                JSONArray res = new JSONArray();

                if (isLoggedIn(request)) {
                    String token = getAuthorizationToken(request);
                    String pathGenomeGroup = getUserWorkspacePath(request, DEFAULT_WORKSPACE_NAME)
                            + "/Genome Groups";

                    try {
                        DataApiHandler dataApi = new DataApiHandler(request);
                        Workspace serviceWS = new Workspace(WORKSPACE_API_URL, token);
                        list_params params = new list_params();
                        params.paths = Arrays.asList(pathGenomeGroup);
                        Map<String, List<ObjectMeta>> resp = serviceWS.ls(params);

                        List<ObjectMeta> groupList = resp.get(pathGenomeGroup);

                        // sort by name
                        Comparator comparator = new GenomeGroupNameComparator();
                        Collections.sort(groupList, comparator);

                        JSONParser jsonParser = new JSONParser();

                        for (ObjectMeta group : groupList) {
                            LOGGER.trace("reading: {},{},{},{},{},{},{}", group.e_1, group.e_2, group.e_3,
                                    group.e_5, group.e_7, group.e_8, group.e_9);

                            if ("genome_group".equals(group.e_2)) {
                                JSONObject grp = new JSONObject();
                                String genomeGroupId = group.e_5; // e_5, object id
                                grp.put("id", genomeGroupId);
                                grp.put("name", group.e_1); // e_1, object name
                                grp.put("leaf", false);
                                grp.put("collapsed", true);

                                JSONArray children = new JSONArray();
                                // get genome associated in this group
                                get_params gp = new get_params();
                                gp.objects = Arrays.asList(group.e_3 + group.e_1); // e_3, path
                                gp.metadata_only = 0;
                                gp.adminmode = 0;

                                LOGGER.trace("requesting.. {}", group.e_3 + group.e_1);

                                try {
                                    List<Workspace_tuple_2> r = serviceWS.get(gp);

                                    for (Workspace_tuple_2 item : r) {
                                        if (item.e_2 != null) {

                                            JSONObject groupInfo = (JSONObject) jsonParser.parse(item.e_2); // objectMeta
                                            List<String> genomeIdList = (List<String>) ((JSONObject) groupInfo
                                                    .get("id_list")).get("genome_id");
                                            Set<String> genomeIdSet = new HashSet<>(genomeIdList);
                                            genomeIdSet.remove("");

                                            SolrQuery query = new SolrQuery("genome_id:("
                                                    + StringUtils.join(genomeIdSet, " OR ") + ")");
                                            query.setRows(10000).addField("genome_id,genome_name,taxon_id");

                                            LOGGER.trace("[{}] {}", SolrCore.GENOME.getSolrCoreName(), query);
                                            String apiResponse = dataApi.solrQuery(SolrCore.GENOME, query);
                                            Map respApi = jsonReader.readValue(apiResponse);
                                            Map respBody = (Map) respApi.get("response");
                                            List<Genome> genomes = dataApi.bindDocuments(
                                                    (List<Map>) respBody.get("docs"), Genome.class);

                                            Map<String, Genome> genomeHash = new LinkedHashMap<>();
                                            for (Genome g : genomes) {
                                                genomeHash.put(g.getId(), g);
                                            }

                                            for (String genomeId : genomeIdSet) {
                                                Genome genome = genomeHash.get(genomeId);

                                                if (genome != null) {
                                                    JSONObject leafGenome = new JSONObject();
                                                    leafGenome.put("id", genomeId);
                                                    leafGenome.put("parentID", genomeGroupId);
                                                    leafGenome.put("name", genome.getGenomeName());
                                                    leafGenome.put("leaf", true);
                                                    leafGenome.put("genome_id", genomeId);
                                                    leafGenome.put("taxon_id", genome.getTaxonId());

                                                    children.add(leafGenome);
                                                }
                                            }
                                        }
                                    }

                                    grp.put("children", children);
                                    res.add(grp);
                                } catch (Exception ex) {
                                    LOGGER.error(ex.getMessage(), ex);
                                }
                            }
                        }
                    } catch (Exception e) {
                        LOGGER.error(e.getMessage(), e);
                    }
                }

                response.setContentType("application/json");
                PrintWriter writer = response.getWriter();
                res.writeJSONString(writer);
                writer.close();
                break;
            }
            case "getGroupList": {
                String grp_type = request.getParameter("group_type");
                JSONArray res = new JSONArray();

                String grp_path = getUserWorkspacePath(request, DEFAULT_WORKSPACE_NAME);
                String grp_obj_type;
                switch (grp_type) {
                case "Genome":
                    grp_path += "/Genome Groups";
                    grp_obj_type = "genome_group";
                    break;
                case "Feature":
                    grp_path += "/Feature Groups";
                    grp_obj_type = "feature_group";
                    break;
                case "ExpressionExperiment":
                    grp_path += "/Experiment Groups";
                    grp_obj_type = "experiment_group";
                    break;
                default:
                    grp_obj_type = "";
                    //
                }

                String token = getAuthorizationToken(request);
                Workspace serviceWS = new Workspace(WORKSPACE_API_URL, token);
                list_params params = new list_params();
                params.paths = Arrays.asList(grp_path);

                try {
                    Map<String, List<ObjectMeta>> resp = serviceWS.ls(params);
                    List<ObjectMeta> groupList = resp.get(grp_path);

                    for (ObjectMeta group : groupList) {
                        String groupId = group.e_5; // e_5, object id
                        String groupName = group.e_1; // e_1, object name
                        // TODO: how to read group description???

                        if (grp_obj_type.equals(group.e_2)) {
                            JSONObject grp = new JSONObject();
                            grp.put("name", groupName);
                            grp.put("description", "");
                            grp.put("tag", "");
                            grp.put("id", groupId);

                            res.add(grp);
                        }
                    }
                } catch (Exception e) {
                    LOGGER.error(e.getMessage(), e);
                }

                response.setContentType("application/json");
                PrintWriter writer = response.getWriter();
                res.writeJSONString(writer);
                writer.close();
                break;
            }
            default:
                response.setContentType("application/json");
                response.getWriter().write("sorry");
                response.getWriter().close();
                break;
            }
        } else if (action_type.equals("GSESupport")) {
            //            if (action.equals("group_list")) {
            //               // PersistentCartGroup group = null;
            //               JSONArray groups = ws.getGroups();
            //               StringBuilder output = new StringBuilder();
            //
            //               output.append("<group_set>\n");
            //               for (Object aGroup : groups) {
            //                  JSONObject group = (JSONObject) aGroup;
            //
            //                  output.append("\t<group>\n");
            //                  output.append("\t\t<idx>").append(group.get("tagId")).append("</idx>\n");
            //                  output.append("\t\t<name>").append(group.get("name")).append("</name>\n");
            //                  output.append("\t</group>\n");
            //               }
            //               output.append("</group_set>");
            //
            //               response.setContentType("text/xml");
            //               response.getWriter().write(output.toString());
            //               response.getWriter().close();
            //            }
            //            else if (action.equals("groups")) {
            //               String strTagIds = request.getParameter("groupIds");
            //               JSONObject filter = new JSONObject();
            //               filter.put("key", "tagId");
            //               filter.put("value", strTagIds);
            //
            //               JSONArray groups = ws.getGroups(filter);
            //               StringBuilder o = new StringBuilder();
            //
            //               o.append("<group_set>\n");
            //
            //               for (Object aGroup : groups) {
            //                  JSONObject group = (JSONObject) aGroup;
            //
            //                  o.append("\t<group>\n");
            //                  o.append("\t\t<name>").append(group.get("name")).append("</name>\n");
            //                  o.append("\t\t<description>").append(((group.get("desc") != null) ? group.get("desc") : "")).append("</description>\n");
            //                  o.append("\t\t<members>\n");
            //
            //                  List<JSONObject> members = ws.findMappingByTagId(Integer.parseInt(group.get("tagId").toString()));
            //
            //                  Set<Integer> trackIds = new HashSet<>();
            //                  for (JSONObject member : members) {
            //                     trackIds.add(Integer.parseInt(member.get("trackId").toString()));
            //                  }
            //                  JSONArray tracks = ws.getTracks(trackIds);
            //                  for (Object track : tracks) {
            //                     JSONObject member = (JSONObject) track;
            //                     o.append(member.get("internalId")).append("\n");
            //                  }
            //
            //                  o.append("\t\t</members>\n");
            //                  o.append("\t</group>\n");
            //               }
            //               o.append("</group_set>");
            //
            //               //
            //               response.setContentType("text/xml");
            //               response.getWriter().write(o.toString());
            //               response.getWriter().close();
            //            }
            //            else if (action.equals("items")) {
            //
            //               Set<Integer> trackIds = new HashSet<>();
            //               String strTagIds = request.getParameter("groupIds");
            //               String groupType;
            //               String _tagId = null;
            //
            //               if (strTagIds.contains(",")) {
            //                  for (String tagId : strTagIds.split(",")) {
            //                     List<JSONObject> mappings = ws.findMappingByTagId(Integer.parseInt(tagId));
            //                     for (JSONObject mapping : mappings) {
            //                        trackIds.add(Integer.parseInt(mapping.get("trackId").toString()));
            //                     }
            //                     _tagId = tagId;
            //                  }
            //               }
            //               else {
            //                  List<JSONObject> mappings = ws.findMappingByTagId(Integer.parseInt(strTagIds));
            //                  for (JSONObject mapping : mappings) {
            //                     trackIds.add(Integer.parseInt(mapping.get("trackId").toString()));
            //                  }
            //                  _tagId = strTagIds;
            //               }
            //
            //               JSONArray tracks = ws.getTracks(trackIds);
            //
            //               // get group type
            //               JSONObject filter = new JSONObject();
            //               filter.put("key", "tagId");
            //               filter.put("value", _tagId);
            //               JSONArray gr = ws.getTags(filter);
            //               groupType = ((JSONObject) gr.get(0)).get("type").toString();
            //
            //               JSONObject res;
            //               Map<String, Object> key = new HashMap<>();
            //               key.put("tracks", tracks);
            //
            //               StringBuilder out_sb = new StringBuilder();
            //
            //               if (groupType.equals("Feature")) {
            //                  res = solr.getFeaturesByID(key);
            //                  JSONArray items = (JSONArray) res.get("results");
            //
            //                  out_sb.append(
            //                        "Feature ID\tGenome Name\tAccession\tPATRIC ID\tRefSeq Locus Tag\tAlt Locus Tag\tAnnotation\tFeature Type\tStart\tEnd\tLength(NT)\tStrand\t");
            //                  out_sb.append("Protein Id\tLength(AA)\tGene Symbol\tProduct\n");
            //
            //                  for (Object aItem : items) {
            //                     JSONObject item = (JSONObject) aItem;
            //                     out_sb.append(item.get("feature_id")).append("\t");
            //                     out_sb.append(item.get("genome_name")).append("\t");
            //                     out_sb.append(item.get("accession")).append("\t");
            //                     out_sb.append(item.get("seed_id")).append("\t");
            //                     out_sb.append((item.get("refseq_locus_tag") != null ? item.get("refseq_locus_tag") : "")).append("\t");
            //                     out_sb.append((item.get("alt_locus_tag") != null ? item.get("alt_locus_tag") : "")).append("\t");
            //                     out_sb.append(item.get("annotation")).append("\t");
            //                     out_sb.append(item.get("feature_type")).append("\t");
            //                     out_sb.append(item.get("start")).append("\t");
            //                     out_sb.append(item.get("end")).append("\t");
            //                     out_sb.append(item.get("na_length")).append("\t");
            //                     out_sb.append(item.get("strand")).append("\t");
            //                     out_sb.append((item.get("protein_id") != null ? item.get("protein_id") : "")).append("\t");
            //                     out_sb.append(item.get("aa_length")).append("\t");
            //                     out_sb.append((item.get("gene") != null ? item.get("gene") : "")).append("\t");
            //                     out_sb.append(item.get("product")).append("\n");
            //                  }
            //               }
            //               else if (groupType.equals("Genome")) {
            //                  res = solr.getGenomesByID(key);
            //                  JSONArray items = (JSONArray) res.get("results");
            //
            //                  out_sb.append("Genome ID\tGenome Name\tStatus\tHost\tDisease\tIsolation Country\tCollection Date\tCompletion Date\n");
            //
            //                  for (Object aItem : items) {
            //                     JSONObject item = (JSONObject) aItem;
            //                     out_sb.append(item.get("genome_id")).append("\t");
            //                     out_sb.append(item.get("genome_name")).append("\t");
            //                     out_sb.append(item.get("genome_status")).append("\t");
            //                     out_sb.append((item.get("host_name") != null ? item.get("host_name") : "")).append("\t");
            //                     out_sb.append((item.get("disease") != null ? item.get("disease") : "")).append("\t");
            //                     out_sb.append((item.get("isolation_country") != null ? item.get("isolation_country") : "")).append("\t");
            //                     out_sb.append((item.get("collection_date") != null ? item.get("collection_date") : "")).append("\t");
            //                     out_sb.append((item.get("completion_date") != null ? item.get("completion_date") : "")).append("\n");
            //                  }
            //               }
            //               else if (groupType.equals("ExpressionExperiment")) {
            //                  List<String> collectionIds = new ArrayList<>();
            //
            //                  JSONArray exptracks;
            //                  JSONArray tracksPATRIC = new JSONArray();
            //
            //                  if (key.containsKey("tracks")) {
            //                     exptracks = (JSONArray) key.get("tracks");
            //
            //                     if (exptracks.size() > 0) {
            //                        for (Object exptrack : exptracks) {
            //                           JSONObject tr = (JSONObject) exptrack;
            //                           try {
            //                              Integer.parseInt(tr.get("internalId").toString());
            //                              tracksPATRIC.add(tr);
            //                           }
            //                           catch (NumberFormatException nfe) {
            //                              collectionIds.add(tr.get("internalId").toString());
            //                           }
            //                        }
            //                     }
            //                  }
            //
            //                  out_sb.append("Experiment Id\tSource\tTitle\tData Type\tAccession\n");
            //
            //                  if (tracksPATRIC.size() > 0) {
            //                     Map<String, Object> keyPATRIC = new HashMap<>();
            //                     keyPATRIC.put("tracks", tracksPATRIC);
            //                     res = solr.getExperimentsByID(keyPATRIC);
            //
            //                     JSONArray items = (JSONArray) res.get("results");
            //                     for (Object aItem : items) {
            //                        JSONObject item = (JSONObject) aItem;
            //                        out_sb.append(item.get("expid")).append("\t");
            //                        out_sb.append("PATRIC\t");
            //                        out_sb.append(item.get("title")).append("\t");
            //                        out_sb.append("Transcriptomics\t"); // TODO: modify later
            //                        out_sb.append((item.get("accession") != null ? item.get("accession") : "")).append("\n");
            //                     }
            //                  }
            //
            //                  if (collectionIds.size() > 0) {
            //                     PolyomicHandler polyomic = getPolyomicHandler(request);
            //                     res = polyomic.getExperiments(collectionIds);
            //
            //                     JSONArray items = (JSONArray) res.get("results");
            //                     for (Object aItem : items) {
            //                        JSONObject item = (JSONObject) aItem;
            //                        out_sb.append(item.get("expid")).append("\t");
            //                        out_sb.append("me\t");
            //                        out_sb.append(item.get("title")).append("\t");
            //                        out_sb.append((item.get("data_type") != null ? item.get("data_type") : "")).append("\t");
            //                        out_sb.append((item.get("accession") != null ? item.get("accession") : "")).append("\n");
            //                     }
            //                  }
            //               }
            //               else {
            //                  // error
            //               }
            //
            //               response.setContentType("text/plain");
            //               response.getWriter().write(out_sb.toString());
            //               response.getWriter().close();
            //            }
        } else if (action_type.equals("LoginStatus")) {
            if (action.equals("getLoginStatus")) {
                if (!isLoggedIn(request)) {
                    response.setContentType("text/plain");
                    response.getWriter().write("false");
                    response.getWriter().close();
                } else {
                    response.setContentType("text/plain");
                    response.getWriter().write("true");
                    response.getWriter().close();
                }
            }
        } else if (action_type.equals("HTTPProvider")) {

            UIPreference uiPref = getValidUIPreference(request);

            switch (action) {
            case "storage":
                if (request.getMethod().equals("GET")) {

                    String strUIPref = uiPref.getStateList().toJSONString();

                    response.getWriter().write(strUIPref);
                    response.getWriter().close();
                } else if (request.getMethod().equals("POST")) {

                    JSONParser parser = new JSONParser();
                    JSONObject param;
                    JSONArray params;
                    try {
                        Object rt = parser.parse(request.getReader());
                        if (rt instanceof JSONObject) {
                            param = (JSONObject) rt;
                            uiPref.setState(param);
                        } else if (rt instanceof JSONArray) {
                            params = (JSONArray) rt;
                            uiPref.setStateList(params);
                        } else {
                            LOGGER.error(rt.toString());
                        }

                        this.saveUIPreference(request, uiPref);
                    } catch (ParseException e) {
                        LOGGER.error(e.getMessage(), e);
                    }

                    response.getWriter().write("");
                    response.getWriter().close();
                }
                break;
            case "remove":
                if (request.getParameter("name") != null) {
                    uiPref.resetState(request.getParameter("name"));
                    this.saveUIPreference(request, uiPref);
                }

                response.getWriter().write("");
                response.getWriter().close();
                break;
            case "reset":
                uiPref.reset();
                this.saveUIPreference(request, uiPref);

                response.getWriter().write("");
                response.getWriter().close();
                break;
            }
        }
    }
}

From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java

License:Apache License

public JSONArray getSyntonyOrder(ResourceRequest request) {
    String genomeId = request.getParameter("syntonyId");
    final String familyType = request.getParameter("familyType");
    final String familyId = familyType + "_id";
    JSONArray json_arr = null;/* ww w  . ja  v  a 2s.  c o  m*/

    if (genomeId != null) {

        DataApiHandler dataApi = new DataApiHandler(request);
        long end_ms, start_ms = System.currentTimeMillis();

        SolrQuery solr_query = new SolrQuery("genome_id:" + genomeId);
        //         solr_query.addFilterQuery("end:[3200 TO 4300] OR end:[4400 TO 4490] OR end:[4990 TO 4999]");
        solr_query.addFilterQuery("annotation:PATRIC AND feature_type:CDS AND " + familyId + ":[* TO *]");
        solr_query.addField(familyId);

        solr_query.setRows(DataApiHandler.MAX_ROWS);
        solr_query.addSort("accession", SolrQuery.ORDER.asc);
        solr_query.addSort("start", SolrQuery.ORDER.asc);

        LOGGER.debug("getSyntonyOrder() [{}] {}", SolrCore.FEATURE.getSolrCoreName(), solr_query);

        int orderSet = 0;
        List<SyntonyOrder> collect = new ArrayList<>();
        try {
            String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, solr_query);

            Map resp = jsonReader.readValue(apiResponse);
            Map respBody = (Map) resp.get("response");

            List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"),
                    GenomeFeature.class);

            end_ms = System.currentTimeMillis();

            LOGGER.debug("Genome anchoring query time - {}", (end_ms - start_ms));

            start_ms = System.currentTimeMillis();
            for (GenomeFeature feature : features) {
                if (familyType.equals("figfam") && feature.hasFigfamId()) {
                    collect.add(new SyntonyOrder(feature.getFigfamId(), orderSet));
                    ++orderSet;
                } else if (familyType.equals("plfam") && feature.hasPlfamId()) {
                    collect.add(new SyntonyOrder(feature.getPlfamId(), orderSet));
                    ++orderSet;
                } else if (familyType.equals("pgfam") && feature.hasPgfamId()) {
                    collect.add(new SyntonyOrder(feature.getPgfamId(), orderSet));
                    ++orderSet;
                }
            }

        } catch (IOException e) {
            LOGGER.error(e.getMessage(), e);
        }

        if (0 < collect.size()) {
            json_arr = new JSONArray();
            SyntonyOrder[] orderSave = new SyntonyOrder[collect.size()];
            collect.toArray(orderSave);// orderSave is array in order of Figfam ID
            SyntonyOrder[] toSort = new SyntonyOrder[collect.size()];
            System.arraycopy(orderSave, 0, toSort, 0, toSort.length);// copy the array so it can be sorted based on position in the genome
            Arrays.sort(toSort); // sort based on figfamIDs
            SyntonyOrder start = toSort[0];
            for (int i = 1; i < toSort.length; i++) {
                start = start.mergeSameId(toSort[i]);// set syntonyAt -1 to those objects which occur multiple times
            }
            orderSet = 0;
            for (SyntonyOrder anOrderSave : orderSave) {
                orderSet = (anOrderSave).compressAt(orderSet); // adjusts the syntonyAt number to get the correct
                // column based on replicon with -1's removed
            }
            for (SyntonyOrder aToSort : toSort) {// writes all those that don't have -1's
                (aToSort).write(json_arr);
            }
        }

        end_ms = System.currentTimeMillis();

        LOGGER.debug("Genome anchoring post processing time - {} ms", (end_ms - start_ms));
    }

    return json_arr;
}

From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java

License:Apache License

@SuppressWarnings("unchecked")
public void getLocusTags(ResourceRequest request, PrintWriter writer) {

    JSONArray arr = new JSONArray();

    DataApiHandler dataApi = new DataApiHandler(request);
    try {/*  w ww .  jav  a2  s  .c o m*/
        final String familyType = request.getParameter("familyType");
        final String familyId = familyType + "_id";

        SolrQuery solr_query = new SolrQuery();
        solr_query.setQuery("genome_id:(" + request.getParameter("genomeIds") + ") AND " + familyId + ":("
                + request.getParameter("familyIds") + ")");
        solr_query.setFilterQueries("annotation:PATRIC AND feature_type:CDS");
        solr_query.addField("feature_id,patric_id,refseq_locus_tag,alt_locus_tag");
        solr_query.setRows(DataApiHandler.MAX_ROWS);

        LOGGER.debug("getLocusTags(): [{}] {}", SolrCore.FEATURE.toString(), solr_query);

        String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, solr_query);
        Map resp = jsonReader.readValue(apiResponse);
        Map respBody = (Map) resp.get("response");

        List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"),
                GenomeFeature.class);

        for (GenomeFeature feature : features) {
            arr.add(feature.toJSONObject());
        }
    } catch (IOException e) {
        LOGGER.error(e.getMessage(), e);
    }

    JSONObject data = new JSONObject();
    data.put("data", arr);
    try {
        data.writeJSONString(writer);
    } catch (IOException e) {
        LOGGER.error(e.getMessage(), e);
    }
}

From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java

License:Apache License

@SuppressWarnings("unchecked")
public JSONArray getDetails(ResourceRequest request) throws IOException {

    JSONArray arr = new JSONArray();

    String genomeIds = request.getParameter("detailsGenomes");
    String familyIds = request.getParameter("detailsFamilyIds");
    String familyType = request.getParameter("familyType");

    LOGGER.debug("params for getDetails:{}", request.getParameterMap());
    final String familyId = familyType + "_id";

    SolrQuery query = new SolrQuery();
    query.setQuery("genome_id:(" + genomeIds + ") AND " + familyId + ":(" + familyIds + ")");
    query.setFields(StringUtils.join(DownloadHelper.getFieldsForFeatures(), ","));
    query.setFilterQueries("annotation:PATRIC AND feature_type:CDS");
    query.setRows(DataApiHandler.MAX_ROWS);

    LOGGER.debug("getDetails(): [{}] {}", SolrCore.FEATURE.getSolrCoreName(), query);

    String apiResponse = dataApiHandler.solrQuery(SolrCore.FEATURE, query);
    Map resp = jsonReader.readValue(apiResponse);
    Map respBody = (Map) resp.get("response");

    List<GenomeFeature> features = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"),
            GenomeFeature.class);

    for (GenomeFeature feature : features) {
        arr.add(feature.toJSONObject());
    }// w  w w .java 2s . c o m

    return arr;
}

From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java

License:Apache License

public String getGenomeIdsForTaxon(ResourceRequest request) throws IOException {
    String taxon = request.getParameter("taxonId");
    String genomeFilter = request.getParameter("genomeFilter");
    List<String> gIds = new ArrayList<>();

    SolrQuery query = new SolrQuery("patric_cds:[1 TO *] AND taxon_lineage_ids:" + taxon);
    if (genomeFilter != null && !genomeFilter.equals("")) {
        query.addFilterQuery(genomeFilter);
    }//ww w .  j a  v a2  s  .  c om
    query.addField("genome_id");
    query.setSort("genome_name", SolrQuery.ORDER.asc);
    query.setRows(DataApiHandler.MAX_ROWS);

    LOGGER.trace("getGenomeIdsForTaxon: [{}] {}", SolrCore.GENOME.getSolrCoreName(), query);

    String apiResponse = dataApiHandler.solrQuery(SolrCore.GENOME, query);
    Map resp = jsonReader.readValue(apiResponse);
    Map respBody = (Map) resp.get("response");

    List<Genome> genomes = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"), Genome.class);

    for (final Genome g : genomes) {
        gIds.add(g.getId());
    }

    // TODO: remove this when data API limit is removed
    if (gIds.size() == 25000) {
        query.setStart(25000);

        apiResponse = dataApiHandler.solrQuery(SolrCore.GENOME, query);
        resp = jsonReader.readValue(apiResponse);
        respBody = (Map) resp.get("response");

        genomes = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"), Genome.class);

        for (final Genome g : genomes) {
            gIds.add(g.getId());
        }
    }

    return StringUtils.join(gIds, ",");
}

From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java

License:Apache License

private SequenceData[] getFeatureSequences(String[] featureIds) throws IOException {
    List<SequenceData> collect = new ArrayList<>();

    SolrQuery query = new SolrQuery("feature_id:(" + StringUtils.join(featureIds, " OR ") + ")");
    query.addField("genome_name,patric_id,refseq_locus_tag,alt_locus_tag,aa_sequence");
    query.setRows(featureIds.length);

    LOGGER.trace("getFeatureSequences: [{}] {}", SolrCore.FEATURE.getSolrCoreName(), query);
    String apiResponse = dataApiHandler.solrQuery(SolrCore.FEATURE, query);
    Map resp = jsonReader.readValue(apiResponse);
    Map respBody = (Map) resp.get("response");

    List<GenomeFeature> features = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"),
            GenomeFeature.class);

    for (GenomeFeature feature : features) {
        String locusTag = "";
        if (feature.hasPatricId()) {
            locusTag = feature.getPatricId();
        } else {/*from  ww w.  j  a  va 2  s .  com*/
            if (feature.hasRefseqLocusTag()) {
                locusTag = feature.getRefseqLocusTag();
            } else {
                if (feature.hasAltLocusTag()) {
                    locusTag = feature.getAltLocusTag();
                }
            }
        }
        collect.add(
                new SequenceData(feature.getGenomeName().replace(" ", "_"), locusTag, feature.getAaSequence()));
    }

    SequenceData[] result = new SequenceData[collect.size()];
    collect.toArray(result);
    return result;
}

From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java

License:Apache License

public void getFeatureIds(ResourceRequest request, PrintWriter writer, String keyword) {

    try {//from  w  ww  .  j  a  v  a 2  s.c  om
        DataApiHandler dataApi = new DataApiHandler(request);
        SolrQuery query = new SolrQuery(keyword);
        query.addField("feature_id");
        query.setRows(DataApiHandler.MAX_ROWS);

        String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query);
        Map resp = jsonReader.readValue(apiResponse);
        Map respBody = (Map) resp.get("response");

        List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"),
                GenomeFeature.class);

        List<String> featureIds = new ArrayList<>();
        for (GenomeFeature feature : features) {
            featureIds.add(feature.getId());
        }

        writer.write(StringUtils.join(featureIds, ","));
    } catch (IOException e) {
        LOGGER.debug(e.getMessage(), e);
    }
}