$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r78488 - in sandbox/icl/libs/xplore/br1/sqlbrowser: . Dag data/concept data/qsql
From: afojgo_at_[hidden]
Date: 2012-05-16 08:07:01
Author: jofaber
Date: 2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
New Revision: 78488
URL: http://svn.boost.org/trac/boost/changeset/78488
Log:
Layer continued for data access.
Text files modified: 
   sandbox/icl/libs/xplore/br1/sqlbrowser/Dag/DbType.h                  |     6 ++++                                    
   sandbox/icl/libs/xplore/br1/sqlbrowser/browser.cpp                   |     1                                         
   sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/GetCreator.h     |     6 ----                                    
   sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/Selector.h       |    25 ++++++++++++-----                       
   sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/SelectorTraits.h |     5 ++-                                     
   sandbox/icl/libs/xplore/br1/sqlbrowser/data/qsql/QSqlCreator.h       |    54 +++++++++++---------------------------- 
   sandbox/icl/libs/xplore/br1/sqlbrowser/data/qsql/QSqlSelector.h      |    32 ++++++++++++++++++-----                 
   sandbox/icl/libs/xplore/br1/sqlbrowser/sqlbrowser4.pro               |     8 +++--                                   
   8 files changed, 73 insertions(+), 64 deletions(-)
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/Dag/DbType.h
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/Dag/DbType.h	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/Dag/DbType.h	2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
@@ -112,6 +112,12 @@
 class EdgeType
 {
 public:
+    EdgeType(tKey uKey, const tString& aName)
+        : m_uKey(uKey), m_aName(aName) {}
+
+    QString toString()const
+    { return QString("Edge: Key=%1, Name=%2").arg(m_uKey).arg(m_aName); }
+
 private:
     tKey                 m_uKey;
     tString              m_aName;
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/browser.cpp
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/browser.cpp	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/browser.cpp	2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
@@ -190,6 +190,7 @@
     data::QSqlSelector selector;
     dag::db::TypeGraph tygra;
 
+    selector.setDatabase(connectionWidget->currentDatabase());
     success = makeTypeGraph(selector, tygra);
 
     if(success)
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/GetCreator.h
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/GetCreator.h	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/GetCreator.h	2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
@@ -13,12 +13,6 @@
 template<class Object, class Accessor>
 struct GetCreator;
 
-template<class Object>
-struct GetCreator<QSqlSelector>
-{
-    typedef QSqlCreator<Object, QSqlSelector> type;
-};
-
 
 } // namespace data
 
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/Selector.h
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/Selector.h	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/Selector.h	2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
@@ -23,19 +23,28 @@
 typename boost::enable_if< IsQuerySelector<Accessor>, bool>::type
 makeTypeGraph(Accessor& accessor, dag::db::TypeGraph& typeGraph)
 {
-    typedef QSqlCreator<dag::db::EdgeType,Accessor> tCreator;
+    typedef typename GetCreator<dag::db::EdgeType,Accessor>::type tCreator;
     typedef typename Accessor::const_iterator const_iterator;
-    //DataSelectorConcept<Accessor>::
-    //    select(accessor, CreatorConcept<Object,Accessor>::createQuery());
+    typedef typename CreatorTraits<dag::db::EdgeType,tCreator> tCreatorInstance;
 
-    //JODO transform(accessor, typeGraph, CreatorConcept<TypeEdge,AccessorT>);
-    //for(iterator it = accessor.begin(); it != accessor.end(); ++it)
+    SelectorTraits<Accessor>::
+        select(accessor,
+               CreatorTraits<dag::db::EdgeType,tCreator>::createQuery());
+
+    QString check;
+    for(const_iterator it = accessor.begin(); it != accessor.end(); ++it)
+    {
+        //check += it->field(4).value().toString();
+        dag::db::EdgeType aEdge
+                = CreatorTraits<dag::db::EdgeType,tCreator>::create(it);
+        check += aEdge.toString();
+        check += "\n";
+    }
 
-    QString ObjSql = CreatorTraits<dag::db::EdgeType,tCreator>::createQuery();
 
     QMessageBox msgBox;
-    QString msg = "Insertion. ";
-    msg += ObjSql;
+    QString msg = "Edges:\n";
+    msg += check;
     msgBox.setText(msg);
     msgBox.exec();
 
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/SelectorTraits.h
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/SelectorTraits.h	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/data/concept/SelectorTraits.h	2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
@@ -16,15 +16,16 @@
 //==============================================================================
 //= Concept: DataSelector Traits
 //==============================================================================
-template<class Accessor, class Query>
+template<class Accessor>
 struct SelectorTraits
 {
     typedef typename Accessor::size_type size_type;
+    typedef typename Accessor::tQuery    tQuery;
     typedef typename Accessor::iterator  const_iterator;
 
     static const_iterator begin(const Accessor& accessor);
     static const_iterator end(const Accessor& accessor);
-    static size_type select(const Query&);
+    static size_type select(const tQuery&);
 };
 
 } // namespace data
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/data/qsql/QSqlCreator.h
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/data/qsql/QSqlCreator.h	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/data/qsql/QSqlCreator.h	2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
@@ -5,8 +5,12 @@
 
 #pragma once
 
+#include <QSqlRecord.h>
+#include <QSqlField.h>
+
 #include "Dag/DbType.h"
 #include "data/concept/CreatorTraits.h"
+#include "data/concept/GetCreator.h"
 #include "data/qsql/QSqlSelector.h"
 
 namespace data
@@ -17,32 +21,13 @@
 
 template<class Object, class Accessor>
 class QSqlCreator;
-/*
-{
-public:
-    typedef QSqlCreator       type;
-    typedef Object            tObject;
-    typedef Accessor          tAccessor;
-
-    typedef typename tAccessor::tResultSet     tResultSet;
-    typedef typename tAccessor::const_iterator const_iterator;
-
-    static tString createQuery()
-    {
-        return "...";
-    }
-
-    static tObject create(const_iterator it)
-    {
-        return tObject();
-    }
-};
-*/
 
 template<>
 class QSqlCreator<dag::db::EdgeType, QSqlSelector>
 {
 public:
+    enum { eKey=0, eRefSourceType, eRefRelationType, eRefTargetType, eName };
+
     typedef QSqlCreator       type;
     typedef dag::db::EdgeType tObject;
     typedef QSqlSelector      tAccessor;
@@ -52,18 +37,25 @@
 
     static tString createQuery()
     {
-        return "SELECT ...";
+        return "SELECT key, refSourceType, refRelationType, refTargetType, name FROM EdgeType ";
     }
 
     static tObject create(const_iterator it)
     {
-        return dag::db::EdgeType();
+        return dag::db::EdgeType(it->field(eKey).value().toInt(),
+                                 it->field(eName).value().toString());
     }
 };
 
 
+template<class Object>
+struct GetCreator<Object, QSqlSelector>
+{
+    typedef QSqlCreator<Object, QSqlSelector> type;
+};
+
+
 
-template<class Object, class Accessor>class QSqlCreator;
 
 //==============================================================================
 //= Concept: data::Creator Spec: QSqlCreator
@@ -80,18 +72,4 @@
 };
 
 
-/*
-template<>
-struct CreatorTraits<dag::db::EdgeType, QSqlCreator<dag::db::EdgeType, data::QSqlSelector> >
-{
-    typedef dag::db::EdgeType  tObject;
-    typedef data::QSqlSelector tAccessor;
-    typedef QSqlCreator<dag::db::EdgeType, data::QSqlSelector> tCreator;
-    typedef tAccessor::const_iterator const_iterator;
-
-    static tString createQuery(){ tCreator::createQuery(); }
-    static tObject create(const_iterator it){ return tCreator::create(it); }
-};
-*/
-
 } // namespace data
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/data/qsql/QSqlSelector.h
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/data/qsql/QSqlSelector.h	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/data/qsql/QSqlSelector.h	2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
@@ -9,11 +9,14 @@
 #include <cstddef>
 //boost
 //qt
+#include <QSqlDatabase.h>
 #include <QSqlQuery.h>
+#include <QSqlRecord.h>
 
 //concepts
 #include "data/concept/SelectorTraits.h"
 
+#include "connectionwidget.h"
 
 // Data access sql, xml, file etc. lives in namespace data
 namespace data
@@ -23,17 +26,30 @@
 {
 public:
     typedef QSqlSelector      type;
+    typedef tString           tQuery;
     typedef std::size_t       size_type;
-    typedef QVector<QVariant> tResultSet;
+    typedef QSqlRecord        tRecord;
+    typedef QVector<tRecord>  tResultSet;
     typedef tResultSet::const_iterator const_iterator;
-    typedef QSqlQuery         tQuery;
 
     const_iterator begin()const{ return m_aResultSet.begin(); }
     const_iterator end()  const{ return m_aResultSet.end();   }
-    size_type select(const tQuery&);
+
+    size_type select(const tQuery& querySql)
+    {
+        QSqlQuery query = QSqlQuery(querySql, m_aDatabase);
+        query.exec();
+        while(query.next())
+            m_aResultSet.push_back(query.record());
+
+        return m_aResultSet.size();
+    }
+
+    void setDatabase(const QSqlDatabase& db){ m_aDatabase = db; }
 
 private:
-    tResultSet m_aResultSet;
+    tResultSet   m_aResultSet;
+    QSqlDatabase m_aDatabase;
 };
 
 
@@ -41,14 +57,16 @@
 //= Concept: data::Selector Specialisation: QSqlSelector
 //==============================================================================
 template<>
-struct SelectorTraits<QSqlSelector, QSqlQuery>
+struct SelectorTraits<QSqlSelector>
 {
     typedef std::size_t size_type;
     typedef QSqlSelector::const_iterator const_iterator;
+    typedef QSqlSelector::tQuery tQuery;
 
     static const_iterator begin(const QSqlSelector& accessor){ return accessor.begin(); }
-    static const_iterator end  (const QSqlSelector& accessor){ return accessor.end();   };
-    static size_type select(const QSqlQuery&);
+    static const_iterator end  (const QSqlSelector& accessor){ return accessor.end();   }
+    static size_type select(QSqlSelector& accessor, const tString& query)
+    { return accessor.select(query); }
 };
 
 } // namespace data
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/sqlbrowser4.pro
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/sqlbrowser4.pro	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/sqlbrowser4.pro	2012-05-16 08:06:59 EDT (Wed, 16 May 2012)
@@ -3,8 +3,8 @@
 
 QT              += sql
 
-#INCLUDEPATH     += /cygwin/home/jofa/dev/boost/branches/release
-INCLUDEPATH     += C:\NIBuild\3rdparty\boost-1.48.0
+INCLUDEPATH     += /cygwin/home/jofa/dev/boost/branches/release
+#INCLUDEPATH     += C:\NIBuild\3rdparty\boost-1.48.0
 
 HEADERS         = browser.h connectionwidget.h qsqlconnectiondialog.h \
     exttableview.h \
@@ -24,7 +24,8 @@
     data/concept/IsQuerySelector.h \
     data/concept/CreatorTraits.h \
     data/qsql/QSqlSelector.h \
-    data/qsql/QSqlCreator.h
+    data/qsql/QSqlCreator.h \
+    data/concept/GetCreator.h
 SOURCES         = main.cpp browser.cpp connectionwidget.cpp qsqlconnectiondialog.cpp \
     exttableview.cpp \
     dagitem.cpp \
@@ -60,3 +61,4 @@
 
 
 
+