Changeset View
Changeset View
Standalone View
Standalone View
src/KDbOrderByColumn.cpp
Show First 20 Lines • Show All 80 Lines • ▼ Show 20 Line(s) | |||||
81 | { | 81 | { | ||
82 | } | 82 | } | ||
83 | 83 | | |||
84 | KDbOrderByColumn::~KDbOrderByColumn() | 84 | KDbOrderByColumn::~KDbOrderByColumn() | ||
85 | { | 85 | { | ||
86 | delete d; | 86 | delete d; | ||
87 | } | 87 | } | ||
88 | 88 | | |||
89 | KDbOrderByColumn* KDbOrderByColumn::copy(KDbQuerySchema* fromQuery, KDbQuerySchema* toQuery) const | 89 | KDbOrderByColumn *KDbOrderByColumn::copy(KDbConnection *conn, KDbQuerySchema *fromQuery, | ||
90 | KDbQuerySchema *toQuery) const | ||||
90 | { | 91 | { | ||
91 | if (d->field) { | 92 | if (d->field) { | ||
92 | return new KDbOrderByColumn(d->field, d->order); | 93 | return new KDbOrderByColumn(d->field, d->order); | ||
93 | } | 94 | } | ||
94 | if (d->column) { | 95 | if (d->column) { | ||
95 | KDbQueryColumnInfo* columnInfo; | 96 | KDbQueryColumnInfo* columnInfo; | ||
96 | if (fromQuery && toQuery) { | 97 | if (fromQuery && toQuery) { | ||
97 | int columnIndex = fromQuery->columnsOrder().value(d->column); | 98 | int columnIndex = fromQuery->columnsOrder(conn).value(d->column); | ||
98 | if (columnIndex < 0) { | 99 | if (columnIndex < 0) { | ||
99 | kdbWarning() << "Index not found for column" << *d->column; | 100 | kdbWarning() << "Index not found for column" << *d->column; | ||
100 | return nullptr; | 101 | return nullptr; | ||
101 | } | 102 | } | ||
102 | columnInfo = toQuery->expandedOrInternalField(columnIndex); | 103 | columnInfo = toQuery->expandedOrInternalField(conn, columnIndex); | ||
103 | if (!columnInfo) { | 104 | if (!columnInfo) { | ||
104 | kdbWarning() << "Column info not found at index" << columnIndex << "in toQuery"; | 105 | kdbWarning() << "Column info not found at index" << columnIndex << "in toQuery"; | ||
105 | return nullptr; | 106 | return nullptr; | ||
106 | } | 107 | } | ||
107 | } | 108 | } | ||
108 | else { | 109 | else { | ||
109 | columnInfo = d->column; | 110 | columnInfo = d->column; | ||
110 | } | 111 | } | ||
▲ Show 20 Lines • Show All 108 Lines • ▼ Show 20 Line(s) | 214 | public: | |||
219 | QList<KDbOrderByColumn*> data; | 220 | QList<KDbOrderByColumn*> data; | ||
220 | }; | 221 | }; | ||
221 | 222 | | |||
222 | KDbOrderByColumnList::KDbOrderByColumnList() | 223 | KDbOrderByColumnList::KDbOrderByColumnList() | ||
223 | : d(new Private) | 224 | : d(new Private) | ||
224 | { | 225 | { | ||
225 | } | 226 | } | ||
226 | 227 | | |||
227 | KDbOrderByColumnList::KDbOrderByColumnList(const KDbOrderByColumnList& other, | 228 | KDbOrderByColumnList::KDbOrderByColumnList(const KDbOrderByColumnList& other, KDbConnection *conn, | ||
228 | KDbQuerySchema* fromQuery, KDbQuerySchema* toQuery) | 229 | KDbQuerySchema* fromQuery, KDbQuerySchema* toQuery) | ||
229 | : KDbOrderByColumnList() | 230 | : KDbOrderByColumnList() | ||
230 | { | 231 | { | ||
231 | for (QList<KDbOrderByColumn *>::ConstIterator it(other.constBegin()); it != other.constEnd(); | 232 | for (QList<KDbOrderByColumn *>::ConstIterator it(other.constBegin()); it != other.constEnd(); | ||
232 | ++it) | 233 | ++it) | ||
233 | { | 234 | { | ||
234 | KDbOrderByColumn* order = (*it)->copy(fromQuery, toQuery); | 235 | KDbOrderByColumn* order = (*it)->copy(conn, fromQuery, toQuery); | ||
235 | if (order) { | 236 | if (order) { | ||
236 | d->data.append(order); | 237 | d->data.append(order); | ||
237 | } | 238 | } | ||
238 | } | 239 | } | ||
239 | } | 240 | } | ||
240 | 241 | | |||
241 | KDbOrderByColumnList::~KDbOrderByColumnList() | 242 | KDbOrderByColumnList::~KDbOrderByColumnList() | ||
242 | { | 243 | { | ||
Show All 10 Lines | 253 | { | |||
253 | return d->data.value(index); | 254 | return d->data.value(index); | ||
254 | } | 255 | } | ||
255 | 256 | | |||
256 | KDbOrderByColumn* KDbOrderByColumnList::value(int index) | 257 | KDbOrderByColumn* KDbOrderByColumnList::value(int index) | ||
257 | { | 258 | { | ||
258 | return d->data.value(index); | 259 | return d->data.value(index); | ||
259 | } | 260 | } | ||
260 | 261 | | |||
261 | bool KDbOrderByColumnList::appendFields(KDbQuerySchema* querySchema, | 262 | bool KDbOrderByColumnList::appendFields(KDbConnection *conn, KDbQuerySchema* querySchema, | ||
262 | const QString& field1, KDbOrderByColumn::SortOrder order1, | 263 | const QString& field1, KDbOrderByColumn::SortOrder order1, | ||
263 | const QString& field2, KDbOrderByColumn::SortOrder order2, | 264 | const QString& field2, KDbOrderByColumn::SortOrder order2, | ||
264 | const QString& field3, KDbOrderByColumn::SortOrder order3, | 265 | const QString& field3, KDbOrderByColumn::SortOrder order3, | ||
265 | const QString& field4, KDbOrderByColumn::SortOrder order4, | 266 | const QString& field4, KDbOrderByColumn::SortOrder order4, | ||
266 | const QString& field5, KDbOrderByColumn::SortOrder order5) | 267 | const QString& field5, KDbOrderByColumn::SortOrder order5) | ||
267 | { | 268 | { | ||
268 | if (!querySchema) { | 269 | if (!querySchema) { | ||
269 | return false; | 270 | return false; | ||
270 | } | 271 | } | ||
271 | int numAdded = 0; | 272 | int numAdded = 0; | ||
272 | #define ADD_COL(fieldName, order) \ | 273 | #define ADD_COL(fieldName, order) \ | ||
273 | if (ok && !fieldName.isEmpty()) { \ | 274 | if (ok && !fieldName.isEmpty()) { \ | ||
274 | if (!appendField( querySchema, fieldName, order )) \ | 275 | if (!appendField(conn, querySchema, fieldName, order)) \ | ||
275 | ok = false; \ | 276 | ok = false; \ | ||
276 | else \ | 277 | else \ | ||
277 | numAdded++; \ | 278 | numAdded++; \ | ||
278 | } | 279 | } | ||
279 | bool ok = true; | 280 | bool ok = true; | ||
280 | ADD_COL(field1, order1) | 281 | ADD_COL(field1, order1) | ||
281 | ADD_COL(field2, order2) | 282 | ADD_COL(field2, order2) | ||
282 | ADD_COL(field3, order3) | 283 | ADD_COL(field3, order3) | ||
Show All 12 Lines | |||||
295 | void KDbOrderByColumnList::appendColumn(KDbQueryColumnInfo* columnInfo, | 296 | void KDbOrderByColumnList::appendColumn(KDbQueryColumnInfo* columnInfo, | ||
296 | KDbOrderByColumn::SortOrder order) | 297 | KDbOrderByColumn::SortOrder order) | ||
297 | { | 298 | { | ||
298 | if (columnInfo) { | 299 | if (columnInfo) { | ||
299 | d->data.append(new KDbOrderByColumn(columnInfo, order)); | 300 | d->data.append(new KDbOrderByColumn(columnInfo, order)); | ||
300 | } | 301 | } | ||
301 | } | 302 | } | ||
302 | 303 | | |||
303 | bool KDbOrderByColumnList::appendColumn(KDbQuerySchema* querySchema, | 304 | bool KDbOrderByColumnList::appendColumn(KDbConnection *conn, KDbQuerySchema* querySchema, | ||
304 | KDbOrderByColumn::SortOrder order, int pos) | 305 | KDbOrderByColumn::SortOrder order, int pos) | ||
305 | { | 306 | { | ||
306 | if (!querySchema) { | 307 | if (!querySchema) { | ||
307 | return false; | 308 | return false; | ||
308 | } | 309 | } | ||
309 | KDbQueryColumnInfo::Vector fieldsExpanded(querySchema->fieldsExpanded()); | 310 | const KDbQueryColumnInfo::Vector fieldsExpanded(querySchema->fieldsExpanded(conn)); | ||
310 | if (pos < 0 || pos >= fieldsExpanded.size()) { | 311 | if (pos < 0 || pos >= fieldsExpanded.size()) { | ||
311 | return false; | 312 | return false; | ||
312 | } | 313 | } | ||
313 | KDbQueryColumnInfo* ci = fieldsExpanded[pos]; | 314 | KDbQueryColumnInfo* ci = fieldsExpanded[pos]; | ||
314 | d->data.append(new KDbOrderByColumn(ci, order, pos)); | 315 | d->data.append(new KDbOrderByColumn(ci, order, pos)); | ||
315 | return true; | 316 | return true; | ||
316 | } | 317 | } | ||
317 | 318 | | |||
318 | void KDbOrderByColumnList::appendField(KDbField* field, KDbOrderByColumn::SortOrder order) | 319 | void KDbOrderByColumnList::appendField(KDbField* field, KDbOrderByColumn::SortOrder order) | ||
319 | { | 320 | { | ||
320 | if (field) { | 321 | if (field) { | ||
321 | d->data.append(new KDbOrderByColumn(field, order)); | 322 | d->data.append(new KDbOrderByColumn(field, order)); | ||
322 | } | 323 | } | ||
323 | } | 324 | } | ||
324 | 325 | | |||
325 | bool KDbOrderByColumnList::appendField(KDbQuerySchema* querySchema, | 326 | bool KDbOrderByColumnList::appendField(KDbConnection *conn, KDbQuerySchema* querySchema, | ||
326 | const QString& fieldName, KDbOrderByColumn::SortOrder order) | 327 | const QString& fieldName, KDbOrderByColumn::SortOrder order) | ||
327 | { | 328 | { | ||
328 | if (!querySchema) { | 329 | if (!querySchema) { | ||
329 | return false; | 330 | return false; | ||
330 | } | 331 | } | ||
331 | KDbQueryColumnInfo *columnInfo = querySchema->columnInfo(fieldName); | 332 | KDbQueryColumnInfo *columnInfo = querySchema->columnInfo(conn, fieldName); | ||
332 | if (columnInfo) { | 333 | if (columnInfo) { | ||
333 | d->data.append(new KDbOrderByColumn(columnInfo, order)); | 334 | d->data.append(new KDbOrderByColumn(columnInfo, order)); | ||
334 | return true; | 335 | return true; | ||
335 | } | 336 | } | ||
336 | KDbField *field = querySchema->findTableField(fieldName); | 337 | KDbField *field = querySchema->findTableField(fieldName); | ||
337 | if (field) { | 338 | if (field) { | ||
338 | d->data.append(new KDbOrderByColumn(field, order)); | 339 | d->data.append(new KDbOrderByColumn(field, order)); | ||
339 | return true; | 340 | return true; | ||
▲ Show 20 Lines • Show All 69 Lines • Show Last 20 Lines |