edu.ucsb.nceas.metacat
Class AccessControlList

java.lang.Object
  |
  +--org.xml.sax.helpers.DefaultHandler
        |
        +--edu.ucsb.nceas.metacat.AccessControlList
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

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

A Class that loads eml-access.xml file containing ACL for a metadata document into relational DB. It extends DefaultHandler class to handle SAX parsing events when processing the XML stream.


Constructor Summary
AccessControlList(java.sql.Connection conn)
          Construct an instance of the AccessControlList class.
AccessControlList(java.sql.Connection conn, java.lang.String aclid, java.lang.String user, java.lang.String[] groups, int serverCode)
          Construct an instance of the AccessControlList 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.
 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.
 void endEntity(java.lang.String name)
          SAX Handler that receives notification of the end of entities.
 java.lang.String getACL(java.lang.String docid, java.lang.String user, java.lang.String[] groups)
          Get Access Control List information for document from db connetion.
 java.lang.String getDocname()
          Get the document name.
 boolean hasPermission(java.lang.String permission, java.lang.String user, java.lang.String[] groups, java.lang.String docId)
          Check from db connection if at least one of the list of @principals has @permission on @docid.
 boolean processingDTD()
          Get the document processing state.
 void startDocument()
          Callback method used by the SAX Parser when beginning of the document
 void startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
          SAX Handler that receives notification of DOCTYPE.
 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.
 void startEntity(java.lang.String name)
          SAX Handler that receives notification of the start of entities.
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startPrefixMapping, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AccessControlList

public AccessControlList(java.sql.Connection conn)
                  throws java.sql.SQLException
Construct an instance of the AccessControlList class. It is used by the permission check up from DBQuery or DocumentImpl and from "getaccesscontrol" action
Parameters:
conn - the JDBC connection where acl info is get

AccessControlList

public AccessControlList(java.sql.Connection conn,
                         java.lang.String aclid,
                         java.lang.String user,
                         java.lang.String[] groups,
                         int serverCode)
                  throws org.xml.sax.SAXException,
                         java.io.IOException,
                         McdbException
Construct an instance of the AccessControlList class. It parse acl file and loads acl data into db connection.
Parameters:
conn - the JDBC connection where acl data are loaded
aclid - the Accession# of the document with the acl data
acl - the acl file containing acl data
user - the user connected to MetaCat servlet and owns the document
groups - the groups to which user belongs
serverCode - the serverid from xml_replication on which this document resides.
Method Detail

startDocument

public void startDocument()
                   throws org.xml.sax.SAXException
Callback method used by the SAX Parser when beginning of the document
Overrides:
startDocument in class org.xml.sax.helpers.DefaultHandler

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 acl information in class variables.
Overrides:
startElement in class org.xml.sax.helpers.DefaultHandler

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws org.xml.sax.SAXException
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 acl information in class variables.
Overrides:
characters in class org.xml.sax.helpers.DefaultHandler

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 acl information in class variables.
Overrides:
endElement in class org.xml.sax.helpers.DefaultHandler

startDTD

public void startDTD(java.lang.String name,
                     java.lang.String publicId,
                     java.lang.String systemId)
              throws org.xml.sax.SAXException
SAX Handler that receives notification of DOCTYPE. Sets the DTD.
Parameters:
name - name of the DTD
publicId - Public Identifier of the DTD
systemId - System Identifier of the DTD

startEntity

public void startEntity(java.lang.String name)
                 throws org.xml.sax.SAXException
SAX Handler that receives notification of the start of entities.
Parameters:
name - name of the entity

endEntity

public void endEntity(java.lang.String name)
               throws org.xml.sax.SAXException
SAX Handler that receives notification of the end of entities.
Parameters:
name - name of the entity

getDocname

public java.lang.String getDocname()
Get the document name.

processingDTD

public boolean processingDTD()
Get the document processing state.

hasPermission

public boolean hasPermission(java.lang.String permission,
                             java.lang.String user,
                             java.lang.String[] groups,
                             java.lang.String docId)
                      throws java.sql.SQLException,
                             java.lang.Exception
Check from db connection if at least one of the list of @principals has @permission on @docid.
Parameters:
permission - permission type to check for
principals - list of names of principals to check for @permission
docid - document identifier to check on

getACL

public java.lang.String getACL(java.lang.String docid,
                               java.lang.String user,
                               java.lang.String[] groups)
                        throws java.sql.SQLException,
                               java.lang.Exception
Get Access Control List information for document from db connetion. User or Group should have permissions for reading access control information for a document specified by @docid.
Parameters:
docid - document identifier which acl info to get
user - name of user connected to Metacat system
groups - names of user's groups to which user belongs


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