From e21db73b84b812c08c4ca2ec02a17862a71c2e6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Tue, 9 Jul 2024 22:25:52 +0200 Subject: [PATCH] Refactor and simplify document management functionality to adapt to StoredObject versioning This commit includes several updates to the document management functionality within ChillWopiBundle and ChillDocGeneratorBundle, refactoring for simplicity and improved readability. --- .../DataFixtures/ORM/LoadDocGeneratorTemplate.php | 13 ++++++++----- .../Service/Generator/Generator.php | 8 ++------ .../src/Service/Wopi/ChillDocumentManager.php | 10 +++++----- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/Bundle/ChillDocGeneratorBundle/DataFixtures/ORM/LoadDocGeneratorTemplate.php b/src/Bundle/ChillDocGeneratorBundle/DataFixtures/ORM/LoadDocGeneratorTemplate.php index 97d436c5e..f38102a10 100644 --- a/src/Bundle/ChillDocGeneratorBundle/DataFixtures/ORM/LoadDocGeneratorTemplate.php +++ b/src/Bundle/ChillDocGeneratorBundle/DataFixtures/ORM/LoadDocGeneratorTemplate.php @@ -54,12 +54,15 @@ class LoadDocGeneratorTemplate extends AbstractFixture ]; foreach ($templates as $template) { - $newStoredObj = (new StoredObject()) - ->setFilename($template['file']['filename']) - ->setKeyInfos(json_decode($template['file']['key'], true)) - ->setIv(json_decode($template['file']['iv'], true)) + $newStoredObj = (new StoredObject()); + + $newStoredObj ->setCreatedAt(new \DateTime('today')) - ->setType($template['file']['type']); + ->registerVersion( + json_decode($template['file']['key'], true), + json_decode($template['file']['iv'], true), + $template['file']['type'], + ); $manager->persist($newStoredObj); diff --git a/src/Bundle/ChillDocGeneratorBundle/Service/Generator/Generator.php b/src/Bundle/ChillDocGeneratorBundle/Service/Generator/Generator.php index 127d135bb..d4ca5cf2e 100644 --- a/src/Bundle/ChillDocGeneratorBundle/Service/Generator/Generator.php +++ b/src/Bundle/ChillDocGeneratorBundle/Service/Generator/Generator.php @@ -134,13 +134,11 @@ class Generator implements GeneratorInterface $content = Yaml::dump($data, 6); /* @var StoredObject $destinationStoredObject */ $destinationStoredObject - ->setType('application/yaml') - ->setFilename(sprintf('%s_yaml', uniqid('doc_', true))) ->setStatus(StoredObject::STATUS_READY) ; try { - $this->storedObjectManager->write($destinationStoredObject, $content); + $this->storedObjectManager->write($destinationStoredObject, $content, 'application/yaml'); } catch (StoredObjectManagerException $e) { $destinationStoredObject->addGenerationErrors($e->getMessage()); @@ -174,13 +172,11 @@ class Generator implements GeneratorInterface /* @var StoredObject $destinationStoredObject */ $destinationStoredObject - ->setType($template->getFile()->getType()) - ->setFilename(sprintf('%s_odt', uniqid('doc_', true))) ->setStatus(StoredObject::STATUS_READY) ; try { - $this->storedObjectManager->write($destinationStoredObject, $generatedResource); + $this->storedObjectManager->write($destinationStoredObject, $generatedResource, $template->getFile()->getType()); } catch (StoredObjectManagerException $e) { $destinationStoredObject->addGenerationErrors($e->getMessage()); diff --git a/src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php b/src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php index 2b569014d..574fee75b 100644 --- a/src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php +++ b/src/Bundle/ChillWopiBundle/src/Service/Wopi/ChillDocumentManager.php @@ -50,17 +50,15 @@ final readonly class ChillDocumentManager implements DocumentManagerInterface // Mime types / extension handling. $mimeTypes = new MimeTypes(); - $mimeTypes->getMimeTypes($data['extension']); - $document->setType(reset($mimeTypes)); - - $document->setFilename($data['name']); + $types = $mimeTypes->getMimeTypes($data['extension']); + $mimeType = array_values($types)[0] ?? ''; $this->entityManager->persist($document); $this->entityManager->flush(); // TODO : Ask proper mapping. // Available: basename, name, extension, content, size - $this->setContent($document, $data['content']); + $this->storedObjectManager->write($document, $data['content'], $mimeType); return $document; } @@ -194,5 +192,7 @@ final readonly class ChillDocumentManager implements DocumentManagerInterface private function setContent(StoredObject $storedObject, string $content): void { $this->storedObjectManager->write($storedObject, $content); + + $this->entityManager->flush(); } }