edu.ucsb.nceas.metacat

## Class QuerySpecification

- java.lang.Object
- - org.xml.sax.helpers.DefaultHandler
  - - edu.ucsb.nceas.metacat.QuerySpecification

- All Implemented Interfaces:
    org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

      public class QuerySpecification
      extends org.xml.sax.helpers.DefaultHandler

  A Class that represents a structured query, and can be constructed from an XML serialization conforming to
  See Also:
    `The printSQL() method can be used to print a SQL serialization of the query.`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `ATTRIBUTESYMBOL`
    `static char` | `PREDICATE_END`
    `static char` | `PREDICATE_START`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `QuerySpecification(java.io.Reader queryspec, java.lang.String parserName, java.lang.String accNumberSeparator)` construct an instance of the QuerySpecification class
    `QuerySpecification(java.lang.String accNumberSeparator)` construct an instance of the QuerySpecification class which don't need to parser a xml document
    `QuerySpecification(java.lang.String queryspec, java.lang.String parserName, java.lang.String accNumberSeparator)` construct an instance of the QuerySpecification class

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `characters(char[] ch, int start, int length)` callback method used by the SAX Parser when the text sequences of an xml stream are detected.
    `boolean` | `containsExtendedSQL()` Returns true if the parsed query contains and extended xml query (i.e.
    `void` | `endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)` callback method used by the SAX Parser when the end tag of an element is detected.
    `java.lang.String` | `getAccessQuery()` Method to append a access control query to SQL.
    `static java.lang.String` | `getAttributeName(java.lang.String path)` A method to get attribute name from path
    `java.util.Vector` | `getFilterDocList()` Accessor method to return a vector of the filter doc types as defined in the <filterdoctype> tag in the pathquery dtd.
    `java.lang.String` | `getIdentifier()` Accessor method to return the identifier of this Query
    `java.lang.String` | `getNormalizedXMLQuery()` Gets normailized query string in xml format, which can be transformed to html
    `java.util.Vector` | `getOwnerList()` Accessor method to return a vector of the owner fields as defined in the <owner> tag in the pathquery dtd.
    `QueryGroup` | `getQueryGroup()` get the QueryGroup used to express query constraints
    `java.lang.String` | `getQueryTitle()` Accessor method to return the title of this Query
    `java.util.Vector` | `getReturnDocList()` Accessor method to return a vector of the return document types as defined in the <returndoctype> tag in the pathquery dtd.
    `java.util.Vector` | `getReturnFieldList()` Accessor method to return a vector of the extended return fields as defined in the <returnfield> tag in the pathquery dtd.
    `java.lang.String` | `getSortedReturnFieldString()` Method to return a String generated after sorting the returnFieldList Vector
    `void` | `handleReturnField(java.lang.String inputString)` Method to handle return field.
    `boolean` | `isPercentageSearch()` Method to indicate this query is a percentage search
    `static java.lang.String` | `newPathExpressionWithOutAttribute(java.lang.String pathExpression)` A method to get rid of attribute part in path expression
    `java.lang.String` | `printExtendedSQL(java.lang.String doclist, boolean useXMLIndex, java.util.List<java.lang.Object> allValues, java.util.List<java.lang.Object> docListValues)` This method prints sql based upon the <returnfield> tag in the pathquery document.
    `static java.lang.String` | `printGetDocByDoctypeSQL(java.lang.String docid)`
    `static java.lang.String` | `printRelationSQL(java.lang.String docid)`
    `java.lang.String` | `printSQL(boolean useXMLIndex, java.util.List<java.lang.Object> parameterValues)` create a SQL serialization of the query that this instance represents
    `void` | `setContainsExtenedSQL(boolean hasExtenedQuery)` set if this query sepcification has extendQuery(has return doc type or not)
    `void` | `setFilterDocList(java.util.Vector filterDocList)` method to set the list of filter docs of this query
    `void` | `setGroup(java.lang.String[] myGroup)` Method to set user group
    `void` | `setIdentifier(java.lang.String id)` method to set the identifier of this query
    `void` | `setOwnerList(java.util.Vector ownerList)` method to set the list of owners used to constrain this query
    `void` | `setQueryGroup(QueryGroup group)` set the querygroup
    `void` | `setQueryTitle(java.lang.String title)` method to set the title of this query
    `void` | `setReturnDocList(java.util.Vector returnDocList)` method to set the list of return docs of this query
    `void` | `setReturnFieldList(java.util.Vector returnFieldList)` method to set the list of fields to be returned by this query
    `void` | `setUserName(java.lang.String myName)` Method to set user name
    `void` | `startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes atts)` callback method used by the SAX Parser when the start tag of an element is detected.
    `java.lang.String` | `toString()` create a String description of the query that this instance represents.

    - ### Methods inherited from class org.xml.sax.helpers.DefaultHandler

      `endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ATTRIBUTESYMBOL

          public static final java.lang.String ATTRIBUTESYMBOL

      See Also:
        Constant Field Values

    - #### PREDICATE_START

          public static final char PREDICATE_START

      See Also:
        Constant Field Values

    - #### PREDICATE_END

          public static final char PREDICATE_END

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### QuerySpecification

          public QuerySpecification(java.io.Reader queryspec,
                                    java.lang.String parserName,
                                    java.lang.String accNumberSeparator)
                             throws java.io.IOException

      construct an instance of the QuerySpecification class
      Parameters:
        `queryspec` - the XML representation of the query (should conform to pathquery.dtd) as a Reader
        `parserName` - the fully qualified name of a Java Class implementing the org.xml.sax.XMLReader interface
      Throws:
        `java.io.IOException`

    - #### QuerySpecification

          public QuerySpecification(java.lang.String queryspec,
                                    java.lang.String parserName,
                                    java.lang.String accNumberSeparator)
                             throws java.io.IOException

      construct an instance of the QuerySpecification class
      Parameters:
        `queryspec` - the XML representation of the query (should conform to pathquery.dtd) as a String
        `parserName` - the fully qualified name of a Java Class implementing the org.xml.sax.Parser interface
      Throws:
        `java.io.IOException`

    - #### QuerySpecification

          public QuerySpecification(java.lang.String accNumberSeparator)
                             throws java.io.IOException

      construct an instance of the QuerySpecification class which don't need to parser a xml document
      Parameters:
        `accNumberSeparator` - the separator between doc version
      Throws:
        `java.io.IOException`

  - ### Method Detail

    - #### setUserName

          public void setUserName(java.lang.String myName)

      Method to set user name
      Parameters:
        `myName` - the user name

    - #### setGroup

          public void setGroup(java.lang.String[] myGroup)

      Method to set user group
      Parameters:
        `myGroup` - the user group

    - #### isPercentageSearch

          public boolean isPercentageSearch()

      Method to indicate this query is a percentage search

    - #### getAccessQuery

          public java.lang.String getAccessQuery()

      Method to append a access control query to SQL. So in DBQuery class, we can get docid from both user specified query and access control query. We don't need to checking permission after we get the doclist. It will be good to performance

    - #### containsExtendedSQL

          public boolean containsExtendedSQL()

      Returns true if the parsed query contains and extended xml query (i.e. there is at least one <returnfield> in the pathquery document)

    - #### getIdentifier

          public java.lang.String getIdentifier()

      Accessor method to return the identifier of this Query

    - #### setIdentifier

          public void setIdentifier(java.lang.String id)

      method to set the identifier of this query

    - #### getQueryTitle

          public java.lang.String getQueryTitle()

      Accessor method to return the title of this Query

    - #### setQueryTitle

          public void setQueryTitle(java.lang.String title)

      method to set the title of this query

    - #### getReturnDocList

          public java.util.Vector getReturnDocList()

      Accessor method to return a vector of the return document types as defined in the <returndoctype> tag in the pathquery dtd.

    - #### setReturnDocList

          public void setReturnDocList(java.util.Vector returnDocList)

      method to set the list of return docs of this query

    - #### getFilterDocList

          public java.util.Vector getFilterDocList()

      Accessor method to return a vector of the filter doc types as defined in the <filterdoctype> tag in the pathquery dtd.

    - #### setFilterDocList

          public void setFilterDocList(java.util.Vector filterDocList)

      method to set the list of filter docs of this query

    - #### getReturnFieldList

          public java.util.Vector getReturnFieldList()

      Accessor method to return a vector of the extended return fields as defined in the <returnfield> tag in the pathquery dtd.

    - #### setReturnFieldList

          public void setReturnFieldList(java.util.Vector returnFieldList)

      method to set the list of fields to be returned by this query

    - #### getOwnerList

          public java.util.Vector getOwnerList()

      Accessor method to return a vector of the owner fields as defined in the <owner> tag in the pathquery dtd.

    - #### setOwnerList

          public void setOwnerList(java.util.Vector ownerList)

      method to set the list of owners used to constrain this query

    - #### getQueryGroup

          public QueryGroup getQueryGroup()

      get the QueryGroup used to express query constraints

    - #### setQueryGroup

          public void setQueryGroup(QueryGroup group)

      set the querygroup

    - #### setContainsExtenedSQL

          public void setContainsExtenedSQL(boolean hasExtenedQuery)

      set if this query sepcification has extendQuery(has return doc type or not)

    - #### startElement

          public void startElement(java.lang.String uri,
                                   java.lang.String localName,
                                   java.lang.String qName,
                                   org.xml.sax.Attributes atts)
                            throws org.xml.sax.SAXException

      callback method used by the SAX Parser when the start tag of an element is detected. Used in this context to parse and store the query information in class variables.
      Specified by:
        `startElement` in interface `org.xml.sax.ContentHandler`
      Overrides:
        `startElement` in class `org.xml.sax.helpers.DefaultHandler`
      Throws:
        `org.xml.sax.SAXException`

    - #### endElement

          public void endElement(java.lang.String uri,
                                 java.lang.String localName,
                                 java.lang.String qName)
                          throws org.xml.sax.SAXException

      callback method used by the SAX Parser when the end tag of an element is detected. Used in this context to parse and store the query information in class variables.
      Specified by:
        `endElement` in interface `org.xml.sax.ContentHandler`
      Overrides:
        `endElement` in class `org.xml.sax.helpers.DefaultHandler`
      Throws:
        `org.xml.sax.SAXException`

    - #### getNormalizedXMLQuery

          public java.lang.String getNormalizedXMLQuery()

      Gets normailized query string in xml format, which can be transformed to html

    - #### characters

          public void characters(char[] ch,
                                 int start,
                                 int length)

      callback method used by the SAX Parser when the text sequences of an xml stream are detected. Used in this context to parse and store the query information in class variables.
      Specified by:
        `characters` in interface `org.xml.sax.ContentHandler`
      Overrides:
        `characters` in class `org.xml.sax.helpers.DefaultHandler`

    - #### handleReturnField

          public void handleReturnField(java.lang.String inputString)

      Method to handle return field. It will be callied in ecogrid part
      Parameters:
        `inputString` -

    - #### printSQL

          public java.lang.String printSQL(boolean useXMLIndex,
                                           java.util.List<java.lang.Object> parameterValues)

      create a SQL serialization of the query that this instance represents

    - #### printExtendedSQL

          public java.lang.String printExtendedSQL(java.lang.String doclist,
                                                   boolean useXMLIndex,
                                                   java.util.List<java.lang.Object> allValues,
                                                   java.util.List<java.lang.Object> docListValues)

      This method prints sql based upon the <returnfield> tag in the pathquery document. This allows for customization of the returned fields. If the boolean useXMLIndex paramter is false, it uses a recursive query on xml_nodes to find the fields to be included by their path expression, and avoids the use of the xml_index table.
      Parameters:
        `doclist` - the list of document ids to search
        `unaccessableNodePair` - the node pairs (start id and end id) which this user should not access
        `useXMLIndex` - a boolean flag indicating whether to search using xml_index

    - #### getSortedReturnFieldString

          public java.lang.String getSortedReturnFieldString()

      Method to return a String generated after sorting the returnFieldList Vector

    - #### printRelationSQL

          public static java.lang.String printRelationSQL(java.lang.String docid)

    - #### printGetDocByDoctypeSQL

          public static java.lang.String printGetDocByDoctypeSQL(java.lang.String docid)

    - #### toString

          public java.lang.String toString()

      create a String description of the query that this instance represents. This should become a way to get the XML serialization of the query.
      Overrides:
        `toString` in class `java.lang.Object`

    - #### newPathExpressionWithOutAttribute

          public static java.lang.String newPathExpressionWithOutAttribute(java.lang.String pathExpression)

      A method to get rid of attribute part in path expression

    - #### getAttributeName

          public static java.lang.String getAttributeName(java.lang.String path)

      A method to get attribute name from path

Copyright © 2023 Regents of the University of California. All Rights Reserved.