summaryrefslogtreecommitdiff
path: root/libopie2/opiedb/osqlresult.h
Side-by-side diff
Diffstat (limited to 'libopie2/opiedb/osqlresult.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiedb/osqlresult.h112
1 files changed, 112 insertions, 0 deletions
diff --git a/libopie2/opiedb/osqlresult.h b/libopie2/opiedb/osqlresult.h
new file mode 100644
index 0000000..9c9efa2
--- a/dev/null
+++ b/libopie2/opiedb/osqlresult.h
@@ -0,0 +1,112 @@
+#ifndef OSQL_RESULT_H
+#define OSQL_RESULT_H
+
+#include <qdatetime.h>
+#include <qmap.h>
+#include <qvaluelist.h>
+
+
+#include "osqlerror.h"
+/**
+ * ResultItem represents one row of the resulting answer
+ */
+class OSQLResultItem {
+public:
+ typedef QValueList<OSQLResultItem> ValueList;
+ /**
+ * TableString is used to establish the relations
+ * between the column name and the real item
+ */
+ typedef QMap<QString, QString> TableString;
+
+ /**
+ * TableInt is used to establish a relation between a
+ * position of a column and the row value
+ */
+ typedef QMap<int, QString> TableInt;
+
+ /**
+ * Default c'tor. It has a TableString and a TableInt
+ */
+ OSQLResultItem(const TableString& = TableString(),
+ const TableInt& = TableInt() );
+ OSQLResultItem( const OSQLResultItem& );
+ ~OSQLResultItem();
+ OSQLResultItem &operator=( const OSQLResultItem& );
+ /**
+ * returns the TableString
+ */
+ TableString tableString()const;
+
+ /**
+ * returns the TableInt
+ */
+ TableInt tableInt() const;
+
+ /**
+ * retrieves the Data from columnName
+ *
+ */
+ QString data( const QString& columnName, bool *ok = 0);
+
+ /**
+ * QString for column number
+ */
+ QString data(int columnNumber, bool *ok = 0);
+
+ /**
+ * Date conversion from columnName
+ */
+ QDate dataToDate( const QString& columnName, bool *ok = 0 );
+
+ /**
+ * Date conversion from column-number
+ */
+ QDate dataToDate( int columnNumber, bool *ok = 0 );
+
+ QDateTime dataToDateTime( const QString& columName, bool *ok = 0 );
+ QDateTime dataToDateTime( int columnNumber, bool *ok = 0 );
+private:
+ TableString m_string;
+ TableInt m_int;
+};
+
+/**
+ * the OSQLResult
+ * either a SQL statement failed or succeeded
+ */
+class OSQLResult {
+public:
+ /** The State of a Result */
+ enum State{ Success = 0, Failure,Undefined };
+
+ /**
+ * default c'tor
+ * @param state The State of the Result
+ * @param r ResultItems
+ * @prarm errors the Errors a OSQLResult created
+ */
+ OSQLResult( enum State state = Undefined,
+ const OSQLResultItem::ValueList& r= OSQLResultItem::ValueList(),
+ const OSQLError::ValueList& errors = OSQLError::ValueList() );
+ ~OSQLResult();
+ State state()const;
+ OSQLError::ValueList errors()const;
+ OSQLResultItem::ValueList results()const;
+
+ void setState( enum State state );
+ void setErrors( const OSQLError::ValueList& error );
+ void setResults( const OSQLResultItem::ValueList& result );
+
+ OSQLResultItem first();
+ OSQLResultItem next();
+ bool atEnd();
+ OSQLResultItem::ValueList::ConstIterator iterator()const;
+private:
+ enum State m_state;
+ OSQLResultItem::ValueList m_list;
+ OSQLError::ValueList m_error;
+ OSQLResultItem::ValueList::Iterator it;
+};
+
+#endif