[DS-732] Refactor pruning distinct ids to allow for arbitrary number of distinct ids to be pruned

git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@5707 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
Graham Triggs
2010-11-01 17:25:41 +00:00
parent a6c7f57c03
commit bf92589179
3 changed files with 48 additions and 33 deletions

View File

@@ -37,6 +37,7 @@
*/ */
package org.dspace.browse; package org.dspace.browse;
import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -842,21 +843,25 @@ public class BrowseCreateDAOOracle implements BrowseCreateDAO
if (distinctIds != null && distinctIds.size() > 0) if (distinctIds != null && distinctIds.size() > 0)
{ {
query.append(" AND ").append(table).append(".id IN ("); query.append(" AND ").append(table).append(".id=?");
for (int i = 0; i < distinctIds.size(); i++) PreparedStatement stmt = null;
try
{ {
if (i > 0) stmt = context.getDBConnection().prepareStatement(query.toString());
for (Integer distinctId : distinctIds)
{ {
query.append(", ?"); stmt.setInt(1, distinctId);
} stmt.execute();
else stmt.clearParameters();
{ }
query.append("?"); }
finally
{
if (stmt != null)
{
stmt.close();
} }
} }
query.append(")");
DatabaseManager.updateQuery(context, query.toString(), distinctIds.toArray(new Integer[distinctIds.size()]));
} }
else else
{ {

View File

@@ -37,6 +37,7 @@
*/ */
package org.dspace.browse; package org.dspace.browse;
import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -844,21 +845,25 @@ public class BrowseCreateDAOPostgres implements BrowseCreateDAO
if (distinctIds != null && distinctIds.size() > 0) if (distinctIds != null && distinctIds.size() > 0)
{ {
query.append(" AND ").append(table).append(".id IN ("); query.append(" AND ").append(table).append(".id=?");
for (int i = 0; i < distinctIds.size(); i++) PreparedStatement stmt = null;
try
{ {
if (i > 0) stmt = context.getDBConnection().prepareStatement(query.toString());
for (Integer distinctId : distinctIds)
{ {
query.append(", ?"); stmt.setInt(1, distinctId);
} stmt.execute();
else stmt.clearParameters();
{ }
query.append("?"); }
finally
{
if (stmt != null)
{
stmt.close();
} }
} }
query.append(")");
DatabaseManager.updateQuery(context, query.toString(), distinctIds.toArray(new Integer[distinctIds.size()]));
} }
else else
{ {

View File

@@ -34,6 +34,7 @@
package org.dspace.browse; package org.dspace.browse;
import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -965,21 +966,25 @@ public class MockBrowseCreateDAOOracle
if (distinctIds != null && distinctIds.size() > 0) if (distinctIds != null && distinctIds.size() > 0)
{ {
query.append(" AND ").append(table).append(".id IN ("); query.append(" AND ").append(table).append(".id=?");
for (int i = 0; i < distinctIds.size(); i++) PreparedStatement stmt = null;
try
{ {
if (i > 0) stmt = internalContext.getDBConnection().prepareStatement(query.toString());
for (Integer distinctId : distinctIds)
{ {
query.append(", ?"); stmt.setInt(1, distinctId);
} stmt.execute();
else stmt.clearParameters();
{ }
query.append("?"); }
finally
{
if (stmt != null)
{
stmt.close();
} }
} }
query.append(")");
DatabaseManager.updateQuery(internalContext, query.toString(), distinctIds.toArray(new Integer[distinctIds.size()]));
} }
else else
{ {