mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-11 12:03:09 +00:00
[DS-749] Backend support allowing for bitstream display order to be changed
git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@6574 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
@@ -87,17 +87,17 @@ public class Bundle extends DSpaceObject
|
||||
}
|
||||
|
||||
StringBuilder query = new StringBuilder();
|
||||
query.append("SELECT bitstream.* FROM bitstream, bundle2bitstream WHERE");
|
||||
query.append("SELECT bitstream.*,bundle2bitstream.bitstream_order FROM bitstream, bundle2bitstream WHERE");
|
||||
query.append(" bundle2bitstream.bitstream_id=bitstream.bitstream_id AND");
|
||||
query.append(" bundle2bitstream.bundle_id= ?");
|
||||
query.append(" ORDER BY bitstream.");
|
||||
query.append(" ORDER BY ");
|
||||
query.append(bitstreamOrderingField);
|
||||
query.append(" ");
|
||||
query.append(bitstreamOrderingDirection);
|
||||
|
||||
// Get bitstreams
|
||||
TableRowIterator tri = DatabaseManager.queryTable(
|
||||
ourContext, "bitstream",
|
||||
TableRowIterator tri = DatabaseManager.query(
|
||||
ourContext,
|
||||
query.toString(),
|
||||
bundleRow.getIntColumn("bundle_id"));
|
||||
|
||||
@@ -105,7 +105,7 @@ public class Bundle extends DSpaceObject
|
||||
{
|
||||
while (tri.hasNext())
|
||||
{
|
||||
TableRow r = (TableRow) tri.next();
|
||||
TableRow r = tri.next();
|
||||
|
||||
// First check the cache
|
||||
Bitstream fromCache = (Bitstream) context.fromCache(
|
||||
@@ -453,9 +453,34 @@ public class Bundle extends DSpaceObject
|
||||
TableRow mappingRow = DatabaseManager.row("bundle2bitstream");
|
||||
mappingRow.setColumn("bundle_id", getID());
|
||||
mappingRow.setColumn("bitstream_id", b.getID());
|
||||
mappingRow.setColumn("bitstream_order", b.getSequenceID());
|
||||
DatabaseManager.insert(ourContext, mappingRow);
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes bitstream order according to the array
|
||||
* @param bitstreamIds the identifiers in the order they are to be set
|
||||
* @throws SQLException when an SQL error has occurred (querying DSpace)
|
||||
* @throws AuthorizeException If the user can't make the changes
|
||||
*/
|
||||
public void setOrder(int bitstreamIds[]) throws AuthorizeException, SQLException {
|
||||
AuthorizeManager.authorizeAction(ourContext, this, Constants.WRITE);
|
||||
|
||||
for (int i = 0; i < bitstreamIds.length; i++) {
|
||||
int bitstreamId = bitstreamIds[i];
|
||||
|
||||
TableRow row = DatabaseManager.querySingleTable(ourContext, "bundle2bitstream",
|
||||
"SELECT * FROM bundle2bitstream WHERE bitstream_id= ? ", bitstreamId);
|
||||
|
||||
if(row == null){
|
||||
log.warn(LogManager.getHeader(ourContext, "Invalid bitstream id while changing bitstream order", "Bundle: " + getID() + ", bitstream id: " + bitstreamId));
|
||||
}else{
|
||||
row.setColumn("bitstream_order", i);
|
||||
DatabaseManager.update(ourContext, row);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a bitstream from this bundle - the bitstream is only deleted if
|
||||
* this was the last reference to it
|
||||
|
@@ -281,7 +281,8 @@ CREATE TABLE Bundle2Bitstream
|
||||
(
|
||||
id INTEGER PRIMARY KEY,
|
||||
bundle_id INTEGER REFERENCES Bundle(bundle_id),
|
||||
bitstream_id INTEGER REFERENCES Bitstream(bitstream_id)
|
||||
bitstream_id INTEGER REFERENCES Bitstream(bitstream_id),
|
||||
bitstream_order INTEGER
|
||||
);
|
||||
|
||||
-- index by bundle_id
|
||||
|
@@ -1291,7 +1291,7 @@ authority.minconfidence = ambiguous
|
||||
## Specify the ordering that bitstreams are listed.
|
||||
##
|
||||
## Bitstream field to sort on. Values: sequence_id or name. Default: sequence_id
|
||||
#webui.bitstream.order.field = "sequence_id"
|
||||
webui.bitstream.order.field = bitstream_order
|
||||
|
||||
## Direction of sorting order. Values: DESC or ASC. Default: ASC
|
||||
#webui.bitstream.order.direction = ASC
|
||||
|
@@ -235,7 +235,8 @@ CREATE TABLE Bundle2Bitstream
|
||||
(
|
||||
id INTEGER PRIMARY KEY,
|
||||
bundle_id INTEGER REFERENCES Bundle(bundle_id),
|
||||
bitstream_id INTEGER REFERENCES Bitstream(bitstream_id)
|
||||
bitstream_id INTEGER REFERENCES Bitstream(bitstream_id),
|
||||
bitstream_order INTEGER
|
||||
);
|
||||
|
||||
-- index by bundle_id
|
||||
|
29
dspace/etc/oracle/database_schema_17-18.sql
Normal file
29
dspace/etc/oracle/database_schema_17-18.sql
Normal file
@@ -0,0 +1,29 @@
|
||||
--
|
||||
-- database_schema_17-18.sql
|
||||
--
|
||||
-- Version: $Revision$
|
||||
--
|
||||
-- Date: $Date: 2009-04-23 22:26:59 -0500 (Thu, 23 Apr 2009) $
|
||||
--
|
||||
-- The contents of this file are subject to the license and copyright
|
||||
-- detailed in the LICENSE and NOTICE files at the root of the source
|
||||
-- tree and available online at
|
||||
--
|
||||
-- http://www.dspace.org/license/
|
||||
--
|
||||
|
||||
--
|
||||
-- SQL commands to upgrade the database schema of a live DSpace 1.7 or 1.7.x
|
||||
-- to the DSpace 1.8 database schema
|
||||
--
|
||||
-- DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST.
|
||||
-- DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST.
|
||||
-- DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST.
|
||||
--
|
||||
-------------------------------------------
|
||||
-- New column for bitstream order DS-749 --
|
||||
-------------------------------------------
|
||||
ALTER TABLE bundle2bitstream ADD bitstream_order INTEGER;
|
||||
|
||||
--Place the sequence id's in the order
|
||||
UPDATE bundle2bitstream SET bitstream_order=(SELECT sequence_id FROM bitstream WHERE bitstream.bitstream_id=bundle2bitstream.bitstream_id);
|
@@ -272,7 +272,8 @@ CREATE TABLE Bundle2Bitstream
|
||||
(
|
||||
id INTEGER PRIMARY KEY,
|
||||
bundle_id INTEGER REFERENCES Bundle(bundle_id),
|
||||
bitstream_id INTEGER REFERENCES Bitstream(bitstream_id)
|
||||
bitstream_id INTEGER REFERENCES Bitstream(bitstream_id),
|
||||
bitstream_order INTEGER
|
||||
);
|
||||
|
||||
-- index by bundle_id
|
||||
|
29
dspace/etc/postgres/database_schema_17-18.sql
Normal file
29
dspace/etc/postgres/database_schema_17-18.sql
Normal file
@@ -0,0 +1,29 @@
|
||||
--
|
||||
-- database_schema_17-18.sql
|
||||
--
|
||||
-- Version: $Revision$
|
||||
--
|
||||
-- Date: $Date: 2009-04-23 22:26:59 -0500 (Thu, 23 Apr 2009) $
|
||||
--
|
||||
-- The contents of this file are subject to the license and copyright
|
||||
-- detailed in the LICENSE and NOTICE files at the root of the source
|
||||
-- tree and available online at
|
||||
--
|
||||
-- http://www.dspace.org/license/
|
||||
--
|
||||
|
||||
--
|
||||
-- SQL commands to upgrade the database schema of a live DSpace 1.7 or 1.7.x
|
||||
-- to the DSpace 1.8 database schema
|
||||
--
|
||||
-- DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST.
|
||||
-- DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST.
|
||||
-- DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST. DUMP YOUR DATABASE FIRST.
|
||||
--
|
||||
-------------------------------------------
|
||||
-- New column for bitstream order DS-749 --
|
||||
-------------------------------------------
|
||||
ALTER TABLE bundle2bitstream ADD bitstream_order INTEGER;
|
||||
|
||||
--Place the sequence id's in the order
|
||||
UPDATE bundle2bitstream SET bitstream_order=(SELECT sequence_id FROM bitstream WHERE bitstream.bitstream_id=bundle2bitstream.bitstream_id);
|
Reference in New Issue
Block a user