Mercurial > hg > orthanc
comparison OrthancServer/DatabaseWrapper.cpp @ 1247:32fcc5dc7562
abstraction
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 08 Dec 2014 13:54:27 +0100 |
parents | 54bf0f0245f4 |
children | b4acdb37e43b |
comparison
equal
deleted
inserted
replaced
1246:54bf0f0245f4 | 1247:32fcc5dc7562 |
---|---|
37 #include "../Core/Uuid.h" | 37 #include "../Core/Uuid.h" |
38 #include "EmbeddedResources.h" | 38 #include "EmbeddedResources.h" |
39 | 39 |
40 #include <glog/logging.h> | 40 #include <glog/logging.h> |
41 #include <stdio.h> | 41 #include <stdio.h> |
42 #include <boost/lexical_cast.hpp> | |
42 | 43 |
43 namespace Orthanc | 44 namespace Orthanc |
44 { | 45 { |
45 | 46 |
46 namespace Internals | 47 namespace Internals |
357 | 358 |
358 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM Resources WHERE internalId=?"); | 359 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM Resources WHERE internalId=?"); |
359 s.BindInt64(0, id); | 360 s.BindInt64(0, id); |
360 s.Run(); | 361 s.Run(); |
361 | 362 |
362 if (signalRemainingAncestor_->HasRemainingAncestor()) | 363 if (signalRemainingAncestor_->HasRemainingAncestor() && |
363 { | 364 listener_ != NULL) |
364 listener_.SignalRemainingAncestor(signalRemainingAncestor_->GetRemainingAncestorType(), | 365 { |
365 signalRemainingAncestor_->GetRemainingAncestorId()); | 366 listener_->SignalRemainingAncestor(signalRemainingAncestor_->GetRemainingAncestorType(), |
367 signalRemainingAncestor_->GetRemainingAncestorId()); | |
366 } | 368 } |
367 } | 369 } |
368 | 370 |
369 void DatabaseWrapper::SetMetadata(int64_t id, | 371 void DatabaseWrapper::SetMetadata(int64_t id, |
370 MetadataType type, | 372 MetadataType type, |
608 s.BindInt(2, change.GetResourceType()); | 610 s.BindInt(2, change.GetResourceType()); |
609 s.BindString(3, change.GetDate()); | 611 s.BindString(3, change.GetDate()); |
610 s.Run(); | 612 s.Run(); |
611 } | 613 } |
612 | 614 |
613 listener_.SignalChange(change); | 615 assert(listener_ != NULL); |
616 listener_->SignalChange(change); | |
614 } | 617 } |
615 | 618 |
616 | 619 |
617 void DatabaseWrapper::GetChangesInternal(std::list<ServerIndexChange>& target, | 620 void DatabaseWrapper::GetChangesInternal(std::list<ServerIndexChange>& target, |
618 bool& done, | 621 bool& done, |
783 db.Execute(upgrade); | 786 db.Execute(upgrade); |
784 db.CommitTransaction(); | 787 db.CommitTransaction(); |
785 } | 788 } |
786 | 789 |
787 | 790 |
788 DatabaseWrapper::DatabaseWrapper(const std::string& path, | 791 DatabaseWrapper::DatabaseWrapper(const std::string& path) : listener_(NULL) |
789 IServerIndexListener& listener) : | |
790 listener_(listener) | |
791 { | 792 { |
792 db_.Open(path); | 793 db_.Open(path); |
793 Open(); | 794 Open(); |
794 } | 795 } |
795 | 796 |
796 DatabaseWrapper::DatabaseWrapper(IServerIndexListener& listener) : | 797 DatabaseWrapper::DatabaseWrapper() : listener_(NULL) |
797 listener_(listener) | |
798 { | 798 { |
799 db_.OpenInMemory(); | 799 db_.OpenInMemory(); |
800 Open(); | 800 Open(); |
801 } | 801 } |
802 | 802 |
868 throw OrthancException(ErrorCode_IncompatibleDatabaseVersion); | 868 throw OrthancException(ErrorCode_IncompatibleDatabaseVersion); |
869 } | 869 } |
870 | 870 |
871 signalRemainingAncestor_ = new Internals::SignalRemainingAncestor; | 871 signalRemainingAncestor_ = new Internals::SignalRemainingAncestor; |
872 db_.Register(signalRemainingAncestor_); | 872 db_.Register(signalRemainingAncestor_); |
873 db_.Register(new Internals::SignalFileDeleted(listener_)); | 873 } |
874 db_.Register(new Internals::SignalResourceDeleted(listener_)); | 874 |
875 void DatabaseWrapper::SetListener(IServerIndexListener& listener) | |
876 { | |
877 listener_ = &listener; | |
878 db_.Register(new Internals::SignalFileDeleted(listener)); | |
879 db_.Register(new Internals::SignalResourceDeleted(listener)); | |
875 } | 880 } |
876 | 881 |
877 uint64_t DatabaseWrapper::GetResourceCount(ResourceType resourceType) | 882 uint64_t DatabaseWrapper::GetResourceCount(ResourceType resourceType) |
878 { | 883 { |
879 SQLite::Statement s(db_, SQLITE_FROM_HERE, | 884 SQLite::Statement s(db_, SQLITE_FROM_HERE, |