Subversion Repositories OpenInventory

Rev

Rev 111 | Rev 113 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 111 Rev 112
Line 17... Line 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;
Line 34... Line 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){
Line 162... Line 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