public function testDeepCloneTriplesFile()
 {
     /** @var \core_kernel_versioning_Repository $repository */
     $repository = \tao_models_classes_FileSourceService::singleton()->addLocalSource("repository test", \tao_helpers_File::createTempDir());
     //see if clone item content works
     /** @var \core_kernel_versioning_File $file */
     $file = $repository->spawnFile(__DIR__ . '/sample/test.xml', "test", function ($originalName) {
         return md5($originalName);
     });
     //see if clone file works
     $rdfsTriple = new \core_kernel_classes_Triple();
     $rdfsTriple->predicate = "http://www.w3.org/1999/02/22-rdf-syntax-ns#value";
     $rdfsTriple->object = $file->getUri();
     $return = CloneHelper::deepCloneTriples(array($rdfsTriple));
     $this->assertCount(1, $return);
     $this->assertEquals($rdfsTriple->predicate, $return[0]->predicate);
     $this->assertNotEquals($rdfsTriple->object, $return[0]->object);
     $fileCopy = new \core_kernel_file_File($return[0]->object);
     $this->assertFileExists($fileCopy->getAbsolutePath());
     $this->assertEquals($file->getLabel(), $fileCopy->getLabel());
     $this->assertNotEquals($file->getAbsolutePath(), $fileCopy->getAbsolutePath());
     $file->delete(true);
     $fileCopy->delete(true);
     $repository->delete(true);
 }
 public function testDeepCloneTriplesFile()
 {
     $this->assertFileExists(__DIR__ . '/sample/test.xml');
     $dir = $this->getTempDirectory();
     $file = $dir->getFile('/sample/test.xml');
     $file->put(file_get_contents(__DIR__ . '/sample/test.xml'));
     /** @var FileReferenceSerializer $serializer */
     $serializer = ServiceManager::getServiceManager()->get(FileReferenceSerializer::SERVICE_ID);
     $fileUri = $serializer->serialize($file);
     //see if clone file works
     $rdfsTriple = new \core_kernel_classes_Triple();
     $rdfsTriple->predicate = "http://www.w3.org/1999/02/22-rdf-syntax-ns#value";
     $rdfsTriple->object = $fileUri;
     $return = CloneHelper::deepCloneTriples([$rdfsTriple]);
     $this->assertCount(1, $return);
     $this->assertEquals($rdfsTriple->predicate, $return[0]->predicate);
     $this->assertNotEquals($rdfsTriple->object, $return[0]->object);
     /** @var File $fileCopy */
     $fileCopy = $serializer->unserialize($return[0]->object);
     $this->assertTrue($fileCopy->exists());
     $this->assertEquals($file->getSize(), $fileCopy->getSize());
     $this->assertNotEquals($file->getPrefix(), $fileCopy->getPrefix());
     $file->delete(true);
     $fileCopy->delete(true);
 }
 /**
  * (non-PHPdoc)
  * @see \oat\taoRevision\model\Repository::restore()
  */
 public function restore(Revision $revision)
 {
     $resourceId = $revision->getResourceId();
     $data = $this->getStorage()->getData($revision);
     $resource = new \core_kernel_classes_Resource($resourceId);
     $originFilesystemMap = CloneHelper::getPropertyStorageMap($resource->getRdfTriples());
     DeleteHelper::deepDelete($resource);
     foreach (CloneHelper::deepCloneTriples($data, $originFilesystemMap) as $triple) {
         ModelManager::getModel()->getRdfInterface()->add($triple);
     }
     return true;
 }
Ejemplo n.º 4
0
 protected function deepClone(core_kernel_classes_Resource $source)
 {
     $clonedTriples = CloneHelper::deepCloneTriples($source->getRdfTriples());
     $newUri = common_Utils::getNewUri();
     $wsModel = $this->getWorkspaceModel();
     $rdfInterface = $wsModel->getRdfInterface();
     foreach ($clonedTriples as $triple) {
         $triple->subject = $newUri;
         $triple->modelid = $wsModel->getNewTripleModelId();
         $rdfInterface->add($triple);
     }
     return new core_kernel_classes_Resource($newUri);
 }