Author: sevein
Date: Mon Aug 27 04:29:43 2012
New Revision: 12207
Log:
Change order of operations when adding new constants: first, bump existing
records, then store the new one (s/addTerm/bumpTerm, s/addMenu/bumpMenu...).
This solves some problems I was having with saving i18n records. Tested with
*15* different production data sets, it is working with all of them now. Fixes
issue 2404.
Modified:
trunk/lib/task/migrate/QubitMigrate.class.php
trunk/lib/task/migrate/arUpgrader110.class.php
trunk/lib/task/migrate/arUpgrader120.class.php
Modified: trunk/lib/task/migrate/QubitMigrate.class.php
==============================================================================
--- trunk/lib/task/migrate/QubitMigrate.class.php Mon Aug 27 00:02:35
2012 (r12206)
+++ trunk/lib/task/migrate/QubitMigrate.class.php Mon Aug 27 04:29:43
2012 (r12207)
@@ -463,38 +463,43 @@
QubitPdo::modify("ALTER TABLE object AUTO_INCREMENT = $last");
}
- public static function addTerm(QubitTerm $object, $configuration)
+ public static function bumpTerm($id, $configuration)
{
+ if (!isset($configuration))
+ {
+ throw new sfException('Missing parameter');
+ }
+
+ // Stop execution if there is no record
+ if (null === QubitTerm::getById($id))
+ {
+ return;
+ }
+
$connection = Propel::getConnection();
$connection->beginTransaction();
try
{
- // Check if it already exists
- if (isset($object->id) && null !== QubitTerm::getById($object->id))
- {
- $connection->exec('SET FOREIGN_KEY_CHECKS = 0');
-
- // Get new autonumeric
- $last = QubitPdo::fetchOne('SELECT (MAX(id) + 1) AS last FROM
object')->last;
+ $connection->exec('SET FOREIGN_KEY_CHECKS = 0');
- $foreignKeys = self::findForeignKeys(array(QubitObject::TABLE_NAME,
QubitTerm::TABLE_NAME), $configuration);
+ // Get new autonumeric
+ $last = QubitPdo::fetchOne('SELECT (MAX(id) + 1) AS last FROM
object')->last;
- foreach ($foreignKeys as $item)
- {
- QubitPdo::modify(
- "UPDATE $item[table] SET $item[column] = ? WHERE $item[column] =
?", array(
- $last,
- $object->id));
- }
+ $foreignKeys = self::findForeignKeys(array(QubitObject::TABLE_NAME,
QubitTerm::TABLE_NAME), $configuration);
- $connection->exec('SET FOREIGN_KEY_CHECKS = 1');
-
- self::updateAutoNumeric();
+ foreach ($foreignKeys as $item)
+ {
+ $a = QubitPdo::modify(
+ "UPDATE $item[table] SET $item[column] = ? WHERE $item[column] = ?",
array(
+ $last,
+ $id));
}
- $object->save();
+ $connection->exec('SET FOREIGN_KEY_CHECKS = 1');
+
+ self::updateAutoNumeric();
}
catch (Exception $e)
{
@@ -506,38 +511,43 @@
$connection->commit();
}
- public static function addTaxonomy(QubitTaxonomy $object, $configuration)
+ public static function bumpTaxonomy($id, $configuration)
{
+ if (!isset($configuration))
+ {
+ throw new sfException('Missing parameter');
+ }
+
+ // Stop execution if there is no record
+ if (null === QubitTaxonomy::getById($id))
+ {
+ return;
+ }
+
$connection = Propel::getConnection();
$connection->beginTransaction();
try
{
- // Check if it already exists
- if (isset($object->id) && null !== QubitTaxonomy::getById($object->id))
- {
- $connection->exec('SET FOREIGN_KEY_CHECKS = 0');
-
- // Get new autonumeric
- $last = QubitPdo::fetchOne('SELECT (MAX(id) + 1) AS last FROM
object')->last;
-
- $foreignKeys = self::findForeignKeys(array(QubitObject::TABLE_NAME,
QubitTaxonomy::TABLE_NAME), $configuration);
+ $connection->exec('SET FOREIGN_KEY_CHECKS = 0');
- foreach ($foreignKeys as $item)
- {
- QubitPdo::modify(
- "UPDATE $item[table] SET $item[column] = ? WHERE $item[column] =
?", array(
- $last,
- $object->id));
- }
+ // Get new autonumeric
+ $last = QubitPdo::fetchOne('SELECT (MAX(id) + 1) AS last FROM
object')->last;
- $connection->exec('SET FOREIGN_KEY_CHECKS = 1');
+ $foreignKeys = self::findForeignKeys(array(QubitObject::TABLE_NAME,
QubitTaxonomy::TABLE_NAME), $configuration);
- self::updateAutoNumeric();
+ foreach ($foreignKeys as $item)
+ {
+ QubitPdo::modify(
+ "UPDATE $item[table] SET $item[column] = ? WHERE $item[column] = ?",
array(
+ $last,
+ $id));
}
- $object->save();
+ $connection->exec('SET FOREIGN_KEY_CHECKS = 1');
+
+ self::updateAutoNumeric();
}
catch (Exception $e)
{
@@ -549,36 +559,41 @@
$connection->commit();
}
- public static function addMenu(QubitMenu $object, $configuration)
+ public static function bumpMenu($id, $configuration)
{
+ if (!isset($configuration))
+ {
+ throw new sfException('Missing parameter');
+ }
+
+ // Stop execution if there is no record
+ if (null === QubitMenu::getById($id))
+ {
+ return;
+ }
+
$connection = Propel::getConnection();
$connection->beginTransaction();
try
{
- // Check if it already exists
- if (isset($object->id) && null !== QubitMenu::getById($object->id))
- {
- $connection->exec('SET FOREIGN_KEY_CHECKS = 0');
+ $connection->exec('SET FOREIGN_KEY_CHECKS = 0');
- // Get new autonumeric
- $last = QubitPdo::fetchOne('SELECT (MAX(id) + 1) AS last FROM
object')->last;
+ // Get new autonumeric
+ $last = QubitPdo::fetchOne('SELECT (MAX(id) + 1) AS last FROM
object')->last;
- $foreignKeys = self::findForeignKeys(array(QubitMenu::TABLE_NAME),
$configuration);
+ $foreignKeys = self::findForeignKeys(array(QubitMenu::TABLE_NAME),
$configuration);
- foreach ($foreignKeys as $item)
- {
- QubitPdo::modify(
- "UPDATE $item[table] SET $item[column] = ? WHERE $item[column] =
?", array(
- $last,
- $object->id));
- }
-
- self::updateAutoNumeric();
+ foreach ($foreignKeys as $item)
+ {
+ QubitPdo::modify(
+ "UPDATE $item[table] SET $item[column] = ? WHERE $item[column] = ?",
array(
+ $last,
+ $id));
}
- $object->save();
+ self::updateAutoNumeric();
}
catch (Exception $e)
{
Modified: trunk/lib/task/migrate/arUpgrader110.class.php
==============================================================================
--- trunk/lib/task/migrate/arUpgrader110.class.php Mon Aug 27 00:02:35
2012 (r12206)
+++ trunk/lib/task/migrate/arUpgrader110.class.php Mon Aug 27 04:29:43
2012 (r12207)
@@ -98,14 +98,15 @@
}
// Create manage menu node
+ QubitMigrate::bumpMenu(QubitMenu::MANAGE_ID, $configuration);
$node = new QubitMenu;
$node->id = QubitMenu::MANAGE_ID;
$node->parentId = QubitMenu::MAIN_MENU_ID;
$node->name = 'manage';
$node->path = 'accession/browse';
+ $node->label = 'Manage';
foreach (array(
- 'en' => 'Manage',
'es' => 'Administrar',
'fr' => 'Gérer',
'pl' => 'Zarządzanie',
@@ -118,7 +119,7 @@
$node->menuI18ns[] = $nodeI18n;
}
- QubitMigrate::addMenu($node, $configuration);
+ $node->save();
// Introduce it after "add"
if (null !== $target = QubitMenu::getByName('add'))
@@ -221,44 +222,42 @@
}
// New type of relation: accession
+ QubitMigrate::bumpTerm(QubitTerm::ACCESSION_ID, $configuration);
$term = new QubitTerm;
$term->id = QubitTerm::ACCESSION_ID;
$term->parentId = QubitTerm::ROOT_ID;
$term->taxonomyId = QubitTaxonomy::RELATION_TYPE_ID;
- $termI18n = new QubitTermI18n;
- $termI18n->name = 'Accession';
- $termI18n->culture = 'en';
- $term->termI18ns[] = $termI18n;
- QubitMigrate::addTerm($term, $configuration);
+ $term->name = 'Accession';
+ $term->culture = 'en';
+ $term->save();
// New type of relation: right
+ QubitMigrate::bumpTerm(QubitTerm::RIGHT_ID, $configuration);
$term = new QubitTerm;
$term->id = QubitTerm::RIGHT_ID;
$term->parentId = QubitTerm::ROOT_ID;
$term->taxonomyId = QubitTaxonomy::RELATION_TYPE_ID;
- $termI18n = new QubitTermI18n;
- $termI18n->name = 'Right';
- $termI18n->culture = 'en';
- $term->termI18ns[] = $termI18n;
- QubitMigrate::addTerm($term, $configuration);
+ $term->name = 'Right';
+ $term->culture = 'en';
+ $term->save();
// New type of relation: donor
+ QubitMigrate::bumpTerm(QubitTerm::DONOR_ID, $configuration);
$term = new QubitTerm;
$term->id = QubitTerm::DONOR_ID;
$term->parentId = QubitTerm::ROOT_ID;
$term->taxonomyId = QubitTaxonomy::RELATION_TYPE_ID;
- $termI18n = new QubitTermI18n;
- $termI18n->name = 'Donor';
- $termI18n->culture = 'en';
- $term->termI18ns[] = $termI18n;
- QubitMigrate::addTerm($term, $configuration);
+ $term->name = 'Donor';
+ $term->culture = 'en';
+ $term->save();
// Accession resource type taxonomy and its terms
+ QubitMigrate::bumpTaxonomy(QubitTaxonomy::ACCESSION_RESOURCE_TYPE_ID,
$configuration);
$taxonomy = new QubitTaxonomy;
$taxonomy->id = QubitTaxonomy::ACCESSION_RESOURCE_TYPE_ID;
$taxonomy->name = 'Accession resource type';
$taxonomy->culture = 'en';
- QubitMigrate::addTaxonomy($taxonomy, $configuration);
+ $taxonomy->save();
foreach (array(
'Public transfer',
@@ -270,15 +269,16 @@
$term->taxonomyId = QubitTaxonomy::ACCESSION_RESOURCE_TYPE_ID;
$term->name = $item;
$term->culture = 'en';
- QubitMigrate::addTerm($term, $configuration);
+ $term->save();
}
// Accession acquisition type taxonomy and its terms
+
QubitMigrate::bumpTaxonomy(QubitTaxonomy::ACCESSION_ACQUISITION_TYPE_ID,
$configuration);
$taxonomy = new QubitTaxonomy;
$taxonomy->id = QubitTaxonomy::ACCESSION_ACQUISITION_TYPE_ID;
$taxonomy->name = 'Accession acquisition type';
$taxonomy->culture = 'en';
- QubitMigrate::addTaxonomy($taxonomy, $configuration);
+ $taxonomy->save();
foreach (array(
'Deposit',
@@ -291,15 +291,16 @@
$term->taxonomyId = QubitTaxonomy::ACCESSION_ACQUISITION_TYPE_ID;
$term->name = $item;
$term->culture = 'en';
- QubitMigrate::addTerm($term, $configuration);
+ $term->save();
}
// Processing priority taxonomy and terms
+
QubitMigrate::bumpTaxonomy(QubitTaxonomy::ACCESSION_PROCESSING_PRIORITY_ID,
$configuration);
$taxonomy = new QubitTaxonomy;
$taxonomy->id = QubitTaxonomy::ACCESSION_PROCESSING_PRIORITY_ID;
$taxonomy->name = 'Processing priority';
$taxonomy->culture = 'en';
- QubitMigrate::addTaxonomy($taxonomy, $configuration);
+ $taxonomy->save();
foreach (array(
'High',
@@ -311,15 +312,16 @@
$term->taxonomyId = QubitTaxonomy::ACCESSION_PROCESSING_PRIORITY_ID;
$term->name = $item;
$term->culture = 'en';
- QubitMigrate::addTerm($term, $configuration);
+ $term->save();
}
// Processing status taxonomy and terms
+
QubitMigrate::bumpTaxonomy(QubitTaxonomy::ACCESSION_PROCESSING_STATUS_ID,
$configuration);
$taxonomy = new QubitTaxonomy;
$taxonomy->id = QubitTaxonomy::ACCESSION_PROCESSING_STATUS_ID;
$taxonomy->name = 'Processing status';
$taxonomy->culture = 'en';
- QubitMigrate::addTaxonomy($taxonomy, $configuration);
+ $taxonomy->save();
foreach (array(
'Complete',
@@ -331,15 +333,16 @@
$term->taxonomyId = QubitTaxonomy::ACCESSION_PROCESSING_STATUS_ID;
$term->name = $item;
$term->culture = 'en';
- QubitMigrate::addTerm($term, $configuration);
+ $term->save();
}
// Deaccession scope taxonomy and terms
+ QubitMigrate::bumpTaxonomy(QubitTaxonomy::DEACCESSION_SCOPE_ID,
$configuration);
$taxonomy = new QubitTaxonomy;
$taxonomy->id = QubitTaxonomy::DEACCESSION_SCOPE_ID;
$taxonomy->name = 'Deaccession scope';
$taxonomy->culture = 'en';
- QubitMigrate::addTaxonomy($taxonomy, $configuration);
+ $taxonomy->save();
foreach (array(
'Whole',
@@ -350,15 +353,16 @@
$term->taxonomyId = QubitTaxonomy::DEACCESSION_SCOPE_ID;
$term->name = $item;
$term->culture = 'en';
- QubitMigrate::addTerm($term, $configuration);
+ QubitMigrate::bumpTerm($term, $configuration);
}
// Right act taxonomy and terms
+ QubitMigrate::bumpTaxonomy(QubitTaxonomy::RIGHT_ACT_ID,
$configuration);
$taxonomy = new QubitTaxonomy;
$taxonomy->id = QubitTaxonomy::RIGHT_ACT_ID;
$taxonomy->name = 'Rights act';
$taxonomy->culture = 'en';
- QubitMigrate::addTaxonomy($taxonomy);
+ $taxonomy->save();
foreach (array(
'Delete',
@@ -374,15 +378,16 @@
$term->taxonomyId = QubitTaxonomy::RIGHT_ACT_ID;
$term->name = $item;
$term->culture = 'en';
- QubitMigrate::addTerm($term, $configuration);
+ $term->save();
}
// Right basis taxonomy and terms
+ QubitMigrate::bumpTaxonomy(QubitTaxonomy::RIGHT_BASIS_ID,
$configuration);
$taxonomy = new QubitTaxonomy;
$taxonomy->id = QubitTaxonomy::RIGHT_BASIS_ID;
$taxonomy->name = 'Rights basis';
$taxonomy->culture = 'en';
- QubitMigrate::addTaxonomy($taxonomy);
+ $taxonomy->save();
foreach (array(
'Copyright',
@@ -396,15 +401,16 @@
$term->taxonomyId = QubitTaxonomy::RIGHT_BASIS_ID;
$term->name = $item;
$term->culture = 'en';
- QubitMigrate::addTerm($term, $configuration);
+ $term->save();
}
// Copyright status taxonomy and terms
+ QubitMigrate::bumpTaxonomy(QubitTaxonomy::COPYRIGHT_STATUS_ID,
$configuration);
$taxonomy = new QubitTaxonomy;
$taxonomy->id = QubitTaxonomy::COPYRIGHT_STATUS_ID;
$taxonomy->name = 'Copyright status';
$taxonomy->culture = 'en';
- QubitMigrate::addTaxonomy($taxonomy);
+ $taxonomy->save();
foreach (array(
'Under copyright',
@@ -416,7 +422,7 @@
$term->taxonomyId = QubitTaxonomy::COPYRIGHT_STATUS_ID;
$term->name = $item;
$term->culture = 'en';
- QubitMigrate::addTerm($term, $configuration);
+ $term->save();
}
break;
Modified: trunk/lib/task/migrate/arUpgrader120.class.php
==============================================================================
--- trunk/lib/task/migrate/arUpgrader120.class.php Mon Aug 27 00:02:35
2012 (r12206)
+++ trunk/lib/task/migrate/arUpgrader120.class.php Mon Aug 27 04:29:43
2012 (r12207)
@@ -101,16 +101,15 @@
// Add 'Language note' term
case 79:
+
+ QubitMigrate::bumpTerm(QubitTerm::LANGUAGE_NOTE_ID, $configuration);
$term = new QubitTerm;
$term->id = QubitTerm::LANGUAGE_NOTE_ID;
$term->parentId = QubitTerm::ROOT_ID;
$term->taxonomyId = QubitTaxonomy::NOTE_TYPE_ID;
- $termI18n = new QubitTermI18n;
- $termI18n->name = 'Language note';
- $termI18n->culture = 'en';
- $term->termI18ns[] = $termI18n;
-
- QubitMigrate::addTerm($term, $configuration);
+ $term->name = 'Language note';
+ $term->culture = 'en';
+ $term->save();
break;
@@ -262,15 +261,14 @@
// Add accrual constant to term table
case 84:
+ QubitMigrate::bumpTerm(QubitTerm::ACCRUAL_ID, $configuration);
$term = new QubitTerm;
$term->id = QubitTerm::ACCRUAL_ID;
$term->parentId = QubitTerm::ROOT_ID;
$term->taxonomyId = QubitTaxonomy::RELATION_TYPE_ID;
- $termI18n = new QubitTermI18n;
- $termI18n->culture = 'en';
- $termI18n->name = 'Accrual';
- $term->termI18ns[] = $termI18n;
- QubitMigrate::addTerm($term, $configuration);
+ $term->culture = 'en';
+ $term->name = 'Accrual';
+ $term->save();
break;
@@ -300,11 +298,9 @@
$term->id = QubitTerm::RIGHT_ID;
$term->parentId = QubitTerm::ROOT_ID;
$term->taxonomyId = QubitTaxonomy::RELATION_TYPE_ID;
- $termI18n = new QubitTermI18n;
- $termI18n->name = 'Right';
- $termI18n->culture = 'en';
- $term->termI18ns[] = $termI18n;
- QubitMigrate::addTerm($term, $configuration);
+ $term->name = 'Right';
+ $term->culture = 'en';
+ $term->save();
}
// Type of relation: donor
@@ -321,11 +317,9 @@
$term->id = QubitTerm::DONOR_ID;
$term->parentId = QubitTerm::ROOT_ID;
$term->taxonomyId = QubitTaxonomy::RELATION_TYPE_ID;
- $termI18n = new QubitTermI18n;
- $termI18n->name = 'Donor';
- $termI18n->culture = 'en';
- $term->termI18ns[] = $termI18n;
- QubitMigrate::addTerm($term, $configuration);
+ $term->name = 'Donor';
+ $term->culture = 'en';
+ $term->save();
}
break;
--
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/qubit-commits?hl=en.