1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 #ifndef INCLUDED_CONNECTIVITY_IPARSECONTEXT_HXX 20 #define INCLUDED_CONNECTIVITY_IPARSECONTEXT_HXX 21 22 #include <rtl/ustring.hxx> 23 #include <com/sun/star/lang/Locale.hpp> 24 25 namespace connectivity 26 { 27 28 //= IParseContext 29 30 class IParseContext 31 { 32 public: 33 enum class ErrorCode 34 { 35 General, // "Syntax error in SQL expression" 36 ValueNoLike, // "The value #1 can not be used with LIKE." 37 FieldNoLike, // "LIKE can not be used with this field." 38 InvalidCompare, // "The entered criterion can not be compared with this field." 39 InvalidIntCompare, // "The field can not be compared with a number." 40 InvalidDateCompare, // "The field can not be compared with a date." 41 InvalidRealCompare, // "The field can not be compared with a floating point number." 42 InvalidTableNosuch, // "The database does not contain a table named \"#\"." 43 // Named like this to avoid conflict with a #define in the Windows system ODBC headers. 44 InvalidTableOrQuery, // "The database does contain neither a table nor a query named \"#\"." 45 InvalidColumn, // "The column \"#1\" is unknown in the table \"#2\"." 46 InvalidTableExist, // "The database already contains a table or view with name \"#\"." 47 InvalidQueryExist // "The database already contains a query with name \"#\"."; 48 }; 49 50 enum class InternationalKeyCode 51 { 52 None = 0, 53 Like, 54 Not, 55 Null, 56 True, 57 False, 58 Is, 59 Between, 60 Or, 61 And, 62 Avg, 63 Count, 64 Max, 65 Min, 66 Sum, 67 Every, 68 Any, 69 Some, 70 StdDevPop, 71 StdDevSamp, 72 VarSamp, 73 VarPop, 74 Collect, 75 Fusion, 76 Intersection 77 }; 78 79 public: 80 // retrieves language specific error messages 81 virtual OUString getErrorMessage(ErrorCode _eCodes) const = 0; 82 83 // retrieves language specific keyword strings (only ASCII allowed) 84 virtual OString getIntlKeywordAscii(InternationalKeyCode _eKey) const = 0; 85 86 // finds out, if we have an international keyword (only ASCII allowed) 87 virtual InternationalKeyCode getIntlKeyCode(const OString& rToken) const = 0; 88 89 /** gets a locale instance which should be used when parsing in the context specified by this instance 90 <p>if this is not overridden by derived classes, it returns the static default locale.</p> 91 */ 92 virtual css::lang::Locale getPreferredLocale( ) const = 0; 93 94 protected: ~IParseContext()95 ~IParseContext() {} 96 }; 97 } 98 99 #endif // INCLUDED_CONNECTIVITY_IPARSECONTEXT_HXX 100 101 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 102