Mercurial > hg > orthanc
comparison OrthancServer/Search/Compatibility/SetOfResources.cpp @ 3056:6c5d4281da4a db-changes
removal of SQLiteDatabaseWrapper::GetAllInternalIds
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 21 Dec 2018 13:48:04 +0100 |
parents | c7db469bbe8e |
children | ce272138f15e |
comparison
equal
deleted
inserted
replaced
3055:71ac4f28176f | 3056:6c5d4281da4a |
---|---|
37 #include "../../../Core/OrthancException.h" | 37 #include "../../../Core/OrthancException.h" |
38 | 38 |
39 | 39 |
40 namespace Orthanc | 40 namespace Orthanc |
41 { | 41 { |
42 void SetOfResources::Intersect(const std::list<int64_t>& resources) | 42 namespace Compatibility |
43 { | 43 { |
44 if (resources_.get() == NULL) | 44 void SetOfResources::Intersect(const std::list<int64_t>& resources) |
45 { | 45 { |
46 resources_.reset(new Resources); | 46 if (resources_.get() == NULL) |
47 { | |
48 resources_.reset(new Resources); | |
47 | 49 |
48 for (std::list<int64_t>::const_iterator | 50 for (std::list<int64_t>::const_iterator |
49 it = resources.begin(); it != resources.end(); ++it) | 51 it = resources.begin(); it != resources.end(); ++it) |
52 { | |
53 resources_->insert(*it); | |
54 } | |
55 } | |
56 else | |
50 { | 57 { |
51 resources_->insert(*it); | 58 std::auto_ptr<Resources> filtered(new Resources); |
59 | |
60 for (std::list<int64_t>::const_iterator | |
61 it = resources.begin(); it != resources.end(); ++it) | |
62 { | |
63 if (resources_->find(*it) != resources_->end()) | |
64 { | |
65 filtered->insert(*it); | |
66 } | |
67 } | |
68 | |
69 resources_ = filtered; | |
52 } | 70 } |
53 } | 71 } |
54 else | 72 |
73 | |
74 void SetOfResources::GoDown() | |
55 { | 75 { |
56 std::auto_ptr<Resources> filtered(new Resources); | 76 if (level_ == ResourceType_Instance) |
77 { | |
78 throw OrthancException(ErrorCode_BadSequenceOfCalls); | |
79 } | |
57 | 80 |
58 for (std::list<int64_t>::const_iterator | 81 if (resources_.get() != NULL) |
59 it = resources.begin(); it != resources.end(); ++it) | |
60 { | 82 { |
61 if (resources_->find(*it) != resources_->end()) | 83 std::auto_ptr<Resources> children(new Resources); |
84 | |
85 for (Resources::const_iterator it = resources_->begin(); | |
86 it != resources_->end(); ++it) | |
62 { | 87 { |
63 filtered->insert(*it); | 88 std::list<int64_t> tmp; |
89 database_.GetChildrenInternalId(tmp, *it); | |
90 | |
91 for (std::list<int64_t>::const_iterator | |
92 child = tmp.begin(); child != tmp.end(); ++child) | |
93 { | |
94 children->insert(*child); | |
95 } | |
96 } | |
97 | |
98 resources_ = children; | |
99 } | |
100 | |
101 switch (level_) | |
102 { | |
103 case ResourceType_Patient: | |
104 level_ = ResourceType_Study; | |
105 break; | |
106 | |
107 case ResourceType_Study: | |
108 level_ = ResourceType_Series; | |
109 break; | |
110 | |
111 case ResourceType_Series: | |
112 level_ = ResourceType_Instance; | |
113 break; | |
114 | |
115 default: | |
116 throw OrthancException(ErrorCode_InternalError); | |
117 } | |
118 } | |
119 | |
120 | |
121 void SetOfResources::Flatten(std::list<std::string>& result) | |
122 { | |
123 result.clear(); | |
124 | |
125 if (resources_.get() == NULL) | |
126 { | |
127 // All the resources of this level are part of the filter | |
128 database_.GetAllPublicIds(result, level_); | |
129 } | |
130 else | |
131 { | |
132 for (Resources::const_iterator it = resources_->begin(); | |
133 it != resources_->end(); ++it) | |
134 { | |
135 result.push_back(database_.GetPublicId(*it)); | |
64 } | 136 } |
65 } | 137 } |
66 | |
67 resources_ = filtered; | |
68 } | 138 } |
69 } | |
70 | 139 |
71 | 140 |
72 void SetOfResources::GoDown() | 141 void SetOfResources::Flatten(std::list<int64_t>& result) |
73 { | |
74 if (level_ == ResourceType_Instance) | |
75 { | 142 { |
76 throw OrthancException(ErrorCode_BadSequenceOfCalls); | 143 result.clear(); |
77 } | 144 |
78 | 145 if (resources_.get() == NULL) |
79 if (resources_.get() != NULL) | |
80 { | |
81 std::auto_ptr<Resources> children(new Resources); | |
82 | |
83 for (Resources::const_iterator it = resources_->begin(); | |
84 it != resources_->end(); ++it) | |
85 { | 146 { |
86 std::list<int64_t> tmp; | 147 // All the resources of this level are part of the filter |
87 database_.GetChildrenInternalId(tmp, *it); | 148 database_.GetAllInternalIds(result, level_); |
88 | 149 } |
89 for (std::list<int64_t>::const_iterator | 150 else |
90 child = tmp.begin(); child != tmp.end(); ++child) | 151 { |
152 for (Resources::const_iterator it = resources_->begin(); | |
153 it != resources_->end(); ++it) | |
91 { | 154 { |
92 children->insert(*child); | 155 result.push_back(*it); |
93 } | 156 } |
94 } | |
95 | |
96 resources_ = children; | |
97 } | |
98 | |
99 switch (level_) | |
100 { | |
101 case ResourceType_Patient: | |
102 level_ = ResourceType_Study; | |
103 break; | |
104 | |
105 case ResourceType_Study: | |
106 level_ = ResourceType_Series; | |
107 break; | |
108 | |
109 case ResourceType_Series: | |
110 level_ = ResourceType_Instance; | |
111 break; | |
112 | |
113 default: | |
114 throw OrthancException(ErrorCode_InternalError); | |
115 } | |
116 } | |
117 | |
118 | |
119 void SetOfResources::Flatten(std::list<std::string>& result) | |
120 { | |
121 result.clear(); | |
122 | |
123 if (resources_.get() == NULL) | |
124 { | |
125 // All the resources of this level are part of the filter | |
126 database_.GetAllPublicIds(result, level_); | |
127 } | |
128 else | |
129 { | |
130 for (Resources::const_iterator it = resources_->begin(); | |
131 it != resources_->end(); ++it) | |
132 { | |
133 result.push_back(database_.GetPublicId(*it)); | |
134 } | |
135 } | |
136 } | |
137 | |
138 | |
139 void SetOfResources::Flatten(std::list<int64_t>& result) | |
140 { | |
141 result.clear(); | |
142 | |
143 if (resources_.get() == NULL) | |
144 { | |
145 // All the resources of this level are part of the filter | |
146 database_.GetAllInternalIds(result, level_); | |
147 } | |
148 else | |
149 { | |
150 for (Resources::const_iterator it = resources_->begin(); | |
151 it != resources_->end(); ++it) | |
152 { | |
153 result.push_back(*it); | |
154 } | 157 } |
155 } | 158 } |
156 } | 159 } |
157 } | 160 } |