All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.molgenis.wikipathways.utils.Utils Maven / Gradle / Ivy

There is a newer version: 5.2.2
Show newest version
// WikiPathways Java library,
// Copyright 2014 WikiPathways
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

package org.molgenis.wikipathways.utils;

import org.apache.commons.codec.binary.Base64;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.molgenis.wikipathways.client.*;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Utils
{

	public static Document connect(String url, HttpClient client) throws IOException, JDOMException
	{
		HttpGet httpget = new HttpGet(url);
		HttpResponse response = client.execute(httpget);
		HttpEntity entity = response.getEntity();
		InputStream instream = entity.getContent();
		try
		{
			String content = "";
			BufferedReader reader = new BufferedReader(new InputStreamReader(instream, "UTF-8"));
			String line;
			while ((line = reader.readLine()) != null)
			{
				content = content + line + "\n";
			}
			reader.close();

			SAXBuilder jdomBuilder = new SAXBuilder();
			Document jdomDocument = jdomBuilder.build(new StringReader(content));
			return jdomDocument;
		}
		finally
		{
			instream.close();
		}
	}

	public static String update(String url, HttpClient client, Map attributes) throws Exception
	{

		HttpPost httpost = new HttpPost(url);
		// Adding all form parameters in a List of type NameValuePair
		List nvps = new ArrayList();
		for (String key : attributes.keySet())
		{
			nvps.add(new BasicNameValuePair(key, attributes.get(key)));
		}
		httpost.addHeader("Accept-Encoding", "application/xml");
		httpost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));
		HttpResponse response = client.execute(httpost);

		SAXBuilder jdomBuilder = new SAXBuilder();
		Document jdomDocument = jdomBuilder.build(response.getEntity().getContent());
		String success = jdomDocument.getRootElement().getChildText("success", WSNamespaces.NS1);
		return success;
	}

	public static WSPathwayInfo parseWSPathwayInfo(Element pathwayInfo)
	{

		String identifier = pathwayInfo.getChildText("id", WSNamespaces.NS2);
		String url = pathwayInfo.getChildText("url", WSNamespaces.NS2);
		String name = pathwayInfo.getChildText("name", WSNamespaces.NS2);
		String species = pathwayInfo.getChildText("species", WSNamespaces.NS2);
		String revision = pathwayInfo.getChildText("revision", WSNamespaces.NS2);

		return new WSPathwayInfo(identifier, url, name, species, revision);
	}

	public static WSIndexField parseWSIndexField(Element indexField)
	{
		String name = indexField.getChildText("name", WSNamespaces.NS2);
		String values = indexField.getChildText("values", WSNamespaces.NS2);
		String[] v = new String[1];
		v[0] = values;
		WSIndexField field = new WSIndexField(name, v);
		return field;
	}

	public static WSSearchResult parseWSSearchResult(Element searchResult)
	{
		WSSearchResult res = new WSSearchResult();
		String score = searchResult.getChildText("score", WSNamespaces.NS2);
		res.setScore(Double.parseDouble(score));

		@SuppressWarnings("unchecked")
		List fieldList = searchResult.getChildren("fields", WSNamespaces.NS2);
		WSIndexField[] fields = new WSIndexField[fieldList.size()];
		for (int i = 0; i < fieldList.size(); i++)
		{
			WSIndexField f = parseWSIndexField(fieldList.get(i));
			fields[i] = f;
		}
		res.setFields(fields);

		String id = searchResult.getChildText("id", WSNamespaces.NS2);
		String url = searchResult.getChildText("url", WSNamespaces.NS2);
		String name = searchResult.getChildText("name", WSNamespaces.NS2);
		String species = searchResult.getChildText("species", WSNamespaces.NS2);
		String revision = searchResult.getChildText("revision", WSNamespaces.NS2);

		res.setId(id);
		res.setName(name);
		res.setUrl(url);
		res.setSpecies(species);
		res.setRevision(revision);

		return res;
	}

	public static WSOntologyTerm parseOntologyTerm(Element term)
	{
		String ontology = term.getChildText("ontology", WSNamespaces.NS2);
		String id = term.getChildText("id", WSNamespaces.NS2);
		String name = term.getChildText("name", WSNamespaces.NS2);
		WSOntologyTerm ontTerm = new WSOntologyTerm(ontology, id, name);
		return ontTerm;
	}

	public static WSPathway parsePathway(Element pathway) throws UnsupportedEncodingException
	{
		String gpml = new String(Base64.decodeBase64(pathway.getChildText("gpml", WSNamespaces.NS2)), "UTF-8");
		String id = pathway.getChildText("id", WSNamespaces.NS2);
		String name = pathway.getChildText("name", WSNamespaces.NS2);
		String url = pathway.getChildText("url", WSNamespaces.NS2);
		String species = pathway.getChildText("species", WSNamespaces.NS2);
		String revision = pathway.getChildText("revision", WSNamespaces.NS2);
		WSPathway p = new WSPathway(gpml, id, url, name, species, revision);
		return p;
	}

	public static WSPathwayHistory parsePathwayHistory(Element hist)
	{
		String id = hist.getChildText("id", WSNamespaces.NS2);
		String url = hist.getChildText("url", WSNamespaces.NS2);
		String name = hist.getChildText("name", WSNamespaces.NS2);
		String species = hist.getChildText("species", WSNamespaces.NS2);
		String revision = hist.getChildText("revision", WSNamespaces.NS2);

		@SuppressWarnings("unchecked")
		List list = hist.getChildren("history", WSNamespaces.NS2);
		WSHistoryRow[] histRows = new WSHistoryRow[list.size()];
		for (int i = 0; i < list.size(); i++)
		{
			histRows[i] = Utils.parseHistoryRow(list.get(i));
		}

		return new WSPathwayHistory(histRows, id, url, name, species, revision);
	}

	public static WSHistoryRow parseHistoryRow(Element historyRow)
	{
		String revision = historyRow.getChildText("revision", WSNamespaces.NS2);
		String comment = historyRow.getChildText("comment", WSNamespaces.NS2);
		String user = historyRow.getChildText("user", WSNamespaces.NS2);
		String timestamp = historyRow.getChildText("timestamp", WSNamespaces.NS2);

		return new WSHistoryRow(revision, comment, user, timestamp);
	}

	public static WSCurationTagHistory parseCurationTagHistory(Element history)
	{
		String tagName = history.getChildText("tagName", WSNamespaces.NS2);
		String text = history.getChildText("text", WSNamespaces.NS2);
		String pathwayId = history.getChildText("pathwayId", WSNamespaces.NS2);
		String action = history.getChildText("action", WSNamespaces.NS2);
		String user = history.getChildText("user", WSNamespaces.NS2);
		String time = history.getChildText("time", WSNamespaces.NS2);

		return new WSCurationTagHistory(tagName, text, pathwayId, action, user, time);
	}

	public static WSCurationTag parseCurationTag(Element tag)
	{
		String name = tag.getChildText("name", WSNamespaces.NS2);
		String displayName = tag.getChildText("displayName", WSNamespaces.NS2);
		String text = tag.getChildText("text", WSNamespaces.NS2);
		String timeModified = tag.getChildText("timeModified", WSNamespaces.NS2);
		String userModified = tag.getChildText("userModified", WSNamespaces.NS2);

		WSPathwayInfo pathway = Utils.parseWSPathwayInfo(tag.getChild("pathway", WSNamespaces.NS2));

		WSCurationTag t = new WSCurationTag(name, displayName, pathway, pathway.getRevision(), text,
				Long.parseLong(timeModified), userModified);
		return t;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy