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 }