Хранилища Subversion OpenInventory

Редакция

Редакция 111 | Редакция 113 | К новейшей редакции | Содержимое файла | Сравнить с предыдущей | Последнее изменение | Открыть журнал | 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;
29
 
30
QTreeWidgetItem * item;
31
model_name = model_item->text(0);
32
if (model_item->checkState(0) == false) return;
33
item = new QTreeWidgetItem (ui->treeWidget_2);
34
item->setText(0, model_name);
35
rootClassID = model_item->child(0)->text(1);
36
rootClassInctance = getClassInctance(rootClassID);
37
if (model_item->child(0)->checkState(0)) //         ( ), 
38
    {
39
        QTreeWidgetItem * item_tmp;
40
        item_tmp = new QTreeWidgetItem(item);                  //  ,   ,   
41
        item_tmp->setText(0, model_item->child(0)->text(0));    //   
42
 
112 pingvin 43
        //showClassObjects(item_tmp, model_item->child(0));  //      
44
 
45
        showObjects(item_tmp, model_item->child(0), tr(""));
111 pingvin 46
    }
112 pingvin 47
 
48
 
49
/*****************************************************/
50
 
51
 
111 pingvin 52
}
53
 
54
 
55
//    -   
56
QString MainWindow::getClassInctance(QString class_id){
57
    QSqlQuery q;
58
    QString sql_str;
59
    QString result;
60
    QString classInctance;
61
    int field_inctance;
62
    bool ok;
63
    sql_str = tr("select * "
64
                 " from ListOfClasses where  ListOfClasses.ID = '"       // ,     
65
                 );
66
    sql_str.append(class_id);
67
     sql_str.append(tr("'"));
68
    q.prepare(sql_str);
69
 
70
    ok = q.exec();
71
    if (!ok) {
72
                            QMessageBox::critical( //     .
73
                                                                            this,                      //  .
74
                                                                            QObject::tr("Database Error"),   // .
75
                                                                            q.lastError().text());          //  .
76
                                                                            return result;
77
                     }
78
    field_inctance = q.record().indexOf(tr("TableWhithInstance"));
79
    while(q.next()){
80
 
81
                  classInctance = q.value(field_inctance).toString();
82
                  result.append(classInctance);
83
                  }
84
 
85
  return result;
86
 
87
}
88
 
89
void MainWindow::showClassObjects(QTreeWidgetItem * parent_item, QTreeWidgetItem * model_item){
90
    QString classID; //  
91
    QString inctance; //  , 
92
    QSqlQuery q;
93
    QString sql_str;
94
    QString str_tmp;
95
    bool ok;
96
    int field_ID;
97
    int i;
98
    classID = model_item->text(1);
99
    inctance = getClassInctance(classID);
100
 
101
    sql_str = tr("select * "
102
                 " from "       //      -   
103
                 );
104
    sql_str.append(inctance);
105
    q.prepare(sql_str);
106
 
107
    ok = q.exec();
108
    if (!ok) {
109
                            QMessageBox::critical( //     .
110
                                                                            this,                      //  .
111
                                                                            QObject::tr("Database Error"),   // .
112
                                                                            q.lastError().text());          //  .
113
                                                                            return;
114
                     }
115
 
116
    field_ID = q.record().indexOf(tr("ID"));
117
 
118
 
119
    while(q.next()){
120
                  if (q.record().count() > 1)
121
                  {
122
                    QString value_tmp;
123
                    QString ID_tmp;
124
                    QTreeWidgetItem * itm;
125
                    ID_tmp = q.value(field_ID).toString(); //   
126
                    value_tmp = q.value(1).toString(); //    (    )
127
                    itm = new QTreeWidgetItem(parent_item); //    ,  
128
                    itm->setText(0, value_tmp);
129
                    for (int i; i < model_item->childCount(); i++) // ,      
130
                    {
131
                        QTreeWidgetItem * model_item_tmp;           //  
132
                        model_item_tmp = model_item->child(i);      //    
133
                        MainWindow::showObjectChildrens(ID_tmp, itm, model_item_tmp);
134
 
135
                    }
136
                  }
137
 
138
             }
139
 
140
 
141
    i++;
142
}
143
 
144
 
145
 
146
void MainWindow::showObjectChildrens(QString object_ID, QTreeWidgetItem * object_item, QTreeWidgetItem * model_item){ //   
147
 
148
    QString classID; //  
149
 
150
    QString inctance; //  , 
151
    QSqlQuery q;
152
    QString sql_str;
153
    QString str_tmp;
154
    bool ok;
155
    classID = model_item->text(1);
156
    inctance = getClassInctance(classID);
157
 
158
    sql_str = tr("select * "
159
                 " from '"       //      -   
160
                 );
161
    sql_str.append(inctance);
162
    sql_str.append(tr("' where "));
163
 
164
 
165
    q.prepare(sql_str);
166
 
167
    ok = q.exec();
168
    if (!ok) {
169
                            QMessageBox::critical( //     .
170
                                                                            this,                      //  .
171
                                                                            QObject::tr("Database Error"),   // .
172
                                                                            q.lastError().text());          //  .
173
                                                                            return;
174
                     }
175
}
176
 
177
 
112 pingvin 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);
111 pingvin 192
 
112 pingvin 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
                     }
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
 
111 pingvin 260
}
261
 
112 pingvin 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;
296
}
297