KDb

KDbDriverManager.h
1 /* This file is part of the KDE project
2  Copyright (C) 2003 Daniel Molkentin <[email protected]>
3  Copyright (C) 2003 Joseph Wenninger <[email protected]>
4  Copyright (C) 2003-2015 JarosÅ‚aw Staniek <[email protected]>
5  Copyright (C) 2012 Dimitrios T. Tanis <[email protected]>
6 
7  This program is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public License
18  along with this program; see the file COPYING. If not, write to
19  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20  * Boston, MA 02110-1301, USA.
21 */
22 
23 #ifndef KDB_DRIVER_MANAGER_H
24 #define KDB_DRIVER_MANAGER_H
25 
26 #include <QString>
27 #include <QCoreApplication>
28 
29 #include "kdb_export.h"
30 
31 class KDbResult;
32 class KDbResultable;
33 class KDbDriver;
34 class KDbDriverMetaData;
35 
36 //! A driver manager for finding and loading driver plugins.
37 class KDB_EXPORT KDbDriverManager
38 {
39  Q_DECLARE_TR_FUNCTIONS(KDbDriverManager)
40 public:
42  virtual ~KDbDriverManager();
43 
44  //! @return result of the recent operation.
45  KDbResult result() const;
46 
47  //! @return KDbResultable object for the recent operation.
48  //! It adds serverResultName() in addition to the result().
49  KDbResultable* resultable() const;
50 
51  /*! @return information (metadata) about driver with ID @a id.
52  The lookup is case insensitive.
53  The metadata object is owned by KDb internals and is not deleted after
54  this KDbDriverManager object is deleted.
55  @a nullptr is returned if the metadata has not been found.
56  On error status can be obtained using result().
57 
58  @see driver(const QString& id) for information about duplicated drivers. */
59  const KDbDriverMetaData* driverMetaData(const QString &id);
60 
61  /*! Tries to load db driver with ID @a id.
62  The lookup is case insensitive.
63  @return driver object or @a nullptr on error.
64  On error status can be obtained using result().
65  The driver object is owned by KDb internals and is not deleted after
66  this KDbDriverManager object is deleted.
67 
68  @note If more than one driver with the same ID found on the search path, first
69  located driver is selected. All other drivers for this ID are skip with a warning
70  "Driver with ID '...' already found at (path) -- skipping another at (path).
71  The warning can be suppressed by setting a KDB_NO_DUPLICATED_DRIVER_WARNINGS
72  environment variable. */
73  KDbDriver* driver(const QString& id);
74 
75  /*! returns list of available drivers IDs.
76  That drivers can be loaded by first use of driver() method. */
77  QStringList driverIds();
78 
79  /**
80  * Returns list of driver IDs for @a mimeType MIME type
81  *
82  * IDs of drivers for file-based databases are only returned.
83  * Empty list is returned if no driver has been found for the type or if the type is invalid.
84  * Driver supports the supplied MIME type if it is specified as supported in the driver's
85  * metadata. If a MIME type alias is supplied, proper type for this alias is resolved and driver
86  * IDs for that type are returned. Similarly, if proper MIME type is supplied, IDs are returned
87  * for drivers that support any alias for this type.
88  *
89  * The lookup is case insensitive.
90  */
91  QStringList driverIdsForMimeType(const QString& mimeType);
92 
93  /*! @return HTML-formatted message about possible problems encountered.
94  It can be displayed in a 'details' section of a GUI message if an error encountered.
95  Currently the message contains a list of incompatible db drivers.
96  Can be used in code that finds driver depending on file format. */
97 //! @todo make it just QStringList
98  QString possibleProblemsMessage() const;
99 
100  /*! @return true if there is at least one server-based database driver installed. */
101  bool hasDatabaseServerDrivers();
102 
103 private:
104  Q_DISABLE_COPY(KDbDriverManager)
105 };
106 
107 #endif
Provides information about a single driver plugin.
Database driver's abstraction.
Definition: KDbDriver.h:49
Interface for classes providing a result.
A driver manager for finding and loading driver plugins.
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Sat Jun 25 2022 06:21:33 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.