Ejemplo n.º 1
0
 /** testGetSetValue */
 public function testGetSetValue()
 {
     Zend_Registry::set('modulesEnable', $this->enabledModules);
     Zend_Registry::set('notifier', new MIDAS_Notifier(false, null));
     /** @var Validation_ScalarResultModel $scalarResultModel */
     $scalarResultModel = MidasLoader::loadModel('ScalarResult', 'validation');
     $daos = $scalarResultModel->getAll();
     $sr = $daos[0];
     $folder = new FolderDao();
     $folder->setName('result');
     $folder->setDescription('result');
     $folder->setParentId(-1);
     $this->Folder->save($folder);
     $trainingItem = new ItemDao();
     $trainingItem->setName('img00.mha');
     $trainingItem->setDescription('training img 00');
     $trainingItem->setType(0);
     $this->Item->save($trainingItem);
     $scalarResultModel->setFolder($sr, $folder);
     $scalarResultModel->setItem($sr, $trainingItem);
     $sr->setValue(90.009);
     $scalarResultModel->save($sr);
     $daos = $scalarResultModel->getAll();
     $sr = $daos[0];
     $this->assertEquals(90.009, $sr->getValue());
 }
Ejemplo n.º 2
0
 /** Import a directory recursively */
 private function _recursiveParseDirectory($path, $currentdir)
 {
     $it = new DirectoryIterator($path);
     foreach ($it as $fileInfo) {
         if ($fileInfo->isDot()) {
             continue;
         }
         // If the file/dir is not readable (permission issue)
         if (!$fileInfo->isReadable()) {
             $this->getLogger()->crit($fileInfo->getPathName() . ' cannot be imported. Not readable.');
             continue;
         }
         // If this is too slow we'll figure something out
         if ($this->_checkStopImport()) {
             return false;
         }
         if ($fileInfo->isDir()) {
             // we have a directory
             // If the the directory actually doesn't exist at this point,
             // skip it.
             if (!file_exists($fileInfo->getPathName())) {
                 continue;
             }
             // Get the files in the directory and skip the folder if it does not
             // contain any files and we aren't set to import empty directories. The
             // count($files) <= 2 is there to account for our our friends . and ..
             $files = scandir($fileInfo->getPathName());
             if (!$this->importemptydirectories && $files && count($files) <= 2) {
                 continue;
             }
             // Find if the child exists
             $child = $this->Folder->getFolderByName($currentdir, $fileInfo->getFilename());
             // If the folder does not exist, create one.
             if (!$child) {
                 $child = new FolderDao();
                 $child->setName($fileInfo->getFilename());
                 $child->setParentId($currentdir->getFolderId());
                 $child->setDateCreation(date('Y-m-d H:i:s'));
                 $child->setDescription('');
                 $this->Folder->save($child);
                 $this->Folderpolicyuser->createPolicy($this->userSession->Dao, $child, MIDAS_POLICY_ADMIN);
             }
             // Keep descending
             $this->_recursiveParseDirectory($fileInfo->getPathName(), $child);
         } else {
             // We have a file
             $this->_incrementFileProcessed();
             $newrevision = true;
             $item = $this->Folder->getItemByName($currentdir, $fileInfo->getFilename());
             if (!$item) {
                 // Create an item
                 $item = new ItemDao();
                 $item->setName($fileInfo->getFilename());
                 $item->setDescription('');
                 $item->setPrivacyStatus(MIDAS_PRIVACY_PRIVATE);
                 // Must set this flag private initially
                 $this->Item->save($item, true);
                 // Set the policy of the item
                 $this->Itempolicyuser->createPolicy($this->userSession->Dao, $item, MIDAS_POLICY_ADMIN);
                 // Add the item to the current directory
                 $this->Folder->addItem($currentdir, $item);
             }
             // Check if the bistream has been updated based on the local date
             $revision = $this->ItemRevision->getLatestRevision($item);
             if ($revision) {
                 $newrevision = false;
                 $bitstream = $this->ItemRevision->getBitstreamByName($revision, $fileInfo->getFilename());
                 $curMD5 = UtilityComponent::md5file($fileInfo->getPathName());
                 $diskFileIsNewer = strtotime($bitstream->getDate()) < filemtime($fileInfo->getPathName());
                 $md5IsDifferent = $bitstream->getChecksum() != $curMD5;
                 if (!$bitstream || $diskFileIsNewer && $md5IsDifferent) {
                     $newrevision = true;
                 }
             }
             if ($newrevision) {
                 // Create a revision for the item
                 $itemRevisionDao = new ItemRevisionDao();
                 $itemRevisionDao->setChanges('Initial revision');
                 $itemRevisionDao->setUser_id($this->userSession->Dao->getUserId());
                 $this->Item->addRevision($item, $itemRevisionDao);
                 // Add bitstreams to the revision
                 $this->getLogger()->debug('create New Bitstream');
                 $bitstreamDao = new BitstreamDao();
                 $bitstreamDao->setName($fileInfo->getFilename());
                 $bitstreamDao->setPath($fileInfo->getPathName());
                 $bitstreamDao->fillPropertiesFromPath();
                 // Set the Assetstore
                 $bitstreamDao->setAssetstoreId($this->assetstoreid);
                 // Upload the bitstream
                 $assetstoreDao = $this->Assetstore->load($this->assetstoreid);
                 $this->Component->Upload->uploadBitstream($bitstreamDao, $assetstoreDao, true);
                 $this->ItemRevision->addBitstream($itemRevisionDao, $bitstreamDao);
             }
         }
     }
     unset($it);
     return true;
 }
Ejemplo n.º 3
0
 /**
  * test addResult function.
  */
 public function testSetScore()
 {
     // Create training, testing, and truth folders
     $testingFolder = new FolderDao();
     $testingFolder->setName('testing');
     $testingFolder->setDescription('testing');
     $testingFolder->setParentId(-1);
     $this->Folder->save($testingFolder);
     $trainingFolder = new FolderDao();
     $trainingFolder->setName('training');
     $trainingFolder->setDescription('training');
     $trainingFolder->setParentId(-1);
     $this->Folder->save($trainingFolder);
     $truthFolder = new FolderDao();
     $truthFolder->setName('truth');
     $truthFolder->setDescription('truth');
     $truthFolder->setParentId(-1);
     $this->Folder->save($truthFolder);
     // Create result folder
     $resultFolder = new FolderDao();
     $resultFolder->setName('result');
     $resultFolder->setDescription('result');
     $resultFolder->setParentId(-1);
     $this->Folder->save($resultFolder);
     // Add items to the folders
     $trainingItem = null;
     $testingItem = null;
     $truthItem = null;
     $resultItem = null;
     for ($i = 0; $i < 3; ++$i) {
         $trainingItem = new ItemDao();
         $testingItem = new ItemDao();
         $truthItem = new ItemDao();
         $resultItem = new ItemDao();
         $trainingItem->setName('img0' . $i . '.mha');
         $testingItem->setName('img0' . $i . '.mha');
         $truthItem->setName('img0' . $i . '.mha');
         $resultItem->setName('img0' . $i . '.mha');
         $trainingItem->setDescription('training img ' . $i);
         $testingItem->setDescription('testing img ' . $i);
         $truthItem->setDescription('truth img ' . $i);
         $resultItem->setDescription('result img ' . $i);
         $trainingItem->setType(0);
         $testingItem->setType(0);
         $truthItem->setType(0);
         $resultItem->setType(0);
         $this->Item->save($trainingItem);
         $this->Item->save($testingItem);
         $this->Item->save($truthItem);
         $this->Item->save($resultItem);
         $this->Folder->addItem($trainingFolder, $trainingItem);
         $this->Folder->addItem($testingFolder, $testingItem);
         $this->Folder->addItem($truthFolder, $truthItem);
         $this->Folder->addItem($resultFolder, $resultItem);
     }
     // Acquire the dashboard from the database
     /** @var Validation_DashboardModel $dashboardModel */
     $dashboardModel = MidasLoader::loadModel('Dashboard', 'validation');
     $daos = $dashboardModel->getAll();
     $dao = $daos[0];
     // Add testing, training, and truth to the dashboard
     $dashboardModel->setTraining($dao, $trainingFolder);
     $dashboardModel->setTesting($dao, $testingFolder);
     $dashboardModel->setTruth($dao, $truthFolder);
     // Reload the dashboard and check it for consistency
     $daos = $dashboardModel->getAll();
     $dao = $daos[0];
     $dashboardModel->addResult($dao, $resultFolder);
     // Get the results
     $results = $dao->getResults();
     $firstResult = $results[2];
     $items = $firstResult->getItems();
     $values = array();
     $count = 0;
     foreach ($items as $item) {
         $values[$item->getKey()] = $count * 15;
         $dashboardModel->setScore($dao, $firstResult, $item, $count * 15);
         ++$count;
     }
     $daos = $dashboardModel->getAll();
     $dao = $daos[0];
     $this->assertEquals(3, count($dao->getScores()));
     $scores = $dashboardModel->getScores($dao, $resultFolder);
     $this->assertEquals($values, $scores);
 }