QGIS/src/qgspgutil.cpp

396 lines
7.3 KiB
C++

/***************************************************************************
qgspgutil.cpp - PostgreSQL Utility Functions
--------------------------------------
Date : 2004-11-21
Copyright : (C) 2004 by Gary E.Sherman
Email : sherman at mrcc.com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
/* $Id$ */
#include "qgspgutil.h"
QgsPgUtil *QgsPgUtil::mInstance = 0;
QgsPgUtil * QgsPgUtil::instance()
{
if(mInstance == 0)
{
mInstance = new QgsPgUtil();
}
return mInstance;
}
QgsPgUtil::QgsPgUtil()
{
// load the reserved word map
initReservedWords();
}
QgsPgUtil::~QgsPgUtil()
{
}
bool QgsPgUtil::isReserved(QString word)
{
// uppercase the word before testing it since all our reserved words are
// stored in uppercase
QStringList::iterator it = mReservedWords.find(word.upper());
return (it != mReservedWords.end());
}
void QgsPgUtil::setConnection(PGconn *con)
{
mPgConnection = con;
}
PGconn *QgsPgUtil::connection()
{
return mPgConnection;
}
void QgsPgUtil::initReservedWords()
{
// create the reserved word list by loading
// the words into a QStringList. We code them here
// for now rather than deal with the complexities
// of finding and loading from a text file
// in the install path
mReservedWords << "ABSOLUTE"
<< "ACTION"
<< "ADD"
<< "ADMIN"
<< "AFTER"
<< "AGGREGATE"
<< "ALIAS"
<< "ALL"
<< "ALLOCATE"
<< "ALTER"
<< "ANALYSE"
<< "ANALYZE"
<< "AND"
<< "ANY"
<< "ARE"
<< "ARRAY"
<< "AS"
<< "ASC"
<< "ASSERTION"
<< "AT"
<< "AUTHORIZATION"
<< "AVG"
<< "BEFORE"
<< "BEGIN"
<< "BETWEEN"
<< "BINARY"
<< "BIT"
<< "BIT_LENGTH"
<< "BLOB"
<< "BOOLEAN"
<< "BOTH"
<< "BREADTH"
<< "BY"
<< "CALL"
<< "CASCADE"
<< "CASCADED"
<< "CASE"
<< "CAST"
<< "CATALOG"
<< "CHAR"
<< "CHARACTER"
<< "CHARACTER_LENGTH"
<< "CHAR_LENGTH"
<< "CHECK"
<< "CLASS"
<< "CLOB"
<< "CLOSE"
<< "COALESCE"
<< "COLLATE"
<< "COLLATION"
<< "COLUMN"
<< "COMMIT"
<< "COMPLETION"
<< "CONNECT"
<< "CONNECTION"
<< "CONSTRAINT"
<< "CONSTRAINTS"
<< "CONSTRUCTOR"
<< "CONTINUE"
<< "CONVERT"
<< "CORRESPONDING"
<< "COUNT"
<< "CREATE"
<< "CROSS"
<< "CUBE"
<< "CURRENT"
<< "CURRENT_DATE"
<< "CURRENT_PATH"
<< "CURRENT_ROLE"
<< "CURRENT_TIME"
<< "CURRENT_TIMESTAMP"
<< "CURRENT_USER"
<< "CURSOR"
<< "CURSOR_NAME"
<< "CYCLE"
<< "DATA"
<< "DATE"
<< "DAY"
<< "DEALLOCATE"
<< "DEC"
<< "DECIMAL"
<< "DECLARE"
<< "DEFAULT"
<< "DEFERRABLE"
<< "DEFERRED"
<< "DELETE"
<< "DEPTH"
<< "DEREF"
<< "DESC"
<< "DESCRIBE"
<< "DESCRIPTOR"
<< "DESTROY"
<< "DESTRUCTOR"
<< "DETERMINISTIC"
<< "DIAGNOSTICS"
<< "DICTIONARY"
<< "DISCONNECT"
<< "DISPATCH"
<< "DISTINCT"
<< "DO"
<< "DOMAIN"
<< "DOUBLE"
<< "DROP"
<< "DYNAMIC"
<< "EACH"
<< "ELSE"
<< "END"
<< "END-EXEC"
<< "EQUALS"
<< "ESCAPE"
<< "EVERY"
<< "EXCEPT"
<< "EXCEPTION"
<< "EXEC"
<< "EXECUTE"
<< "EXISTS"
<< "EXTERNAL"
<< "EXTRACT"
<< "FALSE"
<< "FETCH"
<< "FIRST"
<< "FLOAT"
<< "FOR"
<< "FOREIGN"
<< "FOUND"
<< "FREE"
<< "FREEZE"
<< "FROM"
<< "FULL"
<< "FUNCTION"
<< "GENERAL"
<< "GET"
<< "GLOBAL"
<< "GO"
<< "GOTO"
<< "GRANT"
<< "GROUP"
<< "GROUPING"
<< "HAVING"
<< "HOST"
<< "HOUR"
<< "IDENTITY"
<< "IGNORE"
<< "ILIKE"
<< "IMMEDIATE"
<< "IMPLEMENTATION"
<< "IN"
<< "INDICATOR"
<< "INITIALIZE"
<< "INITIALLY"
<< "INNER"
<< "INOUT"
<< "INPUT"
<< "INSENSITIVE"
<< "INSERT"
<< "INT"
<< "INTEGER"
<< "INTERSECT"
<< "INTERVAL"
<< "INTO"
<< "IS"
<< "ISNULL"
<< "ITERATE"
<< "JOIN"
<< "KEY"
<< "LANGUAGE"
<< "LARGE"
<< "LAST"
<< "LATERAL"
<< "LEADING"
<< "LEFT"
<< "LESS"
<< "LEVEL"
<< "LIKE"
<< "LIMIT"
<< "LOCAL"
<< "LOCALTIME"
<< "LOCALTIMESTAMP"
<< "LOCATOR"
<< "LOWER"
<< "MAP"
<< "MATCH"
<< "MAX"
<< "MIN"
<< "MINUTE"
<< "MODIFIES"
<< "MODIFY"
<< "MODULE"
<< "MONTH"
<< "NAMES"
<< "NATIONAL"
<< "NATURAL"
<< "NCHAR"
<< "NCLOB"
<< "NEW"
<< "NEXT"
<< "NO"
<< "NONE"
<< "NOT"
<< "NOTNULL"
<< "NULL"
<< "NULLIF"
<< "NUMERIC"
<< "OBJECT"
<< "OCTET_LENGTH"
<< "OF"
<< "OFF"
<< "OFFSET"
<< "OLD"
<< "ON"
<< "ONLY"
<< "OPEN"
<< "OPERATION"
<< "OPTION"
<< "OR"
<< "ORDER"
<< "ORDINALITY"
<< "OUT"
<< "OUTER"
<< "OUTPUT"
<< "OVERLAPS"
<< "PAD"
<< "PARAMETER"
<< "PARAMETERS"
<< "PARTIAL"
<< "PATH"
<< "PLACING"
<< "POSITION"
<< "POSTFIX"
<< "PRECISION"
<< "PREFIX"
<< "PREORDER"
<< "PREPARE"
<< "PRESERVE"
<< "PRIMARY"
<< "PRIOR"
<< "PRIVILEGES"
<< "PROCEDURE"
<< "PUBLIC"
<< "READ"
<< "READS"
<< "REAL"
<< "RECURSIVE"
<< "REF"
<< "REFERENCES"
<< "REFERENCING"
<< "RELATIVE"
<< "RESTRICT"
<< "RESULT"
<< "RETURN"
<< "RETURNS"
<< "REVOKE"
<< "RIGHT"
<< "ROLE"
<< "ROLLBACK"
<< "ROLLUP"
<< "ROUTINE"
<< "ROW"
<< "ROWS"
<< "SAVEPOINT"
<< "SCHEMA"
<< "SCOPE"
<< "SCROLL"
<< "SEARCH"
<< "SECOND"
<< "SECTION"
<< "SELECT"
<< "SEQUENCE"
<< "SESSION"
<< "SESSION_USER"
<< "SET"
<< "SETS"
<< "SIMILAR"
<< "SIZE"
<< "SMALLINT"
<< "SOME"
<< "SPACE"
<< "SPECIFIC"
<< "SPECIFICTYPE"
<< "SQL"
<< "SQLCODE"
<< "SQLERROR"
<< "SQLEXCEPTION"
<< "SQLSTATE"
<< "SQLWARNING"
<< "START"
<< "STATE"
<< "STATEMENT"
<< "STATIC"
<< "STRUCTURE"
<< "SUBSTRING"
<< "SUM"
<< "SYSTEM_USER"
<< "TABLE"
<< "TEMPORARY"
<< "TERMINATE"
<< "THAN"
<< "THEN"
<< "TIME"
<< "TIMESTAMP"
<< "TIMEZONE_HOUR"
<< "TIMEZONE_MINUTE"
<< "TO"
<< "TRAILING"
<< "TRANSACTION"
<< "TRANSLATE"
<< "TRANSLATION"
<< "TREAT"
<< "TRIGGER"
<< "TRIM"
<< "TRUE"
<< "UNDER"
<< "UNION"
<< "UNIQUE"
<< "UNKNOWN"
<< "UNNEST"
<< "UPDATE"
<< "UPPER"
<< "USAGE"
<< "USER"
<< "USING"
<< "VALUE"
<< "VALUES"
<< "VARCHAR"
<< "VARIABLE"
<< "VARYING"
<< "VERBOSE"
<< "VIEW"
<< "WHEN"
<< "WHENEVER"
<< "WHERE"
<< "WITH"
<< "WITHOUT"
<< "WORK"
<< "WRITE"
<< "YEAR"
<< "ZONE";
}