xref: /trunk/main/connectivity/source/drivers/macab/macabcondition.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _CONNECTIVITY_MACAB_CONDITION_HXX_
29 #define _CONNECTIVITY_MACAB_CONDITION_HXX_
30 
31 #include "MacabHeader.hxx"
32 #include "MacabRecord.hxx"
33 
34 #ifndef _COMPHELPER_TYPES_H_
35 #include <comphelper/types.hxx>
36 #endif
37 #include <connectivity/dbexception.hxx>
38 
39 namespace connectivity
40 {
41     namespace macab
42     {
43 // -----------------------------------------------------------------------------
44 class MacabCondition
45 {
46     public:
47         virtual ~MacabCondition();
48         virtual sal_Bool isAlwaysTrue() const = 0;
49         virtual sal_Bool isAlwaysFalse() const = 0;
50         virtual sal_Bool eval(const MacabRecord *aRecord) const = 0;
51 };
52 // -----------------------------------------------------------------------------
53 class MacabConditionConstant : public MacabCondition
54 {
55     protected:
56         sal_Bool m_bValue;
57 
58     public:
59         MacabConditionConstant(const sal_Bool bValue);
60         virtual sal_Bool isAlwaysTrue() const;
61         virtual sal_Bool isAlwaysFalse() const;
62         virtual sal_Bool eval(const MacabRecord *aRecord) const;
63 };
64 // -----------------------------------------------------------------------------
65 class MacabConditionColumn : public MacabCondition
66 {
67     protected:
68         sal_Int32 m_nFieldNumber;
69 
70     public:
71         MacabConditionColumn(
72             const MacabHeader *header,
73             const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
74         virtual sal_Bool isAlwaysTrue() const;
75         virtual sal_Bool isAlwaysFalse() const;
76 };
77 // -----------------------------------------------------------------------------
78 class MacabConditionNull : public MacabConditionColumn
79 {
80     public:
81         MacabConditionNull(
82             const MacabHeader *header,
83             const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
84         virtual sal_Bool eval(const MacabRecord *aRecord) const;
85 };
86 // -----------------------------------------------------------------------------
87 class MacabConditionNotNull : public MacabConditionColumn
88 {
89     public:
90         MacabConditionNotNull(
91             const MacabHeader *header,
92             const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
93         virtual sal_Bool eval(const MacabRecord *aRecord) const;
94 };
95 // -----------------------------------------------------------------------------
96 class MacabConditionCompare : public MacabConditionColumn
97 {
98     protected:
99         const ::rtl::OUString m_sMatchString;
100 
101     public:
102         MacabConditionCompare(
103             const MacabHeader *header,
104             const ::rtl::OUString &sColumnName,
105             const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
106 };
107 // -----------------------------------------------------------------------------
108 class MacabConditionEqual : public MacabConditionCompare
109 {
110     public:
111         MacabConditionEqual(
112             const MacabHeader *header,
113             const ::rtl::OUString &sColumnName,
114             const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
115         virtual sal_Bool eval(const MacabRecord *aRecord) const;
116 };
117 // -----------------------------------------------------------------------------
118 class MacabConditionDifferent : public MacabConditionCompare
119 {
120     public:
121         MacabConditionDifferent(
122             const MacabHeader *header,
123             const ::rtl::OUString &sColumnName,
124             const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
125         virtual sal_Bool eval(const MacabRecord *aRecord) const;
126 };
127 // -----------------------------------------------------------------------------
128 class MacabConditionSimilar : public MacabConditionCompare
129 {
130     public:
131         MacabConditionSimilar(
132             const MacabHeader *header,
133             const ::rtl::OUString &sColumnName,
134             const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
135         virtual sal_Bool eval(const MacabRecord *aRecord) const;
136 };
137 // -----------------------------------------------------------------------------
138 class MacabConditionBoolean : public MacabCondition
139 {
140     protected:
141         MacabCondition *m_pLeft, *m_pRight;
142 
143     public:
144         MacabConditionBoolean(MacabCondition *pLeft, MacabCondition *pRight);
145         virtual ~MacabConditionBoolean();
146 };
147 // -----------------------------------------------------------------------------
148 class MacabConditionOr : public MacabConditionBoolean
149 {
150     public:
151         MacabConditionOr(MacabCondition *pLeft, MacabCondition *pRight);
152         virtual sal_Bool isAlwaysTrue() const;
153         virtual sal_Bool isAlwaysFalse() const;
154         virtual sal_Bool eval(const MacabRecord *aRecord) const;
155 };
156 // -----------------------------------------------------------------------------
157 class MacabConditionAnd : public MacabConditionBoolean
158 {
159     public:
160         MacabConditionAnd(MacabCondition *pLeft, MacabCondition *pRight);
161         virtual sal_Bool isAlwaysTrue() const;
162         virtual sal_Bool isAlwaysFalse() const;
163         virtual sal_Bool eval(const MacabRecord *aRecord) const;
164 };
165 // -----------------------------------------------------------------------------
166     }
167 }
168 
169 #endif // _CONNECTIVITY_MACAB_CONDITION_HXX_
170