xref: /AOO41X/main/connectivity/source/drivers/macab/macabcondition.hxx (revision 67e470dafe1997e73f56ff7ff4878983707e3e07)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _CONNECTIVITY_MACAB_CONDITION_HXX_
25 #define _CONNECTIVITY_MACAB_CONDITION_HXX_
26 
27 #include "MacabHeader.hxx"
28 #include "MacabRecord.hxx"
29 
30 #ifndef _COMPHELPER_TYPES_H_
31 #include <comphelper/types.hxx>
32 #endif
33 #include <connectivity/dbexception.hxx>
34 
35 namespace connectivity
36 {
37     namespace macab
38     {
39 // -----------------------------------------------------------------------------
40 class MacabCondition
41 {
42     public:
43         virtual ~MacabCondition();
44         virtual sal_Bool isAlwaysTrue() const = 0;
45         virtual sal_Bool isAlwaysFalse() const = 0;
46         virtual sal_Bool eval(const MacabRecord *aRecord) const = 0;
47 };
48 // -----------------------------------------------------------------------------
49 class MacabConditionConstant : public MacabCondition
50 {
51     protected:
52         sal_Bool m_bValue;
53 
54     public:
55         MacabConditionConstant(const sal_Bool bValue);
56         virtual sal_Bool isAlwaysTrue() const;
57         virtual sal_Bool isAlwaysFalse() const;
58         virtual sal_Bool eval(const MacabRecord *aRecord) const;
59 };
60 // -----------------------------------------------------------------------------
61 class MacabConditionColumn : public MacabCondition
62 {
63     protected:
64         sal_Int32 m_nFieldNumber;
65 
66     public:
67         MacabConditionColumn(
68             const MacabHeader *header,
69             const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
70         virtual sal_Bool isAlwaysTrue() const;
71         virtual sal_Bool isAlwaysFalse() const;
72 };
73 // -----------------------------------------------------------------------------
74 class MacabConditionNull : public MacabConditionColumn
75 {
76     public:
77         MacabConditionNull(
78             const MacabHeader *header,
79             const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
80         virtual sal_Bool eval(const MacabRecord *aRecord) const;
81 };
82 // -----------------------------------------------------------------------------
83 class MacabConditionNotNull : public MacabConditionColumn
84 {
85     public:
86         MacabConditionNotNull(
87             const MacabHeader *header,
88             const ::rtl::OUString &sColumnName) throw(::com::sun::star::sdbc::SQLException);
89         virtual sal_Bool eval(const MacabRecord *aRecord) const;
90 };
91 // -----------------------------------------------------------------------------
92 class MacabConditionCompare : public MacabConditionColumn
93 {
94     protected:
95         const ::rtl::OUString m_sMatchString;
96 
97     public:
98         MacabConditionCompare(
99             const MacabHeader *header,
100             const ::rtl::OUString &sColumnName,
101             const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
102 };
103 // -----------------------------------------------------------------------------
104 class MacabConditionEqual : public MacabConditionCompare
105 {
106     public:
107         MacabConditionEqual(
108             const MacabHeader *header,
109             const ::rtl::OUString &sColumnName,
110             const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
111         virtual sal_Bool eval(const MacabRecord *aRecord) const;
112 };
113 // -----------------------------------------------------------------------------
114 class MacabConditionDifferent : public MacabConditionCompare
115 {
116     public:
117         MacabConditionDifferent(
118             const MacabHeader *header,
119             const ::rtl::OUString &sColumnName,
120             const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
121         virtual sal_Bool eval(const MacabRecord *aRecord) const;
122 };
123 // -----------------------------------------------------------------------------
124 class MacabConditionSimilar : public MacabConditionCompare
125 {
126     public:
127         MacabConditionSimilar(
128             const MacabHeader *header,
129             const ::rtl::OUString &sColumnName,
130             const ::rtl::OUString &sMatchString) throw(::com::sun::star::sdbc::SQLException);
131         virtual sal_Bool eval(const MacabRecord *aRecord) const;
132 };
133 // -----------------------------------------------------------------------------
134 class MacabConditionBoolean : public MacabCondition
135 {
136     protected:
137         MacabCondition *m_pLeft, *m_pRight;
138 
139     public:
140         MacabConditionBoolean(MacabCondition *pLeft, MacabCondition *pRight);
141         virtual ~MacabConditionBoolean();
142 };
143 // -----------------------------------------------------------------------------
144 class MacabConditionOr : public MacabConditionBoolean
145 {
146     public:
147         MacabConditionOr(MacabCondition *pLeft, MacabCondition *pRight);
148         virtual sal_Bool isAlwaysTrue() const;
149         virtual sal_Bool isAlwaysFalse() const;
150         virtual sal_Bool eval(const MacabRecord *aRecord) const;
151 };
152 // -----------------------------------------------------------------------------
153 class MacabConditionAnd : public MacabConditionBoolean
154 {
155     public:
156         MacabConditionAnd(MacabCondition *pLeft, MacabCondition *pRight);
157         virtual sal_Bool isAlwaysTrue() const;
158         virtual sal_Bool isAlwaysFalse() const;
159         virtual sal_Bool eval(const MacabRecord *aRecord) const;
160 };
161 // -----------------------------------------------------------------------------
162     }
163 }
164 
165 #endif // _CONNECTIVITY_MACAB_CONDITION_HXX_
166