diff --git a/src/java/davmail/exchange/ews/MultipleOperandBooleanExpression.java b/src/java/davmail/exchange/ews/MultipleOperandBooleanExpression.java
new file mode 100644
index 00000000..6a0455cb
--- /dev/null
+++ b/src/java/davmail/exchange/ews/MultipleOperandBooleanExpression.java
@@ -0,0 +1,53 @@
+/*
+ * DavMail POP/IMAP/SMTP/CalDav/LDAP Exchange Gateway
+ * Copyright (C) 2010 Mickael Guessant
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package davmail.exchange.ews;
+
+import java.io.IOException;
+import java.io.Writer;
+
+/**
+ * Boolean search expression
+ */
+public class MultipleOperandBooleanExpression implements SearchExpression {
+ public enum Operator {
+ And, Or, Not
+ }
+
+ private SearchExpression[] searchExpressions;
+ private Operator operator;
+
+ public MultipleOperandBooleanExpression(Operator operator, SearchExpression... searchExpressions) {
+ this.searchExpressions = searchExpressions;
+ this.operator = operator;
+ }
+
+ public void write(Writer writer) throws IOException {
+ writer.write("");
+
+ for (SearchExpression searchExpression : searchExpressions) {
+ searchExpression.write(writer);
+ }
+
+ writer.write("");
+ }
+}
diff --git a/src/java/davmail/exchange/ews/SearchExpression.java b/src/java/davmail/exchange/ews/SearchExpression.java
index cb92531f..4dd8a260 100644
--- a/src/java/davmail/exchange/ews/SearchExpression.java
+++ b/src/java/davmail/exchange/ews/SearchExpression.java
@@ -24,12 +24,12 @@ import java.io.Writer;
/**
* EWS Search Expression.
*/
-public abstract class SearchExpression {
+public interface SearchExpression {
/**
* Write XML content to writer.
*
* @param writer writer
* @throws IOException on error
*/
- public abstract void write(Writer writer) throws IOException;
+ public void write(Writer writer) throws IOException;
}
diff --git a/src/java/davmail/exchange/ews/TwoOperandExpression.java b/src/java/davmail/exchange/ews/TwoOperandExpression.java
index 69d5fd65..6e346a78 100644
--- a/src/java/davmail/exchange/ews/TwoOperandExpression.java
+++ b/src/java/davmail/exchange/ews/TwoOperandExpression.java
@@ -24,7 +24,7 @@ import java.io.Writer;
/**
* Two operand expression.
*/
-public class TwoOperandExpression extends SearchExpression {
+public class TwoOperandExpression implements SearchExpression {
protected enum Operator {
IsEqualTo, IsNotEqualTo, IsGreaterThan, IsGreaterThanOrEqualTo, IsLessThan, IsLessThanOrEqualTo
}
@@ -46,7 +46,6 @@ public class TwoOperandExpression extends SearchExpression {
this.value = value;
}
- @Override
public void write(Writer writer) throws IOException {
writer.write("