/* * 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); } } }; }; };