View Javadoc

1   
2   package org.weda.store;
3   
4   import java.util.Collection;
5   import java.util.List;
6   import java.util.Set;
7   import org.weda.action.ActionContainer;
8   import org.weda.model.RowSelectionModel;
9   import org.weda.store.impl.ObjectSet;
10  
11  /**Цель: 
12   *
13   * @author tim
14   */
15  public interface ObjectSource extends RowSelectionModel, ActionContainer {
16      public static enum Mode {
17          /**Означает что, источник данных закрыт. Для его открытия
18           * необходимо воспользоваться одним из методов.
19           * <ul>
20           *      <li>{@link #open()}</li>
21           *      <li>{@link #refresh()}</li>
22           *      <li>{@link #refresh(Object)}</li> 
23           * </ul>
24           */
25          CLOSED,
26          /**Нормальный режим работы источника данных.
27           */
28          VIEW,
29          /**Режим в котором источник данных должен выбрать строку и вернуть
30           * ее вызываемому компоненту.
31           */
32          SELECT,
33          /**Режим в котором осуществляется модификация выделенных строк.
34           */ 
35          EDIT
36      };
37      
38      public void init() throws ObjectSourceException;
39      /**Метод возвращает имя источника данных.
40       */
41      public String getName();
42      /**Метод возвращает режим в котором работает источник данных
43       */
44      public Mode getMode();
45      /**Метод устанавливает режим в котором работает источник данных
46       */
47      public void setMode(Mode mode);
48      /**Метод вернет <code>TRUE</code> если в источник данных нельзя
49       * вносить изменения.
50       */
51      public boolean isReadOnly();
52      /**Если передать <code>TRUE</code> то в источник данных будет нельзя
53       * вносить изменения.
54       */
55      public void setReadOnly(boolean readOnly);
56      /**Метод открывает источник объектов если тот находится в состояние 
57       * {@link Mode#CLOSED}. Т.е. в источнике данных появляются
58       * строки соответствующие запросу и установленому фильтру. 
59       * После выполнения метода источник объектов
60       * переводится в состояние {@link Mode#VIEW}. 
61       *
62       *@see #setQuery(Query)
63       *@see #setQueryFilter(QueryFilter)
64       *@see #close()
65       *@see #refresh()
66       *@see #refresh(Object)
67       */
68      public void open() throws ObjectSourceException;
69      /**Метод закрывает, а затем открывает источник объектов. 
70       * @see #open()
71       * @see #close()
72       * @see #refresh(Object)
73       */
74      public void refresh() throws ObjectSourceException;
75      /**Метод делает следующее:
76       * <ul>
77       *  <li>закрывает источник объектов
78       *  <li>настраивает фильтр таким образом, что бы после открытия появились 
79       *      только те строки в которых значение объекта базового класса 
80       *      равнялись объекту переданному в параметре.
81       *  <li>открывает источник объектов
82       * </ul>
83       * 
84       * @see #setBaseClass(Class)
85       * @see #open()
86       * @see #close()
87       * @see #refresh()
88       * @throws DataSourceException если значение переданного в параметре объекта
89       *          null или объект не является экземпляром базового класса.
90       */
91      public void refresh(Object baseClassObject) throws ObjectSourceException;
92      /**
93       * Метод закрывает источник данных если тот не находится 
94       * в состоянии {@link Mode#CLOSED}. После выполнения метода источник 
95       * объектов переводится в состояние {@link Mode#CLOSED}. 
96       * 
97       * @see #open()
98       * @see #close()
99       * @see #refresh()
100      * @see #refresh(Object)
101      */
102     public void close() throws ObjectSourceException;
103     /**Метод добавляет информацию об источнике данных который является 
104      * подчиненным по отношению к данному.
105      *@see #activateDetailConstraints(Object masterObject)
106      *@see #deactivateDetailConstraints()
107      *@see #isDetailConstraintsActivated()
108      *@see #getDetailInfos()
109      */
110     public void addDetailInfo(
111             DetailObjectSourceInfo detailDataSourceInfo);
112     /**Метод возвращает информацию об подчиненных источниках данных.
113      *@see #activateDetailConstraints(Object masterObject)
114      *@see #deactivateDetailConstraints()
115      *@see #isDetailConstraintsActivated()
116      *@see #addDetailInfo(DetailDataSourceInfo detailDataSourceInfo)
117      */    
118     public Collection<DetailObjectSourceInfo> getDetailInfos();
119     /**Метод устанавливает ограничения на подчиненных источниках данных.
120      *@param masterObject объект которой является главным для подчиненных
121      *          источников данных.
122      *@see #deactivateDetailConstraints()
123      *@see #isDetailConstraintsActivated()
124      *@see #addDetailInfo(DetailDataSourceInfo detailDataSourceInfo)
125      *@see #getDetailInfos()
126      */
127     public void activateDetailConstraints(
128             Object masterObject, boolean masterPropertiesOnly)
129         throws ObjectSourceException;    
130     /**Метод снимает ограничения с подчиненных источников данных.
131      *@see #activateDetailConstraints(Object masterObject)
132      *@see #isDetailConstraintsActivated()
133      *@see #addDetailInfo(DetailDataSourceInfo detailDataSourceInfo)
134      *@see #getDetailInfos()
135      */
136     public void deactivateDetailConstraints() throws ObjectSourceException;
137     /**Метод вернет <code>TRUE</code> если ограничения на подчиненных
138      * источниках данных были установлены, но еще не были сняты.
139      *@see #activateDetailConstraints(Object masterObject)
140      *@see #deactivateDetailConstraints()
141      *@see #addDetailInfo(DetailDataSourceInfo detailDataSourceInfo)
142      *@see #getDetailInfos()
143      */
144     public boolean isDetailConstraintsActivated();
145     /**Метод добавляет ограничение к источнику данных.
146      * @see #removeConstraint(DataSourceConstraint)
147      */
148     public void addConstraint(ObjectSourceConstraint constraint)
149             throws ObjectSourceException;
150     /**Метод снимает ограничение с источника данных.
151      * @see #addConstraint(DataSourceConstraint)
152      */
153     public void removeConstraint(ObjectSourceConstraint constraint);
154     /**Метод возвращает количество строк в источнике данных на текущий момент
155      */
156     public int getRowCount();
157     /**Метод возвращает строку в указанной позиции
158      */
159     public Object[] getRowAt(int row);
160     /**Метод возвращает запрос, при помощи которого будет получен 
161      * результирующий набор данных.
162      */
163     public Query getQuery();
164     /**Метод устанавливает запрос, при помощи которого будет получен 
165      * результирующий набор данных.
166      */
167     public void setQuery(Query query);
168     /**Метод возвращает фильтр для источника данных.
169      */
170     public QueryFilter getQueryFilter();
171     /**Метод задает фильтр для источника данных.
172      */
173     public void setQueryFilter(QueryFilter queryFilter);
174     /**Метод возвращает позиции выделенных в источнике данных строк.
175      */
176     public Set<Integer> getSelectedRows();
177     /**Метод возвращает количество выделенных строк.
178      */
179     public int getSelectedRowCount();
180     /**Метод вернет <code>true</code> если в источнике данных есть выделенные
181      * строки
182      *@see #selectRowInPage(int)
183      *@see #selectRow(int)
184      */
185     public boolean hasSelectedRows();
186     /**Метод возвращает класс являющийся базовым для источника данных.
187      * @see #setBaseClass(Class)
188      */
189     public Class getBaseClass();
190     /**Метод устанавливает класс являющийся базовым для источника данных.
191      * Только объекты базового класса могут редактироваться в источнике данных.
192      *@see #setBaseClass
193      */
194     public void setBaseClass(Class baseClass);
195     /**Метод возвращает позицию базового класса в строке.
196      *@see #setBaseClass(Class)
197      *@see #getCurrentPage()
198      */
199     public int getBaseClassPosition();    
200     /**Метод устанавливает позицию базового класса в строке.
201      *@see #setBaseClass(Class)
202      *@see #getCurrentPage()
203      */
204     public void setBaseClassPosition(int position);
205     /**Метод возвращает alias базового класса в запросе.
206      */
207     public String getBaseClassAlias();
208     /**Метод создает новую запись в источнике данных, выбирает ее и начинает
209      * процесс изменения, вызывая метод {@link #beginModification()}.
210      * @see #beginModification()
211      * @see #cancelModification()
212      * @see #saveModification()
213      * @see #getSelectedObjectSet
214      */
215     public void createNewRow() throws ObjectSourceException;
216     /**Метод удаляет выделенные строки в источнике объектов. 
217      */
218     public void removeSelectedRows() throws ObjectSourceException;
219     /**Метод возвращает множество объектов выделенных в текущий момент времени
220      * и доступный для редактирования.
221      * @throws DataSourceException если источник данных находится не в режиме
222      *      редактирования.
223      * @see #beginModification()
224      * @see #cancelModification()
225      * @see #saveModification()
226      */
227     public ObjectSet getSelectedObjectSet();
228     /**Вызов данного метода перевовит datasource в режим редактирования
229      * {@link Mode#EDIT}.
230      * @see #saveModification()
231      * @see #cancelModification()
232      * @see #getSelectedObjectSet
233      */
234     public void beginModification() throws ObjectSourceException;
235     /**Метод фиксирует изменения произведенные над выделенными строками. 
236      * После выполнения метода источник данных переходит в тот режим в котором
237      * он был перед вызовом метода {@link #beginModification()}
238      * @throws DataSourceException если произошли ошибки во время фиксации
239      *      или источник данных не находится в режиме редактирования.
240      * @see #beginModification()
241      * @see #cancelModification()
242      * @see #getSelectedObjectSet
243      */    
244     public void saveModification() throws ObjectSourceException;
245     /**Метод сохраняет изменения, но не фиксирует их.
246      * @see #saveModification()
247      * @see #beginModification()
248      * @see #cancelModification()
249      * @see #getSelectedObjectSet
250      */
251     public void applyModification() throws ObjectSourceException;
252     /**Метод отменяет изменения произведенные над выделенными строками.
253      * После выполнения метода источник данных переходит в тот режим в котором
254      * он был перед вызовом метода {@link #beginModification()}
255      * @throws DataSourceException если произошли ошибки во время отмены
256      *      или источник данных не находится в режиме редактирования.
257      * @see #beginModification()
258      * @see #savelModification()
259      * @see #getSelectedObjectSet
260      */
261     public void cancelModification() throws ObjectSourceException;
262     /**Метод вернет <code>TRUE</code> если между вызовами методов
263      * <code>beginModification()</code> и <code>saveModification()
264      * || cancelModification</code> был успешно выполнен метод 
265      * <code>applyModification</code>.
266      * @see #applyModification()
267      * @see #saveModification()
268      * @see #beginModification()
269      * @see #cancelModification()
270      * @see #getSelectedObjectSet
271      */
272     public boolean isModificationApplied();
273     /**Метод добавляет слушателя к источнику объектов.
274      */
275     public void addListener(ObjectSourceListener listener);
276     /**Метод удаляет слушателя.
277      */
278     public void removeListener(ObjectSourceListener listener);
279     /**Метод возвращает стоку содержащую сводную информацию в разрезе строк
280      * источника объектов.
281      */
282     public SummaryRow getSummaryRow();
283 
284     public Object clone() throws CloneNotSupportedException;
285 }