View Javadoc

1   package com.atlassian.webdriver.waiter.webdriver;
2   
3   import com.atlassian.annotations.ExperimentalApi;
4   import com.atlassian.webdriver.waiter.webdriver.retriever.WebElementFieldRetriever;
5   import com.atlassian.webdriver.waiter.webdriver.function.ConditionFunction;
6   import com.atlassian.webdriver.waiter.ExecutableWaiterQuery;
7   import com.atlassian.webdriver.waiter.Query;
8   import com.atlassian.webdriver.waiter.StringValueQuery;
9   import com.atlassian.webdriver.waiter.webdriver.function.NotFunction;
10  import com.atlassian.webdriver.waiter.webdriver.function.field.ContainsFunction;
11  import com.atlassian.webdriver.waiter.webdriver.function.field.EndsWithFunction;
12  import com.atlassian.webdriver.waiter.webdriver.function.field.EqualsIgnoresCaseFunction;
13  import com.atlassian.webdriver.waiter.webdriver.function.field.IsEmptyFunction;
14  import com.atlassian.webdriver.waiter.webdriver.function.field.IsEqualFunction;
15  import com.atlassian.webdriver.waiter.webdriver.function.field.MatchesFunction;
16  import com.atlassian.webdriver.waiter.webdriver.function.field.StartsWithFunction;
17  
18  /**
19   *
20   * <strong>WARNING</strong>: This API is still experimental and may be changed between versions.
21   *
22   * @since 2.1.0
23   */
24  @ExperimentalApi
25  public class WebDriverFieldQuery implements StringValueQuery
26  {
27      private final WebDriverQueryBuilder queryBuilder;
28      private final WebElementFieldRetriever fieldRetriever;
29  
30      public WebDriverFieldQuery(WebDriverQueryBuilder queryBuilder,
31              WebElementFieldRetriever fieldRetriever)
32      {
33          this.queryBuilder = queryBuilder;
34          this.fieldRetriever = fieldRetriever;
35      }
36  
37      public ExecutableWaiterQuery contains(final String value)
38      {
39          return createExecutableWaiterQuery(new ContainsFunction(fieldRetriever, value));
40      }
41  
42      public ExecutableWaiterQuery notContains(final String value)
43      {
44          return createExecutableWaiterQuery(not(new ContainsFunction(fieldRetriever, value)));
45      }
46  
47      public ExecutableWaiterQuery isEqual(final String value)
48      {
49          return createExecutableWaiterQuery(new IsEqualFunction(fieldRetriever, value));
50      }
51  
52      public ExecutableWaiterQuery notEqual(final String value)
53      {
54          return createExecutableWaiterQuery(not(new IsEqualFunction(fieldRetriever, value)));
55      }
56  
57      public ExecutableWaiterQuery isEmpty()
58      {
59          return createExecutableWaiterQuery(new IsEmptyFunction(fieldRetriever));
60      }
61  
62      public ExecutableWaiterQuery isNotEmpty()
63      {
64          return createExecutableWaiterQuery(not(new IsEmptyFunction(fieldRetriever)));
65      }
66  
67      public ExecutableWaiterQuery endsWith(final String value)
68      {
69          return createExecutableWaiterQuery(new EndsWithFunction(fieldRetriever, value));
70      }
71  
72      public ExecutableWaiterQuery doesNotEndWith(final String value)
73      {
74          return createExecutableWaiterQuery(not(new EndsWithFunction(fieldRetriever, value)));
75      }
76  
77      public ExecutableWaiterQuery matches(final String value)
78      {
79          return createExecutableWaiterQuery(new MatchesFunction(fieldRetriever, value));
80      }
81  
82      public ExecutableWaiterQuery doesNotMatch(final String value)
83      {
84          return createExecutableWaiterQuery(not(new MatchesFunction(fieldRetriever, value)));
85      }
86  
87      public ExecutableWaiterQuery startsWith(final String value)
88      {
89          return createExecutableWaiterQuery(new StartsWithFunction(fieldRetriever, value));
90      }
91  
92      public ExecutableWaiterQuery doesNotStartWith(final String value)
93      {
94          return createExecutableWaiterQuery(not(new StartsWithFunction(fieldRetriever, value)));
95      }
96  
97      public ExecutableWaiterQuery equalsIgnoresCase(final String value)
98      {
99          return createExecutableWaiterQuery(new EqualsIgnoresCaseFunction(fieldRetriever, value));
100     }
101 
102     private NotFunction not(ConditionFunction func)
103     {
104         return new NotFunction(func);
105     }
106 
107     private ExecutableWaiterQuery createExecutableWaiterQuery(final ConditionFunction func)
108     {
109         queryBuilder.add(new Query()
110         {
111             @Override
112             public ConditionFunction build()
113             {
114                 return func;
115             }
116         });
117         return new WebDriverWaiterQuery.WebDriverExecutableWaiterQuery(queryBuilder);
118     }
119 
120 }