package com.k_int.discover.util;

import java.util.Iterator;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.solr.common.SolrDocument;
import org.w3c.dom.Document;
import org.w3c.dom.Element;


public class QuickAndDirtyDocBuilder
{
    public static Document buildW3CDoc(SolrDocument solr_doc)
    {
        Document document = null;
        if (solr_doc != null )
        {
          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
          try
          {
            DocumentBuilder builder = factory.newDocumentBuilder();
            document = builder.newDocument();
            Element root = (Element) document.createElement("add");
            document.appendChild(root);
            Element doc = (Element) document.createElement("doc");
            
            Iterator<String> names = solr_doc.getFieldNames().iterator();
            while(names.hasNext())
            {
                String name = names.next();

                if ( solr_doc.getFieldValues(name) != null ) {
	                Iterator<Object> vals = solr_doc.getFieldValues(name).iterator();
	                while(vals.hasNext())
	                {
                            Object valObj = vals.next();
                            String val = null;
                            
                            if ( valObj instanceof String ) 
                                val = (String)valObj;
                            else
                                val = valObj.toString();

                            if(val!=null)
	                    {
	                        val=val.trim();
	                        if(val.length()>0)
	                        {
	                            Element field = document.createElement("field");
	                            field.setAttribute("name", name);
	                            field.setTextContent(val);
	                            doc.appendChild(field);
	                        }
	                            
	                    }
	                }
                }           
            }
            root.appendChild(doc);
            
          } 
          catch (Exception e)
          {
            e.printStackTrace();
          }
        }
        return document;
    }

}
