summaryrefslogtreecommitdiffstats
path: root/das-cpp/trunk/runtime/core/src/apache/das/rdb/ODBCTypeHelper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'das-cpp/trunk/runtime/core/src/apache/das/rdb/ODBCTypeHelper.cpp')
-rw-r--r--das-cpp/trunk/runtime/core/src/apache/das/rdb/ODBCTypeHelper.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/das-cpp/trunk/runtime/core/src/apache/das/rdb/ODBCTypeHelper.cpp b/das-cpp/trunk/runtime/core/src/apache/das/rdb/ODBCTypeHelper.cpp
new file mode 100644
index 0000000000..aad3c49ad5
--- /dev/null
+++ b/das-cpp/trunk/runtime/core/src/apache/das/rdb/ODBCTypeHelper.cpp
@@ -0,0 +1,108 @@
+/*
+ * 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 "apache/das/rdb/ODBCTypeHelper.h"
+
+namespace apache {
+ namespace das {
+ namespace rdb {
+
+const std::string ODBCTypeHelper::getSDOType(SQLSMALLINT sqlType) {
+
+ switch (sqlType) {
+
+ case SQL_CHAR :
+ case SQL_WCHAR :
+ return "Character";
+
+ case SQL_INTEGER :
+ case SQL_SMALLINT :
+ return "Int";
+
+ case SQL_REAL :
+ return "Float";
+
+ case SQL_FLOAT :
+ case SQL_DOUBLE :
+ return "Double";
+
+ case SQL_VARCHAR :
+ case SQL_WVARCHAR :
+ return "String";
+
+ default :
+ throw DASInvalidSQLTypeException("Invalid sql type: " + sqlType + (std::string) "");
+
+ }
+
+}
+
+const SQLSMALLINT ODBCTypeHelper::getSQLType(const commonj::sdo::Type& type) {
+ std::string typeName = type.getName();
+
+ if ("String" == typeName) {
+ return SQL_WVARCHAR;
+
+ } else if ("Double" == typeName) {
+ return SQL_DOUBLE;
+
+ } else if ("Float" == typeName) {
+ return SQL_REAL;
+
+ } else if ("Int" == typeName) {
+ return SQL_INTEGER;
+
+ } else if ("Character" == typeName) {
+ return SQL_WCHAR;
+
+ } else {
+ throw DASInvalidSDOTypeException((std::string) "Invalid sdo data type: " + type.getURI() + "." + type.getName() + "");
+ }
+
+}
+
+const SQLSMALLINT ODBCTypeHelper::getSQLType(std::string sqlTypeName) {
+ sqlTypeName = StringWrapper(sqlTypeName).toLower();
+
+ if ("varchar" == sqlTypeName) {
+ return SQL_VARCHAR;
+ } else if ("wvarchar" == sqlTypeName) {
+ return SQL_WVARCHAR;
+ } else if ("integer" == sqlTypeName) {
+ return SQL_INTEGER;
+ } else if ("float" == sqlTypeName) {
+ return SQL_FLOAT;
+ } else if ("real" == sqlTypeName) {
+ return SQL_REAL;
+ } else if ("double" == sqlTypeName) {
+ return SQL_DOUBLE;
+ } else if ("char" == sqlTypeName) {
+ return SQL_CHAR;
+ } else if ("wchar" == sqlTypeName) {
+ return SQL_WCHAR;
+ } else if ("smallint" == sqlTypeName) {
+ return SQL_SMALLINT;
+ } else {
+ throw DASInvalidSQLTypeException("sql type does not exist: " + sqlTypeName);
+ }
+
+}
+
+ };
+ };
+};