Submitting LTPDA objects to a repository


Any of the following user objects can be submitted to an LTPDA repository:

The submission process

When an object is submitted, the following steps are taken:

  1. The userid of the user connecting is retrieved from the Users table of the repository
  2. The object to be submitted is checked to be one of the types listed above
  3. The name, created, and version fields are read from the object
  4. The object is converted to an XML text string
  5. An MD5 hash sum is computed for the XML string
  6. The XML string and the hash code are inserted in to the objs table
  7. The automatically assigned ID of the object is retrieved from the objs table
  8. Various pieces of meta-data (object name, object type, created time, client IP address, etc) are submitted to the objmeta table
  9. An 'in' entry is made in the transaction table recording the user ID and the object ID
  10. A entry is then made in the collections table, even if this is a single object submission
  11. The object IDs and the collection ID are returned to the user


Submitting objects

Objects can be submitted using the command ltpda_obj_submit. This command takes two inputs:

objectThe LTPDA object to submit
sinfoAn information structure (see below)

The information structure should have the following fields:
	>> sinfo = 

	                      conn: [1x1 database]
	                  username: 'ltpdaadmin'
	          experiment_title: 'submit ao'
	    experiment_description: 'just a test'
	             reference_ids: ''
	       additional_comments: 'none'
	        additional_authors: 'no one'

The following example script connects to a repository and submits an AO:

% Connect to a repository
[conn, username] = mysql_connect('localhost', 'ltpda_test');

% Create an AO
p = ao(plist('waveform', 'sine wave', 'f', 1, 'phi', 0, 'nsecs', 3600, 'fs', 10));

% Build an information structure
sinfo.conn                   = conn;
sinfo.username               = username;
sinfo.experiment_title       = 'submit ao';
sinfo.experiment_description = 'this is just a test of the whole thing';
sinfo.reference_ids          = '';
sinfo.additional_comments    = 'none';
sinfo.additional_authors     = 'no one';

% Submit the AO
[ids, cid] = ltpda_obj_submit(p, sinfo);

% Close the connection
close(conn);

If you run this script (after changing the hostname to a repository where you have permission to connect), you should see the following output:
** Connecting to localhost as ltpdaadmin...
** Connection status:
       DatabaseProductName: 'MySQL'
    DatabaseProductVersion: '5.0.45'
            JDBCDriverName: 'MySQL-AB JDBC Driver'
         JDBCDriverVersion: [1x103 char]
    MaxDatabaseConnections: 0
           CurrentUserName: 'ltpdaadmin@localhost'
               DatabaseURL: 'jdbc:mysql://localhost/ltpda_test'
    AutoCommitTransactions: 'True'

*** Submitting objects to repository...
 ** got user id 2 for user: ltpdaadmin
  + submitted object ao with id 1
  + made meta-data entry
  + updated transactions table
 ** made collection entry
*** submission complete.


Submitting collections

Collections of LTPDA objects can also be submitted. Here a collection is defined as a group of objects submitted at the same time. In this way, a single information structure describing the collection is assigned to all the objects. The collection is just a virtual object; it is defined by a list of object IDs in the database.

% Connect to a repository
[conn, username] = mysql_connect('localhost', 'ltpda_test');

% Create objects to submit
o1 = ao(plist('waveform', 'sine wave', 'f', 1, 'phi', 0, 'nsecs', 10, 'fs', 100));
o2 = specwin('Hanning', 100);
o3 = plist('b', 2, 'c', 'asd');

% Create an information structure
sinfo.conn                   = conn;
sinfo.username               = username;
sinfo.experiment_title       = 'submit multiple objects';
sinfo.experiment_description = 'this is just a test of the whole thing';
sinfo.reference_ids          = '';
sinfo.additional_comments    = 'none';
sinfo.additional_authors     = 'no one';

% Submit the objects
[ids, cid] = ltpda_obj_submit(o1, o2, o3, sinfo);

% Close connection
close(conn);

% END
** Connecting to localhost as ltpdaadmin...
** Connection status:
       DatabaseProductName: 'MySQL'
    DatabaseProductVersion: '5.0.45'
            JDBCDriverName: 'MySQL-AB JDBC Driver'
         JDBCDriverVersion: [1x103 char]
    MaxDatabaseConnections: 0
           CurrentUserName: 'ltpdaadmin@localhost'
               DatabaseURL: 'jdbc:mysql://localhost/ltpda_test'
    AutoCommitTransactions: 'True'

*** Submitting objects to repository...
 ** got user id 2 for user: ltpdaadmin
  + submitted object ao with id 16
  + made meta-data entry
  + updated transactions table
  + submitted object specwin with id 17
  + made meta-data entry
  + updated transactions table
  + submitted object plist with id 18
  + made meta-data entry
  + updated transactions table
 ** made collection entry
*** submission complete.

If you run the above script (after changing the hostname to a repository where you have permission to connect), you should see the following output:




©LTP Team