diff Core/FileStorage/CompressedFileStorageAccessor.cpp @ 1134:ba9fd42284d0

preparing storage plugin
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 09 Sep 2014 12:53:49 +0200
parents bf67431a7383
children 67c3c1e4a6e0
line wrap: on
line diff
--- a/Core/FileStorage/CompressedFileStorageAccessor.cpp	Tue Sep 09 10:45:14 2014 +0200
+++ b/Core/FileStorage/CompressedFileStorageAccessor.cpp	Tue Sep 09 12:53:49 2014 +0200
@@ -56,7 +56,7 @@
     {
     case CompressionType_None:
     {
-      std::string uuid = storage_.Create(data, size, type);
+      std::string uuid = GetStorageArea().Create(data, size, type);
       return FileInfo(uuid, type, size, md5);
     }
 
@@ -75,11 +75,11 @@
       std::string uuid;
       if (compressed.size() > 0)
       {
-        uuid = storage_.Create(&compressed[0], compressed.size(), type);
+        uuid = GetStorageArea().Create(&compressed[0], compressed.size(), type);
       }
       else
       {
-        uuid = storage_.Create(NULL, 0, type);
+        uuid = GetStorageArea().Create(NULL, 0, type);
       }
 
       return FileInfo(uuid, type, size, md5,
@@ -91,12 +91,32 @@
     }
   }
 
+
+  CompressedFileStorageAccessor::CompressedFileStorageAccessor() : 
+    storage_(NULL),
+    compressionType_(CompressionType_None)
+  {
+  }
+
+
   CompressedFileStorageAccessor::CompressedFileStorageAccessor(IStorageArea& storage) : 
-    storage_(storage)
+    storage_(&storage),
+    compressionType_(CompressionType_None)
   {
-    compressionType_ = CompressionType_None;
   }
 
+
+  IStorageArea& CompressedFileStorageAccessor::GetStorageArea()
+  {
+    if (storage_ == NULL)
+    {
+      throw OrthancException(ErrorCode_BadSequenceOfCalls);
+    }
+
+    return *storage_;
+  }
+
+
   void CompressedFileStorageAccessor::Read(std::string& content,
                                            const std::string& uuid,
                                            FileContentType type)
@@ -104,13 +124,13 @@
     switch (compressionType_)
     {
     case CompressionType_None:
-      storage_.Read(content, uuid, type);
+      GetStorageArea().Read(content, uuid, type);
       break;
 
     case CompressionType_Zlib:
     {
       std::string compressed;
-      storage_.Read(compressed, uuid, type);
+      GetStorageArea().Read(compressed, uuid, type);
       zlib_.Uncompress(content, compressed);
       break;
     }
@@ -127,14 +147,14 @@
     {
     case CompressionType_None:
     {
-      FileStorageAccessor uncompressedAccessor(storage_);
+      FileStorageAccessor uncompressedAccessor(GetStorageArea());
       return uncompressedAccessor.ConstructHttpFileSender(uuid, type);
     }
 
     case CompressionType_Zlib:
     {
       std::string compressed;
-      storage_.Read(compressed, uuid, type);
+      GetStorageArea().Read(compressed, uuid, type);
 
       std::auto_ptr<BufferHttpSender> sender(new BufferHttpSender);
       zlib_.Uncompress(sender->GetBuffer(), compressed);
@@ -146,4 +166,11 @@
       throw OrthancException(ErrorCode_NotImplemented);
     }
   }
+
+
+  void  CompressedFileStorageAccessor::Remove(const std::string& uuid,
+                                              FileContentType type)
+  {
+    GetStorageArea().Remove(uuid, type);
+  }
 }