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/22 10:34:54 UTC

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

Author: adrianocrestani
Date: Sun Apr 22 01:34:52 2007
New Revision: 531156

URL: http://svn.apache.org/viewvc?view=rev&rev=531156
Log:
- Modified the location where relationships between tables to Config class
- Deleted unsed file: ResultMetaData .cpp and .h

Removed:
    incubator/tuscany/cpp/das/runtime/das_lite/src/ResultMetadata.cpp
    incubator/tuscany/cpp/das/runtime/das_lite/src/ResultMetadata.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/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/GraphBuilder.cpp
    incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp
    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/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_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=531156&r1=531155&r2=531156
==============================================================================
--- 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 Sun Apr 22 01:34:52 2007
@@ -138,204 +138,204 @@
 	</References>
 	<Files>
 		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 			>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\BaseCommandImpl.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\BaseCommandImpl.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Column.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\Column.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\CommandImpl.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\Command.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Config.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\CommandImpl.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Connection.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\Config.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\DAS.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\Connection.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\DASFactory.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\DAS.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\DASFactoryImpl.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\das_constants.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\DASImpl.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\DASFactory.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Database.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\DASFactoryImpl.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\GraphBuilder.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\DASImpl.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\GraphBuilderMetaData.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\Database.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\KeyPair.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\GraphBuilder.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\ODBCTypeHelper.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\GraphBuilderMetaData.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\PreparedStatement.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\KeyPair.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\ReadCommandImpl.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\ODBCTypeHelper.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Relationship.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\PreparedStatement.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\ResultSet.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\ReadCommandImpl.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\ResultSetMetaData.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\Relationship.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\SqlException.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\ResultSet.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Statement.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\ResultSetMetaData.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Table.cpp"
+				RelativePath="..\..\..\runtime\das_lite\src\SqlException.h"
 				>
 			</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"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\BaseCommandImpl.h"
+				RelativePath="..\..\..\runtime\das_lite\src\Statement.h"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Column.h"
+				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>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Command.h"
+				RelativePath="..\..\..\runtime\das_lite\src\BaseCommandImpl.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\CommandImpl.h"
+				RelativePath="..\..\..\runtime\das_lite\src\Column.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Config.h"
+				RelativePath="..\..\..\runtime\das_lite\src\CommandImpl.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Connection.h"
+				RelativePath="..\..\..\runtime\das_lite\src\Config.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\DAS.h"
+				RelativePath="..\..\..\runtime\das_lite\src\Connection.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\das_constants.h"
+				RelativePath="..\..\..\runtime\das_lite\src\DAS.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\DASFactory.h"
+				RelativePath="..\..\..\runtime\das_lite\src\DASFactory.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\DASFactoryImpl.h"
+				RelativePath="..\..\..\runtime\das_lite\src\DASFactoryImpl.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\DASImpl.h"
+				RelativePath="..\..\..\runtime\das_lite\src\DASImpl.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Database.h"
+				RelativePath="..\..\..\runtime\das_lite\src\Database.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\GraphBuilder.h"
+				RelativePath="..\..\..\runtime\das_lite\src\GraphBuilder.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\GraphBuilderMetaData.h"
+				RelativePath="..\..\..\runtime\das_lite\src\GraphBuilderMetaData.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\KeyPair.h"
+				RelativePath="..\..\..\runtime\das_lite\src\KeyPair.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\ODBCTypeHelper.h"
+				RelativePath="..\..\..\runtime\das_lite\src\ODBCTypeHelper.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\PreparedStatement.h"
+				RelativePath="..\..\..\runtime\das_lite\src\PreparedStatement.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\ReadCommandImpl.h"
+				RelativePath="..\..\..\runtime\das_lite\src\ReadCommandImpl.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Relationship.h"
+				RelativePath="..\..\..\runtime\das_lite\src\Relationship.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\ResultSet.h"
+				RelativePath="..\..\..\runtime\das_lite\src\ResultSet.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\ResultSetMetaData.h"
+				RelativePath="..\..\..\runtime\das_lite\src\ResultSetMetaData.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\SqlException.h"
+				RelativePath="..\..\..\runtime\das_lite\src\SqlException.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Statement.h"
+				RelativePath="..\..\..\runtime\das_lite\src\Statement.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\runtime\das_lite\src\Table.h"
+				RelativePath="..\..\..\runtime\das_lite\src\Table.cpp"
 				>
 			</File>
 		</Filter>

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=531156&r1=531155&r2=531156
==============================================================================
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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Column.cpp Sun Apr 22 01:34:52 2007
@@ -24,6 +24,7 @@
 	this->sqlType = sqlType;
 	containerTable = 0;
 	pk = false;
+	keyPairs = 0;
 	
 }
 
@@ -53,10 +54,28 @@
 	return sqlType;
 }
 
+std::list<KeyPair*>& Column::getKeyPairs(void) const {
+	return *keyPairs;
+}
+
+bool Column::isFK(void) const {
+	return (keyPairs == 0 || keyPairs->size() > 0);
+}
+
 void Column::setMappedName(std::string mappedName) {
 	this->mappedName = mappedName;
 }
 
 std::string Column::getMappedName(void) const {
 	return mappedName;
+}
+
+void Column::addKeyPair(KeyPair& keyPair) {
+
+	if (keyPairs == 0) {
+		keyPairs= new std::list<KeyPair*>();
+	}
+
+	keyPairs->push_back(&keyPair);
+
 }

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Column.h Sun Apr 22 01:34:52 2007
@@ -23,6 +23,7 @@
 #include <sql.h>
 #include <sqlext.h>
 #include <string>
+#include <list>
 
 #include "Table.h"
 #include "das_constants.h"
@@ -37,6 +38,7 @@
 		std::string mappedName;
 		SQLSMALLINT sqlType;
 		Table* containerTable;
+		std::list<KeyPair*>* keyPairs;
 
 		void setContainerTable(Table* containerTable);
 		
@@ -47,6 +49,7 @@
 		void setReferencedTableAndColumn(std::string referencedTableName, std::string referencedColumnName);
 		void setPK(bool pk);
 		void setMappedName(std::string mappedName);
+		void addKeyPair(KeyPair& keyPair);
 		
 		std::string getMappedName(void) const;
 		bool isFK(void) const;
@@ -55,6 +58,7 @@
 		bool isPK(void) const;
 		SQLSMALLINT getSQLType(void) const;
 		Table* getContainerTable(void) const;
+		std::list<KeyPair*>& getKeyPairs(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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Config.cpp Sun Apr 22 01:34:52 2007
@@ -22,6 +22,7 @@
 	relationships = new std::map<std::string, Relationship*>();
 	tables = new std::map<std::string, Table*>();
 	this->das = &das;
+	convOverConfig = false;
 		
 }
 
@@ -47,16 +48,96 @@
 
 void Config::addTable(Table& table) {
 	tables->insert(std::make_pair(table.getTableName(), &table));
+
+	//load PKs
+	ResultSet* pksResultSet = 0;
+	Connection* conn = ((DASImpl*) das)->getConnection();
+
+	try {
+		pksResultSet = conn->getDatabase().getPKs(table.getTableName());
+	} catch (std::runtime_error& e) {
+		convOverConfig = true;
+		return;
+
+	}
+
+	if (pksResultSet != 0) {
+			
+		while (pksResultSet->next()) {
+			table.addPKColumn(pksResultSet->getSQLVarchar(3));
+		}
+
+	}
+	
+	//load FKs
+	ResultSet* fksResultSet = 0;
+
+	try {
+		fksResultSet = conn->getDatabase().getFKs(table.getTableName());
+	} catch (std::runtime_error& e) {
+		convOverConfig = true;
+		return;
+
+	}
+			
+	while (fksResultSet->next()) {
+		std::string fkColumnName = fksResultSet->getSQLVarchar(7);
+		std::string pkTableName = fksResultSet->getSQLVarchar(2);
+		std::string pkColumnName = fksResultSet->getSQLVarchar(3);
+
+		fkColumnName = fkColumnName.substr(1, fkColumnName.size() - 2); 
+		pkColumnName = pkColumnName.substr(1, pkColumnName.size() - 2); 
+
+		Relationship* relationship = getRelationship(pkTableName, table.getTableName());
+		
+		if (relationship == 0) {
+			relationship = new Relationship(pkTableName, table.getTableName());
+			addRelationship(*relationship);
+
+		}
+		
+		KeyPair* keyPair = new KeyPair(pkColumnName, fkColumnName);
+		relationship->addKeyPair(*keyPair);
+
+	}
+
 }
 
 void Config::addRelationship(Relationship& relationship) {
-	relationships->insert(std::make_pair(relationship.getPKTableName() + relationship.getFKTableName(), 
+	relationships->insert(std::make_pair(relationship.getPKTableName() + relationship.getFKTableName(),
 		&relationship));
+	relationship.setConfig(this);
+
+}
+
+std::list<Relationship*>* Config::getRelationships(std::string tableName, bool pkTable) const {
+	std::list<Relationship*>* relationshipList = new std::list<Relationship*>();
+	std::map<std::string, Relationship*>::const_iterator it;
+
+	for (it = relationships->begin() ; it != relationships->end() ; it++) {
+		
+		if (pkTable) {
+
+			if (it->second->getPKTableName() == tableName) {
+				relationshipList->push_back(it->second);
+			}
+
+		} else {
+
+			if (it->second->getFKTableName() == tableName) {
+				relationshipList->push_back(it->second);
+			}
+
+		}
+
+	}
+
+	return relationshipList;
+
 }
 
 Relationship* Config::getRelationship(std::string tableName, std::string referencedTableName) const {
-	std::map<std::string, Relationship*>::iterator it = 
-		relationships->find(tableName + referencedTableName);
+	std::map<std::string, Relationship*>::iterator it = relationships->find(tableName + referencedTableName);
 
 	if (it == relationships->end()) {
 		return 0;
@@ -74,6 +155,10 @@
 	return *tables;
 }
 
+bool Config::isConvOverConfig(void) const {
+	return convOverConfig;
+}
+
 Table* Config::getTable(std::string tableName) const {
 	std::map<std::string, Table*>::iterator tableIterator = tables->find(tableName);
 
@@ -85,23 +170,19 @@
 
 }
 
-std::list<Relationship*>* Config::getRelationships(std::string tableName) const {
-	std::map<std::string, Relationship*>::iterator it;
-	std::list<Relationship*>* relationshipList = new std::list<Relationship*>();
+DAS& Config::getDAS(void) const {
+	return *das;
+}
 
-	for (it = relationships->begin() ; it != relationships->end() ; it++) {
-		Relationship* relationship = it->second;
+void Config::loadConvOverConfigFKs(std::list<Column*>& columns) {
+	std::list<Column*>::iterator it;
 
-		if (relationship->getFKTableName() == tableName) {
-			relationshipList->push_back(relationship);
-		}	
+	for (it == columns.begin() ; it != columns.end() ; it++) {
+		Column* column = *it;
+		std::string columnName = column->getName();
 
+		
+		
 	}
 
-	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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Config.h Sun Apr 22 01:34:52 2007
@@ -28,6 +28,7 @@
 #include "Relationship.h"
 
 class Table;
+class Column;
 
 class Config {
 
@@ -35,6 +36,7 @@
 		std::map<std::string, Relationship*>* relationships;
 		std::map<std::string, Table*>* tables;
 		DAS* das;
+		bool convOverConfig;
 
 	public:
 		Config(DAS& das);
@@ -47,11 +49,13 @@
 		std::map<std::string, Table*>& getTables(void) const;
 
 		DAS& getDAS(void) const;
-		
+		bool isConvOverConfig(void) const;
+
+		void loadConvOverConfigFKs(std::list<Column*>& columns);
 		Table* getTable(std::string tableName) const;
 		Relationship* getRelationship(std::string tableName, std::string referencedTableName) const;
-		std::list<Relationship*>* getRelationships(std::string tableName) const;
-		
-};
+		std::list<Relationship*>* getRelationships(std::string tableName, bool pkTable = true) const;
 
+};
+		
 #endif //CONFIG_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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilder.cpp Sun Apr 22 01:34:52 2007
@@ -21,12 +21,9 @@
 GraphBuilder::GraphBuilder(Config& config, ResultSet& resultSet) {
 	graphBuilderMetaData = new GraphBuilderMetaData(config, resultSet.getResultSetMetaData()) ;
 	commonj::sdo::DataFactoryPtr dataFactory = graphBuilderMetaData->createGraph();
-
-
-	/*this->resultSet* = resultSet;
+	this->resultSet = &resultSet;
 	
-	commonj::sdo::DataFactoryPtr dataFactory = graphBuiderMetaData.createGraph();
-	root = dataFactory->create(DAS_NAMESPACE, DAS_ROOT_NAME);
+	/*root = dataFactory->create(DAS_NAMESPACE, DAS_ROOT_NAME);
 	
 	const std::map<std::string, Table*> tables = graphBuiderMetaData.getTables();
 	std::map<std::string, Table*>::const_iterator it;
@@ -34,9 +31,10 @@
 
 		for (it = tables.begin() ; it != tables.end() ; i++) {
 			Table* table = it->second;
-			DataObjectPtr tableDataObject = root->createDataObject();
+			DataObjectPtr tableDataObject = root->create(DAS_NAMESPACE, 
+				table->getTableName());
 
-			root->
+			
 
 		}
 

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/GraphBuilderMetaData.cpp Sun Apr 22 01:34:52 2007
@@ -84,8 +84,7 @@
 
 		dataFactory->addType(DAS_NAMESPACE, tableName.c_str());
 		dataFactory->addPropertyToType(DAS_NAMESPACE, DAS_ROOT_NAME, 
-			((std::string) (DAS_ROOT_NAME + tableName + "Property")).c_str(), 
-			DAS_NAMESPACE, tableName.c_str(), true, false, true);
+			tableName.c_str(), DAS_NAMESPACE, tableName.c_str(), true, false, true);
 
 	}
 

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.cpp Sun Apr 22 01:34:52 2007
@@ -21,6 +21,7 @@
 KeyPair::KeyPair(std::string pkColumnName, std::string fkColumnName) {
 	this->pkColumnName = pkColumnName;
 	this->fkColumnName = fkColumnName;
+	relationship = 0;
 
 }
 
@@ -32,4 +33,12 @@
 
 std::string KeyPair::getFKColumnName(void) const {
 	return fkColumnName;
-}
\ No newline at end of file
+}
+
+void KeyPair::setRelationship(Relationship* relationship) {
+	this->relationship = relationship;
+}
+
+Relationship* KeyPair::getRelationship(void) const {
+	return relationship;
+}

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/KeyPair.h Sun Apr 22 01:34:52 2007
@@ -24,9 +24,14 @@
 
 class KeyPair {
 
+	friend class Relationship;
+
 	private:
 		std::string pkColumnName;
 		std::string fkColumnName;
+		Relationship* relationship;
+
+		void setRelationship(Relationship* relationship);
 		
 	public:
 		KeyPair(std::string pkColumnName, std::string fkColumnName);
@@ -34,6 +39,7 @@
 
 		std::string getPKColumnName(void) const;
 		std::string getFKColumnName(void) const;
+		Relationship* getRelationship(void) const;
 
 };
 

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.cpp Sun Apr 22 01:34:52 2007
@@ -135,11 +135,9 @@
 }
 
 commonj::sdo::DataObjectPtr ReadCommandImpl::buildGraph(ResultSet& resultSet) { /*throws SQLException*/
-	GraphBuilderMetaData graphBuilderMetaData(((DASImpl*) das)->getConfig(), resultSet.getResultSetMetaData()); 
-	commonj::sdo::DataFactoryPtr dataFactory = graphBuilderMetaData.createGraph();
-	printDataGraph(dataFactory);
+	GraphBuilder graphBuilder(((DASImpl*) das)->getConfig(), resultSet); 
 	
-
+	//printDataGraph(dataFactory);
 	//commonj::sdo::ChangeSummaryPtr changeSummary = rootDataObject->getChangeSummary();
 	
 	return 0;

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ReadCommandImpl.h Sun Apr 22 01:34:52 2007
@@ -22,7 +22,7 @@
 #include <list>
 
 #include "CommandImpl.h"
-#include "GraphBuilderMetaData.h"
+#include "GraphBuilder.h"
 
 #include "commonj/sdo/DataFactory.h"
 #include "commonj/sdo/DataObject.h"

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.cpp Sun Apr 22 01:34:52 2007
@@ -22,6 +22,7 @@
 	this->pkTableName = pkTableName;
 	this->fkTableName = fkTableName;
 	keyPairs = new std::map<std::string, KeyPair*>();
+	config = 0;
 
 }
 
@@ -54,8 +55,26 @@
 }
 
 void Relationship::addKeyPair(KeyPair& keyPair) {
+	keyPair.setRelationship(this);
 	keyPairs->insert(
 		std::make_pair(keyPair.getPKColumnName() + keyPair.getFKColumnName(), &keyPair));
 
+	if (config != 0) {
+		Table* table = config->getTable(fkTableName);
+
+		if (table != 0) {
+			Column* column = table->getColumn(keyPair.getFKColumnName());
+
+			if (column != 0) {
+				column->addKeyPair(keyPair);
+			}
+
+		}
+
+	}
+	
 }
 
+void Relationship::setConfig(Config* config) {
+	this->config = config;
+}

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Relationship.h Sun Apr 22 01:34:52 2007
@@ -23,13 +23,19 @@
 #include <map>
 
 #include "KeyPair.h"
+#include "Config.h"
 
 class Relationship {
 
+	friend class Config;
+
 	private:
 		std::string pkTableName;
 		std::string fkTableName;
 		std::map<std::string, KeyPair*>* keyPairs;
+		Config* config;
+
+		void setConfig(Config* config);
 		
 	public:
 		Relationship(std::string pkTableName, std::string fkTableName);

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.cpp Sun Apr 22 01:34:52 2007
@@ -33,7 +33,7 @@
 
 ResultSetMetaData::~ResultSetMetaData(void) {}
 
-SQLSMALLINT ResultSetMetaData::getSQLCType(SQLSMALLINT sqlType) const {
+SQLSMALLINT ResultSetMetaData::getSQLCType(SQLSMALLINT sqlType) {
 
 	switch (sqlType) {
 

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/ResultSetMetaData.h Sun Apr 22 01:34:52 2007
@@ -32,12 +32,11 @@
 		ResultSet* resultSet;
 		std::map<std::string, unsigned int> columnsIndexes;
 
-		SQLSMALLINT getSQLCType(SQLSMALLINT sqlType) const;
+		static SQLSMALLINT getSQLCType(SQLSMALLINT sqlType);
 
 	public:
 		ResultSetMetaData(ResultSet* aResultSet);
 		virtual ~ResultSetMetaData(void);
-
 
 		const ResultSet& getResultSet(void) const;
 

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Table.cpp Sun Apr 22 01:34:52 2007
@@ -22,59 +22,6 @@
 	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
-	ResultSet* fksResultSet = 0;
-
-	try {
-		fksResultSet = conn->getDatabase().getFKs(tableName);
-	} catch (std::runtime_error& e) {
-		convOverConfig = true;
-		return;
-
-	}
-			
-	while (fksResultSet->next()) {
-		std::string fkColumnName = fksResultSet->getSQLVarchar(7);
-		std::string pkTableName = fksResultSet->getSQLVarchar(2);
-		std::string pkColumnName = fksResultSet->getSQLVarchar(3);
-
-		fkColumnName = fkColumnName.substr(1, fkColumnName.size() - 2); 
-		pkColumnName = pkColumnName.substr(1, pkColumnName.size() - 2); 
-
-		Relationship* relationship = config.getRelationship(pkTableName, tableName);
-		
-		if (relationship == 0) {
-			relationship = new Relationship(pkTableName, tableName);
-			config.addRelationship(*relationship);
-
-		}
-		
-		KeyPair* keyPair = new KeyPair(pkColumnName, fkColumnName);
-		relationship->addKeyPair(*keyPair);
-
-	}
 	
 }
 
@@ -111,7 +58,7 @@
 
 	}
 
-	if (convOverConfig) {
+	if (config->isConvOverConfig()) {
 		
 		for (it == columns.begin() ; it != columns.end() ; it++) {
 			Column* column = *it;
@@ -121,12 +68,24 @@
 				column->setPK(true);
 				pkColumns.push_back(columnName);
 
+			} else if (columnName.substr(columnName.size() - 4, 3) == "_id") {
+				std::string referencedTable = columnName.substr(0, columnName.size() - 3);
+				std::string tableName = column->getContainerTable()->getTableName();
+				Relationship* relationship = config->getRelationship(tableName, referencedTable);
+
+				if (relationship == 0) {
+					relationship = new Relationship(tableName, referencedTable);
+					config->addRelationship(*relationship);
+					
+				}
+
+				KeyPair* keyPair = new KeyPair("id", column->getName());
+				relationship->addKeyPair(*keyPair);
+
 			}
 			
 		}
 
-		loadConvOverConfigFKs(columns);
-
 	} else {
 		std::list<std::string>::iterator it2;
 
@@ -142,60 +101,71 @@
 
 	}
 
-}
-
-Config& Table::getConfig(void) const {
-	return *config;
-}
+	std::list<Relationship*>* relationships = config->getRelationships(tableName, false);
+	std::list<Relationship*>::const_iterator it2;
 
-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();
-			
-			for (std::map<std::string, KeyPair*>::iterator keyPairsIterator = keyPairs.begin() ; 
-				keyPairsIterator != keyPairs.end() ; keyPairsIterator++) {
-					KeyPair* keyPair = keyPairsIterator->second;
+	for (it2 = relationships->begin() ; it2 != relationships->end() ; it2++) {
+		Relationship& relationship = **it2;
+		std::map<std::string, KeyPair*>& keyPairs = relationship.getKeyPairs();
+		std::map<std::string, KeyPair*>::const_iterator it3;
+
+		for (it3 == keyPairs.begin() ; it3 != keyPairs.end() ; it3++) {
+			for (it == columns.begin() ; it != columns.end() ; it++) {
+				Column& column = **it;
 
-					columnsRelationships.insert(std::make_pair(keyPair->getFKColumnName(), 
-						relationship));
+				if (column.getName() == it3->second->getFKColumnName()) {
+					column.addKeyPair(*(it3->second));
+				}
 
 			}
+		}
 
 	}
 
 	delete relationships;
 
+}
+
+Config& Table::getConfig(void) const {
+	return *config;
+}
+
+void Table::addPKColumn(std::string columnName) {
+	pkColumns.push_back(columnName);
+}
+
+void Table::createGraph(const GraphBuilderMetaData& graphBuilderMetaData, commonj::sdo::DataFactoryPtr dataFactory) const {
+	std::map<std::string, Column*>::const_iterator it;
+	
 	for (it = columns.begin() ; it != columns.end() ; it++) {
 		Column& column = *(it->second);
 	
-		std::map<std::string, Relationship*>::const_iterator it2 = columnsRelationships.find(column.getName());
+		if (column.isFK()) {
+			std::list<KeyPair*>& keyPairs = column.getKeyPairs();
+			std::list<KeyPair*>::const_iterator it2;
+
+			for (it2 = keyPairs.begin() ; it2 != keyPairs.end() ; it2++) {
+				KeyPair& keyPair = **it2;
+				Table* referecedTable = graphBuilderMetaData.getTable(
+					keyPair.getRelationship()->getPKTableName());			
+
+				if (referecedTable != 0) {
+					dataFactory->addPropertyToType(DAS_NAMESPACE, tableName.c_str(),
+						column.getName().c_str(), DAS_NAMESPACE, 
+						keyPair.getRelationship()->getPKTableName().c_str(), true, false, false);
+
+				}
 
-		if (it2 == columnsRelationships.end()) {
+			}
+	
+		} else {
 			dataFactory->addType(DAS_NAMESPACE, column.getName());
 			dataFactory->addPropertyToType(DAS_NAMESPACE, tableName.c_str(),
-				((std::string) (tableName + column.getName() + "Property")).c_str(), 
-				SDO_NAMESPACE, ODBCTypeHelper::getSDOType(column.getSQLType()).c_str() , false, 
+				column.getName().c_str(), SDO_NAMESPACE, 
+				ODBCTypeHelper::getSDOType(column.getSQLType()).c_str() , false, 
 				false, true);
 
-			continue;
-	
-		} else {
-			Relationship& relationship = *(it2->second);
-			Table* referecedTable = graphBuilderMetaData.getTable(relationship.getPKTableName());
-			
-			if (referecedTable != 0) {
-				dataFactory->addPropertyToType(DAS_NAMESPACE, tableName.c_str(),
-					((std::string) (tableName + relationship.getPKTableName() + "Property")).c_str(), 
-					DAS_NAMESPACE, relationship.getPKTableName().c_str(), true, false, false);
 
-			}
-			
 		}
 	
 	}
@@ -220,37 +190,17 @@
 	this->mappedName = mappedName;
 }
 
-std::string Table::getMappedName(void) const {
-	return mappedName;
-}
-
-void Table::loadConvOverConfigFKs(std::list<Column*>& columns) {
-	std::list<Column*>::iterator it;
+Column* Table::getColumn(std::string columnName) const {
+	std::map<std::string, Column*>::const_iterator it = columns.find(columnName);
 
-	for (it == columns.begin() ; it != columns.end() ; it++) {
-		Column* column = *it;
-		std::string columnName = column->getName();
-
-		if (columnName.substr(columnName.size() - 4, 3) == "_id") {
-			std::string referencedTable = columnName.substr(0, columnName.size() - 3);
-			Relationship* relationship = config->
-				getRelationship(tableName, referencedTable);
-
-			if (relationship == 0) {
-				relationship = new Relationship(tableName, referencedTable);
-				config->addRelationship(*relationship);
-				
-			}
-
-			KeyPair* keyPair = new KeyPair("id", column->getName());
-			relationship->addKeyPair(*keyPair);
-
-		}
-		
+	if (it == columns.end()) {
+		return 0;
 	}
 
+	return it->second;
+
 }
 
-void Table::removeAllColumns(void) {
-	columns.clear();
+std::string Table::getMappedName(void) const {
+	return mappedName;
 }

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=531156&r1=531155&r2=531156
==============================================================================
--- incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h (original)
+++ incubator/tuscany/cpp/das/runtime/das_lite/src/Table.h Sun Apr 22 01:34:52 2007
@@ -47,20 +47,19 @@
 		Config* config;
 		std::string tableName;
 		std::string mappedName;
-		bool convOverConfig;
 		
 	public:
 		Table(Config& config, std::string tableName);
 		virtual ~Table(void);
 
 		void addColumns(std::list<Column*>& columns);
-		void loadConvOverConfigFKs(std::list<Column*>& columns);
 		void setMappedName(std::string mappedName);
-		void removeAllColumns(void);
+		void addPKColumn(std::string columnName);
 
 		std::string getMappedName(void) const;
 		Config& getConfig(void) const;
 		std::string getTableName(void) const;
+		Column* getColumn(std::string columnName) 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