File indexing completed on 2024-03-24 16:11:06

0001 /* This file is part of the KDE project
0002    Copyright (C) 2006 Jarosław Staniek <staniek@kde.org>
0003 
0004    This library is free software; you can redistribute it and/or
0005    modify it under the terms of the GNU Library General Public
0006    License as published by the Free Software Foundation; either
0007    version 2 of the License, or (at your option) any later version.
0008 
0009    This library is distributed in the hope that it will be useful,
0010    but WITHOUT ANY WARRANTY; without even the implied warranty of
0011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012    Library General Public License for more details.
0013 
0014    You should have received a copy of the GNU Library General Public License
0015    along with this library; see the file COPYING.LIB.  If not, write to
0016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017  * Boston, MA 02110-1301, USA.
0018 */
0019 
0020 #ifndef KDB_SIMPLECMDLINEAPP_H
0021 #define KDB_SIMPLECMDLINEAPP_H
0022 
0023 #include <KDbConnection>
0024 
0025 #include <KAboutData>
0026 
0027 class KCmdLineOptions;
0028 class KComponentData;
0029 
0030 //! @short A skeleton for creating a simple command line database application.
0031 /*! This class creates a KComponentData object and automatically handles the following
0032  command line options:
0033  - --driver \<id\> (Database driver ID) or -drv
0034  - --user \<name\> (Database user name) or -u
0035  - --password (Prompt for password) or -p
0036  - --host \<name\> (Server (host) name) or -h
0037  - --port \<number\> (Server's port number)
0038  - --local-socket \<filename\> (Server's local socket filename, if needed) or -s
0039 
0040  You can use this helper class to create test applications or small tools that open
0041  a KDb-compatible database using command line arguments, do some data processing
0042  and close the database.
0043 */
0044 class KDB_EXPORT KDbSimpleCommandLineApp : public KDbObject
0045 {
0046     Q_DECLARE_TR_FUNCTIONS(KDbSimpleCommandLineApp)
0047 public:
0048     KDbSimpleCommandLineApp(
0049         int argc, char** argv,
0050         const KCmdLineOptions &options, const char *programName,
0051         const char *version, const char *shortDescription = 0,
0052         KAboutData::LicenseKey licenseType = KAboutData::License_Unknown,
0053         const char *copyrightStatement = 0, const char *text = 0,
0054         const char *homePageAddress = 0, const char *bugsEmailAddress = "submit@bugs.kde.org");
0055 
0056     ~KDbSimpleCommandLineApp();
0057 
0058     //! @return program instance
0059     const KComponentData &componentData() const;
0060 
0061     /*! Opens database @a databaseName for connection data
0062      specified via the command line. @return true in success.
0063      In details: the database driver is loaded, the connection is opened
0064      and the database is used.
0065      Use KDbObject methods to get status of the operation on failure. */
0066     bool openDatabase(const QString& databaseName);
0067 
0068     /*! Closes database connection previously opened using openDatabase()
0069      @return true on success. This method is called on destruction.
0070      Use KDbObject methods to get status of the operation on failure. */
0071     bool closeDatabase();
0072 
0073     /*! @return connection data for this application. */
0074     KDbConnectionData* connectionData() const;
0075 
0076     /*! @return connection object for this application or 0 if there is no properly
0077      opened connection. */
0078     KDbConnection* connection() const;
0079 
0080 protected:
0081     class Private;
0082     Private * const d;
0083     Q_DISABLE_COPY(KDbSimpleCommandLineApp)
0084 };
0085 
0086 #endif