34 #ifndef __GoDBRecordSet_h
35 #define __GoDBRecordSet_h
43 #include "vtkVariant.h"
46 #include "vtkMySQLDatabase.h"
47 #include "vtkSQLQuery.h"
49 template<
class TObject >
110 { this->
User = iUser; }
129 std::stringstream queryString;
130 queryString <<
"SELECT * FROM " << this->
TableName;
138 query->SetQuery( queryString.str().c_str() );
139 if ( !query->Execute() )
142 std::cerr <<
"Create query failed" << std::endl;
154 while ( query->NextRow() )
160 object.SetField( ColumnName, query->DataValue(colID).ToString() );
180 std::sort( start, end,
IsLess() );
223 if ( A.first && !B.first )
237 bool SaveEachRow(vtkSQLQuery *query,
bool Update =
false);
240 const std::string & what,
263 template<
class TObject >
272 while ( ( *firstFalseElement ).first && firstFalseElement != end )
287 if ( end - firstFalseElement > 0 )
291 if ( !UpdateRows(query, firstFalseElement, end) )
298 if ( !SaveRows(query,
"INSERT ", firstFalseElement, end) )
310 template<
class TObject >
313 const std::string& what,
330 std::stringstream queryString;
332 queryString << what <<
"INTO " << this->TableName;
333 queryString <<
" ( ";
334 queryString << rowIt->second.PrintColumnNames();
335 queryString <<
" ) ";
336 queryString <<
" VALUES ";
343 while ( rowIt != end )
345 std::stringstream rowQueryString;
346 rowQueryString << queryString.str();
347 rowQueryString <<
"(";
348 rowQueryString << rowIt->second.PrintValues();
349 rowQueryString <<
");";
350 query->SetQuery( rowQueryString.str().c_str() );
351 if ( !query->Execute() )
354 std::cerr <<
"Save query failed: ";
355 std::cerr << rowQueryString.str().c_str() << std::endl;
365 template<
class TObject >
373 std::stringstream queryString;
375 queryString <<
"UPDATE ";
376 queryString << this->TableName <<
" SET ";
377 queryString << rowIt->second.PrintColumnNamesWithValues();
378 queryString <<
" WHERE ";
379 queryString << rowIt->second.GetTableIDName();
380 queryString <<
" = ";
381 queryString << rowIt->second.GetMapValue( rowIt->second.GetTableIDName() );
388 while ( rowIt != end )
391 query->SetQuery( queryString.str().c_str() );
392 if ( !query->Execute() )
395 std::cerr <<
"Save query failed: ";
396 std::cerr << queryString.str().c_str() << std::endl;
407 template<
class TObject >
411 if ( m_ColumnNamesContainer.size() > 0 )
413 m_ColumnNamesContainer.clear();
416 vtkSQLQuery * query = m_DatabaseConnector->GetQueryInstance();
417 std::stringstream querystream;
418 querystream <<
"SHOW COLUMNS FROM ";
419 querystream << this->TableName;
424 query->SetQuery( querystream.str().c_str() );
425 if ( !query->Execute() )
428 std::cerr <<
"Create query failed" << std::endl;
432 while ( query->NextRow() )
434 m_ColumnNamesContainer.push_back( query->DataValue(0).ToString() );
std::vector< InternalObjectType > m_RowContainer
std::pair< bool, OriginalObjectType > InternalObjectType
std::vector< std::string > GetColumnNamesContainer()
TObject OriginalObjectType
void SetUser(const std::string &iUser)
bool UpdateRows(vtkSQLQuery *query, const myIteratorType &start, const myIteratorType &end)
uses the INSERT or REPLACE query to save all the objects GoDB..Row currently in the m_RowContainer lo...
void PopulateFromDB()
help read content from DB: select all the fields for a given table (TableName)in the database and fil...
std::string m_WhereString
bool operator()(const InternalObjectType &A, const InternalObjectType &B)
std::vector< InternalObjectType >::iterator myIteratorType
bool SaveRows(vtkSQLQuery *query, const std::string &what, const myIteratorType &start, const myIteratorType &end)
uses the INSERT or REPLACE query to save all the objects GoDB..Row currently in the m_RowContainer lo...
void AddObject(const OriginalObjectType &object)
Add a new Object of OriginalObjectType (exp: GoDBprojectRow) in the m_RowContainer and set the bool t...
bool SaveInDB(bool Update=false)
void SetTableName(const std::string &iTableName)
void SetConnector(vtkMySQLDatabase *iDatabaseConnector)
void SetServerName(const std::string &iServerName)
void SetDataBaseName(const std::string &iDataBaseName)
void PopulateColumnNamesContainer()
fills the vector m_ColumnNamesContainer with the column names gotten from the database and in the sam...
void SetPassword(const std::string &iPassword)
void InsertObject(const int &pos, const OriginalObjectType &object)
vtkMySQLDatabase * m_DatabaseConnector
bool SaveEachRow(vtkSQLQuery *query, bool Update=false)
void SetWhereString(const std::string &whereString)
is there to be used in case there is a "WHERE" condition to add for the selection in PopulateFromDB()...
RowContainerType * GetRowContainer()
std::vector< std::string > m_ColumnNamesContainer
std::vector< InternalObjectType > RowContainerType