Mercurial > hg > orthanc
diff OrthancServer/ResourceFinder.h @ 1360:0649c5aef34a
DicomFindQuery
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 15 May 2015 15:34:32 +0200 |
parents | 4378a6636187 |
children | 94ffb597d297 |
line wrap: on
line diff
--- a/OrthancServer/ResourceFinder.h Fri May 15 13:17:37 2015 +0200 +++ b/OrthancServer/ResourceFinder.h Fri May 15 15:34:32 2015 +0200 @@ -38,30 +38,30 @@ namespace Orthanc { - class BaseResourceFinder : public boost::noncopyable + class ResourceFinder : public boost::noncopyable { public: - class IMainTagsFilter : public boost::noncopyable + class IQuery : public boost::noncopyable { public: - virtual ~IMainTagsFilter() + virtual ~IQuery() { } - virtual bool Apply(const DicomMap& mainTags, - ResourceType level) = 0; - }; + virtual ResourceType GetLevel() const = 0; + virtual bool RestrictIdentifier(std::string& value, + DicomTag identifier) const = 0; + + virtual bool HasMainDicomTagsFilter(ResourceType level) const = 0; - class IInstanceFilter : public boost::noncopyable - { - public: - virtual ~IInstanceFilter() - { - } + virtual bool FilterMainDicomTags(const DicomMap& mainTags, + ResourceType level) const = 0; - virtual bool Apply(const std::string& instanceId, - const Json::Value& content) = 0; + virtual bool HasInstanceFilter() const = 0; + + virtual bool FilterInstance(const std::string& instanceId, + const Json::Value& content) const = 0; }; @@ -71,40 +71,14 @@ class CandidateResources; ServerContext& context_; - ResourceType level_; size_t maxResults_; - Identifiers identifiers_; - IMainTagsFilter *mainTagsFilter_; - IInstanceFilter *instanceFilter_; void ApplyAtLevel(CandidateResources& candidates, + const IQuery& query, ResourceType level); public: - BaseResourceFinder(ServerContext& context); - - ResourceType GetLevel() const - { - return level_; - } - - void SetLevel(ResourceType level) - { - level_ = level; - } - - void SetIdentifier(const DicomTag& tag, - const std::string& value); - - void SetMainTagsFilter(IMainTagsFilter& filter) - { - mainTagsFilter_ = &filter; - } - - void SetInstanceFilter(IInstanceFilter& filter) - { - instanceFilter_ = &filter; - } + ResourceFinder(ServerContext& context); void SetMaxResults(size_t value) { @@ -119,7 +93,8 @@ // Returns "true" iff. all the matching resources have been // returned. Will be "false" if the results were truncated by // "SetMaxResults()". - bool Apply(std::list<std::string>& result); + bool Apply(std::list<std::string>& result, + const IQuery& query); }; }