changed ... WHERE ... LIKE ? ...to ... WHERE ... = ? ...
MS SQL Server stores trailing spaces in varchar fields which shouldn't bethus added docid.trim() in the Java code
the ODBC multi-threading problem:in DBQuery we open ResultSet in the db connection and we are trying toopen another Resultset by AccessControlList which does not workthus open separate connection for use by AccessControlList.
changedSELECT ... WHERE LIKE ? ...to:SELECT ... WHERE = ? ...
It should be changed everywhere it is found
seems that there are problem in JDBC-ODBC bridge used with SQL Serverwhen using sql statements like:SELECT ...WHERE LIKE ? ...changed to:SELECT ...WHERE = ? ...and now it works
commented out the use of oracle.jdbc.driverthis was harcoded use for batching the sql calls at once in order to speed up the insert of XML Index
Changed the order of generating and getting Unique ID forxml_nodes.nodeid and for uniqueid part of the accession#because of SQl Server capabilities:first let the db to generate unique id on insert (by db trigger and sequence or by IDENTITY key),then get that unique id for further use by the application....
- new db adapter for MS SQL Server- changed the getUniqueID(conn, tableName) to return the last generated by the db unique IDinstead of generating unique ID first by the appl and then supplied to the insert,because SQL Server doesn't have capabilitiesunique ID to be generated on the client and then supplied to the insert.
change the call from getDateFunction() to getDateTimeFunction()
changed the getDate method to getDateTime and changed the returnstring in the postgresql implementation to "now()" from now()::date
change the call from getDateString() to getDateFunction()
change the method name getDateString() to getDateFunction()return "now()::date" in the DBPostgresql implementation of that method
The Postgres implementation of the dbadapter package, still needs testing andthe getDate... method just returns the db function to return the date; to retreive thecurrent time is a second function so we may want to add a second method to return thecurrent time.
- changed to use the DBAdapter uniform interface for all apperance of "sysdate" and uniqueid generation from sequenceMetaCatUtil:- reads from metacat.properties the dbadapter class implemented the interfaceand creates an instance of that class (in static public variable named dbAdapter) for use....
the abstract DBAdapter class and its Oracle implementationfor the new dbadapter package
Fixed bug in metacat where return doctypes were not being properlyback traced. Changed DBQuery.findDocuments() so that it no longertakes a returndoc array, but instead retrieves the returndoc arrayfromthe QUERYSpecification. The QuerySpecification was augmented...
Added ability to process multiple "returndoc" elements ina pathquery document. Now, any query hit will be back traced to anassociated package if that package is listed in one of the"returndoctype" elements.
Modifications that change the package handling behavior of metacat. Packagemembership is now determined by an identifier being used as either the subjector object in a triple. One can not request arbitrary returndocs -- onlythose types that have package information embedded can be "returndoctype"...
fix in the return of the last revisionid on UPDATE instead of the previous one
fixed the problem with empy password authentication.Ldap somehow allows DirContext to be createdwhen empty password is provided as in our caseinstead of comlaining like with wrong password string.So included a check for empty password in order to reject the login.
as John were testing Metacat on postgres,he discovered that Connection needs more precise checkwhether it is open because of db timing outs.So used to be:if ( conn null ) { get new connection from db; }Now changed to:if ( conn null || conn.isClosed() ) { get new connection from db; }...
fix to view abstract only when abstractpath parameter was specified
put exception handler messages when acc# is not in the correct format as:<sitecode>.<uniqueid>.[<revisionid>]
fix - added back generate(docid, action) method called from DataFileServer.java where rev is defaulted to 1
- changes to expect revisionid to come from the client on INSERT/UPDATE/DELETE;now the client should send accession# as:sitecode.uniqueid.revisionidINSERT checks if sitecode.uniqueid part does not exist in xml_documents and xml_revisions and revisionid=1...
Tomcat has got configurated mime type mappings, but some aremissing. Thus added support for them in MetaCatServlet as:File type > MIME type------------- ----------------.xml -> "text/xml" .xsd -> "text/xml" .dtd -> "text/plain" .css -> "text/css"...
- merged "getabstract" and "getdatadoc" actions to "read" action;- put MIME types everywhere for the returned data;- zip when more than one doc/files were requested or when specified by qformat="zip" parameter;- get rid of "relation" parameter, instead use "docid" parameter name only - when more that one docid - zip them;...
Changes related to running LDAP servers referred each other in one tree modeling the KNB tree.Currently there are running LDAP server on dev that holds the KNB root and the NCEAS' s subtree.It also refers to a subtree modeling the LTER's tree which is held by another LDAP server runnig on alpha .
fixes on getting information from LDAP services
added check to see if a replication server's IP matched it's DNS entry and the entry in the replication table
fixes around getUsers and getGroups."getprincipals" action can now produce output like:<principals> <group> <groupname>Administrators<groupname> <user> <username>uid=admin,o=NCEAS, c=US<username> </user> </group>...
Included back getting the list of users and groups stored in auth schemethrough new action="getprincipals". No extra parameters are needed.Any logged in users are able to get this information
included missing implementation of getUsers(), getGroups() interfaces
Modifications to allow printing of SQL with and without INDEX option.
added print info and timing info
print the nested statements sql query
included flag in DBQuery to run pathqueries with or without the index,but for the command line only.
added timing info to main
implemented interface for download of DTD or Schema file from Metacat file systemthrough the params:action="getdtdschema" doctype
- fixed missing replication of public_access- new attribute catalog_id added in xml_documents and xml_revisionsas a FK to xml_catalog; catalog_id is replicated also
Included check up for <!DOCTYPE ... PUBLIC/SYSTEM ... >in order to set the validation parser at runtimeIn case of:- no DOCTYPE declaration- <!DOCTYPE docname>validation is turned "off" In case of:- <!DOCTYPE ... PUBLIC ...>- <!DOCTYPE ... SYSTEM ...>...
reject writing DTD file if it already exists
there were more mentions of DOCTITLE attr - cleared them
cleared DOCTITLE attribute in xml_documents and xml_revisionscleared all mentions of doctitle
added new "getaccesscontrol" action for a given docid
fixed white space problem in toXML that was preventing in line end tags from being popped from the stack.
Solving the problem with relication of access file where access files were rejected from the replication servers.In AccessControlList check for serverCode is included,so only on the local server the connected user is checked for having "all" permissions on the resources specified in it...
fixed some problems with database connections getting a time out error. Also updated some catch statements
fixed typo
included new servlet parameter "public" specifing public read access for the submitted documentthe expected values are "yes" or "no" public parameter is optional and if it is not specified, means "no"
fixed bug that was accidentally introduced when the change from metacatURL to URL was done.
added location info to catch statements
added precise location information (class.method) to each catch statement so that errors are more easily traced.
removed print statements
included implementation for public "read" access as specified from the access file
fixed introduced problem with preparedStatements
Added license terms to source code files, and cleaned up some javadocdocumentation in a few places.
Added License terms to source files, added more documentation to protocolhandler classes.
closed all preparedStatement variables
implementation for multiple <resourceIndentifier> tags under <resource>
removed dependence on MetacatURL for URL handling. Added more flexible support for identifiers in the subject and object fields. They can now be just a docid, an http url or a metacat url.
fixed bug in data file permission checking. (commited wrong file last time)
- turned on the validation in order only valid xml docs comformed to the specified dtd (if any) to be submitted in metacat- with validation "on" white spaces are reported from ignorableWhitespace() callback, not from characters() (as with validation "off")...
added more documentation
changed getCookie to static
added support for the new abstract class) to handle data file uploading through metnewninterface (actuall
newninterface (actually an abstract class) to handle data file uploading through met
fixed error in logic. sending the filesize as an int terminated by a zero failed when the file size was greater than 256. The filesize is now sent as a string followed by a zero.
added support for the server to return the docid of the newly added data file. Also, now the data stream must be prefixed with the following information: filename <0> sessionid <0> filesize <0>. where the <0> symbol is a byte containing zero. The filesize is sent as an int and the filename and sessionid are sent as strings (in byte form).
unified getting "docid" value from metacat URLs specified in <resourceIdentifier> tagsby using MetaCatUtil.parseQuery() method in the same way as in MetaCatServlet.
fixed error handling and time out issues. Also fixed thread syncronization problem
multiple files with the same names no longer overwrite each other.
fixed minor error
added support for data file upload via a random, authenticated socket.The action added to metacatServlet is getdataport. A client can send a getdataport request. the server returns a random port number and starts a thread to handle the request on the given random port. The thread will only accept requests from the client that has the session id equal to that of the user that made the getdataport request. the user must be authenticated and logged in to make a getdataport request. Once the port number is received by the client the connection can be made. The first two parameters in the data stream must be the filename, followed by session id. (note that it only wants the session id not the whole cookie and the "JSESSION=" must be stripped from the text.) If the session number is correct, the upload is allowed, the file is written and xml_documents is updated with the new data file information.
added support for data file upload via a random, authenticated socket.
- appling acl through access files only- clearing around update/delete of access files - to delete the related records from both xml_access and xml_relation tables- included check for user permissions for setting acl on the resources in the access file- moved RelationHandler.deleteRelations(docid) down in RelationHandler obj just before the write of the new relations
fixed url error in data download function
Use the new property "accessdoctype" to check if this is access file.If it is, run AccessControlList for wirting into xml_access and xml_relation tables.This is the thread that writes XML Index but afterwards.
included support for submition of access files+ storing the acl info in xml_access table and relationship records in xml_relation table like<aclfile, "isaclfilefor", recourceIdentifier> for every resource included in the access file
added support to download a data file through metacat using a metacat url or a docid parameter.
updating a package file now updates the relations that are created from it. Also, if you delete a package file, it will delete the relations associated with it.
changed replication interface to make it easier to see the servers.
added support for one way replication
added revision support to the delete function
fixed sql error
cleaned up code
removed package doctype filtering from the resultset.
added comments to top of class
changed accession number schema to <sitecode>.<serialnumber>.<revisionnumber>. DocumentIdentifier.java parses docids into parts for easy manipulation. You can now specifiy a specific revision by asking for document <sitecode>.<serialnumber>.<revisionnumber> or you can get the newest revision by asking for <sitecode>.<serialnumber> or by asking for <sitecode>.<serialnumber>.newest.
fixed typos around acltext and dtdtext params
changed acc# generation to use db sequence instead of timestamp
commented out print statement
problems with passing the connection between objects