package com.k_int.npdb.util;

import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;

public class SOLRUtils {

	public static Document search(String url) {
		Document solrResultDocument = null;
		try {
			URL solr_url = new URL(url);
			HttpURLConnection http = (HttpURLConnection) solr_url
					.openConnection();

			// create a DocumentBuilderFactory and configure it
			DocumentBuilderFactory docFactory = DocumentBuilderFactory
					.newInstance();
			docFactory.setNamespaceAware(true);
			docFactory.setValidating(false);

			// create a DocumentBuilder that satisfies the constraints
			DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
			solrResultDocument = docBuilder.parse(http.getInputStream());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return solrResultDocument;
	}

	public static void writeOutputXML(Document doc, OutputStream output)
			throws Exception {
		DOMImplementationRegistry registry = DOMImplementationRegistry
				.newInstance();
		DOMImplementationLS impl = (DOMImplementationLS) registry
				.getDOMImplementation("LS");
		LSSerializer writer = impl.createLSSerializer();
		LSOutput lsOutput = impl.createLSOutput();
		lsOutput.setCharacterStream(new OutputStreamWriter(output));
		writer.write(doc, lsOutput);
	}
}