You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ad...@apache.org on 2007/04/20 06:15:21 UTC
svn commit: r530633 - in /incubator/tuscany/cpp/das:
VSExpress/tuscany_das/das_lite/ VSExpress/tuscany_das/das_runtime/
runtime/das_lite/src/
Author: adrianocrestani
Date: Thu Apr 19 21:15:19 2007
New Revision: 530633
URL: http://svn.apache.org/viewvc?view=rev&rev=530633
Log:
Added Connection, Database and Statement classes for tests
Modified VC project include dir settings
Added:
incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.cpp
- copied, changed from r528901, incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.h
- copied, changed from r528901, incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.h
incubator/tuscany/cpp/das/runtime/das_lite/src/Database.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/Database.h
Removed:
incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.h
Modified:
incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_lite/das_lite.vcproj
incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.suo
incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.h
incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h
incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.h
incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h
incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.h
incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.h
incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.h
incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.h
incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.h
incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.h
incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.h
incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.h
incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h
incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.h
incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp
incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h
Modified: incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_lite/das_lite.vcproj
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_lite/das_lite.vcproj?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_lite/das_lite.vcproj (original)
+++ incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_lite/das_lite.vcproj Thu Apr 19 21:15:19 2007
@@ -4,6 +4,7 @@
Version="8,00"
Name="das_lite"
ProjectGUID="{FFDC7773-6FA6-4477-8624-8D96AACB6BF0}"
+ RootNamespace="das_lite"
>
<Platforms>
<Platform
@@ -37,8 +38,10 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories=""C:\Program Files\Microsoft Visual Studio 8\VC\include";C:\Adriano\Faculdade\Tuscany\Tuscany\CPP\DAS\runtime\das_lite\src;"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\crt";"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include";"$(TUSCANY_SDOCPP)\include";"%LIBXML2_HOME%\include";"%ZLIB_HOME%\include";"%ICONV_HOME%\include""
+ AdditionalIncludeDirectories=""$(VCInstallDir)\include";..\..\..\runtime\das_lite\src;"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\crt";"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include";"$(TUSCANY_SDOCPP)\include";"%LIBXML2_HOME%\include";"%ZLIB_HOME%\include";"%ICONV_HOME%\include""
PreprocessorDefinitions="WIN32;_DEBUG"
+ IgnoreStandardIncludePath="false"
+ GeneratePreprocessedFile="0"
RuntimeLibrary="3"
DebugInformationFormat="4"
/>
@@ -53,6 +56,8 @@
/>
<Tool
Name="VCLinkerTool"
+ AdditionalDependencies="odbc32.lib tuscany_sdo.lib"
+ AdditionalLibraryDirectories=""$(TUSCANY_SDOCPP)\lib";"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib""
/>
<Tool
Name="VCALinkTool"
@@ -165,7 +170,7 @@
>
</File>
<File
- RelativePath="..\..\..\runtime\das_lite\src\ConnectionImpl.cpp"
+ RelativePath="..\..\..\runtime\das_lite\src\Connection.cpp"
>
</File>
<File
@@ -185,6 +190,10 @@
>
</File>
<File
+ RelativePath="..\..\..\runtime\das_lite\src\Database.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\..\runtime\das_lite\src\GraphBuilder.cpp"
>
</File>
@@ -224,6 +233,12 @@
RelativePath="..\..\..\runtime\das_lite\src\Table.cpp"
>
</File>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
</Filter>
<Filter
Name="Header Files"
@@ -251,7 +266,7 @@
>
</File>
<File
- RelativePath="..\..\..\runtime\das_lite\src\ConnectionImpl.h"
+ RelativePath="..\..\..\runtime\das_lite\src\Connection.h"
>
</File>
<File
@@ -275,6 +290,10 @@
>
</File>
<File
+ RelativePath="..\..\..\runtime\das_lite\src\Database.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\runtime\das_lite\src\GraphBuilder.h"
>
</File>
@@ -314,12 +333,6 @@
RelativePath="..\..\..\runtime\das_lite\src\Table.h"
>
</File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
</Filter>
</Files>
<Globals>
Modified: incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.suo
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.suo?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
Binary files - no diff available.
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.cpp Thu Apr 19 21:15:19 2007
@@ -22,9 +22,5 @@
BaseCommandImpl::~BaseCommandImpl(void) {}
-void BaseCommandImpl::setConnection(HENV* env, HDBC* hdbc) {
- setConnection(env, hdbc);
-}
-
-void BaseCommandImpl::setConnection(ConnectionImpl* c) {
+void BaseCommandImpl::setConnection(Connection* c) {
}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/BaseCommandImpl.h Thu Apr 19 21:15:19 2007
@@ -22,15 +22,14 @@
#include <windows.h>
#include <sql.h>
-#include "ConnectionImpl.h"
+#include "Connection.h"
class BaseCommandImpl {
public:
BaseCommandImpl(void);
virtual ~BaseCommandImpl(void);
- void setConnection(HENV* env, HDBC* hdbc);
- virtual void setConnection(ConnectionImpl* c);
+ virtual void setConnection(Connection* c);
};
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp Thu Apr 19 21:15:19 2007
@@ -23,7 +23,6 @@
this->mappedName = columnName;
this->sqlType = sqlType;
containerTable = 0;
- fk = false;
pk = false;
}
@@ -51,7 +50,7 @@
}
SQLSMALLINT Column::getSQLType(void) const {
- return sqlType`;
+ return sqlType;
}
void Column::setMappedName(std::string mappedName) {
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h Thu Apr 19 21:15:19 2007
@@ -19,6 +19,11 @@
#ifndef COLUMN_H
#define COLUMN_H
+#include <windows.h>
+#include <sql.h>
+#include <sqlext.h>
+#include <string>
+
#include "Table.h"
#include "das_constants.h"
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.cpp Thu Apr 19 21:15:19 2007
@@ -19,9 +19,12 @@
#include "CommandImpl.h"
CommandImpl::CommandImpl(DAS& das, std::string sqlString) {
- statement = new Statement(sqlString);
this->das = &das;
-
+ statement = &(((DASImpl&) das).getConnection()->createStatement());
+ sql = sqlString;
+
+ //statement = new Statement();
+
//try {
/*URL url = getClass().getResource("/xml/sdoJava.xsd");
if (url == null) {
@@ -41,14 +44,6 @@
delete statement;
}
-void CommandImpl::setConnection(ConnectionImpl* connection) {
- statement->setConnection(connection);
-}
-
void CommandImpl::close(void) {
statement->close();
-}
-
-commonj::sdo::DataObjectPtr CommandImpl::executeQuery(void) {
- return 0;
}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/CommandImpl.h Thu Apr 19 21:15:19 2007
@@ -19,29 +19,36 @@
#ifndef COMMAND_IMPL_H
#define COMMAND_IMPL_H
-#include <vector>
+#include <string>
#include "Command.h"
+#include "DAS.h"
+#include "DASImpl.h"
#include "Statement.h"
-#include "ConnectionImpl.h"
+#include "Connection.h"
#include "BaseCommandImpl.h"
#include "commonj/sdo/DataObject.h"
+class DASImpl;
+
class CommandImpl : public Command, public BaseCommandImpl {
protected:
+ DAS* das;
+ std::string sql;
Statement *statement;
-
- ConnectionImpl* getConnection(void);
+ Connection* getConnection(void);
+
public:
- CommandImpl(std::string sqlString);
+ CommandImpl(DAS& das, std::string sqlString);
virtual ~CommandImpl(void);
- virtual commonj::sdo::DataObjectPtr executeQuery(void);
- virtual void setConnection(ConnectionImpl* connection);
+ virtual commonj::sdo::DataObjectPtr executeQuery(void) = 0;
virtual void close(void);
};
#endif //COMMAND_IMPL_H
+
+
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp Thu Apr 19 21:15:19 2007
@@ -18,73 +18,66 @@
*/
#include "Config.h"
-Config::Config(void) {}
+Config::Config(DAS& das) {
+ relationships = new std::map<std::string, Relationship*>();
+ tables = new std::map<std::string, Table*>();
+ this->das = &das;
+
+}
Config::~Config(void) {
std::map<std::string, Table*>::iterator tableIterator;
- std::map<std::string, Column*>::iterator columnIterator;
std::map<std::string, Relationship*>::iterator relationshipIterator;
- for (tableIterator = tables.begin() ; tableIterator != tables.end() ;
+ for (tableIterator = tables->begin() ; tableIterator != tables->end() ;
tableIterator++) {
- delete *tableIterator->second;
+ delete tableIterator->second;
}
- for (columnIterator = columns.begin() ; columnIterator != columns.end() ;
- columnIterator++) {
- delete *columnIterator->second;
+ for (relationshipIterator = relationships->begin() ;
+ relationshipIterator != relationships->end() ; tableIterator++) {
+ delete relationshipIterator->second;
}
- for (relationshipIterator = relationships.begin() ;
- relationshipIterator != relationshipIterator.end() ; tableIterator++) {
- delete *relationshipIterator->second;
- }
+ delete relationships;
+ delete tables;
}
void Config::addTable(Table& table) {
- tables.insert(std::make_pair(table.getTableName(), &table));
-}
-
-void Config::addColumn(Column& column) {
- columns.insert(std::make_pair(column.getName(), &column));
+ tables->insert(std::make_pair(table.getTableName(), &table));
}
void Config::addRelationship(Relationship& relationship) {
- columns.insert(std::make_pair(relationship.getPKTable + relationship.getFKTable,
+ relationships->insert(std::make_pair(relationship.getPKTableName() + relationship.getFKTableName(),
&relationship));
}
Relationship* Config::getRelationship(std::string tableName, std::string referencedTableName) const {
std::map<std::string, Relationship*>::iterator it =
- relationships.find(tableName + referencedTableName);
+ relationships->find(tableName + referencedTableName);
- if (it == relationships.end()) {
+ if (it == relationships->end()) {
return 0;
}
- return *it;
+ return it->second;
}
std::map<std::string, Relationship*>& Config::getRelationships(void) const {
- return relationships;
+ return *relationships;
}
std::map<std::string, Table*>& Config::getTables(void) const {
- return tables;
+ return *tables;
}
-std::map<std::string, Column*>& Config::getColumns(void) const {
- return columns;
-}
-
-
Table* Config::getTable(std::string tableName) const {
- std::map<std::string, Table*>::iterator tableIterator = tables.find(tableName);
+ std::map<std::string, Table*>::iterator tableIterator = tables->find(tableName);
- if (tableIterator == tables.end()) {
+ if (tableIterator == tables->end()) {
return 0;
}
@@ -96,8 +89,8 @@
std::map<std::string, Relationship*>::iterator it;
std::list<Relationship*>* relationshipList = new std::list<Relationship*>();
- for (it = relationships.begin() ; it != relationships.end() ; it++) {
- Relationship* relationship = *it;
+ for (it = relationships->begin() ; it != relationships->end() ; it++) {
+ Relationship* relationship = it->second;
if (relationship->getFKTableName() == tableName) {
relationshipList->push_back(relationship);
@@ -107,4 +100,8 @@
return relationshipList;
+}
+
+DAS& Config::getDAS(void) const {
+ return *das;
}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h Thu Apr 19 21:15:19 2007
@@ -22,18 +22,22 @@
#include <list>
#include <map>
+#include "DAS.h"
#include "Table.h"
#include "Column.h"
#include "Relationship.h"
+class Table;
+
class Config {
private:
- std::map<std::string, Relationship*> relationships;
- std::map<std::string, Table*> tables;
-
+ std::map<std::string, Relationship*>* relationships;
+ std::map<std::string, Table*>* tables;
+ DAS* das;
+
public:
- Config(void);
+ Config(DAS& das);
virtual ~Config(void);
void addTable(Table& table);
@@ -41,6 +45,8 @@
std::map<std::string, Relationship*>& getRelationships(void) const;
std::map<std::string, Table*>& getTables(void) const;
+
+ DAS& getDAS(void) const;
Table* getTable(std::string tableName) const;
Relationship* getRelationship(std::string tableName, std::string referencedTableName) const;
Copied: incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.cpp (from r528901, incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.cpp)
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.cpp?view=diff&rev=530633&p1=incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.cpp&r1=528901&p2=incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.cpp&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.cpp Thu Apr 19 21:15:19 2007
@@ -16,24 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-#include "ConnectionImpl.h"
+#include "Connection.h"
-ConnectionImpl::ConnectionImpl(HENV* aEnvironment, HDBC* aConnection) {
+Connection::Connection(HENV aEnvironment, HDBC aConnection) {
connection = aConnection;
environment = aEnvironment;
+ database = new Database(*this);
//try {
- SQLCHAR sqlDbmsName[255];
+// SQLCHAR sqlDbmsName[255];
SQLSMALLINT strLen;
SQLINTEGER strLen2;
- SQLGetInfo(connection, SQL_DBMS_NAME, sqlDbmsName, sizeof(sqlDbmsName), &strLen);
- std::string dbmsName = (char*) sqlDbmsName;
-
- if (dbmsName.find("Oracle") < 0) {
-// boolUseGetGeneratedKeys = false;
- } else {
- // boolUseGetGeneratedKeys = true;
- }
+// SQLGetInfo(connection, SQL_DBMS_NAME, sqlDbmsName, sizeof(sqlDbmsName), &strLen);
+// std::string dbmsName = (char*) sqlDbmsName;
+//
+// if (dbmsName.find("Oracle") < 0) {
+//// boolUseGetGeneratedKeys = false;
+// } else {
+// // boolUseGetGeneratedKeys = true;
+// }
SQLSMALLINT autoCommit;
if (SQLGetConnectAttr(connection, SQL_ATTR_AUTOCOMMIT, &autoCommit, sizeof(autoCommit), &strLen2) == SQL_AUTOCOMMIT_ON) {
@@ -46,30 +47,72 @@
}
-ConnectionImpl::~ConnectionImpl(void) {
+Connection::~Connection(void) {
+ std::list<Statement*>::iterator it;
+
+ for (it = statements.begin() ; it != statements.end() ; it++ ) {
+ delete *it;
+ }
+
+ delete database;
+
+ SQLDisconnect(connection);
+ SQLFreeConnect(connection);
+ SQLFreeEnv(environment);
+
}
-HDBC* ConnectionImpl::getODBCConnection(void) {
+HDBC Connection::getODBCConnection(void) const {
return connection;
}
-void ConnectionImpl::cleanUp(void) {
+void Connection::cleanUp(void) {
SQLEndTran(SQL_HANDLE_DBC, connection, SQL_COMMIT);
}
-void ConnectionImpl::errorCleanUp(void) {
+void Connection::errorCleanUp(void) {
SQLTransact(environment, connection, SQL_ROLLBACK);
}
-HSTMT* ConnectionImpl::prepareStatement(std::string queryString) {
+//HSTMT* Connection::prepareStatement(std::string queryString) {
+//
+// /*if (this.logger.isDebugEnabled()) {
+// this.logger.debug("Preparing Statement: " + queryString);
+// }*/
+// HSTMT statement;
+// SQLAllocStmt( connection, &statement);
+// SQLPrepare(statement, (SQLCHAR*) queryString.c_str(), SQL_NTS);
+//
+// return &statement;
+//
+//}
+
+Statement& Connection::createStatement(void) {
+ HSTMT statementHandle;
+ SQLAllocStmt(connection, &statementHandle);
+
+ Statement* statement = new Statement(*this, statementHandle);
+ statements.push_back(statement);
+
+ return *statement;
+
+}
+
+void Connection::freeStatement(Statement& statement) {
+ std::list<Statement*>::iterator it;
+
+ for (it = statements.begin() ; it != statements.end() ; it++) {
+
+ if (&statement == *it) {
+ statements.erase(it);
+ return;
- /*if (this.logger.isDebugEnabled()) {
- this.logger.debug("Preparing Statement: " + queryString);
- }*/
- HSTMT statement;
- SQLAllocStmt( connection, &statement);
- SQLPrepare(statement, (SQLCHAR*) queryString.c_str(), SQL_NTS);
-
- return &statement;
+ }
+
+ }
+
+}
+Database& Connection::getDatabase(void) const {
+ return *database;
}
Copied: incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.h (from r528901, incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.h)
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.h?view=diff&rev=530633&p1=incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.h&r1=528901&p2=incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.h&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ConnectionImpl.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Connection.h Thu Apr 19 21:15:19 2007
@@ -16,30 +16,43 @@
* specific language governing permissions and limitations
* under the License.
*/
-#ifndef CONNECTION_IMPL_H
-#define CONNECTION_IMPL_H
+#ifndef CONNECTION_H
+#define CONNECTION_H
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <string>
+#include <list>
-class ConnectionImpl {
+#include "Statement.h"
+#include "Database.h"
+
+class Database;
+class Statement;
+
+class Connection {
+
+ friend class Statement;
private:
HDBC connection;
HENV environment;
- Statement* statement;
+ Database* database;
+ std::list<Statement*> statements;
+
+ void freeStatement(Statement& statement);
public:
- ConnectionImpl(std::string dns, std::string user, std::string password);
- virtual ~ConnectionImpl(void);
+ Connection(HENV aEnvironment, HDBC aConnection);
+ virtual ~Connection(void);
HDBC getODBCConnection(void) const;
void cleanUp(void);
void errorCleanUp(void);
Statement& createStatement(void);
- Statement& prepareStatement(std::string queryString);
+ Database& getDatabase(void) const;
+ //Statement& prepareStatement(std::string queryString);
};
-#endif //CONNECTION_IMPL_H
+#endif //CONNECTION_H
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.cpp Thu Apr 19 21:15:19 2007
@@ -22,6 +22,6 @@
DASFactoryImpl::~DASFactoryImpl(void) {}
-DAS* DASFactoryImpl::createDAS(ConnectionImpl* connection) {
+DAS* DASFactoryImpl::createDAS(Connection* connection) {
return new DASImpl(connection);
}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/DASFactoryImpl.h Thu Apr 19 21:15:19 2007
@@ -32,7 +32,7 @@
public:
DASFactoryImpl(void);
virtual ~DASFactoryImpl(void);
- DAS* createDAS(ConnectionImpl* connection);
+ DAS* createDAS(Connection* connection);
};
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.cpp Thu Apr 19 21:15:19 2007
@@ -17,6 +17,7 @@
* under the License.
*/
#include "DASImpl.h"
+#include "ReadCommandImpl.h"
void toLower(std::string str) {
int i;
@@ -59,8 +60,10 @@
}
-DASImpl::DASImpl(ConnectionImpl* inConnection) {
+DASImpl::DASImpl(Connection* inConnection) {
setConnection(inConnection);
+ config = new Config(*this);
+
}
DASImpl::~DASImpl() {
@@ -75,11 +78,11 @@
}
-void DASImpl::setConnection(ConnectionImpl* aConnection) {
+void DASImpl::setConnection(Connection* aConnection) {
connection = aConnection;
}
-ConnectionImpl* DASImpl::getConnection(void) {
+Connection* DASImpl::getConnection(void) {
return connection;
}
@@ -98,7 +101,7 @@
switch (firstChar) {
case 'S':
- returnCmd = new ReadCommandImpl(inSql);
+ returnCmd = new ReadCommandImpl(*this, inSql);
break;
}
@@ -122,4 +125,8 @@
}
+}
+
+Config& DASImpl::getConfig(void) const {
+ return *config;
}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/DASImpl.h Thu Apr 19 21:15:19 2007
@@ -28,23 +28,30 @@
#include "DAS.h"
#include "Command.h"
-#include "ReadCommandImpl.h"
+#include "Connection.h"
+#include "CommandImpl.h"
+#include "Config.h"
#include "commonj/sdo/DataFactory.h"
+class Config;
+class ReadCommandImpl;
+
class DASImpl : public DAS {
private:
- ConnectionImpl* connection;
+ Connection* connection;
std::list<Command*> createdCommands;
+ Config* config;
Command* baseCreateCommand(std::string inSql);
public:
- DASImpl(ConnectionImpl* inConnection);
+ DASImpl(Connection* inConnection);
virtual ~DASImpl(void);
- ConnectionImpl* getConnection(void);
- void setConnection(ConnectionImpl* aConnection);
+ Connection* getConnection(void);
+ Config& getConfig(void) const;
+ void setConnection(Connection* aConnection);
void releaseResources(void);
Command* createCommand(std::string sql);
void closeConnection(void);
Added: incubator/tuscany/cpp/das/runtime/das_lite/src/Database.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Database.cpp?view=auto&rev=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Database.cpp (added)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Database.cpp Thu Apr 19 21:15:19 2007
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "Database.h"
+
+Database::Database(Connection& connection) {
+ this->connection = &connection;
+}
+
+Database::~Database(void) {}
+
+ResultSet* Database::getPKs(std::string tableName) const {
+ Statement& statement = connection->createStatement();
+ SQLPrimaryKeysA(statement.getODBCStatement(), 0,0,0,0, (SQLCHAR*) (char*) tableName.c_str(), tableName.size());
+
+ return new ResultSet(statement);
+
+}
+
+ResultSet* Database::getFKs(std::string tableName) const {
+ Statement& statement = connection->createStatement();
+ SQLForeignKeysA(statement.getODBCStatement(), 0,0,0,0,0,0, 0,0,0,0,(SQLCHAR*) (char*) tableName.c_str(), tableName.size());
+
+ return new ResultSet(statement);
+
+}
Added: incubator/tuscany/cpp/das/runtime/das_lite/src/Database.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Database.h?view=auto&rev=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Database.h (added)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Database.h Thu Apr 19 21:15:19 2007
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#ifndef DATABASE_H
+#define DATABASE_H
+
+#include <windows.h>
+#include <sql.h>
+#include <sqlext.h>
+#include <string>
+
+#include "Connection.h"
+#include "ResultSet.h"
+#include "Statement.h"
+
+class Connection;
+class ResultSet;
+
+class Database {
+
+ private:
+ Connection* connection;
+
+ public:
+ Database(Connection& connection);
+ virtual ~Database(void);
+
+ ResultSet* getPKs(std::string tableName) const;
+ ResultSet* getFKs(std::string tableName) const;
+
+};
+
+#endif //DATABASE_H
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.cpp Thu Apr 19 21:15:19 2007
@@ -18,10 +18,9 @@
*/
#include "GraphBuilder.h"
-GraphBuilder::GraphBuilder(ResultSet& resultSet) :
- graphBuiderMetaData(resultSet.getMetaData()) {
-
- this->resultSet* = resultSet;
+GraphBuilder::GraphBuilder(Config& config, ResultSet& resultSet) {
+ graphBuilderMetaData = new GraphBuilderMetaData(config, resultSet.getResultSetMetaData()) ;
+ /*this->resultSet* = resultSet;
commonj::sdo::DataFactoryPtr dataFactory = graphBuiderMetaData.createGraph();
root = dataFactory->create(DAS_NAMESPACE, DAS_ROOT_NAME);
@@ -38,14 +37,15 @@
}
- }
+ }*/
}
GraphBuilder::~GraphBuilder(void) {
delete root;
+ delete graphBuilderMetaData;
}
-DataObjectPtr GraphBuilder::getRoot(void) const {
+commonj::sdo::DataObjectPtr GraphBuilder::getRoot(void) const {
return root;
-}
\ No newline at end of file
+}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.h Thu Apr 19 21:15:19 2007
@@ -20,7 +20,8 @@
#define GRAPH_BUILDER_H
#include "ResultSet.h"
-#include "GraphBuiderMetaData.h"
+#include "Config.h"
+#include "GraphBuilderMetaData.h"
#include "commonj/sdo/DataFactory.h"
#include "commonj/sdo/DataObject.h"
#include "das_constants.h"
@@ -28,14 +29,14 @@
class GraphBuilder {
private:
ResultSet* resultSet;
- GraphBuiderMetaData graphBuiderMetaData;
+ GraphBuilderMetaData* graphBuilderMetaData;
commonj::sdo::DataObjectPtr root;
public:
- GraphBuilder(ResultSet& resultSet);
+ GraphBuilder(Config& config, ResultSet& resultSet);
virtual ~GraphBuilder(void);
- DataObjectPtr getRoot(void) const;
+ commonj::sdo::DataObjectPtr getRoot(void) const;
};
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp Thu Apr 19 21:15:19 2007
@@ -21,38 +21,38 @@
GraphBuilderMetaData::GraphBuilderMetaData(Config& config, ResultSetMetaData& resultSetMetaData) {
this->resultSetMetaData = &resultSetMetaData;
this->config = &config;
+ graphTables = new std::map<std::string, Table*>();
- const ResultSetMetaData& metaData = resultSet.getMetaData();
- unsigned int colCount = metaData.getColumnCount();
+ unsigned int colCount = resultSetMetaData.getColumnCount();
std::map<std::string, std::list<Column*>*> tablesColumns;
for (int i = 0 ; i < colCount ; i++) {
- std::string columnName = metaData.getColumnName(i);
- SQLSMALLINT columnSQLType = metaData.getSQLType(i);
- std::string columnTableName = metaData.getTableName(i);
+ std::string columnName = resultSetMetaData.getColumnName(i);
+ SQLSMALLINT columnSQLType = resultSetMetaData.getSQLType(i);
+ std::string columnTableName = resultSetMetaData.getTableName(i);
Table* table = config.getTable(columnTableName);
if (table == 0) {
- Table* newTable = new Table(*this, columnTableName);
+ Table* newTable = new Table(config, columnTableName);
config.addTable(*newTable);
- tablesColumns.insert(std::make_pair(columnTableName, new std::list<std::string>()));
+ tablesColumns.insert(std::make_pair(columnTableName, new std::list<Column*>()));
table = newTable;
} else {
- tablesColumns.insert(std::make_pair(table->getTableName(), new std::list<std::string>()));
+ tablesColumns.insert(std::make_pair(table->getTableName(), new std::list<Column*>()));
}
- graphTables.insert(std::make_pair(table->getTableName(), table));
- tablesColumns[table->getTableName()]->insert(new Column(columnName, columnSQLType));
+ graphTables->insert(std::make_pair(table->getTableName(), table));
+ tablesColumns[table->getTableName()]->push_back(new Column(columnName, columnSQLType));
}
std::map<std::string, Table*>::iterator it;
- for (it = graphTables.begin() ; it != graphTables.end() ; it++) {
- Table* table = *it;
+ for (it = graphTables->begin() ; it != graphTables->end() ; it++) {
+ Table* table = it->second;
std::string tableName = table->getTableName();
- std::list<Column>* columns = tablesColumns[tableName];
+ std::list<Column*>* columns = tablesColumns[tableName];
table->addColumns(*columns);
delete columns;
@@ -61,16 +61,18 @@
}
-GraphBuilderMetaData::~GraphBuilderMetaData(void) {}
+GraphBuilderMetaData::~GraphBuilderMetaData(void) {
+ delete graphTables;
+}
commonj::sdo::DataFactoryPtr GraphBuilderMetaData::createGraph(void) const {
commonj::sdo::DataFactoryPtr dataFactory = commonj::sdo::DataFactory::getDataFactory();
dataFactory->addType(DAS_NAMESPACE, DAS_ROOT_NAME);
- std::map<std::string, Table*>::iterator it;
+ std::map<std::string, Table*>::const_iterator it;
- for (it = graphTables.begin() ; it != graphTables.end() ; it++) {
- Table& table = **it;
+ for (it = graphTables->begin() ; it != graphTables->end() ; it++) {
+ Table& table = *(it->second);
std::string tableName = table.getTableName();
dataFactory->addType(DAS_NAMESPACE, tableName);
@@ -79,8 +81,8 @@
}
- for (it = tables.begin() ; it != tables.end() ; it++) {
- table.createGraph(dataFactory);
+ for (it = graphTables->begin() ; it != graphTables->end() ; it++) {
+ it->second->createGraph(*this, dataFactory);
}
return dataFactory;
@@ -96,13 +98,13 @@
}
std::map<std::string, Table*>& GraphBuilderMetaData::getTables(void) const {
- return graphTables;
+ return *graphTables;
}
Table* GraphBuilderMetaData::getTable(std::string tableName) const {
- std::map<std::string, Table*>::iterator it = graphTables.find(tableName);
+ std::map<std::string, Table*>::iterator it = graphTables->find(tableName);
- if (it == graphTables.end()) {
+ if (it == graphTables->end()) {
return 0;
}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.h Thu Apr 19 21:15:19 2007
@@ -30,11 +30,13 @@
#include "commonj/sdo/DataFactory.h"
#include "das_constants.h"
+class Config;
+
class GraphBuilderMetaData {
private:
ResultSetMetaData* resultSetMetaData;
- std::map<std::string, Table*> graphTables;
+ std::map<std::string, Table*>* graphTables;
Config* config;
public:
@@ -42,7 +44,7 @@
virtual ~GraphBuilderMetaData(void);
ResultSetMetaData& getResultSetMetaData(void) const;
- std::map<std::string, Table*>& getGraphTables(void) const;
+ std::map<std::string, Table*>& getTables(void) const;
Config& getConfig(void) const;
Table* getTable(std::string tableName) const;
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.cpp Thu Apr 19 21:15:19 2007
@@ -32,10 +32,4 @@
std::string KeyPair::getFKColumnName(void) const {
return fkColumnName;
-}
-
-void KeyPair::addKeyPair(KeyPair& keyPair) {
- keyPairs.insert(
- std::make_pair(keyPair.pkColumnName + keyPair.getFKColumnName, &keyPair));
-
-}
+}
\ No newline at end of file
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.h Thu Apr 19 21:15:19 2007
@@ -19,6 +19,9 @@
#ifndef KEY_PAIR_H
#define KEY_PAIR_H
+#include <map>
+#include <string>
+
class KeyPair {
private:
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.cpp Thu Apr 19 21:15:19 2007
@@ -18,109 +18,101 @@
*/
#include "ReadCommandImpl.h"
-int getColumnCount(HSTMT statement) {
- SQLINTEGER columnCount = 0;
- SQLRETURN ret = SQLColAttribute(statement, NULL, SQL_DESC_COUNT, NULL, NULL, NULL, &columnCount);
-
- return columnCount;
-
-}
+//int getColumnCount(HSTMT statement) {
+// SQLINTEGER columnCount = 0;
+// SQLRETURN ret = SQLColAttribute(statement, NULL, SQL_DESC_COUNT, NULL, NULL, NULL, &columnCount);
+//
+// return columnCount;
+//
+//}
+//
+//std::string getColumnName(HSTMT statement, int column) {
+// SQLCHAR* sqlPtr = 0;
+// char strAux[1];
+// SQLSMALLINT length = 0;
+// SQLColAttribute(statement, column, SQL_DESC_BASE_COLUMN_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
+// length++;
+// sqlPtr = (SQLCHAR*) new SQLCHAR[length];
+// SQLColAttributeA(statement, column, SQL_DESC_BASE_COLUMN_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
+//
+// std::string ret((char*) sqlPtr);
+// delete [] sqlPtr;
+// return ret;
+//
+//}
+//
+//std::string getColumnTableName(HSTMT statement, int column) {
+// SQLCHAR* sqlPtr = 0;
+// char strAux[1];
+// SQLSMALLINT length = 0;
+// SQLColAttribute(statement, column, SQL_DESC_TABLE_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
+// length++;
+// sqlPtr = (SQLCHAR*) new SQLCHAR[length];
+// SQLColAttributeA(statement, column, SQL_DESC_TABLE_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
+//
+// std::string ret((char*) sqlPtr);
+// delete [] sqlPtr;
+// return ret;
+//
+//}
+//
+//std::string getStringData(HSTMT statement, int column) {
+// SQLPOINTER sqlPtr = 0;
+// SQLCHAR strAux[1];
+// SQLINTEGER length = 0;
+// SQLGetData(statement, column, SQL_C_CHAR, &strAux, 1, &length);
+// length++;
+// sqlPtr = (SQLCHAR*) malloc(length*sizeof(SQLCHAR));
+// SQLINTEGER aux = 0;
+// SQLGetData(statement, column, SQL_C_CHAR, sqlPtr, length, &aux);
+//
+// std::string ret = (char*) sqlPtr;
+// return ret;
+//
+//}
+//
+//int getIntegerData(HSTMT statement, int column) {
+// SQLCHAR strAux[1];
+// SQLINTEGER sqlPtr = 0;
+// SQLSMALLINT length = 0;
+// SQLINTEGER aux = 0;
+// SQLGetData(statement, column, SQL_C_ULONG, &sqlPtr, 0, &aux);
+//
+// return (int) sqlPtr;
+//
+//}
+//
+//int getSQLColumnType(HSTMT statement, int column) {
+// SQLSMALLINT sqlType = 0;
+// SQLColAttribute(statement, column, SQL_DESC_TYPE, NULL, NULL, NULL, &sqlType);
+//
+// return (int) sqlType;
+//
+//}
-std::string getColumnName(HSTMT statement, int column) {
- SQLCHAR* sqlPtr = 0;
- char strAux[1];
- SQLSMALLINT length = 0;
- SQLColAttribute(statement, column, SQL_DESC_BASE_COLUMN_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
- length++;
- sqlPtr = (SQLCHAR*) new SQLCHAR[length];
- SQLColAttributeA(statement, column, SQL_DESC_BASE_COLUMN_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
-
- std::string ret((char*) sqlPtr);
- delete [] sqlPtr;
- return ret;
+ReadCommandImpl::ReadCommandImpl(DAS& das, std::string sqlString) : CommandImpl(das, sqlString) {}
-}
-
-std::string getColumnTableName(HSTMT statement, int column) {
- SQLCHAR* sqlPtr = 0;
- char strAux[1];
- SQLSMALLINT length = 0;
- SQLColAttribute(statement, column, SQL_DESC_TABLE_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
- length++;
- sqlPtr = (SQLCHAR*) new SQLCHAR[length];
- SQLColAttributeA(statement, column, SQL_DESC_TABLE_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
-
- std::string ret((char*) sqlPtr);
- delete [] sqlPtr;
- return ret;
-
-}
-
-std::string getStringData(HSTMT statement, int column) {
- SQLPOINTER sqlPtr = 0;
- SQLCHAR strAux[1];
- SQLINTEGER length = 0;
- SQLGetData(statement, column, SQL_C_CHAR, &strAux, 1, &length);
- length++;
- sqlPtr = (SQLCHAR*) malloc(length*sizeof(SQLCHAR));
- SQLINTEGER aux = 0;
- SQLGetData(statement, column, SQL_C_CHAR, sqlPtr, length, &aux);
- sqlfo
- std::string ret = (char*) sqlPtr;
- return ret;
-
-}
-
-int getIntegerData(HSTMT statement, int column) {
- SQLCHAR strAux[1];
- SQLINTEGER sqlPtr = 0;
- SQLSMALLINT length = 0;
- SQLINTEGER aux = 0;
- SQLGetData(statement, column, SQL_C_ULONG, &sqlPtr, 0, &aux);
-
- return (int) sqlPtr;
+ReadCommandImpl::~ReadCommandImpl(void) {}
-}
+commonj::sdo::DataObjectPtr ReadCommandImpl::executeQuery(void) {
+ ResultSet* results = statement->executeQuery(sql);
+ commonj::sdo::DataObjectPtr root = buildGraph(*results);
+
+ delete results;
-int getSQLColumnType(HSTMT statement, int column) {
- SQLSMALLINT sqlType = 0;
- SQLColAttribute(statement, column, SQL_DESC_TYPE, NULL, NULL, NULL, &sqlType);
-
- return (int) sqlType;
+ return root;
}
-ReadCommandImpl::ReadCommandImpl(std::string sqlString) : CommandImpl(sqlString) {}
-
-ReadCommandImpl::~ReadCommandImpl(void) {}
-
-commonj::sdo::DataObjectPtr ReadCommandImpl::executeQuery(void) {
+commonj::sdo::DataObjectPtr ReadCommandImpl::buildGraph(ResultSet& resultSet) { /*throws SQLException*/
+ GraphBuilderMetaData graphBuilderMetaData(((DASImpl*) das)->getConfig(), resultSet.getResultSetMetaData());
+ commonj::sdo::DataFactoryPtr dataFactory = graphBuilderMetaData.createGraph();
- if (statement->getConnection() == NULL) {
- //throw new RuntimeException("A DASConnection object must be specified before executing the query.");
- }
-
- int success = 0;
-
- //try {
- HSTMT& results = statement->executeQuery();
- success = 1;
-
- return buildGraph(results);
-
- //} catch (SQLException e) {
- // throw new RuntimeException(e);
- //} finally {
- /*if (success) {
- statement->getConnection()->cleanUp();
- } else {
- statement->getConnection()->errorCleanUp();
- }*/
- //}
-}
+ //commonj::sdo::ChangeSummaryPtr changeSummary = rootDataObject->getChangeSummary();
+
+ return 0;
-commonj::sdo::DataObjectPtr ReadCommandImpl::buildGraph(HSTMT& statement) { /*throws SQLException*/
- int columnCount = getColumnCount(statement);
+ /*int columnCount = getColumnCount(statement);
int col;
int i;
SQLSMALLINT sqlType = 0;
@@ -130,32 +122,32 @@
dataFactory->addType(DAS_NAMESPACE, DAS_ROOT);
const commonj::sdo::Type& dasType = dataFactory->getType(DAS_NAMESPACE, DAS_ROOT);
const commonj::sdo::Type& intType = dataFactory->getType("commonj.sdo","Integer");
- const commonj::sdo::Type& stringType = dataFactory->getType("commonj.sdo","String");
-
- for (col = 1 ; col <= columnCount ; col++) {
- sqlType = getSQLColumnType(statement, col);
- columnName = getColumnName(statement, col);
- columnTypes.push_back(sqlType);
-
- switch (sqlType) {
-
- case SQL_INTEGER :
- dataFactory->addPropertyToType(dasType, columnName, intType);
- break;
-
- case SQL_CHAR :
- dataFactory->addPropertyToType(dasType, columnName, stringType);
- break;
-
- default :
- ;
- //throw exception
-
- }
+ const commonj::sdo::Type& stringType = dataFactory->getType("commonj.sdo","String");*/
- }
+ //for (col = 1 ; col <= columnCount ; col++) {
+ // sqlType = getSQLColumnType(statement, col);
+ // columnName = getColumnName(statement, col);
+ // columnTypes.push_back(sqlType);
+ //
+ // switch (sqlType) {
+
+ // case SQL_INTEGER :
+ // dataFactory->addPropertyToType(dasType, columnName, intType);
+ // break;
+
+ // case SQL_CHAR :
+ // dataFactory->addPropertyToType(dasType, columnName, stringType);
+ // break;
+
+ // default :
+ // ;
+ // //throw exception
+
+ // }
+ //
+ //}
- commonj::sdo::DataObjectPtr rootDataObject = dataFactory->create(DAS_NAMESPACE, DAS_ROOT);
+ /*commonj::sdo::DataObjectPtr rootDataObject = dataFactory->create(DAS_NAMESPACE, DAS_ROOT);
SQLRETURN sqlRet = SQLFetch(statement);
while (sqlRet == SQL_SUCCESS) {
@@ -178,10 +170,8 @@
}
- }
+ }*/
- commonj::sdo::ChangeSummaryPtr changeSummary = rootDataObject->getChangeSummary();
- return rootDataObject;
}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.h Thu Apr 19 21:15:19 2007
@@ -19,10 +19,10 @@
#ifndef READ_COMMAND_IMPL_H
#define READ_COMMAND_IMPL_H
-#include <vector>
#include <list>
#include "CommandImpl.h"
+#include "GraphBuilderMetaData.h"
#include "commonj/sdo/DataFactory.h"
#include "commonj/sdo/DataObject.h"
@@ -35,12 +35,11 @@
unsigned int startRow;
unsigned int endRow;
- protected:
- public:
- commonj::sdo::DataObjectPtr buildGraph(HSTMT& statement); /*throws SQLException*/
+ public:
+ commonj::sdo::DataObjectPtr buildGraph(ResultSet& resultSet); /*throws SQLException*/
- ReadCommandImpl(std::string sqlString);
+ ReadCommandImpl(DAS& das, std::string sqlString);
~ReadCommandImpl(void);
commonj::sdo::DataObjectPtr executeQuery(void);
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.cpp Thu Apr 19 21:15:19 2007
@@ -18,13 +18,16 @@
*/
#include "Relationship.h"
-Relationship(std::string pkTableName, std::string fkTableName) {
+Relationship::Relationship(std::string pkTableName, std::string fkTableName) {
this->pkTableName = pkTableName;
this->fkTableName = fkTableName;
+ keyPairs = new std::map<std::string, KeyPair*>();
}
-Relationship::~Relationship(void) {}
+Relationship::~Relationship(void) {
+ delete keyPairs;
+}
std::string Relationship::getPKTableName(void) const {
return pkTableName;
@@ -35,17 +38,24 @@
}
std::map<std::string, KeyPair*>& Relationship::getKeyPairs(void) const {
- return keyPairs;
+ return *keyPairs;
}
KeyPair* Relationship::getKeyPair(std::string pkColumnName, std::string fkColumnName) const {
- std::map<std::string, KeyPair*>::iterator it = keyPairs.
+ std::map<std::string, KeyPair*>::iterator it = keyPairs->
find(pkColumnName + fkColumnName);
- if (it == keyPairs.end()) {
+ if (it == keyPairs->end()) {
return 0;
}
- return *it;
+ return it->second;
}
+
+void Relationship::addKeyPair(KeyPair& keyPair) {
+ keyPairs->insert(
+ std::make_pair(keyPair.getPKColumnName() + keyPair.getFKColumnName(), &keyPair));
+
+}
+
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.h Thu Apr 19 21:15:19 2007
@@ -22,12 +22,14 @@
#include <string>
#include <map>
+#include "KeyPair.h"
+
class Relationship {
private:
std::string pkTableName;
std::string fkTableName;
- std::map<std::string, KeyPair*> keyPairs;
+ std::map<std::string, KeyPair*>* keyPairs;
public:
Relationship(std::string pkTableName, std::string fkTableName);
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.cpp Thu Apr 19 21:15:19 2007
@@ -18,24 +18,28 @@
*/
#include "ResultSet.h"
-ResultSet::ResultSet(Statement* aStmt) {
- stmt = aStmt;
+ResultSet::ResultSet(Statement& aStmt) {
+ stmt = &aStmt;
+ metaData = new ResultSetMetaData(this);
+
}
-ResultSet::~ResultSet(void) {}
+ResultSet::~ResultSet(void) {
+ delete metaData;
+}
-const ResultSetMetaData& ResultSet::getMetaData(void) const {
- return metaData;
+ResultSetMetaData& ResultSet::getResultSetMetaData(void) const {
+ return *metaData;
}
-const Statement& ResultSet::getStatement(void) const {
+Statement& ResultSet::getStatement(void) const {
return *stmt;
}
wchar_t ResultSet::getSQLChar(unsigned int columnIndex) const {
wchar_t ret = 0;
- if (metaData.getSQLType(columnIndex) == SQL_CHAR) {
+ if (metaData->getSQLType(columnIndex) == SQL_CHAR) {
SQLWCHAR strAux = 0;
SQLINTEGER length = 0;
SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_WCHAR, &strAux, 1, &length);
@@ -51,13 +55,13 @@
}
wchar_t ResultSet::getSQLChar(std::string tableName, std::string columnName) const {
- return getSQLChar(metaData.getColumnIndex(tableName + columnName));
+ return getSQLChar(metaData->getColumnIndex(tableName, columnName));
}
float ResultSet::getSQLReal(unsigned int columnIndex) const {
float ret = 0;
- if (metaData.getSQLType(columnIndex) == SQL_REAL) {
+ if (metaData->getSQLType(columnIndex) == SQL_REAL) {
SQLFLOAT real = 0;
SQLINTEGER length = 0;
SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_FLOAT, &real, 1, &length);
@@ -73,18 +77,18 @@
}
float ResultSet::getSQLReal(std::string tableName, std::string columnName) const {
- return getSQLReal(metaData.getColumnIndex(tableName + columnName));
+ return getSQLReal(metaData->getColumnIndex(tableName, columnName));
}
double ResultSet::getSQLFloat(unsigned int columnIndex) const {
double ret = 0;
- if (metaData.getSQLType(columnIndex) == SQL_FLOAT) {
+ if (metaData->getSQLType(columnIndex) == SQL_FLOAT) {
SQLDOUBLE data = 0;
SQLINTEGER length = 0;
SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_DOUBLE, &data, 1, &length);
- ret = (double) strAux;
+ ret = (double) data;
} else {
//throw an exception if the column type is not the requested
@@ -95,18 +99,18 @@
}
double ResultSet::getSQLFloat(std::string tableName, std::string columnName) const {
- return getSQLFloat(metaData.getColumnIndex(tableName + columnName));
+ return getSQLFloat(metaData->getColumnIndex(tableName, columnName));
}
double ResultSet::getSQLDouble(unsigned int columnIndex) const {
double ret = 0;
- if (metaData.getSQLType(columnIndex) == SQL_DOUBLE) {
+ if (metaData->getSQLType(columnIndex) == SQL_DOUBLE) {
SQLDOUBLE data = 0;
SQLINTEGER length = 0;
SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_DOUBLE, &data, 1, &length);
- ret = (double) strAux;
+ ret = (double) data;
} else {
//throw an exception if the column type is not the requested
@@ -117,41 +121,46 @@
}
double ResultSet::getSQLDouble(std::string tableName, std::string columnName) const {
- return getSQLDouble(metaData.getColumnIndex(tableName + columnName));
+ return getSQLDouble(metaData->getColumnIndex(tableName, columnName));
}
std::string ResultSet::getSQLDecimal(unsigned int columnIndex) const {
- std::string ret;
+ //std::string ret;
- if (metaData.getSQLType(columnIndex) == SQL_DECIMAL) {
- SQLPOINTER sqlPtr = 0;
- SQLCHAR strAux[1];
- SQLINTEGER length = 0;
- SQLGetData(statement, columnIndex + 1, SQL_C_CHAR, &strAux, 1, &length);
- length++;
- sqlPtr = (SQLCHAR*) malloc(length*sizeof(SQLCHAR));
- SQLINTEGER aux = 0;
- SQLGetData(statement, columnIndex + 1, SQL_C_CHAR, sqlPtr, length, &aux);
-
- std::string ret = (char*) sqlPtr);
- delete [] sqlPtr;
- ret = &((double) strAux);
-
- } else {
- //throw an exception if the column type is not the requested
- }
+ //if (metaData.getSQLType(columnIndex) == SQL_DECIMAL) {
+ // SQLPOINTER sqlPtr = 0;
+ // SQLCHAR strAux[1];
+ // SQLINTEGER length = 0;
+ // SQLGetData(statement, columnIndex + 1, SQL_C_CHAR, &strAux, 1, &length);
+ // length++;
+ // sqlPtr = (SQLCHAR*) malloc(length*sizeof(SQLCHAR));
+ // SQLINTEGER aux = 0;
+ // SQLGetData(statement, columnIndex + 1, SQL_C_CHAR, sqlPtr, length, &aux);
+ //
+ // std::string ret = (char*) sqlPtr);
+ // delete [] sqlPtr;
+ // ret = &((double) strAux);
+ //
+ //} else {
+ // //throw an exception if the column type is not the requested
+ //}
- return ret;
+ //return ret;
+ return "";
}
std::string ResultSet::getSQLDecimal(std::string tableName, std::string columnName) const {
- return getSQLDecimal(metaData.getColumnIndex(tableName + columnName));
+ return getSQLDecimal(metaData->getColumnIndex(tableName, columnName));
}
-bool ResultSet::isNull(unsigned int columnIndex) const {}
+bool ResultSet::isNull(unsigned int columnIndex) const {
+ return false;
+}
-bool ResultSet::isNull(std::string tableName, std::string columnName) const {}
+bool ResultSet::isNull(std::string tableName, std::string columnName) const {
+ return false;
+}
bool ResultSet::next(void) {
return (SQL_SUCCESS == SQLFetch(stmt->getODBCStatement()));
@@ -159,9 +168,27 @@
unsigned int ResultSet::rowCount(void) const {
SQLINTEGER columnCount = 0;
- SQLRETURN ret = SQLColAttribute(statement, NULL, SQL_DESC_COUNT, NULL, NULL, NULL, &columnCount);
+ SQLRETURN ret = SQLColAttribute(stmt->getODBCStatement(), NULL, SQL_DESC_COUNT, NULL, NULL, NULL, &columnCount);
return (unsigned int) columnCount;
}
+std::string ResultSet::getSQLVarchar(unsigned int columnIndex) const {
+ SQLPOINTER sqlPtr = 0;
+ SQLCHAR strAux[1];
+ SQLINTEGER length = 0;
+ SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_CHAR, &strAux, 1, &length);
+ length++;
+ sqlPtr = (SQLCHAR*) malloc(length*sizeof(SQLCHAR));
+ SQLINTEGER aux = 0;
+ SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_CHAR, sqlPtr, length, &aux);
+
+ std::string ret = (char*) sqlPtr;
+ return ret;
+
+}
+
+std::string ResultSet::getSQLVarchar(std::string tableName, std::string columnName) const {
+ return getSQLVarchar(metaData->getColumnIndex(tableName, columnName));
+}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.h Thu Apr 19 21:15:19 2007
@@ -25,22 +25,29 @@
#include <string>
#include "ResultSetMetaData.h"
+#include "Statement.h"
+
+class Statement;
+class ResultSetMetaData;
class ResultSet {
private:
- ResultSetMetaData metaData;
+ ResultSetMetaData* metaData;
Statement* stmt;
public:
- ResultSet(Statement* aStmt);
+ ResultSet(Statement& aStmt);
virtual ~ResultSet(void);
- const ResultMetaData& getMetaData(void) const;
- const Statement& getStatement(void) const;
+ ResultSetMetaData& getResultSetMetaData(void) const;
+ Statement& getStatement(void) const;
wchar_t getSQLChar(unsigned int columnIndex) const;
wchar_t getSQLChar(std::string tableName, std::string columnName) const;
+
+ std::string getSQLVarchar(unsigned int columnIndex) const;
+ std::string getSQLVarchar(std::string tableName, std::string columnName) const;
float getSQLReal(unsigned int columnIndex) const;
float getSQLReal(std::string tableName, std::string columnName) const;
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp Thu Apr 19 21:15:19 2007
@@ -31,13 +31,13 @@
}
-virtual ResultSetMetaData::~ResultSetMetaData(void) {}
+ResultSetMetaData::~ResultSetMetaData(void) {}
-SQLSMALLINT ResultSetMetaData::getSQLCType(SQLSMALLINT sqlType) {
+SQLSMALLINT ResultSetMetaData::getSQLCType(SQLSMALLINT sqlType) const {
switch (sqlType) {
- case SQLCHAR :
+ case SQL_CHAR :
return SQL_C_CHAR;
case SQL_BINARY :
@@ -86,13 +86,13 @@
return SQL_C_BINARY;
default :
- throw logic_error("Illegal SQL type!");
+ throw std::invalid_argument("Illegal SQL type!");
}
}
-SQLSMALLINT ResultSetMetaData::getSQLType(unsigned int columnIndex) {
+SQLSMALLINT ResultSetMetaData::getSQLType(unsigned int columnIndex) const {
SQLSMALLINT sqlType = 0;
SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_TYPE, NULL, NULL, NULL, &sqlType);
@@ -100,12 +100,12 @@
}
-SQLSMALLINT ResultSetMetaData::getSQLType(std::string tableName, std::string columnName) {
- return getSQLType(getColumnIndex(tableName + columnName));
+SQLSMALLINT ResultSetMetaData::getSQLType(std::string tableName, std::string columnName) const {
+ return getSQLType(getColumnIndex(tableName, columnName));
}
-std::string ResultSetMetaData::getSQLTypeName(unsigned int columnIndex) {
+std::string ResultSetMetaData::getSQLTypeName(unsigned int columnIndex) const {
SQLCHAR* sqlPtr = 0;
char strAux[1];
SQLSMALLINT length = 0;
@@ -121,12 +121,12 @@
}
-std::string ResultSetMetaData::getSQLTypeName(std::string tableName, std::string columnName) {
- unsigned int columnIndex = getColumnIndex(tableName + columnName);
+std::string ResultSetMetaData::getSQLTypeName(std::string tableName, std::string columnName) const {
+ return getSQLTypeName(getColumnIndex(tableName, columnName));
}
-std::string ResultSetMetaData::getColumnName(unsigned int columnIndex) {
+std::string ResultSetMetaData::getColumnName(unsigned int columnIndex) const {
SQLCHAR* sqlPtr = 0;
char strAux[1];
SQLSMALLINT length = 0;
@@ -142,11 +142,11 @@
}
-unsigned int ResultSetMetaData::getColumnIndex(std::string tableName, std::string columnName) {
- std::map<std::string, unsigned int>::iterator it = columnsIndexes.find(tableName + columnName);
+unsigned int ResultSetMetaData::getColumnIndex(std::string tableName, std::string columnName) const {
+ std::map<std::string, unsigned int>::const_iterator it = columnsIndexes.find(tableName + columnName);
if (it == columnsIndexes.end()) {
- throw logic_error("No such column name: " + columnName);
+ throw std::invalid_argument("No such column name: " + columnName);
}
return it->second;
@@ -154,7 +154,7 @@
}
-std::string ResultSetMetaData::getTableName(unsigned int columnIndex) {
+std::string ResultSetMetaData::getTableName(unsigned int columnIndex) const {
SQLCHAR* sqlPtr = 0;
char strAux[1];
SQLSMALLINT length = 0;
@@ -170,33 +170,20 @@
}
-std::string ResultSetMetaData::getTableName(std::string tableName, std::string columnName) {
- return getTableName(getColumnIndex(tableName + columnName));
+std::string ResultSetMetaData::getTableName(std::string tableName, std::string columnName) const {
+ return getTableName(getColumnIndex(tableName, columnName));
}
-SQLSMALLINT ResultSetMetaData::getSQLType(unsigned int columnIndex) {
- SQLSMALLINT sqlType = 0;
- SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_TYPE, NULL, NULL, NULL, &sqlType);
-
- return sqlType;
-
-}
-
-SQLSMALLINT ResultSetMetaData::getSQLType(std::string tableName, std::string columnName) {
- return getSQLType(getColumnIndex(tableName + columnName));
-}
-
-
-SQLSMALLINT ResultSetMetaData::getSQLCType(unsigned int columnIndex) {
+SQLSMALLINT ResultSetMetaData::getSQLCType(unsigned int columnIndex) const {
return getSQLCType(getSQLType(columnIndex));
}
-SQLSMALLINT ResultSetMetaData::getSQLCType(std::string tableName, std::string columnName) {
- return getSQLCType(getSQLType(getColumnIndex(tableName + columnName)));
+SQLSMALLINT ResultSetMetaData::getSQLCType(std::string tableName, std::string columnName) const {
+ return getSQLCType(getSQLType(getColumnIndex(tableName, columnName)));
}
-unsigned int ResultSetMetaData::getColumnCount(void) {
+unsigned int ResultSetMetaData::getColumnCount(void) const {
SQLUINTEGER columnCount = 0;
SQLRETURN ret = SQLColAttribute(resultSet->getStatement().getODBCStatement(), NULL, SQL_DESC_COUNT, NULL, NULL, NULL, &columnCount);
@@ -205,7 +192,7 @@
}
bool ResultSetMetaData::containsColumn(std::string tableName, std::string columnName) const {
- std::map<std::string, int>::iterator it = columnsIndexes.find(tableName + columnName);
+ std::map<std::string, unsigned int>::const_iterator it = columnsIndexes.find(tableName + columnName);
if (it == columnsIndexes.end()) {
return false;
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h Thu Apr 19 21:15:19 2007
@@ -30,32 +30,30 @@
private:
ResultSet* resultSet;
- std::map<std::string, int> columnsIndexes;
+ std::map<std::string, unsigned int> columnsIndexes;
+ SQLSMALLINT getSQLCType(SQLSMALLINT sqlType) const;
+
+ public:
ResultSetMetaData(ResultSet* aResultSet);
virtual ~ResultSetMetaData(void);
- SQLSMALLINT getSQLCType(SQLSMALLINT sqlType) const;
- public:
const ResultSet& getResultSet(void) const;
- SQLSMALLINT getSQLType(int columnIndex) const;
- SQLSMALLINT getSQLType(std::string tableName, std::string columnName) const;
-
- std::string getSQLTypeName(int columnIndex) const;
+ std::string getSQLTypeName(unsigned int columnIndex) const;
std::string getSQLTypeName(std::string tableName, std::string columnName) const;
- std::string getColumnName(int columnIndex) const;
+ std::string getColumnName(unsigned int columnIndex) const;
unsigned int getColumnIndex(std::string tableName, std::string columnName) const;
- std::string getTableName(int columnIndex) const;
+ std::string getTableName(unsigned int columnIndex) const;
std::string getTableName(std::string tableName, std::string columnName) const;
- SQLSMALLINT getSQLType(int columnIndex) const;
+ SQLSMALLINT getSQLType(unsigned int columnIndex) const;
SQLSMALLINT getSQLType(std::string tableName, std::string columnName) const;
- SQLSMALLINT getSQLCType(int columnIndex) const;
+ SQLSMALLINT getSQLCType(unsigned int columnIndex) const;
SQLSMALLINT getSQLCType(std::string tableName, std::string columnName) const;
unsigned int getColumnCount(void) const;
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.cpp Thu Apr 19 21:15:19 2007
@@ -18,24 +18,36 @@
*/
#include "Statement.h"
-Statement::Statement(std::string sqlString) {
- queryString = sqlString;
+Statement::Statement(Connection& connection, HSTMT statementHandle) {
+ this->statementHandle = statementHandle;
+ this->connection = &connection;
+ resultSet = 0;
+
}
Statement::~Statement(void) {
-}
+ connection->freeStatement(*this);
+ SQLFreeHandle(SQL_HANDLE_STMT, statementHandle);
+ delete resultSet;
-HSTMT& Statement::executeQuery(void) { /*throws SQLException*/
- return *(new HSTMT);
}
-void Statement::setConnection(ConnectionImpl* connection) {
+ResultSet* Statement::executeQuery(std::string sql) { /*throws SQLException*/
+ SQLExecDirect(statementHandle, (SQLCHAR*) (char*) sql.c_str(), SQL_NTS);
+ resultSet = new ResultSet(*this);
+
+ return resultSet;
+
}
-ConnectionImpl* Statement::getConnection(void) {
- return connection;
+Connection& Statement::getConnection(void) {
+ return *connection;
}
void Statement::close(void) {
+ delete this;
+}
+HSTMT Statement::getODBCStatement(void) const {
+ return statementHandle;
}
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Statement.h Thu Apr 19 21:15:19 2007
@@ -23,23 +23,28 @@
#include <windows.h>
#include <sql.h>
-#include "ConnectionImpl.h"
+#include "Connection.h"
+#include "ResultSet.h"
+
+class Connection;
+class ResultSet;
class Statement {
private:
- HSTMT preparedStatement;
+ HSTMT statementHandle;
+ Connection* connection;
+ ResultSet* resultSet;
protected:
std::string queryString;
- ConnectionImpl* connection;
public:
- Statement(std::string sqlString);
+ Statement(Connection& connection, HSTMT statementHandle);
~Statement(void);
- HSTMT& executeQuery(); /*throws SQLException*/
- void setConnection(ConnectionImpl* jdbcConnection);
- ConnectionImpl* getConnection(void);
+ HSTMT getODBCStatement(void) const;
+ ResultSet* executeQuery(std::string sql); /*throws SQLException*/
+ Connection& getConnection(void);
void close(void);
};
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp Thu Apr 19 21:15:19 2007
@@ -18,45 +18,63 @@
*/
#include "Table.h"
-Table::Table(GraphBuilder& graphBuilderMetaData, std::string tableName) {
- this->config = &graphBuilderMetaData->getConfig();
+Table::Table(Config& config, std::string tableName) {
+ this->config = &config;
this->tableName = tableName;
this->mappedName = tableName;
convOverConfig = false;
+ Connection* conn = ((DASImpl&) config.getDAS()).getConnection();
+
+ //load PKs
+ ResultSet* pksResultSet = 0;
+
+ try {
+ pksResultSet = conn->getDatabase().getPKs(tableName);
+ } catch (std::runtime_error& e) {
+ convOverConfig = true;
+ return;
+
+ }
+
+ if (pksResultSet != 0) {
+
+ while (pksResultSet->next()) {
+ pkColumns.push_back(pksResultSet->getSQLVarchar(3));
+ }
+
+ }
//load FKs
- Connection& conn = graphBuilderMetaData.getResultSetMetaData().
- getResultSet().getStatement().getConnection();
ResultSet* fksResultSet = 0;
try {
- fksResultSet = &conn.getDatabase().getFKs(tableName);
- } throw (std::runtime_error& e) {
+ fksResultSet = conn->getDatabase().getFKs(tableName);
+ } catch (std::runtime_error& e) {
convOverConfig = true;
return;
}
- while (fkResultSet->next()) {
+ while (fksResultSet->next()) {
std::string fkColumnName = fksResultSet->getSQLVarchar(7);
std::string pkTableName = fksResultSet->getSQLVarchar(2);
std::string pkColumnName = fksResultSet->getSQLVarchar(3);
- Relationship relationship = new Relationship(pkTableName, tableName);
- graphBuilderMetaData->getConfig().addRelationship(*relationship);
+ Relationship* relationship = new Relationship(pkTableName, tableName);
+ config.addRelationship(*relationship);
- KeyPair keyPair = new KeyPair(pkColumnName, fkColumnName);
- relationship.addKeyPair(*keyPair);
+ KeyPair* keyPair = new KeyPair(pkColumnName, fkColumnName);
+ relationship->addKeyPair(*keyPair);
}
}
Table::~Table(void) {
- std::list<Column*>::iterator it;
+ std::map<std::string, Column*>::iterator it;
for (it = columns.begin() ; it != columns.end() ; it++) {
- delete *it;
+ delete it->second;
}
}
@@ -65,85 +83,66 @@
return tableName;
}
-void Table::loadColumn(std::list<Column*>& columns) {
+void Table::addColumns(std::list<Column*>& columns) {
ResultSet* pksResultSet = 0;
- std::list<Columns*>::iterator it;
+ std::list<Column*>::iterator it;
for (it = columns.begin() ; it != columns.end() ;) {
std::map<std::string, Column*>::iterator it2 = this->columns.
find((*it)->getName());
if (it2 != this->columns.end()) {
(*it)->setContainerTable(this);
- this->columns.insert(std::make_pair((*it)->getName(), column));
+ this->columns.insert(std::make_pair((*it)->getName(), *it));
it++;
} else {
std::list<Column*>::iterator aux = it;
it++;
- this->columns.erase(aux);
+ columns.erase(aux);
}
}
- try {
- pksResultSet = &conn.getDatabase().getPKs(tableName);
- } throw (std::runtime_error& e) {}
-
- if (pksResultSet != 0) {
-
- while (pkResultSet->next()) {
- std::string pkColumnName = fksResultSet->getSQLVarchar(3);
- Column* actualColumn = this->column[pkColumnName];
-
- if (actualColumn->getName() == pkColumnName) {
- actualColumn->setPK(true);
-
- break;
-
- }
-
- }
-
- } else {
- std::list<Columns*>::iterator it;
+ if (convOverConfig) {
+ std::list<Column*>::iterator it;
for (it == columns.begin() ; it != columns.end() ; it++) {
Column* column = *it;
std::string columnName = column->getName();
-
+
if (columnName == "id") {
column->setPK(true);
+ pkColumns.push_back(columnName);
+
}
}
- }
-
- if (convOverConfig) {
loadConvOverConfigFKs(columns);
+
}
}
-Config& getConfig(void) const {
+Config& Table::getConfig(void) const {
return *config;
}
-void Table::createGraph(GraphBuilderMetaData& graphBuilderMetaData, commonj::sdo::DataFactoryPtr dataFactory) const {
- std::map<std::string, Column*>::iterator it;
+void Table::createGraph(const GraphBuilderMetaData& graphBuilderMetaData, commonj::sdo::DataFactoryPtr dataFactory) const {
+ std::map<std::string, Column*>::const_iterator it;
std::list<Relationship*>* relationships = config->getRelationships(tableName);
std::map<std::string, Relationship*> columnsRelationships;
for (std::list<Relationship*>::iterator relationshipsIterator = relationships->begin() ;
relationshipsIterator != relationships->end() ; relationshipsIterator++) {
Relationship* relationship = *relationshipsIterator;
- std::map<std::string, KeyPair*>& keyPairs; = relationship->getKeyPairs();
+ std::map<std::string, KeyPair*>& keyPairs = relationship->getKeyPairs();
for (std::map<std::string, KeyPair*>::iterator keyPairsIterator = keyPairs.begin() ;
keyPairsIterator != keyPairs.end() ; keyPairsIterator++) {
- KeyPair* keyPair = *keyPairsIterator;
+ KeyPair* keyPair = keyPairsIterator->second;
columnsRelationships.insert(std::make_pair(keyPair->getFKColumnName(),
relationship));
@@ -155,9 +154,9 @@
delete relationships;
for (it = columns.begin() ; it != columns.end() ; it++) {
- Column& column = **it;
+ Column& column = *(it->second);
- std::map<std::string, Relationship*> it2 = columnsRelationships.find(column.getName());
+ std::map<std::string, Relationship*>::const_iterator it2 = columnsRelationships.find(column.getName());
if (it2 == columnsRelationships.end()) {
dataFactory->addType(DAS_NAMESPACE, column.getName());
@@ -168,7 +167,7 @@
continue;
} else {
- Relationship& relationship = *((*it)->second);
+ Relationship& relationship = *(it2->second);
Table* referecedTable = graphBuilderMetaData.getTable(relationship.getPKTableName());
if (referecedTable != 0) {
@@ -184,10 +183,9 @@
}
-void Table::populateGraph(commonj::sdo::DataObjectPtr dataObject,
- ResultSet& resultSet) const {
+void Table::populateGraph(commonj::sdo::DataObjectPtr dataObject/*, ResultSet& resultSet*/) const {
- std::map<std::string, Column*>::iterator it;
+ /*std::map<std::string, Column*>::iterator it;
for (it = columns.begin() ; it != columns.end() ; it++) {
Column* column = it->second;
@@ -195,7 +193,7 @@
}
- }
+ }*/
}
@@ -208,7 +206,7 @@
}
void Table::loadConvOverConfigFKs(std::list<Column*>& columns) {
- std::list<Columns*>::iterator it;
+ std::list<Column*>::iterator it;
for (it == columns.begin() ; it != columns.end() ; it++) {
Column* column = *it;
@@ -216,17 +214,17 @@
if (columnName.substr(columnName.size() - 4, 3) == "_id") {
std::string referencedTable = columnName.substr(0, columnName.size() - 3);
- Relationship* relationship = graphBuilderMetaData->getConfig().
+ Relationship* relationship = config->
getRelationship(tableName, referencedTable);
if (relationship == 0) {
relationship = new Relationship(tableName, referencedTable);
- graphBuilderMetaData->getConfig().addRelationship(*relationship);
+ config->addRelationship(*relationship);
}
- KeyPair keyPair = new KeyPair("id", column->getName());
- relationship.addKeyPair(*keyPair);
+ KeyPair* keyPair = new KeyPair("id", column->getName());
+ relationship->addKeyPair(*keyPair);
}
@@ -237,4 +235,3 @@
void Table::removeAllColumns(void) {
columns.clear();
}
-
Modified: incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h?view=diff&rev=530633&r1=530632&r2=530633
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h Thu Apr 19 21:15:19 2007
@@ -21,27 +21,36 @@
#include <map>
#include <list>
+#include <string>
#include <stdexcept>
#include "das_constants.h"
#include "Relationship.h"
#include "Config.h"
+#include "ResultSet.h"
#include "Column.h"
+#include "DASImpl.h"
+#include "GraphBuilderMetaData.h"
#include "ODBCTypeHelper.h"
#include "commonj/sdo/DataFactory.h"
#include "commonj/sdo/DataObject.h"
+class GraphBuilderMetaData;
+class Config;
+class Column;
+
class Table {
private:
std::map<std::string, Column*> columns;
+ std::list<std::string> pkColumns;
Config* config;
std::string tableName;
std::string mappedName;
bool convOverConfig;
public:
- Table(GraphBuilderMetaData& graphBuilderMetaData, std::string tableName);
+ Table(Config& config, std::string tableName);
virtual ~Table(void);
void addColumns(std::list<Column*>& columns);
@@ -52,10 +61,9 @@
std::string getMappedName(void) const;
Config& getConfig(void) const;
std::string getTableName(void) const;
- Table* clone();
- void createGraph(GraphBuilderMetaData& graphBuilderMetaData, commonj::sdo::DataFactoryPtr dataFactory) const;
- void populateGraph(commonj::sdo::DataObjectPtr dataObject, ResultSet& resultSet) const;
+ void createGraph(const GraphBuilderMetaData& graphBuilderMetaData, commonj::sdo::DataFactoryPtr dataFactory) const;
+ void populateGraph(commonj::sdo::DataObjectPtr dataObject/*, ResultSet& resultSet*/) const;
};
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org