public class DocumentImpl
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected DBConnection |
connection |
static java.lang.String |
DECLARATIONHANDLERPROPERTY |
protected java.lang.String |
docid |
protected java.lang.String |
docname |
static java.lang.String |
DOCNAME |
protected java.lang.String |
doctype |
static java.lang.String |
DOCUMENTTABLE |
static java.lang.String |
DTD |
static java.lang.String |
EML2_0_0NAMESPACE |
static java.lang.String |
EML2_0_1NAMESPACE |
static java.lang.String |
EML2_1_0NAMESPACE |
static java.lang.String |
EML2_1_1NAMESPACE |
static java.lang.String |
EML200 |
static java.lang.String |
EML210 |
static java.lang.String |
EXTERNALNONAMESPACESCHEMALOCATIONPROPERTY |
static java.lang.String |
EXTERNALSCHEMALOCATIONPROPERTY |
static java.lang.String |
FULLSCHEMAVALIDATIONFEATURE |
static java.lang.String |
LEXICALPROPERTY |
static java.lang.String |
NAMESPACEFEATURE |
static java.lang.String |
NAMESPACEPREFIXESFEATURE |
static java.lang.String |
NONAMESPACESCHEMA |
static java.lang.String |
PUBLICID |
static java.lang.String |
RDF_SYNTAX_NAMESPACE |
static java.lang.String |
REVISIONTABLE |
protected long |
rootnodeid |
static java.lang.String |
SCHEMA |
static java.lang.String |
SCHEMAVALIDATIONFEATURE |
static java.lang.String |
SYSTEMID |
static java.lang.String |
VALIDATIONFEATURE |
Constructor and Description |
---|
DocumentImpl()
Default constructor
|
DocumentImpl(DBConnection conn,
long rootNodeId,
java.lang.String docName,
java.lang.String docType,
java.lang.String docId,
java.lang.String newRevision,
java.lang.String action,
java.lang.String user,
java.lang.String pub,
java.lang.String catalogId,
int serverCode,
java.util.Date createDate,
java.util.Date updateDate)
Construct a new document instance, writing the contents to the database.
|
DocumentImpl(java.lang.String docid)
Constructor, creates document from database connection, used for reading
the document
|
DocumentImpl(java.lang.String accNum,
boolean readNodes)
Constructor used to create a document and read the document information
from the database.
|
Modifier and Type | Method and Description |
---|---|
void |
buildIndex()
Build the index records for this document.
|
static void |
delete(java.lang.String accnum,
boolean ignoreRev,
java.lang.String user,
java.lang.String[] groups,
java.lang.String notifyServer,
boolean removeAll)
Archive an object from the xml_documents table to the xml_revision table (including other changes as well).
|
static void |
delete(java.lang.String accnum,
java.lang.String user,
java.lang.String[] groups,
java.lang.String notifyServer,
boolean removeAll)
Archive an object from the xml_documents table to the xml_revision table (including other changes as well).
|
byte[] |
getBytes() |
java.util.Date |
getCreateDate()
get the creation date
|
static boolean |
getDataFileLockGrant(java.lang.String accnum)
Get a lock for a given document.
|
static boolean |
getDataFileLockGrant(java.lang.String accnum,
int serverCode)
The method will check if metacat can get data file lock grant If server
code is 1, it get.
|
java.lang.String |
getDocHomeServer() |
java.lang.String |
getDocID()
Get the document identifier (docid)
|
java.lang.String |
getDocname()
get the document name
|
java.lang.String |
getDoctype()
get the document type (which is the PublicID)
|
java.lang.String |
getPublicaccess() |
int |
getRev() |
long |
getRootNodeID()
get the root node identifier
|
int |
getServerlocation() |
java.lang.String |
getSystemID()
get the system identifier
|
java.util.Date |
getUpdateDate()
get the update date
|
java.lang.String |
getUserowner() |
java.lang.String |
getUserupdated() |
java.lang.String |
getValidateType() |
static boolean |
hasAllPermission(java.lang.String user,
java.lang.String[] groups,
java.lang.String docid)
Check for "ALL" or "CHMOD" permission on @docid for @user and/or @groups
from DB connection
|
static boolean |
hasReadPermission(java.lang.String user,
java.lang.String[] groups,
java.lang.String docId)
Check for "READ" permission base on docid, user and group
|
static boolean |
hasWritePermission(java.lang.String user,
java.lang.String[] groups,
java.lang.String docid)
Check for "WRITE" permission on @docid for @user and/or @groups
from DB connection
|
static void |
main(java.lang.String[] args)
the main routine used to test the DBWriter utility.
|
java.io.InputStream |
readFromFileSystem(java.io.OutputStream out,
java.lang.String user,
java.lang.String[] groups,
java.lang.String documentPath)
Read the XML document from the file system and write to a Writer.
|
java.lang.String |
readUsingSlowAlgorithm()
Get a text representation of the XML document as a string This older
algorithm uses a recursive tree of Objects to represent the nodes of the
tree.
|
static void |
registerDocument(java.lang.String docname,
java.lang.String doctype,
java.lang.String accnum,
java.lang.String user,
java.lang.String[] groupnames)
This method will be call in handleUploadRequest in MetacatServlet class
|
static void |
registerDocument(java.lang.String docname,
java.lang.String doctype,
java.lang.String accnum,
java.lang.String user,
java.lang.String[] groups,
int serverCode)
Register a document that resides on the filesystem with the database.
|
static void |
registerDocumentInReplication(java.lang.String docname,
java.lang.String doctype,
java.lang.String accnum,
java.lang.String user,
int serverCode,
java.lang.String tableName,
java.util.Date createDate,
java.util.Date updateDate)
Register a document that resides on the filesystem with the database.
|
java.lang.String |
toString()
Print a string representation of the XML document
NOTE: this detects the character encoding, or uses the XML default
|
java.lang.String |
toString(java.lang.String user,
java.lang.String[] groups,
boolean withInlinedata)
Print a string representation of the XML document
NOTE: this detects the character encoding, or uses the XML default
|
java.io.InputStream |
toXml(java.io.OutputStream out,
java.lang.String user,
java.lang.String[] groups,
boolean withInLineData)
Print a text representation of the XML document to a Writer
|
void |
toXmlFromDb(java.io.OutputStream outputStream,
java.lang.String user,
java.lang.String[] groups,
boolean withInLineData)
Print a text representation of the XML document to a Writer
|
static java.lang.String |
write(DBConnection conn,
java.lang.String xmlString,
java.lang.String pub,
java.io.Reader dtd,
java.lang.String action,
java.lang.String accnum,
java.lang.String user,
java.lang.String[] groups,
int serverCode,
boolean override,
java.lang.String ruleBase,
boolean needValidation,
boolean writeAccessRules,
byte[] xmlBytes,
java.lang.String schemaLocation,
org.dataone.service.types.v1.Checksum checksum)
Write an XML file to the database, given a Reader
|
static java.lang.String |
write(DBConnection conn,
java.lang.String xmlString,
java.lang.String pub,
java.io.Reader dtd,
java.lang.String action,
java.lang.String docid,
java.lang.String user,
java.lang.String[] groups,
java.lang.String ruleBase,
boolean needValidation,
boolean writeAccessRules,
byte[] xmlBytes,
java.lang.String schemaLocation,
org.dataone.service.types.v1.Checksum checksum)
Write an XML file to the database, given a filename
|
static void |
writeDataFileInReplication(java.io.InputStream input,
java.lang.String filePath,
java.lang.String docname,
java.lang.String doctype,
java.lang.String accnum,
java.lang.String user,
java.lang.String docHomeServer,
java.lang.String notificationServer,
java.lang.String tableName,
boolean timedReplication,
java.util.Date createDate,
java.util.Date updateDate)
This method will register a data file entry in xml_documents and save a
data file input Stream into file system..
|
static java.lang.String |
writeReplication(DBConnection conn,
java.lang.String xmlString,
byte[] xmlBytes,
java.lang.String pub,
java.io.Reader dtd,
java.lang.String action,
java.lang.String accnum,
java.lang.String user,
java.lang.String[] groups,
java.lang.String homeServer,
java.lang.String notifyServer,
java.lang.String ruleBase,
boolean needValidation,
java.lang.String tableName,
boolean timedReplication,
java.util.Date createDate,
java.util.Date updateDate,
java.lang.String schemaLocation)
Write an XML file to the database during replication
|
public static final java.lang.String SCHEMA
public static final java.lang.String NONAMESPACESCHEMA
public static final java.lang.String DTD
public static final java.lang.String EML200
public static final java.lang.String EML210
public static final java.lang.String EXTERNALSCHEMALOCATIONPROPERTY
public static final java.lang.String EXTERNALNONAMESPACESCHEMALOCATIONPROPERTY
public static final java.lang.String REVISIONTABLE
public static final java.lang.String DOCUMENTTABLE
public static final java.lang.String DECLARATIONHANDLERPROPERTY
public static final java.lang.String LEXICALPROPERTY
public static final java.lang.String VALIDATIONFEATURE
public static final java.lang.String SCHEMAVALIDATIONFEATURE
public static final java.lang.String FULLSCHEMAVALIDATIONFEATURE
public static final java.lang.String NAMESPACEFEATURE
public static final java.lang.String NAMESPACEPREFIXESFEATURE
public static final java.lang.String EML2_0_0NAMESPACE
public static final java.lang.String EML2_0_1NAMESPACE
public static final java.lang.String EML2_1_0NAMESPACE
public static final java.lang.String EML2_1_1NAMESPACE
public static final java.lang.String RDF_SYNTAX_NAMESPACE
public static final java.lang.String DOCNAME
public static final java.lang.String PUBLICID
public static final java.lang.String SYSTEMID
protected DBConnection connection
protected java.lang.String docname
protected java.lang.String doctype
protected java.lang.String docid
protected long rootnodeid
public DocumentImpl()
public DocumentImpl(java.lang.String accNum, boolean readNodes) throws McdbException
conn
- the database connection from which to read the documentdocid
- the identifier of the document to be created, it should
be with revisionreadNodes
- flag indicating whether the xmlnodes should be readMcdbException
public DocumentImpl(java.lang.String docid) throws McdbException
conn
- the database connection from which to read the documentdocid
- the identifier of the document to be createdMcdbException
public DocumentImpl(DBConnection conn, long rootNodeId, java.lang.String docName, java.lang.String docType, java.lang.String docId, java.lang.String newRevision, java.lang.String action, java.lang.String user, java.lang.String pub, java.lang.String catalogId, int serverCode, java.util.Date createDate, java.util.Date updateDate) throws java.sql.SQLException, java.lang.Exception
conn
- the JDBC Connection to which all information is writtenrootnodeid
- -
sequence id of the root node in the documentdocname
- -
the name of DTD, i.e. the name immediately following the
DOCTYPE keyword ( should be the root element name ) or the
root element name if no DOCTYPE declaration provided (Oracle's
and IBM parsers are not aware if it is not the root element
name)doctype
- -
Public ID of the DTD, i.e. the name immediately following the
PUBLIC keyword in DOCTYPE declaration or the docname if no
Public ID provided or null if no DOCTYPE declaration provideddocid
- the docid to use for the UPDATE, no version numberversion,
- need to be updateaction
- the action to be performed (INSERT OR UPDATE)user
- the user that owns the documentpub
- flag for public "read" access on documentserverCode
- the serverid from xml_replication on which this document
resides.java.sql.SQLException
java.lang.Exception
public static void registerDocument(java.lang.String docname, java.lang.String doctype, java.lang.String accnum, java.lang.String user, java.lang.String[] groupnames) throws java.sql.SQLException, AccessionNumberException, java.lang.Exception
java.sql.SQLException
AccessionNumberException
java.lang.Exception
public static void registerDocument(java.lang.String docname, java.lang.String doctype, java.lang.String accnum, java.lang.String user, java.lang.String[] groups, int serverCode) throws java.sql.SQLException, AccessionNumberException, java.lang.Exception
conn
- the JDBC Connection to which all information is writtendocname
- -
the name of DTD, i.e. the name immediately following the
DOCTYPE keyword ( should be the root element name ) or the
root element name if no DOCTYPE declaration provided (Oracle's
and IBM parsers are not aware if it is not the root element
name)doctype
- -
Public ID of the DTD, i.e. the name immediately following the
PUBLIC keyword in DOCTYPE declaration or the docname if no
Public ID provided or null if no DOCTYPE declaration providedaccnum
- the accession number to use for the INSERT OR UPDATE, which
includes a revision number for this revision of the document
(e.g., knb.1.1)user
- the user that owns the documentgroupnames
- the groups that owns the documentserverCode
- the serverid from xml_replication on which this document
resides.java.sql.SQLException
AccessionNumberException
java.lang.Exception
public static void registerDocumentInReplication(java.lang.String docname, java.lang.String doctype, java.lang.String accnum, java.lang.String user, int serverCode, java.lang.String tableName, java.util.Date createDate, java.util.Date updateDate) throws java.sql.SQLException, AccessionNumberException, java.lang.Exception
conn
- the JDBC Connection to which all information is writtendocname
- -
the name of DTD, i.e. the name immediately following the
DOCTYPE keyword ( should be the root element name ) or the
root element name if no DOCTYPE declaration provided (Oracle's
and IBM parsers are not aware if it is not the root element
name)doctype
- -
Public ID of the DTD, i.e. the name immediately following the
PUBLIC keyword in DOCTYPE declaration or the docname if no
Public ID provided or null if no DOCTYPE declaration providedaccnum
- the accession number to use for the INSERT OR UPDATE, which
includes a revision number for this revision of the document
(e.g., knb.1.1)user
- the user that owns the documentserverCode
- the serverid from xml_replication on which this document
resides.java.sql.SQLException
AccessionNumberException
java.lang.Exception
public static void writeDataFileInReplication(java.io.InputStream input, java.lang.String filePath, java.lang.String docname, java.lang.String doctype, java.lang.String accnum, java.lang.String user, java.lang.String docHomeServer, java.lang.String notificationServer, java.lang.String tableName, boolean timedReplication, java.util.Date createDate, java.util.Date updateDate) throws java.sql.SQLException, AccessionNumberException, java.lang.Exception
input,
- the input stream which contain the file content.,
- the input stream which contain the file contentdocname
- -
the name of DTD, for data file, it is a docid number.doctype
- -
"BIN" for data fileaccnum
- the accession number to use for the INSERT OR UPDATE, which
includes a revision number for this revision of the document
(e.g., knb.1.1)user
- the user that owns the documentdocHomeServer,
- the home server of the docidnotificationServer,
- the server to notify force replication info to local metacatjava.sql.SQLException
AccessionNumberException
java.lang.Exception
public static boolean getDataFileLockGrant(java.lang.String accnum) throws java.lang.Exception
java.lang.Exception
public static boolean getDataFileLockGrant(java.lang.String accnum, int serverCode) throws java.lang.Exception
accnum,
- the ID of the documentaction,
- the action to the documentserverCode,
- the server location codejava.lang.Exception
public java.lang.String getDocname()
public java.lang.String getDoctype()
public java.lang.String getSystemID()
public long getRootNodeID()
public java.util.Date getCreateDate()
public java.util.Date getUpdateDate()
public java.lang.String getDocID()
public java.lang.String getUserowner()
public java.lang.String getUserupdated()
public int getServerlocation()
public java.lang.String getDocHomeServer()
public java.lang.String getPublicaccess()
public int getRev()
public java.lang.String getValidateType()
public java.lang.String toString(java.lang.String user, java.lang.String[] groups, boolean withInlinedata)
public java.lang.String toString()
toString
in class java.lang.Object
public byte[] getBytes()
public java.lang.String readUsingSlowAlgorithm() throws McdbException
McdbException
public java.io.InputStream toXml(java.io.OutputStream out, java.lang.String user, java.lang.String[] groups, boolean withInLineData) throws McdbException
pw
- the Writer to which we print the document Now we decide no
matter withinInlineData's value, the document willMcdbException
public void toXmlFromDb(java.io.OutputStream outputStream, java.lang.String user, java.lang.String[] groups, boolean withInLineData) throws McdbException, java.io.IOException
pw
- the Writer to which we print the document Now we decide no
matter withinInlineData's value, the document willMcdbException
java.io.IOException
public java.io.InputStream readFromFileSystem(java.io.OutputStream out, java.lang.String user, java.lang.String[] groups, java.lang.String documentPath) throws McdbException
pw
- the Writer to which we print the documentuser
- the user we will use to verify inline data accessgroups
- the groups we will use to verify inline data accessdocumentPath
- the location of the document on diskMcdbException
public void buildIndex() throws McdbException
McdbException
- on error getting the node records for the documentpublic static java.lang.String write(DBConnection conn, java.lang.String xmlString, java.lang.String pub, java.io.Reader dtd, java.lang.String action, java.lang.String docid, java.lang.String user, java.lang.String[] groups, java.lang.String ruleBase, boolean needValidation, boolean writeAccessRules, byte[] xmlBytes, java.lang.String schemaLocation, org.dataone.service.types.v1.Checksum checksum) throws java.lang.Exception
conn
- the JDBC connection to the databasefilename
- the filename to be loaded into the databasepub
- flag for public "read" access on documentdtdfilename
- the dtd to be uploaded on server's file systemaction
- the action to be performed (INSERT OR UPDATE)docid
- the docid to use for the INSERT OR UPDATEuser
- the user that owns the documentgroups
- the groups to which user belongswriteAccessRules
- java.lang.Exception
public static java.lang.String write(DBConnection conn, java.lang.String xmlString, java.lang.String pub, java.io.Reader dtd, java.lang.String action, java.lang.String accnum, java.lang.String user, java.lang.String[] groups, int serverCode, boolean override, java.lang.String ruleBase, boolean needValidation, boolean writeAccessRules, byte[] xmlBytes, java.lang.String schemaLocation, org.dataone.service.types.v1.Checksum checksum) throws java.lang.Exception
conn
- the JDBC connection to the databasexml
- the xml stream to be loaded into the databasepub
- flag for public "read" access on xml documentdtd
- the dtd to be uploaded on server's file systemaction
- the action to be performed (INSERT or UPDATE)accnum
- the docid + rev# to use on INSERT or UPDATEuser
- the user that owns the documentgroups
- the groups to which user belongsserverCode
- the serverid from xml_replication on which this document
resides.override
- flag to stop insert replication checking. if override = true
then a document not belonging to the local server will not be
checked upon update for a file lock. if override = false then
a document not from this server, upon update will be locked
and version checked.writeAccessRules
- java.lang.Exception
public static java.lang.String writeReplication(DBConnection conn, java.lang.String xmlString, byte[] xmlBytes, java.lang.String pub, java.io.Reader dtd, java.lang.String action, java.lang.String accnum, java.lang.String user, java.lang.String[] groups, java.lang.String homeServer, java.lang.String notifyServer, java.lang.String ruleBase, boolean needValidation, java.lang.String tableName, boolean timedReplication, java.util.Date createDate, java.util.Date updateDate, java.lang.String schemaLocation) throws java.lang.Exception
conn
- the JDBC connection to the databasexml
- the xml stream to be loaded into the databasepub
- flag for public "read" access on xml documentdtd
- the dtd to be uploaded on server's file systemaction
- the action to be performed (INSERT or UPDATE)accnum
- the docid + rev# to use on INSERT or UPDATEuser
- the user that owns the documentgroups
- the groups to which user belongshomeServer
- the name of server which the document origanlly createvalidate,
- if the xml document is valid or notnotifyServer,
- the server which notify local server the force replication
commandjava.lang.Exception
public static void delete(java.lang.String accnum, java.lang.String user, java.lang.String[] groups, java.lang.String notifyServer, boolean removeAll) throws java.sql.SQLException, InsufficientKarmaException, McdbDocNotFoundException, java.lang.Exception
accnum
- the local id (including the rev) will be applied.user
- the subject who does the action.groups
- the groups which the user belongs to.notifyServer
- the server will be notified in the replication. It can be null.removeAll
- it will be the delete action if this is true; otherwise it will be the archive actionjava.sql.SQLException
InsufficientKarmaException
McdbDocNotFoundException
java.lang.Exception
public static void delete(java.lang.String accnum, boolean ignoreRev, java.lang.String user, java.lang.String[] groups, java.lang.String notifyServer, boolean removeAll) throws java.sql.SQLException, InsufficientKarmaException, McdbDocNotFoundException, java.lang.Exception
accnum
- the local id (including the rev) will be applied.ignoreRev
- if the archive action should only match docid and ignore the revuser
- the subject who does the action.groups
- the groups which the user belongs to.notifyServer
- the server will be notified in the replication. It can be null.removeAll
- it will be the delete action if this is true; otherwise it will be the archive action.java.sql.SQLException
InsufficientKarmaException
McdbDocNotFoundException
java.lang.Exception
public static boolean hasWritePermission(java.lang.String user, java.lang.String[] groups, java.lang.String docid) throws java.sql.SQLException, java.lang.Exception
java.sql.SQLException
java.lang.Exception
public static boolean hasReadPermission(java.lang.String user, java.lang.String[] groups, java.lang.String docId) throws java.sql.SQLException, McdbException
docid,
- the documentuser,
- user namegroups,
- user's groupjava.sql.SQLException
McdbException
public static boolean hasAllPermission(java.lang.String user, java.lang.String[] groups, java.lang.String docid) throws java.sql.SQLException, java.lang.Exception
java.sql.SQLException
java.lang.Exception
public static void main(java.lang.String[] args)
Usage: java DocumentImpl <-f filename -a action -d docid>
filename
- the filename to be loaded into the databaseaction
- the action to perform (READ, INSERT, UPDATE, DELETE)docid
- the id of the document to processCopyright © 2020 Regents of the University of California. All Rights Reserved.