/** * Copyright: 2013 Regents of the University of California and the * National Center for Ecological Analysis and Synthesis * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package edu.ucsb.nceas.metacat.common.query; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.response.CSVResponseWriter; import org.apache.solr.response.JSONResponseWriter; import org.apache.solr.response.PHPResponseWriter; import org.apache.solr.response.PHPSerializedResponseWriter; import org.apache.solr.response.PythonResponseWriter; import org.apache.solr.response.QueryResponseWriter; import org.apache.solr.response.RubyResponseWriter; import org.apache.solr.response.VelocityResponseWriter; import org.apache.solr.response.XMLResponseWriter; /** * Generate a QueryResponseWriter base on the specified format. * @author tao * */ public class SolrQueryResponseWriterFactory { public static final String XML = "xml"; public static final String JSON = "json"; public static final String PYTHON = "python"; public static final String RUBY = "ruby"; public static final String PHP = "php"; public static final String PHPS = "phps"; public static final String VELOCITY = "velocity"; public static final String CSV ="csv"; /** Create a QueryReponseWriter based on the specified wt format. * Here is the list of the handler class to handle different format. * * * * * * * * */ public static QueryResponseWriter generateResponseWriter(String wt) throws SolrServerException { QueryResponseWriter writer = null; if(wt == null || wt.trim().equals("") || wt.equals(XML)) { writer = new XMLResponseWriter(); } else if(wt.equals(JSON)) { writer = new JSONResponseWriter(); } else if(wt.equals(PYTHON)) { writer = new PythonResponseWriter(); } else if(wt.equals(RUBY)) { writer = new RubyResponseWriter(); } else if(wt.equals(PHP)) { writer = new PHPResponseWriter(); } else if(wt.equals(PHPS)) { writer = new PHPSerializedResponseWriter(); } else if(wt.equals(VELOCITY)) { writer = new VelocityResponseWriter(); } else if(wt.equals(CSV)) { writer = new CSVResponseWriter(); } else { throw new SolrServerException("Metacat doesn't support this response format "+wt); } return writer; } public static String getContentType(String wt) { String contentType = null; if (wt == null || wt.trim().equals("") || wt.equals(XML)) { contentType = "text/xml"; } else if (wt.equals(JSON)) { contentType = "text/json"; } else if (wt.equals(PYTHON)) { contentType = "text/plain"; } else if (wt.equals(RUBY)) { contentType = "text/plain"; } else if (wt.equals(PHP)) { contentType = "text/plain"; } else if (wt.equals(PHPS)) { contentType = "text/plain"; } else if (wt.equals(VELOCITY)) { contentType = "text/html"; } else if (wt.equals(CSV)) { contentType = "text/csv"; } else { // just don't know what it is... contentType = null; } return contentType; } }