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.

Reply via email to