More fixes for fresh_install. Don't create initial Groups in SQL

migrations, instead create them after DB is initialized
This commit is contained in:
Tim Donohue
2014-10-29 18:33:56 +00:00
parent 82016403d7
commit 9f4c030fed
5 changed files with 52 additions and 72 deletions

View File

@@ -1491,11 +1491,21 @@ public class Group extends DSpaceObject
* @throws AuthorizeException * @throws AuthorizeException
*/ */
public static void initDefaultGroupNames(Context context) throws SQLException, AuthorizeException { public static void initDefaultGroupNames(Context context) throws SQLException, AuthorizeException {
Group anonymousGroup = Group.find(context, 0); // Check for Anonymous group. If not found, create it
Group anonymousGroup = Group.find(context, ANONYMOUS_ID);
if(anonymousGroup==null)
{
anonymousGroup = Group.create(context);
}
anonymousGroup.setName("Anonymous"); anonymousGroup.setName("Anonymous");
anonymousGroup.update(); anonymousGroup.update();
Group adminGroup = Group.find(context, 1); // Check for Administrator group. If not found, create it
Group adminGroup = Group.find(context, ADMIN_ID);
if(adminGroup==null)
{
adminGroup = Group.create(context);
}
adminGroup.setName("Administrator"); adminGroup.setName("Administrator");
adminGroup.update(); adminGroup.update();
} }

View File

@@ -107,18 +107,7 @@ public class DatabaseRegistryUpdater implements FlywayCallback
@Override @Override
public void afterEachMigrate(Connection connection, MigrationInfo info) public void afterEachMigrate(Connection connection, MigrationInfo info)
{ {
// If this is a fresh install, we must update registries AFTER the // do nothing
// initial migration runs (since the registry tables won't exist until
// the initial migration are performed)
if(freshInstall)
{
// As soon as the MetadataSchemaRegistry table exists, we can update the registries
if(DatabaseUtils.tableExists(connection, "MetadataSchemaRegistry"))
{
updateRegistries();
freshInstall = false;
}
}
} }
@Override @Override
@@ -136,7 +125,14 @@ public class DatabaseRegistryUpdater implements FlywayCallback
@Override @Override
public void afterMigrate(Connection connection) public void afterMigrate(Connection connection)
{ {
// do nothing // If this is a fresh install, we must update registries AFTER the
// initial migrations (since the registry tables won't exist until the
// initial migrations are performed)
if(freshInstall)
{
updateRegistries();
freshInstall = false;
}
} }
@Override @Override
@@ -207,5 +203,4 @@ public class DatabaseRegistryUpdater implements FlywayCallback
{ {
// do nothing // do nothing
} }
} }

View File

@@ -16,7 +16,8 @@ CREATE SEQUENCE bitstreamformatregistry_seq;
CREATE SEQUENCE fileextension_seq; CREATE SEQUENCE fileextension_seq;
CREATE SEQUENCE bitstream_seq; CREATE SEQUENCE bitstream_seq;
CREATE SEQUENCE eperson_seq; CREATE SEQUENCE eperson_seq;
CREATE SEQUENCE epersongroup_seq START WITH 2; -- we reserve 0 and 1 -- start group sequence at 0, since Anonymous group = 0
CREATE SEQUENCE epersongroup_seq MINVALUE 0 START WITH 0;
CREATE SEQUENCE item_seq; CREATE SEQUENCE item_seq;
CREATE SEQUENCE bundle_seq; CREATE SEQUENCE bundle_seq;
CREATE SEQUENCE item2bundle_seq; CREATE SEQUENCE item2bundle_seq;
@@ -551,12 +552,3 @@ SELECT Communities2Item.community_id, ItemsByDateAccessioned.*
FROM ItemsByDateAccessioned, Communities2Item FROM ItemsByDateAccessioned, Communities2Item
WHERE ItemsByDateAccessioned.item_id = Communities2Item.item_id WHERE ItemsByDateAccessioned.item_id = Communities2Item.item_id
; ;
-------------------------------------------------------
-- Create 'special' groups, for anonymous access
-- and administrators
-------------------------------------------------------
-- We don't use getnextid() for 'anonymous' since the sequences start at '1'
INSERT INTO epersongroup VALUES(0, 'Anonymous');
INSERT INTO epersongroup VALUES(1, 'Administrator');

View File

@@ -16,8 +16,8 @@ CREATE SEQUENCE bitstreamformatregistry_seq;
CREATE SEQUENCE fileextension_seq; CREATE SEQUENCE fileextension_seq;
CREATE SEQUENCE bitstream_seq; CREATE SEQUENCE bitstream_seq;
CREATE SEQUENCE eperson_seq; CREATE SEQUENCE eperson_seq;
CREATE SEQUENCE epersongroup_seq START WITH 2; -- start group sequence at 0, since Anonymous group = 0
-- we reserve 0 and 1 CREATE SEQUENCE epersongroup_seq MINVALUE 0 START WITH 0;
CREATE SEQUENCE item_seq; CREATE SEQUENCE item_seq;
CREATE SEQUENCE bundle_seq; CREATE SEQUENCE bundle_seq;
CREATE SEQUENCE item2bundle_seq; CREATE SEQUENCE item2bundle_seq;
@@ -546,12 +546,3 @@ SELECT Communities2Item.community_id, ItemsByDateAccessioned.*
FROM ItemsByDateAccessioned, Communities2Item FROM ItemsByDateAccessioned, Communities2Item
WHERE ItemsByDateAccessioned.item_id = Communities2Item.item_id WHERE ItemsByDateAccessioned.item_id = Communities2Item.item_id
; ;
-------------------------------------------------------
-- Create 'special' groups, for anonymous access
-- and administrators
-------------------------------------------------------
-- We don't use getnextid() for 'anonymous' since the sequences start at '1'
INSERT INTO epersongroup VALUES(0, 'Anonymous');
INSERT INTO epersongroup VALUES(1, 'Administrator');

View File

@@ -54,7 +54,8 @@ CREATE SEQUENCE bitstreamformatregistry_seq;
CREATE SEQUENCE fileextension_seq; CREATE SEQUENCE fileextension_seq;
CREATE SEQUENCE bitstream_seq; CREATE SEQUENCE bitstream_seq;
CREATE SEQUENCE eperson_seq; CREATE SEQUENCE eperson_seq;
CREATE SEQUENCE epersongroup_seq; -- start group sequence at 0, since Anonymous group = 0
CREATE SEQUENCE epersongroup_seq MINVALUE 0 START WITH 0;
CREATE SEQUENCE item_seq; CREATE SEQUENCE item_seq;
CREATE SEQUENCE bundle_seq; CREATE SEQUENCE bundle_seq;
CREATE SEQUENCE item2bundle_seq; CREATE SEQUENCE item2bundle_seq;
@@ -563,12 +564,3 @@ SELECT Community2Item.community_id, ItemsByDateAccessioned.*
FROM ItemsByDateAccessioned, Community2Item FROM ItemsByDateAccessioned, Community2Item
WHERE ItemsByDateAccessioned.item_id = Community2Item.item_id WHERE ItemsByDateAccessioned.item_id = Community2Item.item_id
; ;
-------------------------------------------------------
-- Create 'special' groups, for anonymous access
-- and administrators
-------------------------------------------------------
-- We don't use getnextid() for 'anonymous' since the sequences start at '1'
INSERT INTO epersongroup VALUES(0, 'Anonymous');
INSERT INTO epersongroup VALUES(getnextid('epersongroup'), 'Administrator');