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
21
22
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 }