summaryrefslogtreecommitdiffstats
path: root/das-cpp/trunk/runtime/core/src/apache/das/rdb/ODBCTypeHelper.cpp
blob: aad3c49ad57875f0278a14e7be74acc0f85231fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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);
	}

}

		};
	};
};