Хранилища Subversion OpenInventory

Редакция

Редакция 112 | Редакция 114 | К новейшей редакции | Содержимое файла | Сравнить с предыдущей | Последнее изменение | Открыть журнал | RSS

Редакция Автор № строки Строка
111 pingvin 1
#include "mainwindow.h"
2
#include "ui_mainwindow.h"
3
 
4
 
5
 
6
void MainWindow::getDatabaseData(){
7
int list_count;
8
 
9
if (rootItems.isEmpty()) return;
10
 
11
list_count = rootItems.count();
12
 
13
for (int i=0; i < list_count; i++){
14
 
15
    buildTree(rootItems.at(i));
16
 
17
}
18
 
19
}
20
 
21
void MainWindow::buildTree(QTreeWidgetItem * model_item){
112 pingvin 22
 
23
 
24
 
25
 
111 pingvin 26
QString model_name;
27
QString rootClassID;
28
QString rootClassInctance;
113 pingvin 29
QFont font;
111 pingvin 30
 
31
QTreeWidgetItem * item;
32
model_name = model_item->text(0);
33
if (model_item->checkState(0) == false) return;
113 pingvin 34
 
35
font.setWeight(20);
36
font.setItalic(true);
111 pingvin 37
item = new QTreeWidgetItem (ui->treeWidget_2);
113 pingvin 38
item->setFont(0, font);
111 pingvin 39
item->setText(0, model_name);
113 pingvin 40
 
41
 
111 pingvin 42
rootClassID = model_item->child(0)->text(1);
43
rootClassInctance = getClassInctance(rootClassID);
44
if (model_item->child(0)->checkState(0)) //         ( ), 
45
    {
113 pingvin 46
     /////   QTreeWidgetItem * item_tmp;
47
   /////     item_tmp = new QTreeWidgetItem(item);                  //  ,   ,   
48
   /////     item_tmp->setText(0, model_item->child(0)->text(0));    //   
111 pingvin 49
 
112 pingvin 50
        //showClassObjects(item_tmp, model_item->child(0));  //      
51
 
113 pingvin 52
        ///// showObjects(item_tmp, model_item->child(0), tr(""));
53
    showObjects(item, model_item->child(0), tr(""));
111 pingvin 54
    }
112 pingvin 55
 
56
 
57
/*****************************************************/
58
 
59
 
111 pingvin 60
}
61
 
62
 
63
//    -   
64
QString MainWindow::getClassInctance(QString class_id){
65
    QSqlQuery q;
66
    QString sql_str;
67
    QString result;
68
    QString classInctance;
69
    int field_inctance;
70
    bool ok;
71
    sql_str = tr("select * "
72
                 " from ListOfClasses where  ListOfClasses.ID = '"       // ,     
73
                 );
74
    sql_str.append(class_id);
75
     sql_str.append(tr("'"));
76
    q.prepare(sql_str);
77
 
78
    ok = q.exec();
79
    if (!ok) {
80
                            QMessageBox::critical( //     .
81
                                                                            this,                      //  .
82
                                                                            QObject::tr("Database Error"),   // .
83
                                                                            q.lastError().text());          //  .
84
                                                                            return result;
85
                     }
86
    field_inctance = q.record().indexOf(tr("TableWhithInstance"));
87
    while(q.next()){
88
 
89
                  classInctance = q.value(field_inctance).toString();
90
                  result.append(classInctance);
91
                  }
92
 
93
  return result;
94
 
95
}
96
 
97
void MainWindow::showClassObjects(QTreeWidgetItem * parent_item, QTreeWidgetItem * model_item){
98
    QString classID; //  
99
    QString inctance; //  , 
100
    QSqlQuery q;
101
    QString sql_str;
102
    QString str_tmp;
103
    bool ok;
104
    int field_ID;
105
    int i;
106
    classID = model_item->text(1);
107
    inctance = getClassInctance(classID);
108
 
109
    sql_str = tr("select * "
110
                 " from "       //      -   
111
                 );
112
    sql_str.append(inctance);
113
    q.prepare(sql_str);
114
 
115
    ok = q.exec();
116
    if (!ok) {
117
                            QMessageBox::critical( //     .
118
                                                                            this,                      //  .
119
                                                                            QObject::tr("Database Error"),   // .
120
                                                                            q.lastError().text());          //  .
121
                                                                            return;
122
                     }
123
 
124
    field_ID = q.record().indexOf(tr("ID"));
125
 
126
 
127
    while(q.next()){
128
                  if (q.record().count() > 1)
129
                  {
130
                    QString value_tmp;
131
                    QString ID_tmp;
132
                    QTreeWidgetItem * itm;
133
                    ID_tmp = q.value(field_ID).toString(); //   
134
                    value_tmp = q.value(1).toString(); //    (    )
135
                    itm = new QTreeWidgetItem(parent_item); //    ,  
136
                    itm->setText(0, value_tmp);
137
                    for (int i; i < model_item->childCount(); i++) // ,      
138
                    {
139
                        QTreeWidgetItem * model_item_tmp;           //  
140
                        model_item_tmp = model_item->child(i);      //    
141
                        MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
142
 
143
                    }
144
                  }
145
 
146
             }
147
 
148
 
149
    i++;
150
}
151
 
152
 
153
 
154
void MainWindow::showObjectChildrens(QString object_ID, QTreeWidgetItem * object_item, QTreeWidgetItem * model_item){ //   
155
 
156
    QString classID; //  
157
 
158
    QString inctance; //  , 
159
    QSqlQuery q;
160
    QString sql_str;
161
    QString str_tmp;
162
    bool ok;
163
    classID = model_item->text(1);
164
    inctance = getClassInctance(classID);
165
 
166
    sql_str = tr("select * "
167
                 " from '"       //      -   
168
                 );
169
    sql_str.append(inctance);
170
    sql_str.append(tr("' where "));
171
 
172
 
173
    q.prepare(sql_str);
174
 
175
    ok = q.exec();
176
    if (!ok) {
177
                            QMessageBox::critical( //     .
178
                                                                            this,                      //  .
179
                                                                            QObject::tr("Database Error"),   // .
180
                                                                            q.lastError().text());          //  .
181
                                                                            return;
182
                     }
183
}
184
 
185
 
112 pingvin 186
void MainWindow::showObjects(QTreeWidgetItem * parent_object_item, QTreeWidgetItem * model_item, QString filtr){
187
    QString classID; //  
188
    QString inctance; //  , 
189
    QString className; //  
190
    int field_ID;
191
    bool filtr_empty;
192
    bool ok;
193
    QSqlQuery q;
194
    QString sql_str;
195
    QString str_tmp;
113 pingvin 196
    QTreeWidgetItem * title_item;
197
    QFont font;
198
    font.setWeight(40);
199
    font.setBold(true);;
112 pingvin 200
    filtr_empty = filtr.isEmpty();
201
    classID = model_item->text(1);
202
    className = model_item->text(0);
203
    inctance = getClassInctance(classID);
113 pingvin 204
/*
205
    title_item = new  QTreeWidgetItem(parent_object_item);
206
    title_item->setFont(0, font);
207
    title_item->setText(0, className);
208
*/
112 pingvin 209
    sql_str = tr("select * "
210
                 " from "       //      -   
211
                 );
212
    sql_str.append(inctance);
213
    if (!filtr.isEmpty())   { //    
214
                                 sql_str.append(tr(" "));
215
                                 sql_str.append(filtr); //    
216
                            }
217
 
218
    q.prepare(sql_str);
219
 
220
    ok = q.exec();
221
    if (!ok) {
222
                            QMessageBox::critical( //     .
223
                                                                            this,                      //  .
224
                                                                            QObject::tr("Database Error"),   // .
225
                                                                            q.lastError().text());          //  .
226
                                                                            return;
227
                     }
228
 
229
    field_ID = q.record().indexOf(tr("ID"));
113 pingvin 230
    if (q.size() <= 0) return;
231
    title_item = new  QTreeWidgetItem(parent_object_item);
232
    title_item->setFont(0, font);
233
    title_item->setText(0, className);
112 pingvin 234
 
113 pingvin 235
 
112 pingvin 236
    while(q.next()){
237
                  if (q.record().count() > 1)
238
                  {
239
                    QString value_tmp;
240
                    QString ID_tmp;
241
                    QTreeWidgetItem * itm;
242
                    ID_tmp = q.value(field_ID).toString(); //   
243
                    value_tmp = q.value(1).toString(); //    (    )
113 pingvin 244
               //     itm = new QTreeWidgetItem(parent_object_item); //    ,  
245
                    itm = new QTreeWidgetItem(title_item); //    ,  
112 pingvin 246
                    itm->setText(0, value_tmp);
247
 
248
                    for (int i=0; i < model_item->childCount(); i++) // ,      
249
                    {
250
                        QTreeWidgetItem * model_item_tmp;           //  
251
                        QString pointer_name;
252
                        QString filtr_tmp;
253
                        bool pointer_isEmpty;
254
                        model_item_tmp = model_item->child(i);      //    
255
                        pointer_name = getPointerFieldName(classID, model_item->child(i)->text(1));
256
                        pointer_isEmpty = pointer_name.isEmpty();
257
                        filtr_tmp = tr("where ");
258
                        filtr_tmp.append(tr("`"));
259
                        filtr_tmp.append(pointer_name);
260
                        filtr_tmp.append(tr("` = '"));
261
                        filtr_tmp.append(ID_tmp);
262
                         filtr_tmp.append(tr("'"));
263
                        showObjects(itm,  model_item_tmp, filtr_tmp);
264
                        //MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
265
 
266
                    }
267
 
268
 
269
                }
270
 
271
              }
272
 
273
 
274
 
275
 
276
    for (int i; i < model_item->childCount(); i++) // ,      
277
        {
278
 
279
 
280
        }
281
 
111 pingvin 282
}
283
 
112 pingvin 284
QString MainWindow::getPointerFieldName(QString parent_class_id, QString chield_class_id){
285
 
286
    QSqlQuery q;
287
    QString sql_str;
288
    QString str_tmp;
289
    QString field;
290
    QString result;
291
    int field_name;
292
    bool ok;
293
    sql_str = tr("select * "
294
                 " from `DescriptionOfClasses` where `DescriptionOfClasses`.`FieldType` = 'pointer' and  `DescriptionOfClasses`.`DefaultValue` = "       //      -   
295
                 );
296
 
297
    sql_str.append(tr("'"));
298
    sql_str.append(parent_class_id);
299
    sql_str.append(tr("' "));
300
    sql_str.append(tr(" and  `DescriptionOfClasses`.`ClassIdentifer` = '"));
301
    sql_str.append(chield_class_id);
302
    sql_str.append(tr("'"));
303
    q.prepare(sql_str);
304
 
305
    ok = q.exec();
306
    if (!ok) {
307
                            QMessageBox::critical( //     .
308
                                                                            this,                      //  .
309
                                                                            QObject::tr("Database Error"),   // .
310
                                                                            q.lastError().text());          //  .
311
                                                                            return result;
312
                     }
313
field_name =  q.record().indexOf(tr("FieldName"));
314
while(q.next()){
315
        result = q.value(field_name).toString();
316
    }
317
return result;
318
}
319