Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members  

SQLtoSQLQueryTranslator.cpp

00001                               /* SQLtoSQLQueryTranslator.cpp */
00002 
00003 /*
00004  *  Implementation of SQLtoSQLQueryTranslator.h
00005  */
00006 #include "SQLtoSQLQueryTranslator.h"
00007 
00008 using namespace LcgInfo;
00009 using namespace std;
00010 
00011 /******************  METHODS FOR CLASS SQLtoSQLQueryTranslator  ********************/
00012 
00013 SQLtoSQLQueryTranslator::SQLtoSQLQueryTranslator()
00014 : SQLQueryTranslator(){
00015 }
00016 
00017 SQLtoSQLQueryTranslator::SQLtoSQLQueryTranslator(string const & pMapFile)
00018 : SQLQueryTranslator(pMapFile){
00019 }
00020 
00021 SQLtoSQLQueryTranslator::SQLtoSQLQueryTranslator(LcgConfigBuffer::ConfigBuffer & pMap)
00022 : SQLQueryTranslator(pMap){
00023 }
00024 
00025 SQLtoSQLQueryTranslator::~SQLtoSQLQueryTranslator(){
00026 }
00027 
00028 vector<string> SQLtoSQLQueryTranslator::translateQuery(string const & pQueryCanonical){
00029 
00030    // Define the necessary variables
00031    SQLPredicateTree * pred=new SQLtoSQLPredicateTree();
00032    vector<string> rows;
00033    set<string> tables;
00034    string translated;
00035    vector<string> result;
00036 
00037    // Let our parent's translateSemantic() method do the job
00038    translateSemantic(pQueryCanonical, *pred, rows, tables);
00039 
00040    // Build the new query to return
00041    translated="SELECT";
00042    for(vector<string>::iterator i=rows.begin(); i!=rows.end(); i++)
00043       translated += (" " + (*i));  //rows to return
00044    translated += " FROM";
00045    for(set<string>::iterator i=tables.begin(); i!=tables.end(); i++)
00046       translated += (" " + (*i));  // from list
00047    if(!pred->empty())
00048       translated += " WHERE " + pred->evaluate(result);//where clause (may throw QueryTranslationEx.)
00049 
00050    delete pred;  // The caller is not interested in the tree, let us delete it
00051 
00052    result.push_back(translated);
00053    return result;
00054 
00055 } //end of translateQuery 
00056 

Generated on Tue Oct 5 14:42:45 2004 for LCG Information System Interface by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002