Project

General

Profile

« Previous | Next » 

Revision 7709

Added by Jing Tao almost 11 years ago

Move the cod which transformed the query response to the inputstream to the metacat-common module.
Remove some obsoleted imports.

View differences:

MetacatSolrIndex.java
24 24

  
25 25
import java.io.ByteArrayInputStream;
26 26
import java.io.ByteArrayOutputStream;
27
import java.io.File;
28
import java.io.FileInputStream;
29 27
import java.io.IOException;
30 28
import java.io.InputStream;
31 29
import java.io.OutputStreamWriter;
32
import java.io.StringWriter;
33 30
import java.io.Writer;
34
import java.net.MalformedURLException;
35 31
import java.net.URL;
36 32
import java.sql.SQLException;
37 33
import java.util.ArrayList;
38
import java.util.Collection;
39 34
import java.util.Hashtable;
40 35
import java.util.List;
41
import java.util.Map;
42 36
import java.util.Set;
43 37

  
44 38
import javax.xml.parsers.ParserConfigurationException;
......
56 50
import org.apache.solr.common.params.SolrParams;
57 51
import org.apache.solr.common.util.NamedList;
58 52
import org.apache.solr.core.CoreContainer;
59
import org.apache.solr.core.SolrConfig;
60 53
import org.apache.solr.core.SolrCore;
61
import org.apache.solr.request.LocalSolrQueryRequest;
62
import org.apache.solr.response.CSVResponseWriter;
63
import org.apache.solr.response.JSONResponseWriter;
64
import org.apache.solr.response.PHPResponseWriter;
65
import org.apache.solr.response.PHPSerializedResponseWriter;
66
import org.apache.solr.response.PythonResponseWriter;
67
import org.apache.solr.response.QueryResponseWriter;
68
import org.apache.solr.response.RubyResponseWriter;
69
import org.apache.solr.response.SolrQueryResponse;
70
import org.apache.solr.response.VelocityResponseWriter;
71
import org.apache.solr.response.XMLResponseWriter;
72
import org.apache.solr.schema.IndexSchema;
73
import org.apache.solr.schema.SchemaField;
74 54
import org.apache.solr.servlet.SolrRequestParsers;
75
import org.dataone.configuration.Settings;
76 55
import org.dataone.service.types.v1.Subject;
77
import org.dataone.service.types.v1_1.QueryEngineDescription;
78
import org.dataone.service.types.v1_1.QueryField;
79 56
import org.dataone.service.util.Constants;
80
import org.xml.sax.InputSource;
81 57
import org.xml.sax.SAXException;
82 58

  
83 59
import edu.ucsb.nceas.metacat.DBTransform;
84
import edu.ucsb.nceas.metacat.MetaCatServlet;
60
import edu.ucsb.nceas.metacat.common.SolrQueryResponseTransformer;
85 61
import edu.ucsb.nceas.metacat.common.SolrQueryResponseWriterFactory;
86 62
import edu.ucsb.nceas.metacat.common.SolrServerFactory;
87 63
import edu.ucsb.nceas.utilities.PropertyNotFoundException;
......
213 189
        //reload the core before query. Only after reloading the core, the query result can reflect the change made in metacat-index module.
214 190
        coreContainer.reload(collectionName);
215 191
        
192
        SolrCore core = coreContainer.getCore(collectionName);
193
        SolrQueryResponseTransformer solrTransformer = new SolrQueryResponseTransformer(core);
216 194
        // handle normal and skin-based queries
217 195
        if (wt == null ||supportedWriterTypes.contains(wt)) {
218 196
        	// just handle as normal solr query
219 197
	        QueryResponse response = solrServer.query(solrParams);
220
	        inputStream = transformResults(solrParams, response, wt);
198
	        inputStream = solrTransformer.transformResults(solrParams, response, wt);
221 199
        }
222 200
        else {
223 201
        	// assume it is a skin name
......
228 206
        	ModifiableSolrParams msp = new ModifiableSolrParams(solrParams);
229 207
        	msp.set(WT, wt);
230 208
        	QueryResponse response = solrServer.query(msp);
231
	        inputStream = transformResults(msp, response, wt);
209
	        inputStream = solrTransformer.transformResults(msp, response, wt);
232 210
        	
233 211
	        // apply the stylesheet (XML->HTML)
234 212
	        DBTransform transformer = new DBTransform();
......
325 303
    }
326 304
    
327 305
   
328
    /*
329
     * Transform the Queryresponse to the InputStream
330
     */
331
    private InputStream transformResults(SolrParams request, QueryResponse response, String wt) throws SolrServerException, IOException {
332
        //InputStream stream = null;
333
        QueryResponseWriter writer = SolrQueryResponseWriterFactory.generateResponseWriter(wt);
334
        Writer results = new StringWriter();
335
        SolrQueryResponse sResponse = new SolrQueryResponse();
336
        sResponse.setAllValues(response.getResponse());
337
        SolrCore core =coreContainer.getCore(collectionName);
338
        writer.write(results, new LocalSolrQueryRequest(core, request), sResponse);
339
        return new ByteArrayInputStream(results.toString().getBytes(MetaCatServlet.DEFAULT_ENCODING));
340
    }
341
    
306
   
342 307
  
343 308
}

Also available in: Unified diff