1
2 package org.weda.store;
3
4 import org.weda.message.Messages;
5 import org.weda.property.PropertyDescriptor;
6 import org.weda.converter.ValueTypeConverter;
7
8 /**Цель: предоставить QL выражение вида:
9 * <code> название_поля(свойства) оператор значение</code>
10 *
11 * @author tim
12 */
13 public interface QueryFilterElement {
14 public enum ExpressionType
15 {/**у элемента фильтра нет выражения*/
16 EMPTY,
17 /**элемент фильтра имеет выражение вида
18 *<code>свойство оператор параметр</code>
19 */
20 OPERATOR,
21 /**элемент фильтра имеет выражение сформированное
22 * пользователем.
23 */
24 COMPLETE
25 };
26
27 public enum OperatorType{
28 /**это следующие операторы: >=, <=, <>, =, >, <
29 */
30 SIMPLE,
31 /**LIKE оператор <b>свойство</b> like <b>значение</b>
32 */
33 LIKE,
34 /**BETWEEN оператор:
35 * <b>свойство</b> between <b>знач_1</b> and <b>знач_1</b>
36 */
37 BETWEEN,
38 /**IN оператор:
39 * <b>свойство</b> in (<b>знач_1</b>, <b>знач_1</b>, ...,<b>знач_n</b>)
40 */
41 IN
42 };
43
44 /**Если метод вернет <code>TRUE</code> тогда элемент использует alias
45 * в качестве свойства.
46 */
47 public boolean isUseAliasAsProperty();
48 /**Если установить в <code>TRUE</code> тогда элемент использует alias
49 * в качестве свойства.
50 */
51 public void setUseAliasAsProperty(boolean value);
52 /**Метод вернет <code>FALSE</code> если элемент не должен участвовать
53 * при формировании результирующего запроса.
54 */
55 public boolean isEnabled();
56 /**Если в параметре передать <code>TRUE</code> тогда элемент будет
57 * участвовать при формировании результирующего запроса.
58 */
59 public void setEnabled(boolean enabled);
60 /**Метод возвращает текущее занчение элемента.
61 */
62 public Object getValue();
63 /**Метод устанавливает текущее занчение элемента.
64 */
65 public void setValue(Object value);
66 /**Метод возвращает имя параметра в QL запросе. Значение элемента
67 * данного фильтра будет установлено в качестве значения для параметра
68 * имя которого возвращает данный метод. Если метод возвращает
69 * <code>null</code> значит выражение для фильтра будет формироваться
70 * по стандартной схеме.
71 */
72 public String getParameterName();
73 /**Метод возвращает значение параметра.
74 *@see #getFilter()
75 */
76 public Object getParameterValue();
77 /**Метод возвращает тип оператора. Актуально только если
78 * {@link #getExpressionType()} возвращает {@link ExpressionType#OPERATOR}
79 */
80 public OperatorType getOperatorType();
81 public void setOperatorType(OperatorType operatorType);
82 /**Метод возвращает оператор.
83 */
84 public String getOperator();
85 /**Метод устанавливает оператор.
86 */
87 public void setOperator(String operator);
88 /**Метод возвращает последнее установленное выражение для элемента фильтра.
89 */
90 public String getExpression();
91 /**Метод устанавливает связку <code>оператор значение</code> в строковом виде.
92 */
93 public void setExpression(String value) throws QueryFilterElementException;
94 /**Метод возвращает статическую связку <code>оператор значение</code>
95 * в строковом виде.
96 */
97 public String getStaticExpression();
98 /**Метод устанавливает статическую связку <code>оператор значение</code>
99 * в строковом виде.
100 */
101 public void setStaticExpression(String value);
102 /**Метод возвращает тип текущего выражения элемента фильтра.
103 */
104 public ExpressionType getExpressionType();
105 /**Метод устанавилвает тип текущего выражения элемента фильтра.
106 */
107 public void setExpressionType(ExpressionType expressionType);
108 /**Метод возвращает имя свойства по которому будет осуществляться
109 * фильтрация.
110 */
111 public String getProperty();
112 /**Метод устанавливает имя свойства по которому будет осуществляться
113 * фильтрация.
114 */
115 public void setProperty(String name);
116 /**Метод устанавливает описание свойства.
117 */
118 public void setPropertyDescriptor(PropertyDescriptor propertyDescriptor);
119 /**Метод возвращает описание свойства.
120 */
121 public PropertyDescriptor getPropertyDescriptor();
122 /**Метод возвразает псевдоним объекта в QL над свойством которого
123 * будет осуществена фильтрация.
124 */
125 public String getObjectAlias();
126 /**Метод устанавливает псевдоним объекта в QL над свойством которого
127 * будет осуществена фильтрация.
128 */
129 public void setObjectAlias(String objectAlias);
130 /**Метод возвращает уникальный идентификатор элемента фильтра в пределах
131 * запроса. Рекомендуемый формат идентификатора: <code>objectAlias.property</code>
132 */
133 public String getId();
134 public void setId(String id);
135 /**Метод уставливает шаблон с помощью которого строковое значение в выражении
136 * будет преобразовано к объекту.
137 *@see #setExpression(String)
138 */
139 public void setPattern(String pattern);
140 public Object clone() throws CloneNotSupportedException;
141 }