Author: mcantelon
Date: Mon Jan 9 17:10:23 2012
New Revision: 10601
Log:
Added creation of keymap objects during import.
Modified:
trunk/lib/task/csvImportTask.class.php
Modified: trunk/lib/task/csvImportTask.class.php
==============================================================================
--- trunk/lib/task/csvImportTask.class.php Mon Jan 9 16:31:46 2012
(r10600)
+++ trunk/lib/task/csvImportTask.class.php Mon Jan 9 17:10:23 2012
(r10601)
@@ -111,6 +111,7 @@
from closure logic using the getStatus method */
'status' => array(
'options' => $options,
+ 'sourceName' => basename($arguments['filename']),
'materialTypes' => $termData['materialTypes'],
),
'columnNames' => fgetcsv($fh, 60000), // 1st row supplies column
names/order
@@ -202,6 +203,7 @@
),
/* these values get stored to the rowStatusVars array */
'variableColumns' => array(
+ 'UNIQUE_ID',
'datesOfCreation',
'copyrightStatus',
'copyrightExpires',
@@ -238,192 +240,205 @@
$self->informationObject->save();
}
- // add subject access points
- $accessPointColumns = array(
- 'subjectAccessPoints' => QubitTaxonomy::SUBJECT_ID,
- 'placeAccessPoints' => QubitTaxonomy::PLACE_ID,
- );
-
- foreach($accessPointColumns as $columnName => $taxonomyId)
+ if (!$self->informationObject->id)
{
- if (isset($self->rowStatusVars[$columnName]))
+ throw new sfException('Information object save failed');
+ } else {
+ // add keymap entry
+ $keymap = new QubitKeymap;
+ $keymap->sourceId = $self->rowStatusVars['UNIQUE_ID'];
+ $keymap->sourceName = $self->getStatus('sourceName');
+ $keymap->targetId = $self->informationObject->id;
+ $keymap->targetName = 'something';
+ $keymap->save();
+
+ // add subject access points
+ $accessPointColumns = array(
+ 'subjectAccessPoints' => QubitTaxonomy::SUBJECT_ID,
+ 'placeAccessPoints' => QubitTaxonomy::PLACE_ID,
+ );
+
+ foreach($accessPointColumns as $columnName => $taxonomyId)
{
- foreach($self->rowStatusVars[$columnName] as $subject)
+ if (isset($self->rowStatusVars[$columnName]))
{
- $self->createAccessPoint($taxonomyId, $subject);
+ foreach($self->rowStatusVars[$columnName] as $subject)
+ {
+ $self->createAccessPoint($taxonomyId, $subject);
+ }
}
}
- }
- // add name access points
- if (isset($self->rowStatusVars['nameAccessPoints']))
- {
// add name access points
- foreach($self->rowStatusVars['nameAccessPoints'] as $name)
+ if (isset($self->rowStatusVars['nameAccessPoints']))
{
- $actor = $self->createOrFetchActor($name);
- $relation = new QubitRelation;
- $relation->subjectId = $self->informationObject->id;
- $relation->objectId = $actor->id;
- $relation->typeId = QubitTerm::NAME_ACCESS_POINT_ID;
- $relation->save();
+ // add name access points
+ foreach($self->rowStatusVars['nameAccessPoints'] as $name)
+ {
+ $actor = $self->createOrFetchActor($name);
+ $relation = new QubitRelation;
+ $relation->subjectId = $self->informationObject->id;
+ $relation->objectId = $actor->id;
+ $relation->typeId = QubitTerm::NAME_ACCESS_POINT_ID;
+ $relation->save();
+ }
}
- }
- // add accessions
- if (
- isset($self->rowStatusVars['accessionNumber'])
- && count($self->rowStatusVars['accessionNumber'])
- )
- {
- foreach($self->rowStatusVars['accessionNumber'] as $accessionNumber)
+ // add accessions
+ if (
+ isset($self->rowStatusVars['accessionNumber'])
+ && count($self->rowStatusVars['accessionNumber'])
+ )
{
- $accession = new QubitAccession;
- $accession->save();
+ foreach($self->rowStatusVars['accessionNumber'] as
$accessionNumber)
+ {
+ $accession = new QubitAccession;
+ $accession->save();
- // workaround to problem setting identifier
- $query = "UPDATE accession SET identifier=? WHERE id=?";
- $self->sqlQuery($query, $params = array($accessionNumber,
$accession->id));
+ // workaround to problem setting identifier
+ $query = "UPDATE accession SET identifier=? WHERE id=?";
+ $self->sqlQuery($query, $params = array($accessionNumber,
$accession->id));
+ }
}
- }
- // add material-related term relation
- if (isset($self->rowStatusVars['radGeneralMaterialDesignation']))
- {
- $self->createObjectTermRelation(
- $self->informationObject->id,
- $self->rowStatusVars['radGeneralMaterialDesignation']
- );
- }
+ // add material-related term relation
+ if (isset($self->rowStatusVars['radGeneralMaterialDesignation']))
+ {
+ $self->createObjectTermRelation(
+ $self->informationObject->id,
+ $self->rowStatusVars['radGeneralMaterialDesignation']
+ );
+ }
- // add copyright info
- if (isset($self->rowStatusVars['copyrightStatus']) &&
$self->rowStatusVars['copyrightStatus'])
- {
- switch (strtolower($self->rowStatusVars['copyrightStatus']))
+ // add copyright info
+ if (isset($self->rowStatusVars['copyrightStatus']) &&
$self->rowStatusVars['copyrightStatus'])
{
- case 'under copyright':
- print "Adding rights for ". $self->informationObject->title
."...\n";
- if ($self->rowStatusVars['copyrightHolder'])
- {
- // add rightsholder
- $actor = new QubitRightsHolder;
- $actor->parentId = QubitActor::ROOT_ID;
- $actor->authorizedFormOfName =
$self->rowStatusVars['copyrightHolder'];
- $actor->save();
+ switch (strtolower($self->rowStatusVars['copyrightStatus']))
+ {
+ case 'under copyright':
+ print "Adding rights for ". $self->informationObject->title
."...\n";
+ if ($self->rowStatusVars['copyrightHolder'])
+ {
+ // add rightsholder
+ $actor = new QubitRightsHolder;
+ $actor->parentId = QubitActor::ROOT_ID;
+ $actor->authorizedFormOfName =
$self->rowStatusVars['copyrightHolder'];
+ $actor->save();
+
+ $self->createRightAndRelation(array(
+ 'rightsHolderId' => $actor->id,
+ 'restriction' => 1,
+ 'basisId' => 170,
+ 'actId' => 305,
+ 'copyrightStatusId' => 306
+ ));
+ } else {
+ throw new sfException('Copyright holder not specified');
+ }
+ break;
+ case 'public domain':
$self->createRightAndRelation(array(
- 'rightsHolderId' => $actor->id,
'restriction' => 1,
'basisId' => 170,
'actId' => 305,
- 'copyrightStatusId' => 306
+ 'copyrightStatusId' => 307
));
- } else {
- throw new sfException('Copyright holder not specified');
- }
- break;
+ break;
- case 'public domain':
- $self->createRightAndRelation(array(
- 'restriction' => 1,
- 'basisId' => 170,
- 'actId' => 305,
- 'copyrightStatusId' => 307
- ));
- break;
-
- default:
- throw new sfException('Copyright status "'
- . $self->rowStatusVars['copyrightStatus']
- .'" not handled: adjust script or import data');
- break;
+ default:
+ throw new sfException('Copyright status "'
+ . $self->rowStatusVars['copyrightStatus']
+ .'" not handled: adjust script or import data');
+ break;
+ }
}
- }
- // add creators and create events
- if (isset($self->rowStatusVars['creators'])
- && count($self->rowStatusVars['creators']))
- {
- foreach($self->rowStatusVars['creators'] as $creator)
+ // add creators and create events
+ if (isset($self->rowStatusVars['creators'])
+ && count($self->rowStatusVars['creators']))
{
- // add create event if specified
- if (
- isset($self->rowStatusVars['datesOfCreationStart'])
- || (
- isset($self->rowStatusVars['datesOfCreationStart'])
- && isset($self->rowStatusVars['datesOfCreationEnd'])
- )
- )
+ foreach($self->rowStatusVars['creators'] as $creator)
{
- $endDate = (isset($self->rowStatusVars['datesOfCreationEnd']))
- ? $self->rowStatusVars['datesOfCreationEnd'] .'-00-00'
- : false;
-
- $eventData = array(
- 'startDate' => $self->rowStatusVars['datesOfCreationStart']
.'-00-00',
- 'endDate' => $endDate,
- 'actorName' => $creator
- );
-
- foreach(array(
- 'datesOfCreationNote' => 'description',
- 'datesOfCreation' => 'date'
+ // add create event if specified
+ if (
+ isset($self->rowStatusVars['datesOfCreationStart'])
+ || (
+ isset($self->rowStatusVars['datesOfCreationStart'])
+ && isset($self->rowStatusVars['datesOfCreationEnd'])
)
- as $statusVar => $eventProperty
)
{
- $eventData[$eventProperty] = $self->rowStatusVars[$statusVar];
- }
+ $endDate = (isset($self->rowStatusVars['datesOfCreationEnd']))
+ ? $self->rowStatusVars['datesOfCreationEnd'] .'-00-00'
+ : false;
+
+ $eventData = array(
+ 'startDate' => $self->rowStatusVars['datesOfCreationStart']
.'-00-00',
+ 'endDate' => $endDate,
+ 'actorName' => $creator
+ );
+
+ foreach(array(
+ 'datesOfCreationNote' => 'description',
+ 'datesOfCreation' => 'date'
+ )
+ as $statusVar => $eventProperty
+ )
+ {
+ $eventData[$eventProperty] =
$self->rowStatusVars[$statusVar];
+ }
- if(isset($self->rowStatusVars['creatorHistory']))
- {
- $creatorPosition = array_search($creator,
$self->rowStatusVars['creators']);
- if
(isset($self->rowStatusVars['creatorHistory'][$creatorPosition]))
+ if(isset($self->rowStatusVars['creatorHistory']))
{
- $eventData['actorHistory'] =
$self->rowStatusVars['creatorHistory'][$creatorPosition];
+ $creatorPosition = array_search($creator,
$self->rowStatusVars['creators']);
+ if
(isset($self->rowStatusVars['creatorHistory'][$creatorPosition]))
+ {
+ $eventData['actorHistory'] =
$self->rowStatusVars['creatorHistory'][$creatorPosition];
+ }
}
- }
- $event = $self->createEvent(
- QubitTerm::CREATION_ID,
- $eventData
- );
+ $event = $self->createEvent(
+ QubitTerm::CREATION_ID,
+ $eventData
+ );
+ }
}
}
- }
- // if a role is found, create term and actor if need be
- if (isset($self->rowStatusVars['actorRoles']))
- {
- foreach($self->rowStatusVars['actorRoles'] as $actorRole)
+ // if a role is found, create term and actor if need be
+ if (isset($self->rowStatusVars['actorRoles']))
{
- // create/fetch term
- $term = $self->createOrFetchTerm(
- QubitTaxonomy::EVENT_TYPE_ID,
- $actorRole['role']
- );
+ foreach($self->rowStatusVars['actorRoles'] as $actorRole)
+ {
+ // create/fetch term
+ $term = $self->createOrFetchTerm(
+ QubitTaxonomy::EVENT_TYPE_ID,
+ $actorRole['role']
+ );
- // create/fetch actor
- $self->createOrFetchActor($actorRole['actor']);
+ // create/fetch actor
+ $self->createOrFetchActor($actorRole['actor']);
- $self->createEvent($term->id, array('actorName' =>
$actorRole['actor']));
+ $self->createEvent($term->id, array('actorName' =>
$actorRole['actor']));
+ }
}
- }
- // output progress information
- if ($options = $self->getStatus('options'))
- {
- // row count isn't incremented until completion of this closure, so
add one to reflect reality
- $rowsProcessed = $self->getStatus('rows') + 1;
- $memoryUsageMB = round(memory_get_usage() / (1024 * 1024), 2);
- if ($options['rows-until-update'] && !($rowsProcessed %
$options['rows-until-update']))
+ // output progress information
+ if ($options = $self->getStatus('options'))
{
- $elapsed = $self->getTimeElapsed();
- $elapsedMinutes = round($elapsed / 60, 2);
- $averageTime = round($elapsed / $rowsProcessed, 2);
+ // row count isn't incremented until completion of this closure,
so add one to reflect reality
+ $rowsProcessed = $self->getStatus('rows') + 1;
+ $memoryUsageMB = round(memory_get_usage() / (1024 * 1024), 2);
+ if ($options['rows-until-update'] && !($rowsProcessed %
$options['rows-until-update']))
+ {
+ $elapsed = $self->getTimeElapsed();
+ $elapsedMinutes = round($elapsed / 60, 2);
+ $averageTime = round($elapsed / $rowsProcessed, 2);
- print "\n". $rowsProcessed ." rows processed in ". $elapsedMinutes
- . " minutes (". $averageTime ." second/row average, ".
$memoryUsageMB ." MB used).\n";
+ print "\n". $rowsProcessed ." rows processed in ".
$elapsedMinutes
+ . " minutes (". $averageTime ." second/row average, ".
$memoryUsageMB ." MB used).\n";
+ }
}
}
}
--
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.