X-Git-Url: https://git.mdrn.pl/pylucene.git/blobdiff_plain/a2e61f0c04805cfcb8706176758d1283c7e3a55c..aaeed5504b982cf3545252ab528713250aa33eed:/lucene-java-3.4.0/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryTemplateManager.java?ds=sidebyside diff --git a/lucene-java-3.4.0/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryTemplateManager.java b/lucene-java-3.4.0/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryTemplateManager.java deleted file mode 100644 index 575188b..0000000 --- a/lucene-java-3.4.0/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryTemplateManager.java +++ /dev/null @@ -1,210 +0,0 @@ -package org.apache.lucene.xmlparser; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Properties; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Result; -import javax.xml.transform.Templates; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.xml.sax.SAXException; - -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -/** - * Provides utilities for turning query form input (such as from a web page or Swing gui) into - * Lucene XML queries by using XSL templates. This approach offers a convenient way of externalizing - * and changing how user input is turned into Lucene queries. - * Database applications often adopt similar practices by externalizing SQL in template files that can - * be easily changed/optimized by a DBA. - * The static methods can be used on their own or by creating an instance of this class you can store and - * re-use compiled stylesheets for fast use (e.g. in a server environment) - */ -public class QueryTemplateManager -{ - static DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance (); - static TransformerFactory tFactory = TransformerFactory.newInstance(); - - HashMap compiledTemplatesCache=new HashMap(); - Templates defaultCompiledTemplates=null; - - - public QueryTemplateManager() - { - - } - public QueryTemplateManager(InputStream xslIs) throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException - { - addDefaultQueryTemplate(xslIs); - } - public void addDefaultQueryTemplate(InputStream xslIs) throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException - { - defaultCompiledTemplates=getTemplates(xslIs); - } - public void addQueryTemplate(String name, InputStream xslIs) throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException - { - compiledTemplatesCache.put(name,getTemplates(xslIs)); - } - public String getQueryAsXmlString(Properties formProperties,String queryTemplateName) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - Templates ts= compiledTemplatesCache.get(queryTemplateName); - return getQueryAsXmlString(formProperties, ts); - } - - public Document getQueryAsDOM(Properties formProperties,String queryTemplateName) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - Templates ts= compiledTemplatesCache.get(queryTemplateName); - return getQueryAsDOM(formProperties, ts); - } - public String getQueryAsXmlString(Properties formProperties) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - return getQueryAsXmlString(formProperties, defaultCompiledTemplates); - } - - public Document getQueryAsDOM(Properties formProperties) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - return getQueryAsDOM(formProperties, defaultCompiledTemplates); - } - - - /** - * Fast means of constructing query using a precompiled stylesheet - */ - public static String getQueryAsXmlString(Properties formProperties, Templates template) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - ByteArrayOutputStream baos=new ByteArrayOutputStream(); - StreamResult result=new StreamResult(baos); - transformCriteria(formProperties,template,result); - return baos.toString(); - } - - /** - * Slow means of constructing query parsing a stylesheet from an input stream - */ - public static String getQueryAsXmlString(Properties formProperties, InputStream xslIs) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - ByteArrayOutputStream baos=new ByteArrayOutputStream(); - StreamResult result=new StreamResult(baos); - transformCriteria(formProperties,xslIs,result); - return baos.toString(); - } - - - /** - * Fast means of constructing query using a cached,precompiled stylesheet - */ - public static Document getQueryAsDOM(Properties formProperties, Templates template) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - DOMResult result=new DOMResult(); - transformCriteria(formProperties,template,result); - return (Document)result.getNode(); - } - - - /** - * Slow means of constructing query - parses stylesheet from input stream - */ - public static Document getQueryAsDOM(Properties formProperties, InputStream xslIs) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - DOMResult result=new DOMResult(); - transformCriteria(formProperties,xslIs,result); - return (Document)result.getNode(); - } - - - - - /** - * Slower transformation using an uncompiled stylesheet (suitable for development environment) - */ - public static void transformCriteria(Properties formProperties, InputStream xslIs, Result result) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - dbf.setNamespaceAware(true); - DocumentBuilder builder = dbf.newDocumentBuilder(); - org.w3c.dom.Document xslDoc = builder.parse(xslIs); - DOMSource ds = new DOMSource(xslDoc); - - Transformer transformer =null; - synchronized (tFactory) - { - transformer = tFactory.newTransformer(ds); - } - transformCriteria(formProperties,transformer,result); - } - - /** - * Fast transformation using a pre-compiled stylesheet (suitable for production environments) - */ - public static void transformCriteria(Properties formProperties, Templates template, Result result) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - transformCriteria(formProperties,template.newTransformer(),result); - } - - - - public static void transformCriteria(Properties formProperties, Transformer transformer, Result result) throws SAXException, IOException, ParserConfigurationException, TransformerException - { - dbf.setNamespaceAware(true); - - //Create an XML document representing the search index document. - DocumentBuilder db = dbf.newDocumentBuilder (); - org.w3c.dom.Document doc = db.newDocument (); - Element root = doc.createElement ("Document"); - doc.appendChild (root); - - Enumeration keysEnum = formProperties.keys(); - while(keysEnum.hasMoreElements()) - { - String propName=(String) keysEnum.nextElement(); - String value=formProperties.getProperty(propName); - if((value!=null)&&(value.length()>0)) - { - DOMUtils.insertChild(root,propName,value); - } - } - //Use XSLT to to transform into an XML query string using the queryTemplate - DOMSource xml=new DOMSource(doc); - transformer.transform(xml,result); - } - - /** - * Parses a query stylesheet for repeated use - */ - public static Templates getTemplates(InputStream xslIs) throws ParserConfigurationException, SAXException, IOException, TransformerConfigurationException - { - dbf.setNamespaceAware(true); - DocumentBuilder builder = dbf.newDocumentBuilder(); - org.w3c.dom.Document xslDoc = builder.parse(xslIs); - DOMSource ds = new DOMSource(xslDoc); - return tFactory.newTemplates(ds); - } -}