mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
Remove obsolete upgrade scripts and clean-database.sql. Related to
DS-2167
This commit is contained in:
@@ -1,97 +0,0 @@
|
||||
/**
|
||||
* 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/
|
||||
*/
|
||||
package org.dspace.administer;
|
||||
|
||||
import org.dspace.content.DCDate;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.storage.rdbms.DatabaseManager;
|
||||
import org.dspace.storage.rdbms.TableRow;
|
||||
import org.dspace.storage.rdbms.TableRowIterator;
|
||||
|
||||
/**
|
||||
* A command-line tool for performing necessary tweaks in the database for the
|
||||
* new last_modified column in the item table.
|
||||
*
|
||||
* @author Robert Tansley
|
||||
* @version $Revision$
|
||||
*/
|
||||
public class Upgrade101To11
|
||||
{
|
||||
/**
|
||||
* For invoking via the command line
|
||||
*
|
||||
* @param argv
|
||||
* command-line arguments
|
||||
*/
|
||||
public static void main(String[] argv)
|
||||
{
|
||||
Context context = null;
|
||||
|
||||
try
|
||||
{
|
||||
context = new Context();
|
||||
|
||||
// Deal with withdrawn items first.
|
||||
// last_modified takes the value of the deletion date
|
||||
TableRowIterator tri = DatabaseManager.queryTable(context, "item",
|
||||
"SELECT * FROM item WHERE withdrawal_date IS NOT NULL");
|
||||
|
||||
while (tri.hasNext())
|
||||
{
|
||||
TableRow row = tri.next();
|
||||
DCDate d = new DCDate(row.getStringColumn("withdrawal_date"));
|
||||
row.setColumn("last_modified", d.toDate());
|
||||
DatabaseManager.update(context, row);
|
||||
}
|
||||
tri.close();
|
||||
|
||||
// Next, update those items with a date.available
|
||||
tri = DatabaseManager.query(context,
|
||||
"SELECT item.item_id, dcvalue.text_value FROM item, dctyperegistry, "+
|
||||
"dcvalue WHERE item.item_id=dcvalue.item_id AND dcvalue.dc_type_id="+
|
||||
"dctyperegistry.dc_type_id AND dctyperegistry.element LIKE 'date' "+
|
||||
"AND dctyperegistry.qualifier LIKE 'available'");
|
||||
|
||||
while (tri.hasNext())
|
||||
{
|
||||
TableRow resultRow = tri.next();
|
||||
DCDate d = new DCDate(resultRow.getStringColumn("text_value"));
|
||||
|
||||
// Can't update the row, have to do a separate query
|
||||
TableRow itemRow = DatabaseManager.find(context, "item",
|
||||
resultRow.getIntColumn("item_id"));
|
||||
itemRow.setColumn("last_modified", d.toDate());
|
||||
DatabaseManager.update(context, itemRow);
|
||||
}
|
||||
tri.close();
|
||||
|
||||
// Finally, for all items that have no date.available or withdrawal
|
||||
// date, set the update time to now!
|
||||
DatabaseManager.updateQuery(context,
|
||||
"UPDATE item SET last_modified=now() WHERE last_modified IS NULL");
|
||||
|
||||
context.complete();
|
||||
|
||||
System.out.println("Last modified dates set");
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
System.err.println("Exception occurred:" + e);
|
||||
e.printStackTrace();
|
||||
|
||||
if (context != null)
|
||||
{
|
||||
context.abort();
|
||||
}
|
||||
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,198 +0,0 @@
|
||||
/**
|
||||
* 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/
|
||||
*/
|
||||
package org.dspace.administer;
|
||||
|
||||
import org.dspace.content.Bitstream;
|
||||
import org.dspace.content.BitstreamFormat;
|
||||
import org.dspace.content.Bundle;
|
||||
import org.dspace.content.Collection;
|
||||
import org.dspace.content.Item;
|
||||
import org.dspace.content.ItemIterator;
|
||||
import org.dspace.core.Context;
|
||||
|
||||
/**
|
||||
* Command-line tool for making changes to DSpace database when updating from
|
||||
* version 1.1/1.1.1 to 1.2.
|
||||
* <P>
|
||||
* The changes are:
|
||||
* <ul>
|
||||
* <li>Setting owning collection field for items
|
||||
* <li>Reorganising content bitstreams into one bundle named ORIGINAL, license
|
||||
* bitstreams into a bundle named LICENSE
|
||||
* <li>Setting the sequence_id numbers in the bitstream table. This happens as
|
||||
* item.update() is called on every item.
|
||||
* <li>If a (newly-reorganised) 'ORIGINAL' bundle contains a text/html
|
||||
* bitstream, that bitstream is set to the primary bitstream for HTML support.
|
||||
* </ul>
|
||||
*/
|
||||
public class Upgrade11To12
|
||||
{
|
||||
public static void main(String[] argv) throws Exception
|
||||
{
|
||||
Context c = new Context();
|
||||
|
||||
// ve are superuser!
|
||||
c.setIgnoreAuthorization(true);
|
||||
|
||||
ItemIterator ii = null;
|
||||
|
||||
// first set owning Collections
|
||||
Collection[] collections = Collection.findAll(c);
|
||||
|
||||
System.out.println("Setting item owningCollection fields in database");
|
||||
|
||||
for (int q = 0; q < collections.length; q++)
|
||||
{
|
||||
ii = collections[q].getItems();
|
||||
|
||||
while (ii.hasNext())
|
||||
{
|
||||
Item myItem = ii.next();
|
||||
|
||||
// set it if it's not already set
|
||||
if (myItem.getOwningCollection() == null)
|
||||
{
|
||||
myItem.setOwningCollection(collections[q]);
|
||||
myItem.update();
|
||||
System.out.println("Set owner of item " + myItem.getID()
|
||||
+ " to collection " + collections[q].getID());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// commit pending transactions before continuing
|
||||
c.commit();
|
||||
|
||||
// now combine some bundles
|
||||
ii = Item.findAll(c);
|
||||
|
||||
while (ii.hasNext())
|
||||
{
|
||||
boolean skipItem = false;
|
||||
Item myItem = ii.next();
|
||||
|
||||
int licenseBundleIndex = -1; // array index of license bundle (we'll
|
||||
// skip this one often)
|
||||
int primaryBundleIndex = -1; // array index of our primary bundle
|
||||
// (all bitstreams assemble here)
|
||||
|
||||
System.out.println("Processing item #: " + myItem.getID());
|
||||
|
||||
Bundle[] myBundles = myItem.getBundles();
|
||||
|
||||
// look for bundles with multiple bitstreams
|
||||
// (if any found, we'll skip this item)
|
||||
for (int i = 0; i < myBundles.length; i++)
|
||||
{
|
||||
// skip if bundle is already named
|
||||
if (myBundles[i].getName() != null)
|
||||
{
|
||||
System.out
|
||||
.println("Skipping this item - named bundles already found");
|
||||
skipItem = true;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
Bitstream[] bitstreams = myBundles[i].getBitstreams();
|
||||
|
||||
// skip this item if we already have bundles combined in this
|
||||
// item
|
||||
if (bitstreams.length > 1)
|
||||
{
|
||||
System.out
|
||||
.println("Skipping this item - compound bundles already found");
|
||||
skipItem = true;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// is this the license? check the format
|
||||
BitstreamFormat bf = bitstreams[0].getFormat();
|
||||
|
||||
if ("License".equals(bf.getShortDescription()))
|
||||
{
|
||||
System.out.println("Found license!");
|
||||
|
||||
if (licenseBundleIndex == -1)
|
||||
{
|
||||
licenseBundleIndex = i;
|
||||
System.out.println("License bundle set to: " + i);
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out
|
||||
.println("ERROR - multiple license bundles in item - skipping");
|
||||
skipItem = true;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// not a license, if primary isn't set yet, set it
|
||||
if (primaryBundleIndex == -1)
|
||||
{
|
||||
primaryBundleIndex = i;
|
||||
System.out.println("Primary bundle set to: " + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!skipItem)
|
||||
{
|
||||
// name the primary and license bundles
|
||||
if (primaryBundleIndex != -1)
|
||||
{
|
||||
myBundles[primaryBundleIndex].setName("ORIGINAL");
|
||||
myBundles[primaryBundleIndex].update();
|
||||
}
|
||||
|
||||
if (licenseBundleIndex != -1)
|
||||
{
|
||||
myBundles[licenseBundleIndex].setName("LICENSE");
|
||||
myBundles[licenseBundleIndex].update();
|
||||
}
|
||||
|
||||
for (int i = 0; i < myBundles.length; i++)
|
||||
{
|
||||
Bitstream[] bitstreams = myBundles[i].getBitstreams();
|
||||
|
||||
// now we can safely assume no bundles with multiple
|
||||
// bitstreams
|
||||
if (bitstreams.length > 0 && (i != primaryBundleIndex) && (i != licenseBundleIndex))
|
||||
{
|
||||
// only option left is a bitstream to be combined
|
||||
// with primary bundle
|
||||
// and remove now-redundant bundle
|
||||
myBundles[primaryBundleIndex]
|
||||
.addBitstream(bitstreams[0]); // add to
|
||||
// primary
|
||||
myItem.removeBundle(myBundles[i]); // remove this
|
||||
// bundle
|
||||
|
||||
System.out.println("Bitstream from bundle " + i
|
||||
+ " moved to primary bundle");
|
||||
|
||||
// flag if HTML bitstream
|
||||
if (bitstreams[0].getFormat().getMIMEType().equals(
|
||||
"text/html"))
|
||||
{
|
||||
System.out
|
||||
.println("Set primary bitstream to HTML file in item #"
|
||||
+ myItem.getID()
|
||||
+ " for HTML support.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
c.complete();
|
||||
}
|
||||
}
|
@@ -1,141 +0,0 @@
|
||||
--
|
||||
-- clean-database.sql
|
||||
--
|
||||
-- Version: $Revision$
|
||||
--
|
||||
-- Date: $Date$
|
||||
--
|
||||
-- Copyright (c) 2002-2009, The DSpace Foundation. All rights reserved.
|
||||
--
|
||||
-- Redistribution and use in source and binary forms, with or without
|
||||
-- modification, are permitted provided that the following conditions are
|
||||
-- met:
|
||||
--
|
||||
-- - Redistributions of source code must retain the above copyright
|
||||
-- notice, this list of conditions and the following disclaimer.
|
||||
--
|
||||
-- - Redistributions in binary form must reproduce the above copyright
|
||||
-- notice, this list of conditions and the following disclaimer in the
|
||||
-- documentation and/or other materials provided with the distribution.
|
||||
--
|
||||
-- - Neither the name of the DSpace Foundation nor the names of its
|
||||
-- contributors may be used to endorse or promote products derived from
|
||||
-- this software without specific prior written permission.
|
||||
--
|
||||
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
-- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
-- HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
-- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
-- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
-- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
-- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
-- TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
-- USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
-- DAMAGE.
|
||||
|
||||
--
|
||||
-- DSpace database cleaner
|
||||
--
|
||||
-- This SQL "cleans" a database used by a DSpace installation. It removes
|
||||
-- all tables etc. so the database is completely empty and ready for a
|
||||
-- fresh installation. Of course, this means all data is lost.
|
||||
--
|
||||
-- This should be kept in sync if database_schema.sql is updated.
|
||||
|
||||
|
||||
-- Drop the views
|
||||
DROP VIEW Community2Item;
|
||||
DROP VIEW DCValue;
|
||||
|
||||
-- Then the tables
|
||||
-- WARNING: The ordering below MATTERS as many tables have interdependencies
|
||||
DROP TABLE collection_item_count;
|
||||
DROP TABLE community_item_count;
|
||||
DROP TABLE checksum_history;
|
||||
DROP TABLE most_recent_checksum;
|
||||
DROP TABLE checksum_results;
|
||||
DROP TABLE Communities2Item;
|
||||
DROP TABLE EPersonGroup2WorkspaceItem;
|
||||
DROP TABLE Subscription;
|
||||
DROP TABLE RegistrationData;
|
||||
DROP TABLE TasklistItem;
|
||||
DROP TABLE WorkflowItem;
|
||||
DROP TABLE WorkspaceItem;
|
||||
DROP TABLE Handle;
|
||||
DROP TABLE Doi;
|
||||
DROP TABLE EPersonGroup2EPerson;
|
||||
DROP TABLE ResourcePolicy;
|
||||
DROP TABLE Collection2Item;
|
||||
DROP TABLE Community2Collection;
|
||||
DROP TABLE Community2Community;
|
||||
DROP TABLE MetadataValue;
|
||||
DROP TABLE MetadataFieldRegistry;
|
||||
DROP TABLE MetadataSchemaRegistry;
|
||||
DROP TABLE Bundle2Bitstream;
|
||||
DROP TABLE Item2Bundle;
|
||||
DROP TABLE harvested_collection;
|
||||
DROP TABLE harvested_item;
|
||||
DROP TABLE Group2GroupCache;
|
||||
DROP TABLE Group2Group;
|
||||
DROP TABLE FileExtension;
|
||||
DROP TABLE webapp;
|
||||
DROP TABLE requestitem;
|
||||
-- Drop main object tables near end as many other tables have dependencies on them
|
||||
DROP TABLE versionitem;
|
||||
DROP TABLE versionhistory;
|
||||
DROP TABLE Community;
|
||||
DROP TABLE Collection;
|
||||
DROP TABLE Item;
|
||||
DROP TABLE Bundle;
|
||||
DROP TABLE Bitstream;
|
||||
-- BitstreamFormatRegistry is referenced by bitstreams
|
||||
DROP TABLE BitstreamFormatRegistry;
|
||||
-- People and Groups are referenced by Items, Collections, Communities
|
||||
DROP TABLE EPersonGroup;
|
||||
DROP TABLE EPerson;
|
||||
|
||||
|
||||
-- Now drop the sequences for ID (primary key) creation
|
||||
DROP SEQUENCE bitstreamformatregistry_seq;
|
||||
DROP SEQUENCE fileextension_seq;
|
||||
DROP SEQUENCE bitstream_seq;
|
||||
DROP SEQUENCE checksum_history_seq;
|
||||
DROP SEQUENCE eperson_seq;
|
||||
DROP SEQUENCE epersongroup_seq;
|
||||
DROP SEQUENCE item_seq;
|
||||
DROP SEQUENCE bundle_seq;
|
||||
DROP SEQUENCE item2bundle_seq;
|
||||
DROP SEQUENCE bundle2bitstream_seq;
|
||||
DROP SEQUENCE dcvalue_seq;
|
||||
DROP SEQUENCE community_seq;
|
||||
DROP SEQUENCE community2community_seq;
|
||||
DROP SEQUENCE collection_seq;
|
||||
DROP SEQUENCE community2collection_seq;
|
||||
DROP SEQUENCE collection2item_seq;
|
||||
DROP SEQUENCE resourcepolicy_seq;
|
||||
DROP SEQUENCE epersongroup2eperson_seq;
|
||||
DROP SEQUENCE handle_seq;
|
||||
DROP SEQUENCE doi_seq;
|
||||
DROP SEQUENCE workspaceitem_seq;
|
||||
DROP SEQUENCE workflowitem_seq;
|
||||
DROP SEQUENCE tasklistitem_seq;
|
||||
DROP SEQUENCE registrationdata_seq;
|
||||
DROP SEQUENCE subscription_seq;
|
||||
DROP SEQUENCE communities2item_seq;
|
||||
DROP SEQUENCE epersongroup2workspaceitem_seq;
|
||||
DROP SEQUENCE metadataschemaregistry_seq;
|
||||
DROP SEQUENCE metadatafieldregistry_seq;
|
||||
DROP SEQUENCE metadatavalue_seq;
|
||||
DROP SEQUENCE group2group_seq;
|
||||
DROP SEQUENCE group2groupcache_seq;
|
||||
DROP SEQUENCE harvested_collection_seq;
|
||||
DROP SEQUENCE harvested_item_seq;
|
||||
DROP SEQUENCE versionhistory_seq;
|
||||
DROP SEQUENCE versionitem_seq;
|
||||
DROP SEQUENCE webapp_seq;
|
||||
DROP SEQUENCE requestitem_seq;
|
||||
|
||||
-- Drop the getnextid() function
|
||||
DROP FUNCTION getnextid;
|
Reference in New Issue
Block a user