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,