Редакция 111 | Редакция 113 | К новейшей редакции | Весь файл | Не учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS
Редакция 111 | Редакция 112 | ||
---|---|---|---|
Строка 17... | Строка 17... | ||
17 | }
|
17 | }
|
18 | 18 | ||
19 | }
|
19 | }
|
20 | 20 | ||
21 | void MainWindow::buildTree(QTreeWidgetItem * model_item){ |
21 | void MainWindow::buildTree(QTreeWidgetItem * model_item){ |
- | 22 | ||
- | 23 | ||
- | 24 | ||
- | 25 | ||
22 | QString model_name;
|
26 | QString model_name;
|
23 | QString rootClassID;
|
27 | QString rootClassID;
|
24 | QString rootClassInctance;
|
28 | QString rootClassInctance;
|
25 | 29 | ||
26 | QTreeWidgetItem * item; |
30 | QTreeWidgetItem * item; |
Строка 34... | Строка 38... | ||
34 | {
|
38 | {
|
35 | QTreeWidgetItem * item_tmp; |
39 | QTreeWidgetItem * item_tmp; |
36 | item_tmp = new QTreeWidgetItem(item); // â äåðåâå, îòîáðàæàþùåì îáúåêòû êëàññîâ, ñîçäàåì íîâûé óçåë |
40 | item_tmp = new QTreeWidgetItem(item); // â äåðåâå, îòîáðàæàþùåì îáúåêòû êëàññîâ, ñîçäàåì íîâûé óçåë |
37 | item_tmp->setText(0, model_item->child(0)->text(0)); // ñ íàçâàíèåì êëàññà |
41 | item_tmp->setText(0, model_item->child(0)->text(0)); // ñ íàçâàíèåì êëàññà |
38 | 42 | ||
39 | showClassObjects(item_tmp, model_item->child(0)); // è âûâîäèì âñå îáúåêòû äàííîãî êëàññà |
43 | //showClassObjects(item_tmp, model_item->child(0)); // è âûâîäèì âñå îáúåêòû äàííîãî êëàññà
|
- | 44 | ||
- | 45 | showObjects(item_tmp, model_item->child(0), tr("")); |
|
40 | }
|
46 | }
|
- | 47 | ||
- | 48 | ||
- | 49 | /*****************************************************/
|
|
- | 50 | ||
- | 51 | ||
41 | }
|
52 | }
|
42 | 53 | ||
43 | 54 | ||
44 | // ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà
|
55 | // ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà
|
45 | QString MainWindow::getClassInctance(QString class_id){ |
56 | QString MainWindow::getClassInctance(QString class_id){ |
Строка 162... | Строка 173... | ||
162 | return; |
173 | return; |
163 | }
|
174 | }
|
164 | }
|
175 | }
|
165 | 176 | ||
166 | 177 | ||
167 | void MainWindow::showObjects(QTreeWidgetItem * parent_object_item, QTreeWidgetItem * model_item){ |
178 | void MainWindow::showObjects(QTreeWidgetItem * parent_object_item, QTreeWidgetItem * model_item, QString filtr){ |
- | 179 | QString classID; // èäåíòèôèêàòîð êëàññà |
|
- | 180 | QString inctance; // èìÿ òàáëèöû, õðàíèëèùà |
|
- | 181 | QString className; // èìÿ êëàññà |
|
- | 182 | int field_ID; |
|
- | 183 | bool filtr_empty; |
|
- | 184 | bool ok; |
|
- | 185 | QSqlQuery q;
|
|
- | 186 | QString sql_str;
|
|
- | 187 | QString str_tmp;
|
|
- | 188 | filtr_empty = filtr.isEmpty(); |
|
- | 189 | classID = model_item->text(1); |
|
- | 190 | className = model_item->text(0); |
|
- | 191 | inctance = getClassInctance(classID); |
|
- | 192 | ||
- | 193 | sql_str = tr("select * " |
|
- | 194 | " from " //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà |
|
- | 195 | ); |
|
- | 196 | sql_str.append(inctance); |
|
- | 197 | if (!filtr.isEmpty()) { // åñëè ôèëüòð íå ïóñòîé |
|
- | 198 | sql_str.append(tr(" ")); |
|
- | 199 | sql_str.append(filtr); // äîáàâëÿåì â çàïðîñ ôèëüòð |
|
- | 200 | }
|
|
- | 201 | ||
- | 202 | q.prepare(sql_str); |
|
- | 203 | ||
- | 204 | ok = q.exec(); |
|
- | 205 | if (!ok) { |
|
- | 206 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
|
- | 207 | this, // Ðîäèòåëüñêèé âèäæåò. |
|
- | 208 | QObject::tr("Database Error"), // Çàãîëîâîê. |
|
- | 209 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
|
- | 210 | return; |
|
- | 211 | }
|
|
168 | 212 | ||
- | 213 | field_ID = q.record().indexOf(tr("ID")); |
|
- | 214 | ||
- | 215 | while(q.next()){ |
|
- | 216 | if (q.record().count() > 1) |
|
- | 217 | {
|
|
- | 218 | QString value_tmp;
|
|
- | 219 | QString ID_tmp;
|
|
- | 220 | QTreeWidgetItem * itm; |
|
- | 221 | ID_tmp = q.value(field_ID).toString(); // îïðåäåëÿåì èäåíòèôèêàòîð îáúåêòà |
|
- | 222 | value_tmp = q.value(1).toString(); // îïðåäåëÿåì èìÿ îáúåêòà (äîëæíî õðàíèòüñÿ â ïåðâîì ïîëå) |
|
- | 223 | itm = new QTreeWidgetItem(parent_object_item); // äîáàâëÿåì â äåðåâî óçåë, ñîîòâåòñòâóþùèé îáúåêòó |
|
- | 224 | itm->setText(0, value_tmp); |
|
- | 225 | ||
- | 226 | for (int i=0; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû |
|
- | 227 | {
|
|
- | 228 | QTreeWidgetItem * model_item_tmp; // åñëè åñòü |
|
- | 229 | QString pointer_name;
|
|
- | 230 | QString filtr_tmp;
|
|
- | 231 | bool pointer_isEmpty; |
|
- | 232 | model_item_tmp = model_item->child(i); // îòîáðàæàåì îáúåêòû äî÷åðíèõ êëàññîâ |
|
- | 233 | pointer_name = getPointerFieldName(classID, model_item->child(i)->text(1)); |
|
- | 234 | pointer_isEmpty = pointer_name.isEmpty(); |
|
- | 235 | filtr_tmp = tr("where "); |
|
- | 236 | filtr_tmp.append(tr("`")); |
|
- | 237 | filtr_tmp.append(pointer_name); |
|
- | 238 | filtr_tmp.append(tr("` = '")); |
|
- | 239 | filtr_tmp.append(ID_tmp); |
|
- | 240 | filtr_tmp.append(tr("'")); |
|
- | 241 | showObjects(itm, model_item_tmp, filtr_tmp); |
|
- | 242 | //MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
|
|
- | 243 | ||
- | 244 | }
|
|
- | 245 | ||
- | 246 | ||
- | 247 | }
|
|
- | 248 | ||
- | 249 | }
|
|
- | 250 | ||
- | 251 | ||
- | 252 | ||
- | 253 | ||
- | 254 | for (int i; i < model_item->childCount(); i++) // ïðîâåðÿåì, åñòü ëè ó êëàññà äî÷åðíèå êëàññû |
|
- | 255 | {
|
|
- | 256 | ||
- | 257 | ||
- | 258 | }
|
|
- | 259 | ||
- | 260 | }
|
|
- | 261 | ||
- | 262 | QString MainWindow::getPointerFieldName(QString parent_class_id, QString chield_class_id){ |
|
- | 263 | ||
- | 264 | QSqlQuery q;
|
|
- | 265 | QString sql_str;
|
|
- | 266 | QString str_tmp;
|
|
- | 267 | QString field;
|
|
- | 268 | QString result;
|
|
- | 269 | int field_name; |
|
- | 270 | bool ok; |
|
- | 271 | sql_str = tr("select * " |
|
- | 272 | " from `DescriptionOfClasses` where `DescriptionOfClasses`.`FieldType` = 'pointer' and `DescriptionOfClasses`.`DefaultValue` = " //íàõîäèì âñå îáúåêòû êëàññà â òàáëèöå - õðàíèëèùå îáúåêòîâ êëàññà |
|
- | 273 | ); |
|
- | 274 | ||
- | 275 | sql_str.append(tr("'")); |
|
- | 276 | sql_str.append(parent_class_id); |
|
- | 277 | sql_str.append(tr("' ")); |
|
- | 278 | sql_str.append(tr(" and `DescriptionOfClasses`.`ClassIdentifer` = '")); |
|
- | 279 | sql_str.append(chield_class_id); |
|
- | 280 | sql_str.append(tr("'")); |
|
- | 281 | q.prepare(sql_str); |
|
- | 282 | ||
- | 283 | ok = q.exec(); |
|
- | 284 | if (!ok) { |
|
- | 285 | QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
|
- | 286 | this, // Ðîäèòåëüñêèé âèäæåò. |
|
- | 287 | QObject::tr("Database Error"), // Çàãîëîâîê. |
|
- | 288 | q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
|
- | 289 | return result; |
|
- | 290 | }
|
|
- | 291 | field_name = q.record().indexOf(tr("FieldName")); |
|
- | 292 | while(q.next()){ |
|
- | 293 | result = q.value(field_name).toString(); |
|
- | 294 | }
|
|
- | 295 | return result; |
|
169 | }
|
296 | }
|
170 | 297 |