1 package org.weda.store;
2
3 import java.util.Collection;
4 import java.util.Map;
5 import org.weda.message.Messages;
6 import org.weda.property.ObjectDescriptorRegistry;
7 import org.weda.converter.ValueTypeConverter;
8 import org.weda.store.impl.ObjectAlias;
9
10 /**Цель: предоставить QL выражение позволяющее ограничить набор данных
11 * в результате выполнения {@link Query}.
12 *
13 * @author tim
14 */
15 public interface QueryFilter extends java.io.Serializable {
16
17 public void init() throws QueryFilterException;
18
19 public String createFilterElementId(
20 String propertyPath, String objectAlias);
21
22 /**Метод инициализирует элемент фильтра переданный в параметре.
23 */
24 public void initQueryFilterElement(
25 QueryFilterElement filterElement, boolean isStaticElement)
26 throws QueryFilterException;
27 /**Метод задает выражение поиска для заданного элемента фильтра.
28 */
29 public void setExpression(String elementId, String expression)
30 throws QueryFilterException;
31
32 /**метод возвращает список элементов фильтра.
33 */
34 public Collection<QueryFilterElement> getFilterElements();
35
36 /**Метод добавляет элемент фильтра.
37 */
38 public void addFilterElement(QueryFilterElement filterElement);
39 /**Метод возвращает элемент фильтра по его идентификатору.
40 * @see QueryFilterElement#getId()
41 */
42 public QueryFilterElement getFilterElement(String id);
43 /**Метод возвращает элемент фильтра по его идентификатору.
44 * @see QueryFilterElement#getId()
45 */
46 public QueryFilterElement getStaticFilterElement(String id);
47 /**Метод удаляет элемент фильтра.
48 */
49 public void removeFilterElement(QueryFilterElement filterElement);
50 /**Метод устанавливает свойство <code>enabled</code> каждого
51 * {@link QueryFilterElement} в <code>FALSE</code>
52 */
53 public void disableFilterElements();
54 /**Метод устанавливает свойство <code>enabled</code> каждого
55 * {@link QueryFilterElement} в <code>TRUE</code>
56 */
57 public void enableFilterElements();
58 /**Метод устанавливает в <code>null</code> выражения во всех нестатических
59 * элементах фильтра.
60 * @see QueryFilterElement#setExpression(String)
61 * @see #getFilterElements()
62 */
63 public void clearFiltersExpressions() throws QueryFilterException;
64 /**метод возвращает статический список элементов фильтра.
65 */
66 public Collection<QueryFilterElement> getStaticFilterElements();
67 /**Метод добавляет статический элемент фильтра.
68 */
69 public void addStaticFilterElement(QueryFilterElement filterElement);
70 /**Метод удаляет статический элемент фильтра.
71 */
72 public void removeStaticFilterElement(QueryFilterElement filterElement);
73 /**Метод псевдоним объекта по умолчанию. Псевдоним по умолчанию будет
74 * устанавливаться для тех элементов фильтра у которых не установлено
75 * свойство <code>objectAlias</code>
76 */
77 public void setDefaultObjectAlias(ObjectAlias objectAlias);
78 /**Метод добавляет информацию о псевдониме объекта.
79 */
80 public void addObjectAlias(ObjectAlias objectAlias);
81
82
83
84 public QueryFilter cloneFilter() throws QueryFilterException;
85 public Object clone() throws CloneNotSupportedException;
86 }