[DS-734] Improve efficiency of Database accesses

git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@5706 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
Graham Triggs
2010-11-01 14:09:22 +00:00
parent e63097a90c
commit a6c7f57c03
16 changed files with 45 additions and 52 deletions

View File

@@ -621,11 +621,11 @@ public class BitstreamFormat
// Rewrite extensions
for (int i = 0; i < extensions.size(); i++)
{
String s = (String) extensions.get(i);
TableRow r = DatabaseManager.create(bfContext, "fileextension");
String s = extensions.get(i);
TableRow r = DatabaseManager.row("fileextension");
r.setColumn("bitstream_format_id", getID());
r.setColumn("extension", s);
DatabaseManager.update(bfContext, r);
DatabaseManager.insert(bfContext, r);
}
DatabaseManager.update(bfContext, bfRow);

View File

@@ -480,11 +480,10 @@ public class Bundle extends DSpaceObject
AuthorizeManager.inheritPolicies(ourContext, this, b);
// Add the mapping row to the database
TableRow mappingRow = DatabaseManager.create(ourContext,
"bundle2bitstream");
TableRow mappingRow = DatabaseManager.row("bundle2bitstream");
mappingRow.setColumn("bundle_id", getID());
mappingRow.setColumn("bitstream_id", b.getID());
DatabaseManager.update(ourContext, mappingRow);
DatabaseManager.insert(ourContext, mappingRow);
}
/**

View File

@@ -946,12 +946,12 @@ public class Collection extends DSpaceObject
+ getID() + ",item_id=" + item.getID()));
// Create mapping
TableRow row = DatabaseManager.create(ourContext, "collection2item");
TableRow row = DatabaseManager.row("collection2item");
row.setColumn("collection_id", getID());
row.setColumn("item_id", item.getID());
DatabaseManager.update(ourContext, row);
DatabaseManager.insert(ourContext, row);
ourContext.addEvent(new Event(Event.ADD, Constants.COLLECTION, getID(), Constants.ITEM, item.getID(), item.getHandle()));
}

View File

@@ -880,15 +880,14 @@ public class Community extends DSpaceObject
if (!tri.hasNext())
{
// No existing mapping, so add one
TableRow mappingRow = DatabaseManager.create(ourContext,
"community2collection");
TableRow mappingRow = DatabaseManager.row("community2collection");
mappingRow.setColumn("community_id", getID());
mappingRow.setColumn("collection_id", c.getID());
ourContext.addEvent(new Event(Event.ADD, Constants.COMMUNITY, getID(), Constants.COLLECTION, c.getID(), c.getHandle()));
DatabaseManager.update(ourContext, mappingRow);
DatabaseManager.insert(ourContext, mappingRow);
}
}
finally
@@ -956,15 +955,14 @@ public class Community extends DSpaceObject
if (!tri.hasNext())
{
// No existing mapping, so add one
TableRow mappingRow = DatabaseManager.create(ourContext,
"community2community");
TableRow mappingRow = DatabaseManager.row("community2community");
mappingRow.setColumn("parent_comm_id", getID());
mappingRow.setColumn("child_comm_id", c.getID());
ourContext.addEvent(new Event(Event.ADD, Constants.COMMUNITY, getID(), Constants.COMMUNITY, c.getID(), c.getHandle()));
DatabaseManager.update(ourContext, mappingRow);
DatabaseManager.insert(ourContext, mappingRow);
}
}
finally

View File

@@ -1258,10 +1258,10 @@ public class Item extends DSpaceObject
bundles.add(b);
// Insert the mapping
TableRow mappingRow = DatabaseManager.create(ourContext, "item2bundle");
TableRow mappingRow = DatabaseManager.row("item2bundle");
mappingRow.setColumn("item_id", getID());
mappingRow.setColumn("bundle_id", b.getID());
DatabaseManager.update(ourContext, mappingRow);
DatabaseManager.insert(ourContext, mappingRow);
ourContext.addEvent(new Event(Event.ADD, Constants.ITEM, getID(), Constants.BUNDLE, b.getID(), b.getName()));
}

View File

@@ -261,10 +261,10 @@ public class MetadataSchema
// Create a table row and update it with the values
row = DatabaseManager.create(context, "MetadataSchemaRegistry");
row = DatabaseManager.row("MetadataSchemaRegistry");
row.setColumn("namespace", namespace);
row.setColumn("short_id", name);
DatabaseManager.update(context, row);
DatabaseManager.insert(context, row);
// invalidate our fast-find cache.
decache();

View File

@@ -270,7 +270,7 @@ public class WorkspaceItem implements InProgressSubmission
i.update();
// Create the workspace item row
TableRow row = DatabaseManager.create(c, "workspaceitem");
TableRow row = DatabaseManager.row("workspaceitem");
row.setColumn("item_id", i.getID());
row.setColumn("collection_id", coll.getID());
@@ -280,7 +280,7 @@ public class WorkspaceItem implements InProgressSubmission
+ "item_id=" + i.getID() + "collection_id="
+ coll.getID()));
DatabaseManager.update(c, row);
DatabaseManager.insert(c, row);
WorkspaceItem wi = new WorkspaceItem(c, row);

View File

@@ -227,13 +227,13 @@ public class AccountManager
// If it already exists, just re-issue it
if (rd == null)
{
rd = DatabaseManager.create(context, "RegistrationData");
rd = DatabaseManager.row("RegistrationData");
rd.setColumn("token", Utils.generateHexKey());
// don't set expiration date any more
// rd.setColumn("expires", getDefaultExpirationDate());
rd.setColumn("email", email);
DatabaseManager.update(context, rd);
DatabaseManager.insert(context, rd);
// This is a potential problem -- if we create the callback
// and then crash, registration will get SNAFU-ed.

View File

@@ -1153,11 +1153,10 @@ public class Group extends DSpaceObject
{
EPerson e = i.next();
TableRow mappingRow = DatabaseManager.create(myContext,
"epersongroup2eperson");
TableRow mappingRow = DatabaseManager.row("epersongroup2eperson");
mappingRow.setColumn("eperson_id", e.getID());
mappingRow.setColumn("eperson_group_id", getID());
DatabaseManager.update(myContext, mappingRow);
DatabaseManager.insert(myContext, mappingRow);
}
epeopleChanged = false;
@@ -1178,11 +1177,10 @@ public class Group extends DSpaceObject
{
Group g = i.next();
TableRow mappingRow = DatabaseManager.create(myContext,
"group2group");
TableRow mappingRow = DatabaseManager.row("group2group");
mappingRow.setColumn("parent_id", getID());
mappingRow.setColumn("child_id", g.getID());
DatabaseManager.update(myContext, mappingRow);
DatabaseManager.insert(myContext, mappingRow);
}
// groups changed, now change group cache
@@ -1315,15 +1313,12 @@ public class Group extends DSpaceObject
for (Integer child : parent.getValue())
{
TableRow row = DatabaseManager.create(myContext,
"group2groupcache");
int childID = child.intValue();
TableRow row = DatabaseManager.row("group2groupcache");
row.setColumn("parent_id", parentID);
row.setColumn("child_id", childID);
row.setColumn("child_id", child);
DatabaseManager.update(myContext, row);
DatabaseManager.insert(myContext, row);
}
}
}

View File

@@ -115,10 +115,10 @@ public class Subscribe
if (!r.hasNext())
{
// Not subscribed, so add them
TableRow row = DatabaseManager.create(context, "subscription");
TableRow row = DatabaseManager.row("subscription");
row.setColumn("eperson_id", eperson.getID());
row.setColumn("collection_id", collection.getID());
DatabaseManager.update(context, row);
DatabaseManager.insert(context, row);
log.info(LogManager.getHeader(context, "subscribe",
"eperson_id=" + eperson.getID() + ",collection_id="

View File

@@ -174,11 +174,10 @@ public class Supervisor {
{
// make a table row in the database table, and update with the relevant
// details
TableRow row = DatabaseManager.create(context,
"epersongroup2workspaceitem");
TableRow row = DatabaseManager.row("epersongroup2workspaceitem");
row.setColumn("workspace_item_id", wsItemID);
row.setColumn("eperson_group_id", groupID);
DatabaseManager.update(context,row);
DatabaseManager.insert(context,row);
// If a default policy type has been requested, apply the policies using
// the DSpace API for doing so

View File

@@ -122,10 +122,10 @@ public class HarvestedCollection
* @return a new HarvestInstance object
*/
public static HarvestedCollection create(Context c, int collectionId) throws SQLException {
TableRow row = DatabaseManager.create(c, "harvested_collection");
TableRow row = DatabaseManager.row("harvested_collection");
row.setColumn("collection_id", collectionId);
row.setColumn("harvest_type", 0);
DatabaseManager.update(c, row);
DatabaseManager.insert(c, row);
return new HarvestedCollection(c, row);
}

View File

@@ -140,10 +140,10 @@ public class HarvestedItem
* @return a new HarvestedItem object
*/
public static HarvestedItem create(Context c, int itemId, String itemOAIid) throws SQLException {
TableRow row = DatabaseManager.create(c, "harvested_item");
TableRow row = DatabaseManager.row("harvested_item");
row.setColumn("item_id", itemId);
row.setColumn("oai_id", itemOAIid);
DatabaseManager.update(c, row);
DatabaseManager.insert(c, row);
return new HarvestedItem(c, row);
}

View File

@@ -292,7 +292,7 @@ public class BitstreamStorageManager
{
tempContext = new Context();
bitstream = DatabaseManager.create(tempContext, "Bitstream");
bitstream = DatabaseManager.row("Bitstream");
bitstream.setColumn("deleted", true);
bitstream.setColumn("internal_id", id);
@@ -303,7 +303,7 @@ public class BitstreamStorageManager
*/
bitstream.setColumn("store_number", incoming);
DatabaseManager.update(tempContext, bitstream);
DatabaseManager.insert(tempContext, bitstream);
tempContext.complete();
}
@@ -400,11 +400,11 @@ public class BitstreamStorageManager
try {
tempContext = new Context();
bitstream = DatabaseManager.create(tempContext, "Bitstream");
bitstream = DatabaseManager.row("Bitstream");
bitstream.setColumn("deleted", true);
bitstream.setColumn("internal_id", sInternalId);
bitstream.setColumn("store_number", assetstore);
DatabaseManager.update(tempContext, bitstream);
DatabaseManager.insert(tempContext, bitstream);
tempContext.complete();
} catch (SQLException sqle) {

View File

@@ -188,9 +188,10 @@ public class WorkflowManager
recordStart(c, myitem);
// create the WorkflowItem
TableRow row = DatabaseManager.create(c, "workflowitem");
TableRow row = DatabaseManager.row("workflowitem");
row.setColumn("item_id", myitem.getID());
row.setColumn("collection_id", wsi.getCollection().getID());
DatabaseManager.insert(c, row);
WorkflowItem wfi = new WorkflowItem(c, row);
@@ -803,10 +804,10 @@ public class WorkflowManager
// FIXME: Remove license
// FIXME: Provenance statement?
// Create the new workspace item row
TableRow row = DatabaseManager.create(c, "workspaceitem");
TableRow row = DatabaseManager.row("workspaceitem");
row.setColumn("item_id", myitem.getID());
row.setColumn("collection_id", mycollection.getID());
DatabaseManager.update(c, row);
DatabaseManager.insert(c, row);
int wsi_id = row.getIntColumn("workspace_item_id");
WorkspaceItem wi = WorkspaceItem.find(c, wsi_id);
@@ -890,10 +891,10 @@ public class WorkflowManager
{
// can we get away without creating a tasklistitem class?
// do we want to?
TableRow tr = DatabaseManager.create(c, "tasklistitem");
TableRow tr = DatabaseManager.row("tasklistitem");
tr.setColumn("eperson_id", epa[i].getID());
tr.setColumn("workflow_id", wi.getID());
DatabaseManager.update(c, tr);
DatabaseManager.insert(c, tr);
}
}

View File

@@ -76,6 +76,7 @@
- [DS-697] Allow media filter plugins to register their input formats directly
- [DS-732] Browse performance improvements
- [DS-733] Load testing utilities
- [DS-734] Improve database efficiency
(Graham Triggs, Mark Wood)
- [DS-707] General improvements to performance, bug fixes and style