uk.ac.ebi.ep.pdbeadapter.PDBeRestService.java Source code

Java tutorial

Introduction

Here is the source code for uk.ac.ebi.ep.pdbeadapter.PDBeRestService.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package uk.ac.ebi.ep.pdbeadapter;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import uk.ac.ebi.ep.pdbeadapter.config.PDBeUrl;
import uk.ac.ebi.ep.pdbeadapter.experiment.PDBexperiments;
import uk.ac.ebi.ep.pdbeadapter.molecule.PDBmolecules;
import uk.ac.ebi.ep.pdbeadapter.publication.PDBePublications;
import uk.ac.ebi.ep.pdbeadapter.summary.PdbSearchResult;

/**
 *
 * @author joseph
 */
public class PDBeRestService {

    @Autowired
    private PDBeUrl pDBeUrl;

    private static final Logger LOGGER = Logger.getLogger(PDBeRestService.class);
    private final RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory());

    private ClientHttpRequestFactory clientHttpRequestFactory() {
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        return factory;
    }

    private PdbSearchResult getPdbSearchResult(String url) {
        PdbSearchResult results = restTemplate.getForObject(url.trim(), PdbSearchResult.class);
        return results;
    }

    public PdbSearchResult getPdbSummaryResults(String pdbId) {

        String url = pDBeUrl.getSummaryUrl() + pdbId;
        PdbSearchResult pdb = null;

        try {

            pdb = getPdbSearchResult(url.trim());
        } catch (Exception e) {
            LOGGER.error(e.getMessage(), e);
        }

        return pdb;

    }

    public PDBexperiments getPDBexperimentResults(String pdbId) {

        String url = pDBeUrl.getExperimentUrl() + pdbId;

        PDBexperiments experiments = null;
        try {
            experiments = restTemplate.getForObject(url.trim(), PDBexperiments.class);
        } catch (Exception e) {
            LOGGER.error(e.getMessage(), e);
        }

        return experiments;
    }

    public PDBePublications getPDBpublicationResults(String pdbId) {

        String url = pDBeUrl.getPublicationsUrl() + pdbId;

        PDBePublications publications = null;
        try {
            publications = restTemplate.getForObject(url.trim(), PDBePublications.class);
        } catch (Exception e) {
            LOGGER.error(e.getMessage(), e);
        }

        return publications;
    }

    public PDBmolecules getPDBmoleculeResults(String pdbId) {

        String url = pDBeUrl.getMoleculesUrl() + pdbId;

        PDBmolecules molecules = null;
        try {
            molecules = restTemplate.getForObject(url.trim(), PDBmolecules.class);
        } catch (Exception e) {
            LOGGER.error(e.getMessage(), e);
        }
        return molecules;
    }

    public String getStructuralDomain(String pdbId) {
        try {

            String url = pDBeUrl.getStructuralDomainUrl() + pdbId;

            //convert json to string 
            String json = IOUtils.toString(new URL(url));

            // create an ObjectMapper instance.
            ObjectMapper mapper = new ObjectMapper();
            // use the ObjectMapper to read the json string and create a tree
            JsonNode nodes = mapper.readTree(json);

            String homology = nodes.findValue("homology").textValue();

            return homology;
        } catch (IOException ex) {
            LOGGER.error(ex.getMessage(), ex);
        }
        return "";
    }

}