View Javadoc

1   //todo: неизвестен тип свойства
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 }