# HG changeset patch # User Sebastien Jodogne # Date 1352802583 -3600 # Node ID c56dc32266e0b672cb379129f281ee88cfcbe6b5 # Parent bff0b77b02faca7015668d3f9cfb42414fee9aaa refactoring getfile diff -r bff0b77b02fa -r c56dc32266e0 OrthancServer/DatabaseWrapper.cpp --- a/OrthancServer/DatabaseWrapper.cpp Tue Nov 13 11:22:33 2012 +0100 +++ b/OrthancServer/DatabaseWrapper.cpp Tue Nov 13 11:29:43 2012 +0100 @@ -302,7 +302,7 @@ } void DatabaseWrapper::AttachFile(int64_t id, - const std::string& name, + const std::string& contentName, const std::string& fileUuid, uint64_t compressedSize, uint64_t uncompressedSize, @@ -310,7 +310,7 @@ { SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO AttachedFiles VALUES(?, ?, ?, ?, ?, ?)"); s.BindInt(0, id); - s.BindString(1, name); + s.BindString(1, contentName); s.BindString(2, fileUuid); s.BindInt(3, compressedSize); s.BindInt(4, uncompressedSize); @@ -319,16 +319,16 @@ } bool DatabaseWrapper::LookupFile(int64_t id, - const std::string& name, + const std::string& contentName, std::string& fileUuid, uint64_t& compressedSize, uint64_t& uncompressedSize, CompressionType& compressionType) { SQLite::Statement s(db_, SQLITE_FROM_HERE, - "SELECT uuid, compressedSize, uncompressedSize, compressionType FROM AttachedFiles WHERE id=? AND name=?"); + "SELECT uuid, compressedSize, uncompressedSize, compressionType FROM AttachedFiles WHERE id=? AND contentName=?"); s.BindInt(0, id); - s.BindString(1, name); + s.BindString(1, contentName); if (!s.Step()) { diff -r bff0b77b02fa -r c56dc32266e0 OrthancServer/DatabaseWrapper.h --- a/OrthancServer/DatabaseWrapper.h Tue Nov 13 11:22:33 2012 +0100 +++ b/OrthancServer/DatabaseWrapper.h Tue Nov 13 11:29:43 2012 +0100 @@ -96,22 +96,22 @@ const std::string& defaultValue = ""); void AttachFile(int64_t id, - const std::string& name, + const std::string& contentName, const std::string& fileUuid, uint64_t compressedSize, uint64_t uncompressedSize, CompressionType compressionType); void AttachFile(int64_t id, - const std::string& name, + const std::string& contentName, const std::string& fileUuid, uint64_t fileSize) { - AttachFile(id, name, fileUuid, fileSize, fileSize, CompressionType_None); + AttachFile(id, contentName, fileUuid, fileSize, fileSize, CompressionType_None); } bool LookupFile(int64_t id, - const std::string& name, + const std::string& contentName, std::string& fileUuid, uint64_t& compressedSize, uint64_t& uncompressedSize, diff -r bff0b77b02fa -r c56dc32266e0 OrthancServer/OrthancRestApi.cpp --- a/OrthancServer/OrthancRestApi.cpp Tue Nov 13 11:22:33 2012 +0100 +++ b/OrthancServer/OrthancRestApi.cpp Tue Nov 13 11:29:43 2012 +0100 @@ -571,14 +571,14 @@ std::string fileUuid, contentType, filename; if (uri[2] == "file") { - existingResource = index_.GetDicomFile(fileUuid, uri[1]); + existingResource = index_.GetFile(fileUuid, uri[1], "dicom"); contentType = "application/dicom"; filename = fileUuid + ".dcm"; } else if (uri[2] == "tags" || uri[2] == "simplified-tags") { - existingResource = index_.GetJsonFile(fileUuid, uri[1]); + existingResource = index_.GetFile(fileUuid, uri[1], "json"); contentType = "application/json"; filename = fileUuid + ".json"; } @@ -642,7 +642,7 @@ uri[4] == "image-uint16")))) { std::string uuid; - existingResource = index_.GetDicomFile(uuid, uri[1]); + existingResource = index_.GetFile(uuid, uri[1], "dicom"); std::string action = uri[2]; diff -r bff0b77b02fa -r c56dc32266e0 OrthancServer/PrepareDatabase2.sql --- a/OrthancServer/PrepareDatabase2.sql Tue Nov 13 11:22:33 2012 +0100 +++ b/OrthancServer/PrepareDatabase2.sql Tue Nov 13 11:29:43 2012 +0100 @@ -27,12 +27,12 @@ CREATE TABLE AttachedFiles( id INTEGER REFERENCES Resources(internalId) ON DELETE CASCADE, - name TEXT, + contentName TEXT, uuid TEXT, compressedSize INTEGER, uncompressedSize INTEGER, compressionType INTEGER, - PRIMARY KEY(id, name) + PRIMARY KEY(id, contentName) ); CREATE TABLE Changes( diff -r bff0b77b02fa -r c56dc32266e0 OrthancServer/ServerIndex.cpp --- a/OrthancServer/ServerIndex.cpp Tue Nov 13 11:22:33 2012 +0100 +++ b/OrthancServer/ServerIndex.cpp Tue Nov 13 11:29:43 2012 +0100 @@ -589,8 +589,8 @@ } // Attach the files to the newly created instance - db2_->AttachFile(instance, "_dicom", fileUuid, uncompressedFileSize); - db2_->AttachFile(instance, "_json", jsonUuid, 0); // TODO "0" + db2_->AttachFile(instance, "dicom", fileUuid, uncompressedFileSize); + db2_->AttachFile(instance, "json", jsonUuid, 0); // TODO "0" // Attach the metadata db2_->SetMetadata(instance, MetadataType_Instance_ReceptionDate, Toolbox::GetNowIsoString()); @@ -980,6 +980,26 @@ } + bool ServerIndex::GetFile(std::string& fileUuid, + const std::string& instanceUuid, + const std::string& contentName) + { + if (contentName == "json") + { + return GetJsonFile(fileUuid, instanceUuid); + } + else if (contentName == "dicom") + { + return GetDicomFile(fileUuid, instanceUuid); + } + else + { + throw OrthancException(ErrorCode_InternalError); + } + } + + + void ServerIndex::GetAllUuids(Json::Value& target, ResourceType resourceType) { diff -r bff0b77b02fa -r c56dc32266e0 OrthancServer/ServerIndex.h --- a/OrthancServer/ServerIndex.h Tue Nov 13 11:22:33 2012 +0100 +++ b/OrthancServer/ServerIndex.h Tue Nov 13 11:29:43 2012 +0100 @@ -121,6 +121,12 @@ const std::string& jsonUuid, const std::string& remoteAet); + bool GetJsonFile(std::string& fileUuid, + const std::string& instanceUuid); + + bool GetDicomFile(std::string& fileUuid, + const std::string& instanceUuid); + public: ServerIndex(const std::string& storagePath); @@ -156,11 +162,9 @@ bool GetPatient(Json::Value& result, const std::string& patientUuid); - bool GetJsonFile(std::string& fileUuid, - const std::string& instanceUuid); - - bool GetDicomFile(std::string& fileUuid, - const std::string& instanceUuid); + bool GetFile(std::string& fileUuid, + const std::string& instanceUuid, + const std::string& contentName); void GetAllUuids(Json::Value& target, ResourceType resourceType);