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/14 09:16:51 UTC

svn commit: r528775 - in /incubator/tuscany/cpp/das: VSExpress/tuscany_das/das_runtime/ runtime/das_lite/src/

Author: adrianocrestani
Date: Sat Apr 14 00:16:50 2007
New Revision: 528775

URL: http://svn.apache.org/viewvc?view=rev&rev=528775
Log: (empty)

Modified:
    incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.ncb
    incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.sln
    incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.suo
    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/Config.cpp
    incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h
    incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp
    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/Table.cpp
    incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h

Modified: incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.ncb
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.ncb?view=diff&rev=528775&r1=528774&r2=528775
==============================================================================
Binary files - no diff available.

Modified: incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.sln
URL: http://svn.apache.org/viewvc/incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.sln?view=diff&rev=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.sln (original)
+++ incubator/tuscany/cpp/das/VSExpress/tuscany_das/das_runtime/das_runtime.sln Sat Apr 14 00:16:50 2007
@@ -5,8 +5,6 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "das_lite", "..\das_lite\das_lite.vcproj", "{FFDC7773-6FA6-4477-8624-8D96AACB6BF0}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "d", "..\..\..\..\d\d.vcproj", "{D188253F-3662-4624-ADFB-72F072541902}"
-EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
@@ -20,10 +18,6 @@
 		{FFDC7773-6FA6-4477-8624-8D96AACB6BF0}.Debug|Win32.Build.0 = Debug|Win32
 		{FFDC7773-6FA6-4477-8624-8D96AACB6BF0}.Release|Win32.ActiveCfg = Release|Win32
 		{FFDC7773-6FA6-4477-8624-8D96AACB6BF0}.Release|Win32.Build.0 = Release|Win32
-		{D188253F-3662-4624-ADFB-72F072541902}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D188253F-3662-4624-ADFB-72F072541902}.Debug|Win32.Build.0 = Debug|Win32
-		{D188253F-3662-4624-ADFB-72F072541902}.Release|Win32.ActiveCfg = Release|Win32
-		{D188253F-3662-4624-ADFB-72F072541902}.Release|Win32.Build.0 = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

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=528775&r1=528774&r2=528775
==============================================================================
Binary files - no diff available.

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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp Sat Apr 14 00:16:50 2007
@@ -30,10 +30,6 @@
 
 Column::~Column(void) {}
 
-void Column::setReferencedTableName(std::string referencedTable) {
-	this->referencedTableName = referencedTableName;
-}
-
 void Column::setContainerTable(Table* containerTable) {
 	this->containerTable = containerTable;
 }
@@ -46,20 +42,12 @@
 	this->pk = pk;
 }
 
-bool Column::isFK(void) const {
-	return (references != "");
-}
-
 bool Column::isPK(void) const {
 	return pk;
 }
 
 std::string Column::getName(void) const {
 	return columnName;
-}
-
-std::string Column::getReferencedTableName(void) const {
-	return referencedTableName;
 }
 
 SQLSMALLINT Column::getSQLType(void) const {

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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h Sat Apr 14 00:16:50 2007
@@ -28,28 +28,28 @@
 
 	private:
 		bool pk;
-		std::string referencedTableName;
 		std::string columnName;
 		std::string mappedName;
 		SQLSMALLINT sqlType;
 		Table* containerTable;
 
 		void setContainerTable(Table* containerTable);
-		Table* getContainerTable(void) const;
-
+		
 	public:
 		Column(std::string columnName, SQLSMALLINT sqlType);
 		virtual ~Column(void);
 
-		void setReferencedTable(std::string referencedTableName);
+		void setReferencedTableAndColumn(std::string referencedTableName, std::string referencedColumnName);
 		void setPK(bool pk);
 		void setMappedName(std::string mappedName);
-
+		
 		std::string getMappedName(void) const;
 		bool isFK(void) const;
 		std::string getReferencedTableName(void) const;
+		std::string getReferencedColumnName(void) const;
 		bool isPK(void) const;
 		SQLSMALLINT getSQLType(void) const;
+		Table* getContainerTable(void) const;
 
 		std::string getName(void) const;
 

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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp Sat Apr 14 00:16:50 2007
@@ -92,13 +92,19 @@
 
 }
 
-Column* Config::getColumn(std::string columnName) const {
-	std::map<std::string, Column*>::iterator columnIterator = columns.find(columnName);
+std::list<Relationship*>* Config::getRelationships(std::string tableName) const {
+	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;
+
+		if (relationship->getFKTableName() == tableName) {
+			relationshipList->push_back(relationship);
+		}	
 
-	if (columnIterator == columns.end()) {
-		return 0;
 	}
 
-	return columnIterator->second;
+	return relationshipList;
 
 }

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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h Sat Apr 14 00:16:50 2007
@@ -44,6 +44,7 @@
 		
 		Table* getTable(std::string tableName) const;
 		Relationship* getRelationship(std::string tableName, std::string referencedTableName) const;
+		std::list<Relationship*>* getRelationships(std::string tableName) 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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp Sat Apr 14 00:16:50 2007
@@ -67,16 +67,15 @@
 	commonj::sdo::DataFactoryPtr dataFactory = commonj::sdo::DataFactory::getDataFactory();
 	dataFactory->addType(DAS_NAMESPACE, DAS_ROOT_NAME);
 
-	std::map<std::string, Table*>& tables = config.getTables();
 	std::map<std::string, Table*>::iterator it;
 	
-	for (it = tables.begin() ; it != tables.end() ; it++) {
+	for (it = graphTables.begin() ; it != graphTables.end() ; it++) {
 		Table& table = **it;
 		std::string tableName = table.getTableName();
 
 		dataFactory->addType(DAS_NAMESPACE, tableName);
 		dataFactory->addPropertyToType(DAS_NAMESPACE,DAS_ROOT_NAME,DAS_ROOT_NAME + 
-			tableName + "Property",DAS_NAMESPACE, tableName, true, false, true);
+			tableName + "Property", DAS_NAMESPACE, tableName, true, false, true);
 
 	}
 

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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.cpp Sat Apr 14 00:16:50 2007
@@ -38,7 +38,7 @@
 	if (metaData.getSQLType(columnIndex) == SQL_CHAR) {
 		SQLWCHAR strAux = 0;
 		SQLINTEGER length = 0;
-		SQLGetData(stmt->getODBCStatement(), columnIndex, SQL_C_WCHAR, &strAux, 1, &length);
+		SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_WCHAR, &strAux, 1, &length);
 		
 		ret = (wchar_t) strAux;
 		
@@ -50,8 +50,8 @@
 
 }
 
-wchar_t ResultSet::getSQLChar(std::string columnName) const {
-	return getSQLChar(metaData.getColumnIndex(columnName));
+wchar_t ResultSet::getSQLChar(std::string tableName, std::string columnName) const {
+	return getSQLChar(metaData.getColumnIndex(tableName + columnName));
 }
 
 float ResultSet::getSQLReal(unsigned int columnIndex) const {
@@ -60,7 +60,7 @@
 	if (metaData.getSQLType(columnIndex) == SQL_REAL) {
 		SQLFLOAT real = 0;
 		SQLINTEGER length = 0;
-		SQLGetData(stmt->getODBCStatement(), columnIndex, SQL_C_FLOAT, &real, 1, &length);
+		SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_FLOAT, &real, 1, &length);
 		
 		ret = (float) real;
 		
@@ -72,8 +72,8 @@
 
 }
 
-float ResultSet::getSQLReal(std::string columnName) const {
-	return getSQLReal(metaData.getColumnIndex(columnName));
+float ResultSet::getSQLReal(std::string tableName, std::string columnName) const {
+	return getSQLReal(metaData.getColumnIndex(tableName + columnName));
 }
 
 double ResultSet::getSQLFloat(unsigned int columnIndex) const {
@@ -82,7 +82,7 @@
 	if (metaData.getSQLType(columnIndex) == SQL_FLOAT) {
 		SQLDOUBLE data = 0;
 		SQLINTEGER length = 0;
-		SQLGetData(stmt->getODBCStatement(), columnIndex, SQL_C_DOUBLE, &data, 1, &length);
+		SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_DOUBLE, &data, 1, &length);
 		
 		ret = (double) strAux;
 		
@@ -94,8 +94,8 @@
 
 }
 
-double ResultSet::getSQLFloat(std::string columnName) const {
-	return getSQLFloat(metaData.getColumnIndex(columnName));
+double ResultSet::getSQLFloat(std::string tableName, std::string columnName) const {
+	return getSQLFloat(metaData.getColumnIndex(tableName + columnName));
 }
 
 double ResultSet::getSQLDouble(unsigned int columnIndex) const {
@@ -104,7 +104,7 @@
 	if (metaData.getSQLType(columnIndex) == SQL_DOUBLE) {
 		SQLDOUBLE data = 0;
 		SQLINTEGER length = 0;
-		SQLGetData(stmt->getODBCStatement(), columnIndex, SQL_C_DOUBLE, &data, 1, &length);
+		SQLGetData(stmt->getODBCStatement(), columnIndex + 1, SQL_C_DOUBLE, &data, 1, &length);
 		
 		ret = (double) strAux;
 		
@@ -116,8 +116,8 @@
 
 }
 
-double ResultSet::getSQLDouble(std::string columnName) const {
-	return getSQLDouble(metaData.getColumnIndex(columnName));
+double ResultSet::getSQLDouble(std::string tableName, std::string columnName) const {
+	return getSQLDouble(metaData.getColumnIndex(tableName + columnName));
 }
 
 std::string ResultSet::getSQLDecimal(unsigned int columnIndex) const {
@@ -127,11 +127,11 @@
 		SQLPOINTER sqlPtr = 0;
 		SQLCHAR strAux[1];
 		SQLINTEGER length = 0;
-		SQLGetData(statement, column, SQL_C_CHAR, &strAux, 1, &length);
+		SQLGetData(statement, columnIndex + 1, 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);
+		SQLGetData(statement, columnIndex + 1, SQL_C_CHAR, sqlPtr, length, &aux);
 			
 		std::string ret = (char*) sqlPtr);
 		delete [] sqlPtr;
@@ -145,13 +145,13 @@
 
 }
 
-std::string ResultSet::getSQLDecimal(std::string columnName) const {
-	return getSQLDecimal(metaData.getColumnIndex(columnName));
+std::string ResultSet::getSQLDecimal(std::string tableName, std::string columnName) const {
+	return getSQLDecimal(metaData.getColumnIndex(tableName + columnName));
 }
 
 bool ResultSet::isNull(unsigned int columnIndex) const {}
 
-bool ResultSet::isNull(std::string columnName) const {}
+bool ResultSet::isNull(std::string tableName, std::string columnName) const {}
 
 bool ResultSet::next(void) {
 	return (SQL_SUCCESS == SQLFetch(stmt->getODBCStatement()));

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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSet.h Sat Apr 14 00:16:50 2007
@@ -40,22 +40,22 @@
 		const Statement& getStatement(void) const;
 		
 		wchar_t getSQLChar(unsigned int columnIndex) const;
-		wchar_t getSQLChar(std::string columnName) const;
+		wchar_t getSQLChar(std::string tableName, std::string columnName) const;
 
 		float getSQLReal(unsigned int columnIndex) const;
-		float getSQLReal(std::string columnName) const;
+		float getSQLReal(std::string tableName, std::string columnName) const;
 
 		double getSQLFloat(unsigned int columnIndex) const;
-		double getSQLFloat(std::string columnName) const;
+		double getSQLFloat(std::string tableName, std::string columnName) const;
 
 		double getSQLDouble(unsigned int columnIndex) const;
-		double getSQLDouble(std::string columnName) const;
+		double getSQLDouble(std::string tableName, std::string columnName) const;
 
 		std::string getSQLDecimal(unsigned int columnIndex) const;
-		std::string getSQLDecimal(std::string columnName) const;
+		std::string getSQLDecimal(std::string tableName, std::string columnName) const;
 
 		bool isNull(unsigned int columnIndex) const;
-		bool isNull(std::string columnName) const;
+		bool isNull(std::string tableName, std::string columnName) const;
 
 		unsigned int rowCount(void) 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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp Sat Apr 14 00:16:50 2007
@@ -23,7 +23,10 @@
 	unsigned int columnCount = getColumnCount();
 	
 	for (unsigned int i = 1 ; i <= columnCount ; i++) {
-		columnsIndexes.insert(std::make_pair(getColumnName(i), i - 1));
+		std::string columnName = getColumnName(i);
+		std::string tableName = getTableName(i);
+		columnsIndexes.insert(std::make_pair(tableName + columnName, i - 1));
+
 	}
 
 }
@@ -91,14 +94,14 @@
 
 SQLSMALLINT ResultSetMetaData::getSQLType(unsigned int columnIndex) {
 	SQLSMALLINT sqlType = 0;
-	SQLColAttribute(resultSet->getStatement().getODBCStatement(), column, SQL_DESC_TYPE, NULL, NULL, NULL, &sqlType);
+	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_TYPE, NULL, NULL, NULL, &sqlType);
 		
 	return sqlType;
 
 }
 
-SQLSMALLINT ResultSetMetaData::getSQLType(std::string columnName) {
-	return getSQLType(getColumnIndex(columnName));
+SQLSMALLINT ResultSetMetaData::getSQLType(std::string tableName, std::string columnName) {
+	return getSQLType(getColumnIndex(tableName + columnName));
 }
 
 
@@ -106,10 +109,10 @@
 	SQLCHAR* sqlPtr = 0;
 	char strAux[1];
 	SQLSMALLINT length = 0;
-	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex, SQL_DESC_TYPE_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
+	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_TYPE_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
 	length++;
 	sqlPtr = (SQLCHAR*) new SQLCHAR[length];
-	SQLColAttributeA(resultSet->getStatement().getODBCStatement(), columnIndex, SQL_DESC_TYPE_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
+	SQLColAttributeA(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_TYPE_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
 
 	std::string ret((char*) sqlPtr);
 	delete [] sqlPtr;
@@ -118,8 +121,8 @@
 
 }
 
-std::string ResultSetMetaData::getSQLTypeName(std::string columnName) {
-	unsigned int columnIndex = getColumnIndex(columnName);
+std::string ResultSetMetaData::getSQLTypeName(std::string tableName, std::string columnName) {
+	unsigned int columnIndex = getColumnIndex(tableName + columnName);
 }
 
 
@@ -127,10 +130,10 @@
 	SQLCHAR* sqlPtr = 0;
 	char strAux[1];
 	SQLSMALLINT length = 0;
-	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex, SQL_DESC_BASE_COLUMN_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
+	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_BASE_COLUMN_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
 	length++;
 	sqlPtr = (SQLCHAR*) new SQLCHAR[length];
-	SQLColAttributeA(resultSet->getStatement().getODBCStatement(), columnIndex, SQL_DESC_BASE_COLUMN_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
+	SQLColAttributeA(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_BASE_COLUMN_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
 
 	std::string ret((char*) sqlPtr);
 	delete [] sqlPtr;
@@ -139,8 +142,8 @@
 
 }
 
-unsigned int ResultSetMetaData::getColumnIndex(std::string columnName) {
-	std::map<std::string, unsigned int>::iterator it = columnsIndexes.find(columnName);
+unsigned int ResultSetMetaData::getColumnIndex(std::string tableName, std::string columnName) {
+	std::map<std::string, unsigned int>::iterator it = columnsIndexes.find(tableName + columnName);
 
 	if (it == columnsIndexes.end()) {
 		throw logic_error("No such column name: " + columnName);
@@ -155,10 +158,10 @@
 	SQLCHAR* sqlPtr = 0;
 	char strAux[1];
 	SQLSMALLINT length = 0;
-	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex, SQL_DESC_TABLE_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
+	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_TABLE_NAME, &strAux, 1, (SQLSMALLINT*) &length, NULL);
 	length++;
 	sqlPtr = (SQLCHAR*) new SQLCHAR[length];
-	SQLColAttributeA(resultSet->getStatement().getODBCStatement(), columnIndex, SQL_DESC_TABLE_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
+	SQLColAttributeA(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_TABLE_NAME, sqlPtr, length, (SQLSMALLINT*) &length, NULL);
 
 	std::string ret((char*) sqlPtr);
 	delete [] sqlPtr;
@@ -167,21 +170,21 @@
 
 }
 
-std::string ResultSetMetaData::getTableName(std::string columnName) {
-	return getTableName(getColumnIndex(columnName));
+std::string ResultSetMetaData::getTableName(std::string tableName, std::string columnName) {
+	return getTableName(getColumnIndex(tableName + columnName));
 }
 
 
 SQLSMALLINT ResultSetMetaData::getSQLType(unsigned int columnIndex) {
 	SQLSMALLINT sqlType = 0;
-	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex, SQL_DESC_TYPE, NULL, NULL, NULL, &sqlType);
+	SQLColAttribute(resultSet->getStatement().getODBCStatement(), columnIndex + 1, SQL_DESC_TYPE, NULL, NULL, NULL, &sqlType);
 		
 	return sqlType;
 
 }
 
-SQLSMALLINT ResultSetMetaData::getSQLType(std::string columnName) {
-	return getSQLType(getColumnIndex(columnName));
+SQLSMALLINT ResultSetMetaData::getSQLType(std::string tableName, std::string columnName) {
+	return getSQLType(getColumnIndex(tableName + columnName));
 }
 
 
@@ -189,8 +192,8 @@
 	return getSQLCType(getSQLType(columnIndex));
 }
 
-SQLSMALLINT ResultSetMetaData::getSQLCType(std::string columnName) {
-	return getSQLCType(getSQLType(getColumnIndex(columnName)));
+SQLSMALLINT ResultSetMetaData::getSQLCType(std::string tableName, std::string columnName) {
+	return getSQLCType(getSQLType(getColumnIndex(tableName + columnName)));
 }
 
 unsigned int ResultSetMetaData::getColumnCount(void) {
@@ -198,6 +201,17 @@
 	SQLRETURN ret = SQLColAttribute(resultSet->getStatement().getODBCStatement(), NULL, SQL_DESC_COUNT, NULL, NULL, NULL, &columnCount);
 	
 	return (unsigned int) columnCount;
+
+}
+
+bool ResultSetMetaData::containsColumn(std::string tableName, std::string columnName) const {
+	std::map<std::string, int>::iterator it = columnsIndexes.find(tableName + columnName);
+	
+	if (it == columnsIndexes.end()) {
+		return false;
+	}
+
+	return true;
 
 }
 

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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h Sat Apr 14 00:16:50 2007
@@ -35,32 +35,33 @@
 		ResultSetMetaData(ResultSet* aResultSet);
 		virtual ~ResultSetMetaData(void);
 
-		SQLSMALLINT getSQLCType(SQLSMALLINT sqlType);
+		SQLSMALLINT getSQLCType(SQLSMALLINT sqlType) const;
 
 	public:
 		const ResultSet& getResultSet(void) const;
 
-		SQLSMALLINT getSQLType(int columnIndex);
-		SQLSMALLINT getSQLType(std::string columnName);
+		SQLSMALLINT getSQLType(int columnIndex) const;
+		SQLSMALLINT getSQLType(std::string tableName, std::string columnName) const;
 
-		std::string getSQLTypeName(int columnIndex);
-		std::string getSQLTypeName(std::string columnName);
+		std::string getSQLTypeName(int columnIndex) const;
+		std::string getSQLTypeName(std::string tableName, std::string columnName) const;
 
-		std::string getColumnName(int columnIndex);
-		unsigned int getColumnIndex(std::string columnName);
+		std::string getColumnName(int columnIndex) const;
+		unsigned int getColumnIndex(std::string tableName, std::string columnName) const;
 
-		std::string getTableName(int columnIndex);
-		std::string getTableName(std::string columnName);
+		std::string getTableName(int columnIndex) const;
+		std::string getTableName(std::string tableName, std::string columnName) const;
 
-		SQLSMALLINT getSQLType(int columnIndex);
-		SQLSMALLINT getSQLType(std::string columnName);
+		SQLSMALLINT getSQLType(int columnIndex) const;
+		SQLSMALLINT getSQLType(std::string tableName, std::string columnName) const;
 
-		SQLSMALLINT getSQLCType(int columnIndex);
-		SQLSMALLINT getSQLCType(std::string columnName);
+		SQLSMALLINT getSQLCType(int columnIndex) const;
+		SQLSMALLINT getSQLCType(std::string tableName, std::string columnName) const;
 
-		unsigned int getColumnCount(void);
+		unsigned int getColumnCount(void) const;
+
+		bool containsColumn(std::string tableName, std::string columnName) const;
 
-		
 };
 
 #endif //RESULT_SET_META_DATA_H

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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp Sat Apr 14 00:16:50 2007
@@ -19,11 +19,36 @@
 #include "Table.h"
 
 Table::Table(GraphBuilder& graphBuilderMetaData, std::string tableName) {
-	this->graphBuilderMetaData = &graphBuilderMetaData;
+	this->config = &graphBuilderMetaData->getConfig();
 	this->tableName = tableName;
 	this->mappedName = tableName;
 	convOverConfig = false;
-	loadFKs();
+	
+	//load FKs
+	Connection& conn = graphBuilderMetaData.getResultSetMetaData().
+		getResultSet().getStatement().getConnection();
+	ResultSet* fksResultSet = 0;
+
+	try {
+		fksResultSet = &conn.getDatabase().getFKs(tableName);
+	} throw (std::runtime_error& e) {
+		convOverConfig = true;
+		return;
+
+	}
+			
+	while (fkResultSet->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);
+		
+		KeyPair keyPair = new KeyPair(pkColumnName, fkColumnName);
+		relationship.addKeyPair(*keyPair);
+
+	}
 	
 }
 
@@ -96,62 +121,65 @@
 
 	}
 
-}
-
-void Table::loadFKs(void) {
-	Connection& conn = graphBuilderMetaData->getResultSetMetaData().
-		getResultSet().getStatement().getConnection();
-	ResultSet* fksResultSet = 0;
-
-	try {
-		fksResultSet = &conn.getDatabase().getFKs(tableName);
-	} throw (std::runtime_error& e) {
-		convOverConfig = true;
+	if (convOverConfig) {
 		loadConvOverConfigFKs(columns);
-		return;
-
 	}
-			
-	while (fkResultSet->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);
-		
-		KeyPair keyPair = new KeyPair(pkColumnName, fkColumnName);
-		relationship.addKeyPair(*keyPair);
 
-	}
+}
 
+Config& getConfig(void) const {
+	return *config;
 }
 
-void Table::createGraph(commonj::sdo::DataFactoryPtr dataFactory) const {
+void Table::createGraph(GraphBuilderMetaData& graphBuilderMetaData, commonj::sdo::DataFactoryPtr dataFactory) const {
 	std::map<std::string, Column*>::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();
+			
+			for (std::map<std::string, KeyPair*>::iterator keyPairsIterator = keyPairs.begin() ; 
+				keyPairsIterator != keyPairs.end() ; keyPairsIterator++) {
+					KeyPair* keyPair = *keyPairsIterator;
+
+					columnsRelationships.insert(std::make_pair(keyPair->getFKColumnName(), 
+						relationship));
+
+			}
+
+	}
+
+	delete relationships;
 
 	for (it = columns.begin() ; it != columns.end() ; it++) {
 		Column& column = **it;
-		dataFactory->addType(DAS_NAMESPACE, column.getName());
+	
+		std::map<std::string, Relationship*> it2 = columnsRelationships.find(column.getName());
 
-		if (column.isFK()) {
-			std::string referencedTableName = column.getReferencedTableName();
-			Table* referencedTable = graphBuilderMetaData->getTable(referencedTableName);
-
-			if (referencedTable != 0) {
-				dataFactory->addPropertyToType(DAS_NAMESPACE,referencedTableName,
-					referencedTable + tableName + "Property", DAS_NAMESPACE, 
-					tableName, true, false, false);
-
-			} else {
-				dataFactory->addPropertyToType(DAS_NAMESPACE,tableName,
-					tableName + column.getName() + "Property", SDO_NAMESPACE, 
-					ODBCTypeHelper::getSDOType(column.getSQLType()) , false, false, true);
+		if (it2 == columnsRelationships.end()) {
+			dataFactory->addType(DAS_NAMESPACE, column.getName());
+			dataFactory->addPropertyToType(DAS_NAMESPACE,tableName,
+				tableName + column.getName() + "Property", SDO_NAMESPACE, 
+				ODBCTypeHelper::getSDOType(column.getSQLType()) , false, false, true);
 
-			}
+			continue;
+	
+		} else {
+			Relationship& relationship = *((*it)->second);
+			Table* referecedTable = graphBuilderMetaData.getTable(relationship.getPKTableName());
+			
+			if (referecedTable != 0) {
+				dataFactory->addPropertyToType(DAS_NAMESPACE, tableName,
+				tableName + relationship.getPKTableName() + "Property", DAS_NAMESPACE, 
+					relationship.getPKTableName(), true, false, false);
 
+			}
+			
 		}
-
+	
 	}
 
 }
@@ -161,7 +189,7 @@
 
 	std::map<std::string, Column*>::iterator it;
 	for (it = columns.begin() ; it != columns.end() ; it++) {
-		Column* column = it->first;
+		Column* column = it->second;
 
 		if (column->isFK()) {
 
@@ -205,3 +233,8 @@
 	}
 
 }
+
+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=528775&r1=528774&r2=528775
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h Sat Apr 14 00:16:50 2007
@@ -25,6 +25,7 @@
 
 #include "das_constants.h"
 #include "Relationship.h"
+#include "Config.h"
 #include "Column.h"
 #include "ODBCTypeHelper.h"
 #include "commonj/sdo/DataFactory.h"
@@ -34,7 +35,7 @@
 
 	private:
 		std::map<std::string, Column*> columns;
-		GraphBuilder* graphBuilderMetaData;
+		Config* config;
 		std::string tableName;
 		std::string mappedName;
 		bool convOverConfig;
@@ -44,14 +45,16 @@
 		virtual ~Table(void);
 
 		void addColumns(std::list<Column*>& columns);
-		void loadFKs(void);
 		void loadConvOverConfigFKs(std::list<Column*>& columns);
 		void setMappedName(std::string mappedName);
+		void removeAllColumns(void);
 
 		std::string getMappedName(void) const;
+		Config& getConfig(void) const;
 		std::string getTableName(void) const;
+		Table* clone();
 		
-		void createGraph(commonj::sdo::DataFactoryPtr dataFactory) const;
+		void createGraph(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