www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit c8b0d3daeda4d728f3668b980dbaea5e8892ba3e
parent 2ed6651b52c294dc046e845812c84bd8838b5494
Author: Dan Stillman <dstillman@zotero.org>
Date:   Thu, 18 May 2006 11:25:10 +0000

Renamed 'objects' to 'items' in DB and code -- all remaining uses refer to actual JS objects (with the exception of sidebar.js, in which only the calls to data access methods were changed)


Diffstat:
Mchrome/chromeFiles/content/scholar/data_access.js | 384++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mchrome/chromeFiles/content/scholar/db.js | 4++--
Mchrome/chromeFiles/content/scholar/scholar.js | 2+-
Mchrome/chromeFiles/content/scholar/sidebar.js | 8++++----
Mschema.sql | 175++++++++++++++++++++++++++++++++++++++++---------------------------------------
5 files changed, 287 insertions(+), 286 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/data_access.js b/chrome/chromeFiles/content/scholar/data_access.js @@ -1,56 +1,56 @@ /* - * Constructor for Object object + * Constructor for Item object * - * Generally should be called through Scholar.Objects rather than directly + * Generally should be called through Scholar.Items rather than directly */ -Scholar.Object = function(){ +Scholar.Item = function(){ this._init(); - // Accept objectTypeID, folderID and orderIndex in constructor + // Accept itemTypeID, folderID and orderIndex in constructor if (arguments.length){ this.setType(arguments[0]); this.setPosition(arguments[1],arguments[2]); } } -Scholar.Object.prototype._init = function(){ +Scholar.Item.prototype._init = function(){ // // Public members for access by public methods -- do not access directly // this._data = new Array(); this._creators = new Scholar.Hash(); - this._objectData = new Array(); + this._itemData = new Array(); this._creatorsLoaded = false; - this._objectDataLoaded = false; + this._itemDataLoaded = false; this._changed = new Scholar.Hash(); this._changedCreators = new Scholar.Hash(); - this._changedObjectData = new Scholar.Hash(); + this._changedItemData = new Scholar.Hash(); } ////////////////////////////////////////////////////////////////////////////// // -// Public Scholar.Object methods +// Public Scholar.Item methods // ////////////////////////////////////////////////////////////////////////////// /* - * Check if the specified field is a primary field from the objects table + * Check if the specified field is a primary field from the items table */ -Scholar.Object.prototype.isPrimaryField = function(field){ - if (!Scholar.Object.primaryFields){ - Scholar.Object.primaryFields = Scholar.DB.getColumnHash('objects'); - Scholar.Object.primaryFields['firstCreator'] = true; - Scholar.Object.primaryFields['parentFolderID'] = true; - Scholar.Object.primaryFields['orderIndex'] = true; +Scholar.Item.prototype.isPrimaryField = function(field){ + if (!Scholar.Item.primaryFields){ + Scholar.Item.primaryFields = Scholar.DB.getColumnHash('items'); + Scholar.Item.primaryFields['firstCreator'] = true; + Scholar.Item.primaryFields['parentFolderID'] = true; + Scholar.Item.primaryFields['orderIndex'] = true; } - return !!Scholar.Object.primaryFields[field]; + return !!Scholar.Item.primaryFields[field]; } -Scholar.Object.editableFields = { +Scholar.Item.editableFields = { title: true, source: true, rights: true @@ -59,31 +59,31 @@ Scholar.Object.editableFields = { /* * Check if the specified primary field can be changed with setField() */ -Scholar.Object.prototype.isEditableField = function(field){ - return !!Scholar.Object.editableFields[field]; +Scholar.Item.prototype.isEditableField = function(field){ + return !!Scholar.Item.editableFields[field]; } /* * Build object from database */ -Scholar.Object.prototype.loadFromID = function(id){ - var sql = 'SELECT O.*, lastName AS firstCreator, TS.parentFolderID, ' +Scholar.Item.prototype.loadFromID = function(id){ + var sql = 'SELECT I.*, lastName AS firstCreator, TS.parentFolderID, ' + 'TS.orderIndex ' - + 'FROM objects O ' - + 'LEFT JOIN treeStructure TS ON (O.objectID=TS.id AND isFolder=0) ' - + 'LEFT JOIN objectCreators OC ON (O.objectID=OC.objectID) ' - + 'LEFT JOIN creators C ON (OC.creatorID=C.creatorID) ' - + 'WHERE objectID=' + id + ' AND OC.orderIndex=0'; + + 'FROM items I ' + + 'LEFT JOIN treeStructure TS ON (I.itemID=TS.id AND isFolder=0) ' + + 'LEFT JOIN itemCreators IC ON (I.itemID=IC.itemID) ' + + 'LEFT JOIN creators C ON (IC.creatorID=C.creatorID) ' + + 'WHERE itemID=' + id + ' AND IC.orderIndex=0'; var row = Scholar.DB.rowQuery(sql); this.loadFromRow(row); } /* - * Populate basic object data from a database row + * Populate basic item data from a database row */ -Scholar.Object.prototype.loadFromRow = function(row){ +Scholar.Item.prototype.loadFromRow = function(row){ this._init(); for (col in row){ if (this.isPrimaryField(col) || col=='firstCreator'){ @@ -97,41 +97,41 @@ Scholar.Object.prototype.loadFromRow = function(row){ /* * Check if any data fields have changed since last save */ -Scholar.Object.prototype.hasChanged = function(){ +Scholar.Item.prototype.hasChanged = function(){ return (this._changed.length || this._changedCreators.length || - this._changedObjectData.length); + this._changedItemData.length); } -Scholar.Object.prototype.getID = function(){ - return this._data['objectID'] ? this._data['objectID'] : false; +Scholar.Item.prototype.getID = function(){ + return this._data['itemID'] ? this._data['itemID'] : false; } -Scholar.Object.prototype.getType = function(){ - return this._data['objectTypeID'] ? this._data['objectTypeID'] : false; +Scholar.Item.prototype.getType = function(){ + return this._data['itemTypeID'] ? this._data['itemTypeID'] : false; } -Scholar.Object.prototype.getParent = function(){ +Scholar.Item.prototype.getParent = function(){ return this._data['parentFolderID'] ? this._data['parentFolderID'] : false; } /* - * Set or change the object's type + * Set or change the item's type */ -Scholar.Object.prototype.setType = function(objectTypeID){ - if (objectTypeID==this.getType()){ +Scholar.Item.prototype.setType = function(itemTypeID){ + if (itemTypeID==this.getType()){ return true; } // If existing type, clear fields from old type that aren't in new one if (this.getType()){ - var sql = 'SELECT fieldID FROM objectTypeFields ' - + 'WHERE objectTypeID=' + this.getType() + ' AND fieldID NOT IN ' - + '(SELECT fieldID FROM objectTypeFields WHERE objectTypeID=' - + objectTypeID + ')'; + var sql = 'SELECT fieldID FROM itemTypeFields ' + + 'WHERE itemTypeID=' + this.getType() + ' AND fieldID NOT IN ' + + '(SELECT fieldID FROM itemTypeFields WHERE itemTypeID=' + + itemTypeID + ')'; var obsoleteFields = Scholar.DB.columnQuery(sql); if (obsoleteFields){ @@ -141,16 +141,16 @@ Scholar.Object.prototype.setType = function(objectTypeID){ } } - this._data['objectTypeID'] = objectTypeID; - this._changed.set('objectTypeID'); + this._data['itemTypeID'] = itemTypeID; + this._changed.set('itemTypeID'); return true; } /* - * Returns the number of creators for this object + * Returns the number of creators for this item */ -Scholar.Object.prototype.numCreators = function(){ +Scholar.Item.prototype.numCreators = function(){ if (this.getID() && !this._creatorsLoaded){ this._loadCreators(); } @@ -160,7 +160,7 @@ Scholar.Object.prototype.numCreators = function(){ /* * Returns an array of the creator data at the given position, or false if none */ -Scholar.Object.prototype.getCreator = function(pos){ +Scholar.Item.prototype.getCreator = function(pos){ if (this.getID() && !this._creatorsLoaded){ this._loadCreators(); } @@ -175,7 +175,7 @@ Scholar.Object.prototype.getCreator = function(pos){ /* * Set or update the creator at the specified position */ -Scholar.Object.prototype.setCreator = function(orderIndex, firstName, lastName, creatorTypeID){ +Scholar.Item.prototype.setCreator = function(orderIndex, firstName, lastName, creatorTypeID){ if (this.getID() && !this._creatorsLoaded){ this._loadCreators(); } @@ -209,7 +209,7 @@ Scholar.Object.prototype.setCreator = function(orderIndex, firstName, lastName, /* * Remove a creator and shift others down */ -Scholar.Object.prototype.removeCreator = function(orderIndex){ +Scholar.Item.prototype.removeCreator = function(orderIndex){ if (this.getID() && !this._creatorsLoaded){ this._loadCreators(); } @@ -230,33 +230,33 @@ Scholar.Object.prototype.removeCreator = function(orderIndex){ /* - * Retrieves (and loads from DB, if necessary) an objectData field value + * Retrieves (and loads from DB, if necessary) an itemData field value * * Field can be passed as fieldID or fieldName */ -Scholar.Object.prototype.getField = function(field){ - //Scholar.debug('Requesting field ' + field + ' for object ' + this.getID(), 4); +Scholar.Item.prototype.getField = function(field){ + //Scholar.debug('Requesting field ' + field + ' for item ' + this.getID(), 4); if (this.isPrimaryField(field)){ return this._data[field] ? this._data[field] : ''; } else { - if (this.getID() && !this._objectDataLoaded){ - this._loadObjectData(); + if (this.getID() && !this._itemDataLoaded){ + this._loadItemData(); } - var fieldID = Scholar.ObjectFields.getID(field); + var fieldID = Scholar.ItemFields.getID(field); - return this._objectData[fieldID] ? this._objectData[fieldID] : ''; + return this._itemData[fieldID] ? this._itemData[fieldID] : ''; } } /* - * Set a field value, loading existing objectData first if necessary + * Set a field value, loading existing itemData first if necessary * * Field can be passed as fieldID or fieldName */ -Scholar.Object.prototype.setField = function(field, value, loadIn){ +Scholar.Item.prototype.setField = function(field, value, loadIn){ // Primary field if (this.isPrimaryField(field)){ if (!this.isEditableField(field)){ @@ -274,32 +274,32 @@ Scholar.Object.prototype.setField = function(field, value, loadIn){ // Type-specific field else { if (!this.getType()){ - throw ('Object type must be set before setting field data.'); + throw ('Item type must be set before setting field data.'); } - // If existing object, load field data first unless we're already in + // If existing item, load field data first unless we're already in // the middle of a load - if (this.getID() && !loadIn && !this._objectDataLoaded){ - this._loadObjectData(); + if (this.getID() && !loadIn && !this._itemDataLoaded){ + this._loadItemData(); } - var fieldID = Scholar.ObjectFields.getID(field); + var fieldID = Scholar.ItemFields.getID(field); if (!fieldID){ - throw (field + ' is not a valid objectData field.'); + throw (field + ' is not a valid itemData field.'); } - if (!Scholar.ObjectFields.isValidForType(fieldID, this.getType())){ + if (!Scholar.ItemFields.isValidForType(fieldID, this.getType())){ throw (field + ' is not a valid field for this type.'); } // If existing value, make sure it's actually changing - if (this._objectData[fieldID] && this._objectData[fieldID]==value){ + if (this._itemData[fieldID] && this._itemData[fieldID]==value){ return false; } - this._objectData[fieldID] = value; + this._itemData[fieldID] = value; if (!loadIn){ - this._changedObjectData.set(fieldID); + this._changedItemData.set(fieldID); } return true; } @@ -307,15 +307,15 @@ Scholar.Object.prototype.setField = function(field, value, loadIn){ /* - * Move object to new position and shift surrounding objects + * Move item to new position and shift surrounding items * * N.B. Unless isNew is set, this function updates the DB immediately and - * reloads all cached objects -- a save() is not required + * reloads all cached items -- a save() is not required * * If isNew is true, a transaction is not started or committed, so it * should only be run from an existing transaction within save() */ -Scholar.Object.prototype.setPosition = function(newFolder, newPos, isNew){ +Scholar.Item.prototype.setPosition = function(newFolder, newPos, isNew){ var oldFolder = this.getField('parentFolderID'); var oldPos = this.getField('orderIndex'); @@ -347,7 +347,7 @@ Scholar.Object.prototype.setPosition = function(newFolder, newPos, isNew){ Scholar.DB.query(sql); } - // If a new object, insert + // If a new item, insert if (isNew){ sql = 'INSERT INTO treeStructure SET id=' + this.getID() + ', ' + 'isFolder=0, orderIndex=' + newPos + ', ' + @@ -370,7 +370,7 @@ Scholar.Object.prototype.setPosition = function(newFolder, newPos, isNew){ this._data['orderIndex'] = newPos; if (!isNew){ - Scholar.Objects.reloadAll(); + Scholar.Items.reloadAll(); } return true; } @@ -379,19 +379,19 @@ Scholar.Object.prototype.setPosition = function(newFolder, newPos, isNew){ /* * Save changes back to database */ -Scholar.Object.prototype.save = function(){ +Scholar.Item.prototype.save = function(){ if (!this.hasChanged()){ - Scholar.debug('Object ' + this.getID() + ' has not changed', 4); + Scholar.debug('Item ' + this.getID() + ' has not changed', 4); return !!this.getID(); } // - // Existing object, update + // Existing item, update // if (this.getID()){ - Scholar.debug('Updating database with new object data', 4); + Scholar.debug('Updating database with new item data', 4); - var objectID = this.getID(); + var itemID = this.getID(); try { Scholar.DB.beginTransaction(); @@ -399,11 +399,11 @@ Scholar.Object.prototype.save = function(){ // // Primary fields // - var sql = "UPDATE objects SET "; + var sql = "UPDATE items SET "; var sql2; - if (this._changed.has('objectTypeID')){ - sql += "objectTypeID='" + this.getField('objectTypeID') + "', "; + if (this._changed.has('itemTypeID')){ + sql += "itemTypeID='" + this.getField('itemTypeID') + "', "; } if (this._changed.has('title')){ sql += "title='" + this.getField('title') + "', "; @@ -417,7 +417,7 @@ Scholar.Object.prototype.save = function(){ // Always update modified time sql += "dateModified=CURRENT_TIMESTAMP "; - sql += "WHERE objectID=" + this.getID() + ";\n"; + sql += "WHERE itemID=" + this.getID() + ";\n"; // @@ -434,8 +434,8 @@ Scholar.Object.prototype.save = function(){ // We have to do this immediately so old entries are // cleared before other ones are shifted down if (!creator['firstName'] && !creator['lastName']){ - sql2 = 'DELETE FROM objectCreators ' - + ' WHERE objectID=' + this.getID() + sql2 = 'DELETE FROM itemCreators ' + + ' WHERE itemID=' + this.getID() + ' AND orderIndex=' + orderIndex; Scholar.DB.query(sql2); continue; @@ -458,18 +458,18 @@ Scholar.Object.prototype.save = function(){ } - sql2 = 'SELECT COUNT(*) FROM objectCreators' - + ' WHERE objectID=' + this.getID() + sql2 = 'SELECT COUNT(*) FROM itemCreators' + + ' WHERE itemID=' + this.getID() + ' AND orderIndex=' + orderIndex; if (Scholar.DB.valueQuery(sql2)){ - sql += 'UPDATE objectCreators SET creatorID=' - + creatorID + ' WHERE objectID=' + this.getID() + sql += 'UPDATE itemCreators SET creatorID=' + + creatorID + ' WHERE itemID=' + this.getID() + ' AND orderIndex=' + orderIndex + ";\n"; } else { - sql += 'INSERT INTO objectCreators VALUES (' - + creatorID + ',' + objectID + ',' + orderIndex + sql += 'INSERT INTO itemCreators VALUES (' + + creatorID + ',' + itemID + ',' + orderIndex + ");\n"; } } @@ -480,34 +480,34 @@ Scholar.Object.prototype.save = function(){ // - // ObjectData + // ItemData // - if (this._changedObjectData.length){ + if (this._changedItemData.length){ var del = new Array(); - for (fieldID in this._changedObjectData.items){ + for (fieldID in this._changedItemData.items){ if (this.getField(fieldID)){ // Oh, for an INSERT...ON DUPLICATE KEY UPDATE - sql2 = 'SELECT COUNT(*) FROM objectData ' - + 'WHERE objectID=' + this.getID() + sql2 = 'SELECT COUNT(*) FROM itemData ' + + 'WHERE itemID=' + this.getID() + ' AND fieldID=' + fieldID; if (Scholar.DB.valueQuery(sql2)){ - sql += "UPDATE objectData SET value="; + sql += "UPDATE itemData SET value="; // Take advantage of SQLite's manifest typing - if (Scholar.ObjectFields.isInteger(fieldID)){ + if (Scholar.ItemFields.isInteger(fieldID)){ sql += this.getField(fieldID); } else { sql += "'" + this.getField(fieldID) + "'"; } - sql += " WHERE objectID=" + this.getID() + sql += " WHERE itemID=" + this.getID() + ' AND fieldID=' + fieldID + ";\n"; } else { - sql += 'INSERT INTO objectData VALUES (' + sql += 'INSERT INTO itemData VALUES (' + this.getID() + ',' + fieldID + ','; - if (Scholar.ObjectFields.isInteger(fieldID)){ + if (Scholar.ItemFields.isInteger(fieldID)){ sql += this.getField(fieldID); } else { @@ -524,8 +524,8 @@ Scholar.Object.prototype.save = function(){ // Delete blank fields if (del.length){ - sql += 'DELETE from objectData ' - + 'WHERE objectID=' + this.getID() + ' ' + sql += 'DELETE from itemData ' + + 'WHERE itemID=' + this.getID() + ' ' + 'AND fieldID IN (' + del.join() + ");\n"; } } @@ -541,10 +541,10 @@ Scholar.Object.prototype.save = function(){ } // - // New object, insert and return id + // New item, insert and return id // else { - Scholar.debug('Saving data for new object to database'); + Scholar.debug('Saving data for new item to database'); var isNew = true; var sqlColumns = new Array(); @@ -553,8 +553,8 @@ Scholar.Object.prototype.save = function(){ // // Primary fields // - sqlColumns.push('objectTypeID'); - sqlValues.push({'int':this.getField('objectTypeID')}); + sqlColumns.push('itemTypeID'); + sqlValues.push({'int':this.getField('itemTypeID')}); if (this._changed.has('title')){ sqlColumns.push('title'); @@ -601,17 +601,17 @@ Scholar.Object.prototype.save = function(){ ); } - sql += 'INSERT INTO objectCreators VALUES (' - + creatorID + ',' + objectID + ',' + orderIndex + sql += 'INSERT INTO itemCreators VALUES (' + + creatorID + ',' + itemID + ',' + orderIndex + ");\n"; } } // - // objectData fields + // itemData fields // - var sql = "INSERT INTO objects (" + sqlColumns.join() + ')' + var sql = "INSERT INTO items (" + sqlColumns.join() + ')' + ' VALUES ('; // Insert placeholders for bind parameters for (var i=0; i<sqlValues.length; i++){ @@ -619,14 +619,14 @@ Scholar.Object.prototype.save = function(){ } sql = sql.substring(0,sql.length-1) + ");\n"; - var objectID = Scholar.DB.query(sql,sqlValues); + var itemID = Scholar.DB.query(sql,sqlValues); - if (this._changedObjectData.length){ + if (this._changedItemData.length){ sql = ''; - for (fieldID in this._changedObjectData.items){ - sql += 'INSERT INTO objectData VALUES (' + - objectID + ',' + fieldID + ','; - if (Scholar.ObjectFields.isInteger(fieldID)){ + for (fieldID in this._changedItemData.items){ + sql += 'INSERT INTO itemData VALUES (' + + itemID + ',' + fieldID + ','; + if (Scholar.ItemFields.isInteger(fieldID)){ sql += this.getField(fieldID); } else { @@ -641,7 +641,7 @@ Scholar.Object.prototype.save = function(){ Scholar.DB.query(sql); - // Set the position of the new object + // Set the position of the new item var newFolder = this._changed.has('parentFolderID') ? this.getField('parentFolderID') : 0; @@ -651,7 +651,7 @@ Scholar.Object.prototype.save = function(){ this.setPosition(newFolder, newPos, true); // TODO: reload Folder or set the empty flag to false manually - // in case this was the first object in a folder + // in case this was the first item in a folder Scholar.DB.commitTransaction(); } @@ -661,39 +661,39 @@ Scholar.Object.prototype.save = function(){ } } - Scholar.Objects.reload(this.getID()); + Scholar.Items.reload(this.getID()); return isNew ? this.getID() : true; } -Scholar.Object.prototype.toString = function(){ +Scholar.Item.prototype.toString = function(){ return this.getTitle(); } -Scholar.Object.prototype.isFolder = function(){ +Scholar.Item.prototype.isFolder = function(){ return false; } ////////////////////////////////////////////////////////////////////////////// // -// Private Scholar.Object methods +// Private Scholar.Item methods // ////////////////////////////////////////////////////////////////////////////// /* * Load in the creators from the database */ -Scholar.Object.prototype._loadCreators = function(){ +Scholar.Item.prototype._loadCreators = function(){ if (!this.getID()){ - throw ('ObjectID not set for object before attempting to load creators'); + throw ('ItemID not set for item before attempting to load creators'); } - var sql = 'SELECT C.creatorID, C.*, orderIndex FROM objectCreators OC ' + var sql = 'SELECT C.creatorID, C.*, orderIndex FROM itemCreators IC ' + 'LEFT JOIN creators C USING (creatorID) ' - + 'WHERE objectID=' + this.getID() + ' ORDER BY orderIndex'; + + 'WHERE itemID=' + this.getID() + ' ORDER BY orderIndex'; var creators = Scholar.DB.query(sql); this._creatorsLoaded = true; @@ -718,19 +718,19 @@ Scholar.Object.prototype._loadCreators = function(){ /* * Load in the field data from the database */ -Scholar.Object.prototype._loadObjectData = function(){ +Scholar.Item.prototype._loadItemData = function(){ if (!this.getID()){ - throw ('ObjectID not set for object before attempting to load data'); + throw ('ItemID not set for object before attempting to load data'); } - var sql = 'SELECT OD.fieldID, value FROM objectData OD JOIN ' - + 'objectTypeFields OTF ON (OTF.objectTypeID=(SELECT objectTypeID FROM ' - + 'objects WHERE objectID=?1) AND OTF.fieldID=OD.fieldID) ' - + 'WHERE objectID=?1 ORDER BY orderIndex'; + var sql = 'SELECT ID.fieldID, value FROM itemData ID JOIN ' + + 'itemTypeFields ITF ON (ITF.itemTypeID=(SELECT itemTypeID FROM ' + + 'items WHERE itemID=?1) AND ITF.fieldID=ID.fieldID) ' + + 'WHERE itemID=?1 ORDER BY orderIndex'; - var result = Scholar.DB.query(sql,[{'int':this._data['objectID']}]); + var result = Scholar.DB.query(sql,[{'int':this._data['itemID']}]); - this._objectDataLoaded = true; + this._itemDataLoaded = true; if (result){ for (var i=0,len=result.length; i<len; i++){ @@ -748,11 +748,11 @@ Scholar.Object.prototype._loadObjectData = function(){ /* - * Primary interface for accessing Scholar objects + * Primary interface for accessing Scholar items */ -Scholar.Objects = new function(){ +Scholar.Items = new function(){ // Private members - var _objects = new Array(); + var _items = new Array(); // Privileged methods this.get = get; @@ -762,12 +762,12 @@ Scholar.Objects = new function(){ this.reloadAll = reloadAll; /* - * Retrieves (and loads, if necessary) an arbitrary number of objects + * Retrieves (and loads, if necessary) an arbitrary number of items * * Can be passed ids as individual parameters or as an array of ids, or both * * If only one argument and it's an id, return object directly; - * otherwise, return array indexed by objectID + * otherwise, return array indexed by itemID */ function get(){ var toLoad = new Array(); @@ -781,12 +781,12 @@ Scholar.Objects = new function(){ for (var i=0; i<ids.length; i++){ // Check if already loaded - if (!_objects[ids[i]]){ + if (!_items[ids[i]]){ toLoad.push(ids[i]); } } - // New objects to load + // New items to load if (toLoad.length){ _load(toLoad); } @@ -794,12 +794,12 @@ Scholar.Objects = new function(){ // If single id, return the object directly if (arguments[0] && typeof arguments[0]!='Object' && typeof arguments[1]=='undefined'){ - return _objects[arguments[0]]; + return _items[arguments[0]]; } // Otherwise, build return array for (i=0; i<ids.length; i++){ - loaded[ids[i]] = _objects[ids[i]]; + loaded[ids[i]] = _items[ids[i]]; } return loaded; @@ -807,11 +807,11 @@ Scholar.Objects = new function(){ /* - * Returns all objects in the database + * Returns all items in the database */ function getAll(){ - var sql = 'SELECT O.objectID FROM objects O ' - + 'LEFT JOIN treeStructure TS ON (O.objectID=TS.id AND isFolder=0) ' + var sql = 'SELECT I.itemID FROM items I ' + + 'LEFT JOIN treeStructure TS ON (I.itemID=TS.id AND isFolder=0) ' + 'ORDER BY orderIndex'; var ids = Scholar.DB.columnQuery(sql); @@ -820,8 +820,8 @@ Scholar.Objects = new function(){ /* - * Returns an array of all folders and objects that are children of a folder - * as Scholar.Folder and Scholar.Object instances + * Returns an array of all folders and items that are children of a folder + * as Scholar.Folder and Scholar.Item instances * * Takes parent folderID as optional parameter; by default, returns root items * @@ -859,9 +859,9 @@ Scholar.Objects = new function(){ } } else { - var obj = Scholar.Objects.get(tree[i]['id']); + var obj = Scholar.Items.get(tree[i]['id']); if (!obj){ - throw ('Object ' + tree[i]['id'] + ' not found'); + throw ('Item ' + tree[i]['id'] + ' not found'); } } @@ -873,7 +873,7 @@ Scholar.Objects = new function(){ /* - * Reloads data for specified objects into internal array + * Reloads data for specified items into internal array * * Can be passed ids as individual parameters or as an array of ids, or both */ @@ -891,22 +891,22 @@ Scholar.Objects = new function(){ /* - * Reloads all currently cached objects + * Reloads all currently cached items */ function reloadAll(){ var ids = new Array(); - for (objectID in _objects){ - ids.push(objectID); + for (itemID in _items){ + ids.push(itemID); } _load(ids); return true; } - function add(data, objectTypeID, folderID, orderIndex){ + function add(data, itemTypeID, folderID, orderIndex){ var insert = new Array(); - var obj = new Scholar.Object(objectTypeID, folderID, orderIndex); + var obj = new Scholar.Item(itemTypeID, folderID, orderIndex); for (field in data){ obj.setField(data[field]); @@ -923,27 +923,27 @@ Scholar.Objects = new function(){ return false; } - // Should be the same as query in Scholar.Object.loadFromID, just - // without objectID clause - var sql = 'SELECT O.*, lastName AS firstCreator, TS.parentFolderID, ' + // Should be the same as query in Scholar.Item.loadFromID, just + // without itemID clause + var sql = 'SELECT I.*, lastName AS firstCreator, TS.parentFolderID, ' + 'TS.orderIndex ' - + 'FROM objects O ' - + 'LEFT JOIN treeStructure TS ON (O.objectID=TS.id AND isFolder=0) ' - + 'LEFT JOIN objectCreators OC ON (O.objectID=OC.objectID) ' - + 'LEFT JOIN creators C ON (OC.creatorID=C.creatorID) ' - + 'WHERE OC.orderIndex=0'; + + 'FROM items I ' + + 'LEFT JOIN treeStructure TS ON (I.itemID=TS.id AND isFolder=0) ' + + 'LEFT JOIN itemCreators IC ON (I.itemID=IC.itemID) ' + + 'LEFT JOIN creators C ON (IC.creatorID=C.creatorID) ' + + 'WHERE IC.orderIndex=0'; if (arguments[0]!='all'){ - sql += ' AND O.objectID IN (' + Scholar.join(arguments,',') + ')'; + sql += ' AND I.itemID IN (' + Scholar.join(arguments,',') + ')'; } var result = Scholar.DB.query(sql); if (result){ for (var i=0,len=result.length; i<len; i++){ - var obj = new Scholar.Object(); + var obj = new Scholar.Item(); obj.loadFromRow(result[i]); - _objects[result[i]['objectID']] = obj; + _items[result[i]['itemID']] = obj; } } return true; @@ -1154,7 +1154,7 @@ Scholar.Creators = new function(){ */ function purge(returnSQL){ var sql = 'SELECT creatorID FROM creators WHERE creatorID NOT IN ' - + '(SELECT creatorID FROM objectCreators);'; + + '(SELECT creatorID FROM itemCreators);'; var toDelete = Scholar.DB.columnQuery(sql); if (!toDelete){ @@ -1162,7 +1162,7 @@ Scholar.Creators = new function(){ } sql = 'DELETE FROM creators WHERE creatorID NOT IN ' - + '(SELECT creatorID FROM objectCreators);'; + + '(SELECT creatorID FROM itemCreators);'; if (!returnSQL){ var result = Scholar.DB.query(sql); @@ -1194,18 +1194,18 @@ Scholar.Creators = new function(){ -Scholar.ObjectFields = new function(){ +Scholar.ItemFields = new function(){ // Private members var _fields = new Array(); var _fieldFormats = new Array(); - var _objectTypeFields = new Array(); + var _itemTypeFields = new Array(); // Privileged methods this.getName = getName; this.getID = getID; this.isValidForType = isValidForType; this.isInteger = isInteger; - this.getObjectTypeFields = getObjectTypeFields; + this.getItemTypeFields = getItemTypeFields; /* * Return the fieldName for a passed fieldID or fieldName @@ -1229,11 +1229,11 @@ Scholar.ObjectFields = new function(){ } - function isValidForType(fieldID, objectTypeID){ + function isValidForType(fieldID, itemTypeID){ if (!_fields.length){ _loadFields(); } - return !!_fields[fieldID]['objectTypes'][objectTypeID]; + return !!_fields[fieldID]['itemTypes'][itemTypeID]; } @@ -1247,38 +1247,38 @@ Scholar.ObjectFields = new function(){ /* - * Returns an array of fieldIDs for a given object type + * Returns an array of fieldIDs for a given item type */ - function getObjectTypeFields(objectTypeID){ - if (_objectTypeFields[objectTypeID]){ - return _objectTypeFields[objectTypeID]; + function getItemTypeFields(itemTypeID){ + if (_itemTypeFields[itemTypeID]){ + return _itemTypeFields[itemTypeID]; } - var sql = 'SELECT fieldID FROM objectTypeFields ' - + 'WHERE objectTypeID=' + objectTypeID + ' ORDER BY orderIndex'; + var sql = 'SELECT fieldID FROM itemTypeFields ' + + 'WHERE itemTypeID=' + itemTypeID + ' ORDER BY orderIndex'; - _objectTypeFields[objectTypeID] = Scholar.DB.columnQuery(sql); - return _objectTypeFields[objectTypeID]; + _itemTypeFields[itemTypeID] = Scholar.DB.columnQuery(sql); + return _itemTypeFields[itemTypeID]; } /* - * Returns hash array of objectTypeIDs for which a given field is valid + * Returns hash array of itemTypeIDs for which a given field is valid */ - function _getFieldObjectTypes(){ - var sql = 'SELECT fieldID,objectTypeID FROM objectTypeFields'; + function _getFieldItemTypes(){ + var sql = 'SELECT fieldID, itemTypeID FROM itemTypeFields'; var results = Scholar.DB.query(sql); if (!results){ - throw ('No fields in objectTypeFields!'); + throw ('No fields in itemTypeFields!'); } var fields = new Array(); for (var i=0; i<results.length; i++){ if (!fields[results[i]['fieldID']]){ fields[results[i]['fieldID']] = new Array(); } - fields[results[i]['fieldID']][results[i]['objectTypeID']] = true; + fields[results[i]['fieldID']][results[i]['itemTypeID']] = true; } return fields; } @@ -1305,14 +1305,14 @@ Scholar.ObjectFields = new function(){ throw ('No fields in database!'); } - var fieldObjectTypes = _getFieldObjectTypes(); + var fieldItemTypes = _getFieldItemTypes(); for (i=0,len=result.length; i<len; i++){ _fields[result[i]['fieldID']] = { id: result[i]['fieldID'], name: result[i]['fieldName'], formatID: result[i]['fieldFormatID'], - objectTypes: fieldObjectTypes[result[i]['fieldID']] + itemTypes: fieldItemTypes[result[i]['fieldID']] }; // Store by name as well as id _fields[result[i]['fieldName']] = _fields[result[i]['fieldID']]; @@ -1321,9 +1321,9 @@ Scholar.ObjectFields = new function(){ } /* -var objects = Scholar.Objects.getAll(); +var items = Scholar.Items.getAll(); -var obj = objects[9]; +var obj = items[9]; for (var i=0,len=obj.numCreators(); i<len; i++){ Scholar.debug(Scholar.varDump(obj.getCreator(i))); } diff --git a/chrome/chromeFiles/content/scholar/db.js b/chrome/chromeFiles/content/scholar/db.js @@ -412,11 +412,11 @@ Scholar.DB = new function(){ for (var i=parseInt(fromVersion) + 1; i<=toVersion; i++){ // For now, just wipe and recreate - if (i==6){ + if (i==7){ _initializeSchema(); } - if (i==7){ + if (i==8){ // do stuff // _updateDBVersion(i); } diff --git a/chrome/chromeFiles/content/scholar/scholar.js b/chrome/chromeFiles/content/scholar/scholar.js @@ -1,7 +1,7 @@ const SCHOLAR_CONFIG = { GUID: 'scholar@chnm', DB_FILE: 'scholar.sqlite', - DB_VERSION: 6, // must match version at top of schema.sql + DB_VERSION: 7, // must match version at top of schema.sql DB_REBUILD: false, // erase DB and recreate from schema DEBUG_LOGGING: true, DEBUG_TO_CONSOLE: false // dump debug messages to console rather than (much slower) Debug Logger diff --git a/chrome/chromeFiles/content/scholar/sidebar.js b/chrome/chromeFiles/content/scholar/sidebar.js @@ -15,7 +15,7 @@ Scholar.TreeView.prototype.setTree = function(treebox) return; this._treebox = treebox; - var newRows = Scholar.Objects.getTreeRows(); + var newRows = Scholar.Items.getTreeRows(); for(var i = 0; i < newRows.length; i++) this._insertItem(newRows[i], 0, i+1); //object ref, isContainerOpen, level @@ -85,7 +85,7 @@ Scholar.TreeView.prototype.toggleOpenState = function(row) } else { - var newRows = Scholar.Objects.getTreeRows(this._getObjectAtRow(row).getID()); //Get children + var newRows = Scholar.Items.getTreeRows(this._getObjectAtRow(row).getID()); //Get children for(var i = 0; i < newRows.length; i++) { @@ -245,10 +245,10 @@ function removeDynamicRows() function getFullFieldList(item) { - var fields = Scholar.ObjectFields.getObjectTypeFields(item.getField("objectTypeID")); + var fields = Scholar.ItemFields.getItemTypeFields(item.getField("itemTypeID")); var fieldNames = new Array("title","dateAdded","dateModified","source","rights"); for(var i = 0; i<fields.length; i++) - fieldNames.push(Scholar.ObjectFields.getName(fields[i])); + fieldNames.push(Scholar.ItemFields.getName(fields[i])); return fieldNames; } diff --git a/schema.sql b/schema.sql @@ -1,14 +1,14 @@ --- 6 +-- 7 DROP TABLE IF EXISTS version; CREATE TABLE version ( version INTEGER PRIMARY KEY ); - DROP TABLE IF EXISTS objects; - CREATE TABLE objects ( - objectID INTEGER PRIMARY KEY, - objectTypeID INT, + DROP TABLE IF EXISTS items; + CREATE TABLE items ( + itemID INTEGER PRIMARY KEY, + itemTypeID INT, title TEXT, dateAdded DATETIME DEFAULT CURRENT_TIMESTAMP, dateModified DATETIME DEFAULT CURRENT_TIMESTAMP, @@ -16,9 +16,9 @@ rights TEXT ); - DROP TABLE IF EXISTS objectTypes; - CREATE TABLE objectTypes ( - objectTypeID INTEGER PRIMARY KEY, + DROP TABLE IF EXISTS itemTypes; + CREATE TABLE itemTypes ( + itemTypeID INTEGER PRIMARY KEY, typeName TEXT ); @@ -37,26 +37,27 @@ FOREIGN KEY (fieldFormatID) REFERENCES fieldFormat(fieldFormatID) ); - DROP TABLE IF EXISTS objectTypeFields; - CREATE TABLE objectTypeFields ( - objectTypeID INT, + DROP TABLE IF EXISTS itemTypeFields; + CREATE TABLE itemTypeFields ( + itemTypeID INT, fieldID INT, orderIndex INT, - PRIMARY KEY (objectTypeID, fieldID), - FOREIGN KEY (objectTypeID) REFERENCES objectTypes(objectTypeID), - FOREIGN KEY (fieldID) REFERENCES objectTypes(objectTypeID) + PRIMARY KEY (itemTypeID, fieldID), + FOREIGN KEY (itemTypeID) REFERENCES itemTypes(itemTypeID), + FOREIGN KEY (fieldID) REFERENCES itemTypes(itemTypeID) ); - DROP TABLE IF EXISTS objectData; - CREATE TABLE objectData ( - objectID INT, + DROP TABLE IF EXISTS itemData; + CREATE TABLE itemData ( + itemID INT, fieldID INT, value NONE, - PRIMARY KEY (objectID, fieldID), - FOREIGN KEY (objectID) REFERENCES objects(objectID), + PRIMARY KEY (itemID, fieldID), + FOREIGN KEY (itemID) REFERENCES items(itemID), FOREIGN KEY (fieldID) REFERENCES fields(fieldID) ); - CREATE INDEX value ON objectData (value); + DROP INDEX IF EXISTS value; + CREATE INDEX value ON itemData (value); DROP TABLE IF EXISTS keywords; CREATE TABLE keywords ( @@ -64,12 +65,12 @@ keyword TEXT ); - DROP TABLE IF EXISTS objectKeywords; - CREATE TABLE objectKeywords ( - objectID INT, + DROP TABLE IF EXISTS itemKeywords; + CREATE TABLE itemKeywords ( + itemID INT, keywordID INT, - PRIMARY KEY (objectID, keywordID), - FOREIGN KEY (objectID) REFERENCES objects(objectID), + PRIMARY KEY (itemID, keywordID), + FOREIGN KEY (itemID) REFERENCES items(itemID), FOREIGN KEY (keywordID) REFERENCES keywords(keywordID) ); @@ -89,13 +90,13 @@ creatorType TEXT ); - DROP TABLE IF EXISTS objectCreators; - CREATE TABLE objectCreators ( - objectID INT, + DROP TABLE IF EXISTS itemCreators; + CREATE TABLE itemCreators ( + itemID INT, creatorID INT, orderIndex INT DEFAULT 0, - PRIMARY KEY (objectID, creatorID), - FOREIGN KEY (objectID) REFERENCES objects(objectID), + PRIMARY KEY (itemID, creatorID), + FOREIGN KEY (itemID) REFERENCES items(itemID), FOREIGN KEY (creatorID) REFERENCES creators(creatorID) ); @@ -121,8 +122,8 @@ INSERT INTO treeStructure VALUES (0, 1, 0, NULL); -- Some sample data - INSERT INTO objectTypes VALUES (1,'Book'); - INSERT INTO objectTypes VALUES (2,'Journal Article'); + INSERT INTO itemTypes VALUES (1,'Book'); + INSERT INTO itemTypes VALUES (2,'Journal Article'); INSERT INTO "fieldFormats" VALUES(1, '.*', 0); INSERT INTO "fieldFormats" VALUES(2, '[0-9]*', 1); @@ -140,43 +141,43 @@ INSERT INTO fields VALUES (10,'publication',NULL); INSERT INTO fields VALUES (11,'ISSN',NULL); - INSERT INTO objectTypeFields VALUES (1,1,1); - INSERT INTO objectTypeFields VALUES (1,2,2); - INSERT INTO objectTypeFields VALUES (1,3,3); - INSERT INTO objectTypeFields VALUES (1,4,4); - INSERT INTO objectTypeFields VALUES (1,5,5); - INSERT INTO objectTypeFields VALUES (1,6,6); - INSERT INTO objectTypeFields VALUES (1,7,7); - INSERT INTO objectTypeFields VALUES (1,8,8); - INSERT INTO objectTypeFields VALUES (1,9,9); - INSERT INTO objectTypeFields VALUES (2,10,1); - INSERT INTO objectTypeFields VALUES (2,2,2); - INSERT INTO objectTypeFields VALUES (2,3,3); - INSERT INTO objectTypeFields VALUES (2,8,4); - - INSERT INTO "objects" VALUES(1, 1, 'Online connections: Internet interpersonal relationships', '2006-03-12 05:24:40', '2006-03-12 05:24:40', NULL, NULL); - INSERT INTO "objects" VALUES(2, 1, 'Computer-Mediated Communication: Human-to-Human Communication Across the Internet', '2006-03-12 05:25:50', '2006-03-12 05:25:50', NULL, NULL); - INSERT INTO "objects" VALUES(3, 2, 'Residential propinquity as a factor in marriage selection', '2006-03-12 05:26:37', '2006-03-12 05:26:37', NULL, NULL); - INSERT INTO "objects" VALUES(4, 1, 'Connecting: how we form social bonds and communities in the Internet age', '2006-03-12 05:27:15', '2006-03-12 05:27:15', NULL, NULL); - INSERT INTO "objects" VALUES(5, 1, 'Male, Female, Email: The Struggle for Relatedness in a Paranoid Society', '2006-03-12 05:27:36', '2006-03-12 05:27:36', NULL, NULL); - INSERT INTO "objects" VALUES(6, 2, 'Social Implications of Sociology', '2006-03-12 05:27:53', '2006-03-12 05:27:53', NULL, NULL); - INSERT INTO "objects" VALUES(7, 1, 'Social Pressures in Informal Groups: A Study of Human Factors in Housing', '2006-03-12 05:28:05', '2006-03-12 05:28:05', NULL, NULL); - INSERT INTO "objects" VALUES(8, 1, 'Cybersociety 2.0: Revisiting Computer-Mediated Community and Technology', '2006-03-12 05:28:37', '2006-03-12 05:28:37', NULL, NULL); - INSERT INTO "objects" VALUES(9, 2, 'The Computer as a Communication Device', '2006-03-12 05:29:03', '2006-03-12 05:29:03', NULL, NULL); - INSERT INTO "objects" VALUES(10, 2, 'What Does Research Say about the Nature of Computer-mediated Communication: Task-Oriented, Social-Emotion-Oriented, or Both?', '2006-03-12 05:29:12', '2006-03-12 05:29:12', NULL, NULL); - INSERT INTO "objects" VALUES(11, 1, 'The second self: computers and the human spirit', '2006-03-12 05:30:38', '2006-03-12 05:30:38', NULL, NULL); - INSERT INTO "objects" VALUES(12, 1, 'Life on the screen: identity in the age of the Internet', '2006-03-12 05:30:49', '2006-03-12 05:30:49', NULL, NULL); - INSERT INTO "objects" VALUES(13, 2, 'The computer conference: An altered state of communication', '2006-03-12 05:31:00', '2006-03-12 05:31:00', NULL, NULL); - INSERT INTO "objects" VALUES(14, 2, 'Computer Networks as Social Networks: Collaborative Work, Telework, and Community', '2006-03-12 05:31:17', '2006-03-12 05:31:17', NULL, NULL); - INSERT INTO "objects" VALUES(15, 1, 'The Internet in everyday life', '2006-03-12 05:31:41', '2006-03-12 05:31:41', NULL, NULL); - - INSERT INTO "objectData" VALUES(1, 7, 2001); - INSERT INTO "objectData" VALUES(1, 5, 'Cresskill, N.J.'); - INSERT INTO "objectData" VALUES(1, 6, 'Hampton Press'); - INSERT INTO "objectData" VALUES(2, 7, 2002); - INSERT INTO "objectData" VALUES(2, 6, 'Allyn & Bacon Publishers'); - INSERT INTO "objectData" VALUES(2, 8, 347); - INSERT INTO "objectData" VALUES(2, 9, '0-205-32145-3'); + INSERT INTO itemTypeFields VALUES (1,1,1); + INSERT INTO itemTypeFields VALUES (1,2,2); + INSERT INTO itemTypeFields VALUES (1,3,3); + INSERT INTO itemTypeFields VALUES (1,4,4); + INSERT INTO itemTypeFields VALUES (1,5,5); + INSERT INTO itemTypeFields VALUES (1,6,6); + INSERT INTO itemTypeFields VALUES (1,7,7); + INSERT INTO itemTypeFields VALUES (1,8,8); + INSERT INTO itemTypeFields VALUES (1,9,9); + INSERT INTO itemTypeFields VALUES (2,10,1); + INSERT INTO itemTypeFields VALUES (2,2,2); + INSERT INTO itemTypeFields VALUES (2,3,3); + INSERT INTO itemTypeFields VALUES (2,8,4); + + INSERT INTO "items" VALUES(1, 1, 'Online connections: Internet interpersonal relationships', '2006-03-12 05:24:40', '2006-03-12 05:24:40', NULL, NULL); + INSERT INTO "items" VALUES(2, 1, 'Computer-Mediated Communication: Human-to-Human Communication Across the Internet', '2006-03-12 05:25:50', '2006-03-12 05:25:50', NULL, NULL); + INSERT INTO "items" VALUES(3, 2, 'Residential propinquity as a factor in marriage selection', '2006-03-12 05:26:37', '2006-03-12 05:26:37', NULL, NULL); + INSERT INTO "items" VALUES(4, 1, 'Connecting: how we form social bonds and communities in the Internet age', '2006-03-12 05:27:15', '2006-03-12 05:27:15', NULL, NULL); + INSERT INTO "items" VALUES(5, 1, 'Male, Female, Email: The Struggle for Relatedness in a Paranoid Society', '2006-03-12 05:27:36', '2006-03-12 05:27:36', NULL, NULL); + INSERT INTO "items" VALUES(6, 2, 'Social Implications of Sociology', '2006-03-12 05:27:53', '2006-03-12 05:27:53', NULL, NULL); + INSERT INTO "items" VALUES(7, 1, 'Social Pressures in Informal Groups: A Study of Human Factors in Housing', '2006-03-12 05:28:05', '2006-03-12 05:28:05', NULL, NULL); + INSERT INTO "items" VALUES(8, 1, 'Cybersociety 2.0: Revisiting Computer-Mediated Community and Technology', '2006-03-12 05:28:37', '2006-03-12 05:28:37', NULL, NULL); + INSERT INTO "items" VALUES(9, 2, 'The Computer as a Communication Device', '2006-03-12 05:29:03', '2006-03-12 05:29:03', NULL, NULL); + INSERT INTO "items" VALUES(10, 2, 'What Does Research Say about the Nature of Computer-mediated Communication: Task-Oriented, Social-Emotion-Oriented, or Both?', '2006-03-12 05:29:12', '2006-03-12 05:29:12', NULL, NULL); + INSERT INTO "items" VALUES(11, 1, 'The second self: computers and the human spirit', '2006-03-12 05:30:38', '2006-03-12 05:30:38', NULL, NULL); + INSERT INTO "items" VALUES(12, 1, 'Life on the screen: identity in the age of the Internet', '2006-03-12 05:30:49', '2006-03-12 05:30:49', NULL, NULL); + INSERT INTO "items" VALUES(13, 2, 'The computer conference: An altered state of communication', '2006-03-12 05:31:00', '2006-03-12 05:31:00', NULL, NULL); + INSERT INTO "items" VALUES(14, 2, 'Computer Networks as Social Networks: Collaborative Work, Telework, and Community', '2006-03-12 05:31:17', '2006-03-12 05:31:17', NULL, NULL); + INSERT INTO "items" VALUES(15, 1, 'The Internet in everyday life', '2006-03-12 05:31:41', '2006-03-12 05:31:41', NULL, NULL); + + INSERT INTO "itemData" VALUES(1, 7, 2001); + INSERT INTO "itemData" VALUES(1, 5, 'Cresskill, N.J.'); + INSERT INTO "itemData" VALUES(1, 6, 'Hampton Press'); + INSERT INTO "itemData" VALUES(2, 7, 2002); + INSERT INTO "itemData" VALUES(2, 6, 'Allyn & Bacon Publishers'); + INSERT INTO "itemData" VALUES(2, 8, 347); + INSERT INTO "itemData" VALUES(2, 9, '0-205-32145-3'); INSERT INTO "creators" VALUES(1, 1, 'Susan B.', 'Barnes'); INSERT INTO "creators" VALUES(2, 1, 'J.S.', 'Bassard'); @@ -194,24 +195,24 @@ INSERT INTO "creators" VALUES(14, 1, 'J.', 'Vallee'); INSERT INTO "creators" VALUES(15, 1, 'Barry', 'Wellman'); - INSERT INTO "objectCreators" VALUES(1, 1, 0); - INSERT INTO "objectCreators" VALUES(2, 1, 0); - INSERT INTO "objectCreators" VALUES(3, 2, 0); - INSERT INTO "objectCreators" VALUES(4, 3, 0); - INSERT INTO "objectCreators" VALUES(5, 4, 0); - INSERT INTO "objectCreators" VALUES(6, 5, 0); - INSERT INTO "objectCreators" VALUES(7, 6, 0); - INSERT INTO "objectCreators" VALUES(8, 9, 0); - INSERT INTO "objectCreators" VALUES(9, 10, 0); - INSERT INTO "objectCreators" VALUES(10, 12, 0); - INSERT INTO "objectCreators" VALUES(11, 13, 0); - INSERT INTO "objectCreators" VALUES(12, 13, 0); - INSERT INTO "objectCreators" VALUES(13, 14, 0); - INSERT INTO "objectCreators" VALUES(14, 15, 0); - INSERT INTO "objectCreators" VALUES(15, 15, 0); - INSERT INTO "objectCreators" VALUES(7, 7, 1); - INSERT INTO "objectCreators" VALUES(7, 8, 2); - INSERT INTO "objectCreators" VALUES(9, 11, 1); + INSERT INTO "itemCreators" VALUES(1, 1, 0); + INSERT INTO "itemCreators" VALUES(2, 1, 0); + INSERT INTO "itemCreators" VALUES(3, 2, 0); + INSERT INTO "itemCreators" VALUES(4, 3, 0); + INSERT INTO "itemCreators" VALUES(5, 4, 0); + INSERT INTO "itemCreators" VALUES(6, 5, 0); + INSERT INTO "itemCreators" VALUES(7, 6, 0); + INSERT INTO "itemCreators" VALUES(8, 9, 0); + INSERT INTO "itemCreators" VALUES(9, 10, 0); + INSERT INTO "itemCreators" VALUES(10, 12, 0); + INSERT INTO "itemCreators" VALUES(11, 13, 0); + INSERT INTO "itemCreators" VALUES(12, 13, 0); + INSERT INTO "itemCreators" VALUES(13, 14, 0); + INSERT INTO "itemCreators" VALUES(14, 15, 0); + INSERT INTO "itemCreators" VALUES(15, 15, 0); + INSERT INTO "itemCreators" VALUES(7, 7, 1); + INSERT INTO "itemCreators" VALUES(7, 8, 2); + INSERT INTO "itemCreators" VALUES(9, 11, 1); INSERT INTO folders VALUES (1241, 'Test Folder'); INSERT INTO folders VALUES (3262, 'Another Test Folder');