1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the tools applications of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21 ** included in the packaging of this file. Please review the following
22 ** information to ensure the GNU General Public License requirements will
23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24 **
25 ** $QT_END_LICENSE$
26 **
27 ****************************************************************************/
28 
29 #include "databaseinfo.h"
30 #include "driver.h"
31 #include "ui4.h"
32 #include "utils.h"
33 
34 QT_BEGIN_NAMESPACE
35 
36 DatabaseInfo::DatabaseInfo() = default;
37 
acceptUI(DomUI * node)38 void DatabaseInfo::acceptUI(DomUI *node)
39 {
40     m_connections.clear();
41     m_cursors.clear();
42     m_fields.clear();
43 
44     TreeWalker::acceptUI(node);
45 
46     m_connections.removeDuplicates();
47 }
48 
acceptWidget(DomWidget * node)49 void DatabaseInfo::acceptWidget(DomWidget *node)
50 {
51     QHash<QString, DomProperty*> properties = propertyMap(node->elementProperty());
52 
53     DomProperty *frameworkCode = properties.value(QLatin1String("frameworkCode"));
54     if (frameworkCode && toBool(frameworkCode->elementBool()) == false)
55         return;
56 
57     DomProperty *db = properties.value(QLatin1String("database"));
58     if (db && db->elementStringList()) {
59         QStringList info = db->elementStringList()->elementString();
60         if (info.isEmpty() || info.constFirst().isEmpty())
61             return;
62         const QString &connection = info.constFirst();
63         m_connections.append(connection);
64 
65         QString table = info.size() > 1 ? info.at(1) : QString();
66         if (table.isEmpty())
67             return;
68         m_cursors[connection].append(table);
69 
70         QString field = info.size() > 2 ? info.at(2) : QString();
71         if (field.isEmpty())
72             return;
73         m_fields[connection].append(field);
74     }
75 
76     TreeWalker::acceptWidget(node);
77 }
78 
79 QT_END_NAMESPACE
80