You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by lu...@apache.org on 2005/01/14 10:34:13 UTC

cvs commit: jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions AndExpression.java CompareExpression.java ContainsExpression.java IsDefinedExpression.java NotExpression.java OrExpression.java TestExpression.java

luetzkendorf    2005/01/14 01:34:13

  Added:       webdavclient/clientlib/src/java/org/apache/webdav/lib/search
                        BasicSearchBuilder.java CompareOperator.java
                        SearchBuilder.java SearchException.java
                        SearchExpression.java SearchRequest.java
                        SearchRequestSample.java SearchScope.java
                        TestOperator.java
               webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions
                        AndExpression.java CompareExpression.java
                        ContainsExpression.java IsDefinedExpression.java
                        NotExpression.java OrExpression.java
                        TestExpression.java
  Log:
  first version of helpers to generate DASL queries
  
  Revision  Changes    Path
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/BasicSearchBuilder.java
  
  Index: BasicSearchBuilder.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search;
  
  import java.io.StringWriter;
  import java.text.DateFormat;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Locale;
  import java.util.Map;
  
  import org.apache.commons.xmlio.out.XMLEncode;
  
  import org.apache.webdav.lib.Constants;
  import org.apache.webdav.lib.PropertyName;
  import org.apache.webdav.lib.search.SearchRequest.Variable;
  import org.apache.webdav.lib.search.expressions.AndExpression;
  import org.apache.webdav.lib.search.expressions.CompareExpression;
  import org.apache.webdav.lib.search.expressions.ContainsExpression;
  import org.apache.webdav.lib.search.expressions.IsDefinedExpression;
  import org.apache.webdav.lib.search.expressions.NotExpression;
  import org.apache.webdav.lib.search.expressions.OrExpression;
  import org.apache.webdav.lib.search.expressions.TestExpression;
  import org.apache.webdav.lib.util.QName;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class BasicSearchBuilder implements SearchBuilder
  {
      private static DateFormat dateFormat = new SimpleDateFormat(
              "EEE, d MMM yyyy kk:mm:ss z", Locale.US);
  
      private Map variables;
      private StringWriter writer;
      
      public String build(SearchRequest search, Map variables, List scopes) 
          throws SearchException
      {
          this.variables = variables;
          
          this.writer = new StringWriter(); 
          
          writer.write("<D:searchrequest xmlns:D='DAV:'>\n");
          writer.write("<D:basicsearch>\n");
          writeSelection(search, writer);
          writeFrom(scopes, writer);
          
          if (search.getWhereExpression() != null) {
              writer.write("<D:where>\n");
              search.getWhereExpression().build(this);
              writer.write("</D:where>\n");
          }
          
          writer.write("</D:basicsearch>\n");
          writer.write("</D:searchrequest>\n");
          
          return writer.toString();
      }
      
      private static void writeSelection(SearchRequest search, StringWriter writer)
      {
          Iterator i = search.getSelection();
          if (i.hasNext()) {
              writer.write("<D:select><D:prop>\n");
              for(;i.hasNext();) {
                  writer.write("<");
                  writeQNameStart((PropertyName)i.next(), writer);
                  writer.write("/>\n");
              }
              writer.write("</D:prop></D:select>\n");
          }
      }
      
     
  
      private static void writeFrom(List scopes, StringWriter writer) {
          writer.write("<D:from>\n");
          for(int i = 0, l = scopes.size(); i < l; i++) {
              SearchScope scope = (SearchScope)scopes.get(i);
              writer.write("<D:scope><D:href>");
              writer.write(XMLEncode.xmlEncodeText(scope.getHref()));
              writer.write("</D:href><D:depth>");
              writer.write(scope.getDepthString());
              writer.write("</D:depth></D:scope>\n");
          }
          writer.write("</D:from>\n");
      }
      
      private static void writeQNameStart(QName name, StringWriter writer) 
      {
          if (name.getNamespaceURI().equals(Constants.DAV)) {
              writer.write("D:");
              writer.write(name.getLocalName());
          } else {
              writer.write(name.getLocalName());
              writer.write(" xmlns='");
              writer.write(name.getNamespaceURI());
              writer.write("'");
          }
      }
      private static void writeQNameEnd(QName name, StringWriter writer) 
      {
          if (name.getNamespaceURI().equals(Constants.DAV)) {
              writer.write("D:");
              writer.write(name.getLocalName());
          } else {
              writer.write(name.getLocalName());
          }
      }
      
      
      public void buildAnd(AndExpression and) throws SearchException
      {
          writer.write("<D:and>\n");
          for(Iterator i = and.getExpressions(); i.hasNext();) {
              SearchExpression expression = (SearchExpression)i.next();
              expression.build(this);
          }
          writer.write("</D:and>\n");
      }
      
      public void buildOr(OrExpression or) throws SearchException
      {
          writer.write("<D:or>\n");
          for(Iterator i = or.getExpressions(); i.hasNext();) {
              SearchExpression expression = (SearchExpression)i.next();
              expression.build(this);
          }
          writer.write("</D:or>\n");
      }
      
      public void buildNot(NotExpression expression) throws SearchException
      {
          writer.write("<D:not>\n");
          expression.getExpression().build(this);
          writer.write("</D:not>\n");
      }
      
      public void buildCompare(CompareExpression compare) throws SearchException
      {
          writer.write("<");
          writeQNameStart(compare.getOperator(), writer);
          writer.write(">");
          
          writer.write("<D:prop><");
          writeQNameStart(compare.getPropertyName(), writer);
          writer.write("/></D:prop>");
          
          writer.write("<D:literal>");
          writer.write(XMLEncode.xmlEncodeText(valueToString(compare.getValue())));
          writer.write("</D:literal>");
          
          writer.write("</");
          writeQNameEnd(compare.getOperator(), writer);
          writer.write(">\n");
       
      }
      
      public void buildContains(ContainsExpression contains) 
          throws SearchException
      {
          writer.write("<D:contains>");
          writer.write(XMLEncode.xmlEncodeText(contains.getText()));
          writer.write("</D:contains>\n");
      }
      
      public void buildIsdefined(IsDefinedExpression expression)
          throws SearchException {
          writer.write("<D:is-defined><D:prop><");
          writeQNameStart(expression.getPropertyName(), writer);
          writer.write("/></D:prop></D:is-defined>\n");
      }
      public void buildTest(TestExpression expression)
          throws SearchException 
      {
          writer.write("<");
          if (expression.getNamespace().equals(Constants.DAV)) {
              writer.write("D:");
              writer.write(expression.getLocalName());
          } else {
              writer.write(expression.getLocalName());
              writer.write(" xmlns='");
              writer.write(expression.getNamespace());
              writer.write("'");
          }
          writer.write("/>");
      }
      
      private String valueToString(Object value) throws SearchException {
          if (value instanceof Date) {
              synchronized(dateFormat) {
                  return dateFormat.format((Date)value);
              }
          }
          if (value instanceof Variable) {
              Variable var = (Variable)value;
              Object val = this.variables.get(var.getName());
              if (val == null) val = var.getDefaultValue();
              if (val == null) {
                  throw new SearchException("Unset variable: " + var.getName());
              }
              return valueToString(val);
          }
          // otherwise
          return value.toString();
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/CompareOperator.java
  
  Index: CompareOperator.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search;
  
  import org.apache.webdav.lib.Constants;
  import org.apache.webdav.lib.util.QName;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public final class CompareOperator extends QName
  {
      public static final CompareOperator EQ = new CompareOperator(Constants.DAV, "eq");
      public static final CompareOperator LT = new CompareOperator(Constants.DAV, "lt");
      public static final CompareOperator GT = new CompareOperator(Constants.DAV, "gt");
      public static final CompareOperator LTE = new CompareOperator(Constants.DAV, "lte");
      public static final CompareOperator GTE = new CompareOperator(Constants.DAV, "gte");
      public static final CompareOperator LIKE = new CompareOperator(Constants.DAV, "like");
      public static final CompareOperator PROPERTY_CONTAINS = new CompareOperator(Constants.SLIDE, "property-contains");
  
      private CompareOperator(String namespace, String name) {
          super(namespace, name);
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/SearchBuilder.java
  
  Index: SearchBuilder.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search;
  
  import java.util.List;
  import java.util.Map;
  
  import org.apache.webdav.lib.search.expressions.AndExpression;
  import org.apache.webdav.lib.search.expressions.CompareExpression;
  import org.apache.webdav.lib.search.expressions.ContainsExpression;
  import org.apache.webdav.lib.search.expressions.IsDefinedExpression;
  import org.apache.webdav.lib.search.expressions.NotExpression;
  import org.apache.webdav.lib.search.expressions.OrExpression;
  import org.apache.webdav.lib.search.expressions.TestExpression;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public interface SearchBuilder
  {
      public String build(SearchRequest search, Map variables, List scopes) 
              throws SearchException;
      
      public void buildAnd(AndExpression and) 
              throws SearchException;
      public void buildOr(OrExpression or)
              throws SearchException;
      public void buildNot(NotExpression expression) 
              throws SearchException;
      public void buildCompare(CompareExpression compare) 
              throws SearchException;
      public void buildContains(ContainsExpression contains) 
              throws SearchException;
      public void buildIsdefined(IsDefinedExpression expression)
              throws SearchException;
      public void buildTest(TestExpression expression)
              throws SearchException;
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/SearchException.java
  
  Index: SearchException.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search;
  
  
  public class SearchException extends Exception
  {
      
      public SearchException()
      {
      }
      public SearchException(String message)
      {
          super(message);
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/SearchExpression.java
  
  Index: SearchExpression.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search;
  
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public abstract class SearchExpression
  {
      public abstract void build(SearchBuilder builder) 
          throws SearchException;
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/SearchRequest.java
  
  Index: SearchRequest.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search;
  
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  
  import org.apache.webdav.lib.PropertyName;
  import org.apache.webdav.lib.search.expressions.AndExpression;
  import org.apache.webdav.lib.search.expressions.CompareExpression;
  import org.apache.webdav.lib.search.expressions.ContainsExpression;
  import org.apache.webdav.lib.search.expressions.IsDefinedExpression;
  import org.apache.webdav.lib.search.expressions.NotExpression;
  import org.apache.webdav.lib.search.expressions.OrExpression;
  import org.apache.webdav.lib.search.expressions.TestExpression;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class SearchRequest
  {
      private List selections = new ArrayList();
      private List scopes = new ArrayList();
      private SearchExpression whereClause = null;
      
      public void addSelection(PropertyName propertyName) {
          this.selections.add(propertyName);
      }
      public Iterator getSelection() {
          return this.selections.iterator();
      }
      public void addScope(SearchScope scope) {
          this.scopes.add(scope);
      }
      
      public void setWhereExpression(SearchExpression expression) {
          this.whereClause = expression;
      }
      public SearchExpression getWhereExpression() {
          return this.whereClause;
      }
  
      /**
       * Factory method for compare expressions.
       * @param op operator to use while comparision  
       * @param property property tp be compared
       * @param value value to be used for comparision.
       */
      public CompareExpression compare(CompareOperator op, PropertyName property, Object value) {
          return new CompareExpression(op, property, value);
      }
      /**
       * Factory method for <code>contains</code> expression.
       * @param text the text that should be contained.
       */
      public ContainsExpression contains(String text) {
          return new ContainsExpression(text);
      }
      /**
       * Factory method for <code>and</code> expression.
       * @param e1 first expression 
       * @param e2 second expression
       */
      public AndExpression and(SearchExpression e1, SearchExpression e2) {
          AndExpression and = new AndExpression();
          and.add(e1);
          and.add(e2);
          return and;
      }
      /**
       * Factory method for <code>and</code> expression.
       * @param e1 first expression 
       * @param e2 second expression
       * @param e3 third expression
       */
      public AndExpression and(SearchExpression e1, SearchExpression e2, SearchExpression e3) {
          AndExpression and = new AndExpression();
          and.add(e1);
          and.add(e2);
          and.add(e3);
          return and;
      }
      /**
       * Factory method for <code>or</code> expression.
       * @param e1 first expression 
       * @param e2 second expression
       */
      public OrExpression or(SearchExpression e1, SearchExpression e2) {
          OrExpression or = new OrExpression();
          or.add(e1);
          or.add(e2);
          return or;
      }
      /**
       * Factory method for <code>and</code> expression.
       * @param e1 first expression 
       * @param e2 second expression
       * @param e3 third expression
       */
      public OrExpression or(SearchExpression e1, SearchExpression e2, SearchExpression e3) {
          OrExpression or = new OrExpression();
          or.add(e1);
          or.add(e2);
          or.add(e3);
          return or;
      }
      /**
       * Factory method for <code>not</code> expressions.
       * @param ex expression to be negated
       */
      public NotExpression not(SearchExpression ex) {
          return new NotExpression(ex);
      }
      
      /**
       * Factory method for <code>is-defined</code> expressions.
       * @param property the name of the property to be checked
       */
      public IsDefinedExpression isDefined(PropertyName property) {
          return new IsDefinedExpression(property);
      }
      /**
       * Factory method for <code>is-????</code> expressions.
       * @param operator
       */
      public TestExpression test(TestOperator operator) {
          return new TestExpression(operator.getNamespaceURI(), operator.getLocalName());
      }
      
      /**
       * Factory method for variables. They are intended as placeholders for values
       * in other expressions.
       * @param name the variables name
       */
      public Object variable(String name) {
          return variable(name, null);
      }
      
      /**
       * Factory method for variables. They are intended as placeholders for values
       * in other expressions.
       * @param name the variables name
       * @param defaultValue the variables defaul value
       */
      public Object variable(String name, Object defaultValue) {
          return new Variable(name, defaultValue);
      }
  
      
      
      public String asString() throws SearchException {
          SearchBuilder builder = new BasicSearchBuilder();
          return builder.build(this, Collections.EMPTY_MAP, this.scopes);
      }
  
      public String asString(List scopes) throws SearchException {
          SearchBuilder builder = new BasicSearchBuilder();
          return builder.build(this, Collections.EMPTY_MAP, scopes);
      }
      public String asString(Map variables) throws SearchException {
          SearchBuilder builder = new BasicSearchBuilder();
          return builder.build(this, variables, this.scopes);
      }
      public String asString(Map variables, List scopes) throws SearchException {
          SearchBuilder builder = new BasicSearchBuilder();
          return builder.build(this, variables, scopes);
      }
      
      
      public static class Variable {
          private String name;
          private Object defaultValue;
          Variable(String name, Object value) {
              if (value instanceof Variable) 
                  throw new IllegalArgumentException("Variables values must not be variables.");
              this.name = name;
              this.defaultValue = value;
          }
          public Object getDefaultValue()
          {
              return defaultValue;
          }
          public String getName()
          {
              return name;
          }
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/SearchRequestSample.java
  
  Index: SearchRequestSample.java
  ===================================================================
  package org.apache.webdav.lib.search;
  
  import java.util.ArrayList;
  import java.util.Date;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
  import org.apache.webdav.lib.PropertyName;
  
  /**
   * @author stefan
   */
  public class SearchRequestSample {
  
      public static void main(String[] args) {
          try {
              test1();
              testWithScopes();
              testWithVariables();
          }
          catch (SearchException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
  
      static final PropertyName DISPLAYNAME = new PropertyName("DAV:", "displayname");
      static final PropertyName LASTMODIFIED = new PropertyName("DAV:", "getlastmodified");
      static final PropertyName ABSTRACT = new PropertyName("http://any.domain/test/", "abstract");
      static final PropertyName KEYWORDS = new PropertyName("http://any.domain/test/", "keywords");
  
      
      public static void test1() throws SearchException {
          SearchRequest s = new SearchRequest();
          
          s.addSelection(DISPLAYNAME);
          s.addSelection(LASTMODIFIED);
          
          s.addScope(new SearchScope("files"));
          
          SearchExpression expression= 
              s.and(s.compare(CompareOperator.LIKE, DISPLAYNAME, "%.xml"),
                    s.and(s.compare(CompareOperator.GT, LASTMODIFIED, new Date(1100000000000L)),
                  	    s.compare(CompareOperator.LT, LASTMODIFIED, new Date(1121212121212L))));
          
          s.setWhereExpression(expression);
          
          System.out.println(s.asString());
      }
      
      public static void testWithVariables() throws SearchException {
          SearchRequest s = new SearchRequest();
          
          s.addSelection(DISPLAYNAME);
          s.addSelection(LASTMODIFIED);
          
          s.addScope(new SearchScope("files/docs1"));
          s.addScope(new SearchScope("files/docs2"));
          
          SearchExpression expression= s.compare(CompareOperator.PROPERTY_CONTAINS, 
                  ABSTRACT, s.variable("TEXT"));
          
          s.setWhereExpression(expression);
          
          Map variables = new HashMap();
          variables.put("TEXT", "aber hallo");
          System.out.println(s.asString(variables));
          
          variables.put("TEXT", "holla blokes");
          System.out.println(s.asString(variables));
      }
      
      public static void testWithScopes() throws SearchException {
          SearchRequest s = new SearchRequest();
          
          s.addSelection(DISPLAYNAME);
          s.addSelection(LASTMODIFIED);
          
          SearchExpression expression = s.or( 
                  s.isDefined(ABSTRACT),
                  s.isDefined(KEYWORDS));
          
          s.setWhereExpression(expression);
          
          System.out.println(s.asString());
  
          List scopes = new ArrayList();
          scopes.add(new SearchScope("files/docs1"));
          scopes.add(new SearchScope("files/docs2"));
          
          System.out.println(s.asString(scopes));
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/SearchScope.java
  
  Index: SearchScope.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search;
  
  
  /**
   * 
   */
  public class SearchScope
  {
      public static int DEPTH_0 = 0;
      public static int DEPTH_1 = 1;
      public static int DEPTH_INFINITY = Integer.MAX_VALUE;
      
      private String href;
      private int depth;
      
      public SearchScope(String uri) {
          this.href = uri;
          this.depth = DEPTH_INFINITY;
      }
      
      public SearchScope(String uri, int depth) {
          this.href = uri;
          this.depth = depth;
      }
      
      public int getDepth()
      {
          return depth;
      }
      public String getDepthString()
      {
          if(this.depth == DEPTH_INFINITY) {
              return "infinity";
          } else {
              return Integer.toString(this.depth);
          }
      }
      public String getHref()
      {
          return href;
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/TestOperator.java
  
  Index: TestOperator.java
  ===================================================================
  package org.apache.webdav.lib.search;
  
  import org.apache.webdav.lib.Constants;
  import org.apache.webdav.lib.util.QName;
  
  /**
   * @author stefan
   */
  public final class TestOperator extends QName {
      
      public static final TestOperator IS_COLLECTION = new TestOperator(Constants.DAV, "is-collection");
      public static final TestOperator IS_PRINCPAL = new TestOperator(Constants.DAV, "is-principal");
  
      private TestOperator(String namespaceURI, String localName) {
          super(namespaceURI, localName);
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions/AndExpression.java
  
  Index: AndExpression.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search.expressions;
  
  import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.List;
  
  import org.apache.webdav.lib.search.SearchBuilder;
  import org.apache.webdav.lib.search.SearchException;
  import org.apache.webdav.lib.search.SearchExpression;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class AndExpression extends SearchExpression
  {
      private List expressions = new ArrayList();
      
      public AndExpression() {
          
      }
      
      public void add(SearchExpression expression) {
          this.expressions.add(expression);
      }
      
      public Iterator getExpressions() {
          return this.expressions.iterator();
      }
      
      public void build(SearchBuilder builder) throws SearchException
      {
          builder.buildAnd(this);
      }
      
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions/CompareExpression.java
  
  Index: CompareExpression.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search.expressions;
  
  import org.apache.webdav.lib.PropertyName;
  import org.apache.webdav.lib.search.CompareOperator;
  import org.apache.webdav.lib.search.SearchBuilder;
  import org.apache.webdav.lib.search.SearchException;
  import org.apache.webdav.lib.search.SearchExpression;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class CompareExpression extends SearchExpression
  {
      private PropertyName propertyName;
      private CompareOperator operator;
      private Object value;
      
      public CompareExpression(CompareOperator operator, PropertyName name, Object value) {
          this.operator = operator;
          this.propertyName = name;
          this.value = value;
      }
      
      public PropertyName getPropertyName()
      {
          return propertyName;
      }
      public Object getValue()
      {
          return value;
      }
      public CompareOperator getOperator() 
      {
          return this.operator;
      }
      
      public void build(SearchBuilder builder) throws SearchException
      {
          builder.buildCompare(this);
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions/ContainsExpression.java
  
  Index: ContainsExpression.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search.expressions;
  
  import org.apache.webdav.lib.search.SearchBuilder;
  import org.apache.webdav.lib.search.SearchException;
  import org.apache.webdav.lib.search.SearchExpression;
  
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class ContainsExpression extends SearchExpression
  {
      private String text;
      
      public ContainsExpression(String text) {
          this.text = text;
      }
      
      public String getText() {
          return this.text;
      }
      
      public void  build(SearchBuilder builder) throws SearchException
      {
          builder.buildContains(this);
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions/IsDefinedExpression.java
  
  Index: IsDefinedExpression.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search.expressions;
  
  import org.apache.webdav.lib.PropertyName;
  import org.apache.webdav.lib.search.SearchBuilder;
  import org.apache.webdav.lib.search.SearchException;
  import org.apache.webdav.lib.search.SearchExpression;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class IsDefinedExpression extends SearchExpression
  {
      private PropertyName propertyName;
      
      public IsDefinedExpression(PropertyName name) {
          this.propertyName = name;
      }
      
      public void build(SearchBuilder builder) throws SearchException
      {
          builder.buildIsdefined(this);
      }
  
      public PropertyName getPropertyName()
      {
          return propertyName;
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions/NotExpression.java
  
  Index: NotExpression.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search.expressions;
  
  import org.apache.webdav.lib.search.SearchBuilder;
  import org.apache.webdav.lib.search.SearchException;
  import org.apache.webdav.lib.search.SearchExpression;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class NotExpression extends SearchExpression
  {
  
      private SearchExpression expression;
      
      public NotExpression(SearchExpression expression) {
          this.expression = expression;
      }
      
      public void build(SearchBuilder builder) throws SearchException
      {
          builder.buildNot(this);
      }
      public SearchExpression getExpression()
      {
          return expression;
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions/OrExpression.java
  
  Index: OrExpression.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search.expressions;
  
  import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.List;
  
  import org.apache.webdav.lib.search.SearchBuilder;
  import org.apache.webdav.lib.search.SearchException;
  import org.apache.webdav.lib.search.SearchExpression;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class OrExpression  extends SearchExpression
  {
   
      private List expressions = new ArrayList();
      
      public OrExpression() {
          
      }
      
      public void add(SearchExpression expression) {
          this.expressions.add(expression);
      }
      
      public Iterator getExpressions() {
          return this.expressions.iterator();
      }
  
      public void build(SearchBuilder builder) throws SearchException {
          builder.buildOr(this);
      }
  }
  
  
  
  1.1                  jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/search/expressions/TestExpression.java
  
  Index: TestExpression.java
  ===================================================================
  // vi: set ts=3 sw=3:
  package org.apache.webdav.lib.search.expressions;
  
  import org.apache.webdav.lib.search.SearchBuilder;
  import org.apache.webdav.lib.search.SearchException;
  import org.apache.webdav.lib.search.SearchExpression;
  
  
  /**
   * @author Stefan L�tzkendorf
   */
  public class TestExpression extends SearchExpression
  {
      private String localName;
      private String namespace;
      
      public TestExpression(String namespace, String localname) {
          this.namespace = namespace;
          this.localName = localname;
      }
      
      public void build(SearchBuilder builder) throws SearchException
      {
          builder.buildTest(this);
      }
  
      public String getLocalName()
      {
          return localName;
      }
      public String getNamespace()
      {
          return namespace;
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org