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 pathquery.dtd. The printSQL() method can be used to print a SQL serialization of the query.


Field Summary
static java.lang.String ATTRIBUTESYMBOL
           
 
Constructor Summary
QuerySpecification(java.io.Reader queryspec, java.lang.String parserName, java.lang.String accNumberSeparator)
          construct an instance of the QuerySpecification class
QuerySpecification(java.lang.String queryspec, java.lang.String parserName, java.lang.String accNumberSeparator)
          construct an instance of the QuerySpecification class
 
Method Summary
 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 containAttributeReturnField()
          A method to get if the query has an attribute return field
 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)
           
 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.util.Vector getOwnerList()
          Accessor method to return a vector of the owner fields as defined in the <owner> tag in the pathquery dtd.
 edu.ucsb.nceas.metacat.QuerySpecification.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.util.Vector getSiteList()
          Accessor method to return a vector of the site fields as defined in the <site> tag in the pathquery dtd.
 boolean isPercentageSearch()
          Method to indicate this query is a percentage search
static void main(java.lang.String[] args)
          Main routine for testing
static java.lang.String newPathExpressionWithOutAttribute(java.lang.String pathExpression)
           
 java.lang.String printAccessControlSQLForReturnField(java.lang.String doclist)
          This sql command will selecet startnodeid and endnodeid that user can NOT access
 java.lang.String printAttributeQuery(java.lang.String doclist)
          This method prints sql based upon the returnfield tag in the pathquery document has an attribute.
 java.lang.String printExtendedSQL(java.lang.String doclist, java.util.Hashtable unaccessableNodePair)
          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 printPackageSQL()
          Prints sql that returns all relations in the database.
static java.lang.String printPackageSQL(java.lang.String docid)
          Prints sql that returns all relations in the database that were input under a specific docid
static java.lang.String printPackageSQL(java.lang.String subDocidURL, java.lang.String objDocidURL)
          Returns all of the relations that has a certain docid in the subject or the object.
static java.lang.String printRelationSQL(java.lang.String docid)
           
 java.lang.String printSQL(boolean useXMLIndex)
          create a SQL serialization of the query that this instance represents
 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 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 setSiteList(java.util.Vector siteList)
          method to set the list of sites used to constrain 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
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

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
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


main

public static void main(java.lang.String[] args)
Main routine for testing


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)


containAttributeReturnField

public boolean containAttributeReturnField()
A method to get if the query has an attribute return field


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


getSiteList

public java.util.Vector getSiteList()
Accessor method to return a vector of the site fields as defined in the <site> tag in the pathquery dtd.


setSiteList

public void setSiteList(java.util.Vector siteList)
method to set the list of sites used to constrain this query


getQueryGroup

public edu.ucsb.nceas.metacat.QuerySpecification.QueryGroup getQueryGroup()
get the QueryGroup used to express query constraints


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
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
org.xml.sax.SAXException

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

printSQL

public java.lang.String printSQL(boolean useXMLIndex)
create a SQL serialization of the query that this instance represents


printAccessControlSQLForReturnField

public java.lang.String printAccessControlSQLForReturnField(java.lang.String doclist)
This sql command will selecet startnodeid and endnodeid that user can NOT access


printExtendedSQL

public java.lang.String printExtendedSQL(java.lang.String doclist,
                                         java.util.Hashtable unaccessableNodePair)
This method prints sql based upon the <returnfield> tag in the pathquery document. This allows for customization of the returned fields

Parameters:
doclist - the list of document ids to search by
unaccessableNodePair - the node pair(start id and end id) which this user could not access it

printAttributeQuery

public java.lang.String printAttributeQuery(java.lang.String doclist)
This method prints sql based upon the returnfield tag in the pathquery document has an attribute. This allows for customization of the returned fields

Parameters:
doclist - the list of document ids to search by

printRelationSQL

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

printPackageSQL

public static java.lang.String printPackageSQL()
Prints sql that returns all relations in the database.


printPackageSQL

public static java.lang.String printPackageSQL(java.lang.String docid)
Prints sql that returns all relations in the database that were input under a specific docid

Parameters:
docid - the docid to search for.

printPackageSQL

public static java.lang.String printPackageSQL(java.lang.String subDocidURL,
                                               java.lang.String objDocidURL)
Returns all of the relations that has a certain docid in the subject or the object.


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)

getAttributeName

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


Copyright © 2000 National Center for Ecological Analysis and Synthesis. All Rights Reserved.