1
2 package org.weda.store;
3
4 import java.io.InputStream;
5 import java.io.Serializable;
6 import java.sql.Blob;
7 import java.util.Iterator;
8 import java.util.List;
9
10 /**Сервис позволяющий сохранять и востанавливать
11 * состояние доменных объектов
12 *
13 * @author Mikhail Titov
14 */
15 public interface ObjectStore {
16 /**Маркер позволяющий определить, где в QL запросе вставить выражения
17 * фильтра (QueryFilter).
18 */
19 public final static String FILTER_INSERT_POSITION_MARKER = "{#}";
20
21
22 /**Метод начинает новую транзакцию или если транзация уже начата
23 * пытается сделать точку сохранения (save point) если jdbc драйвер
24 * поддерживает данную функциональность. Каждый успешный
25 * вызов метода увеличивает счетчик тразакций на едниницу.
26 * @see #commit()
27 * @see #rollback()
28 */
29 public void beginTransaction() throws ObjectStoreException;
30 /**Метод фиксирует транзацию если значение счетчика транзакций равно одному
31 * иначе удаляет последнюю точку сохранения (save point)
32 * если jdbc драйвер поддерживает данную функциональность
33 * Каждый вызов уменьшает счетчик транзакций на единицу.
34 * @see #beginTransaction()
35 * @see #rollback()
36 */
37 public void commit() throws ObjectStoreException;
38 /**Метод отменяет транзацию если значение счетчика транзакций равно одному
39 * иначе происходит откат к последней точке сохранения (save point)
40 * если jdbc драйвер поддерживает данную функциональность.
41 * Каждый вызов уменьшает счетчик транзакций на единицу.
42 * @see #beginTransaction()
43 * @see #rollback()
44 */
45 public void rollback() throws ObjectStoreException;
46 /**Метод блокиреут объект так, что только сессия в которой был вызван метод
47 * будет иметь эксклюзивные права на изменение свойств объекта.
48 */
49 public void lock(Object obj) throws ObjectStoreException;
50 /**Метод обновляет информацию об объекте.
51 */
52 public void refresh(Object obj) throws ObjectStoreException;
53 /**Метод возвращает уникальный идентификатор объекта.
54 */
55 public Serializable getObjectId(Object obj) throws ObjectStoreException;
56 /**Метод "заставлет" передать изменения накопленные в хранилище низлежащему
57 * механизму хранения (например БД)
58 */
59 public void flushUpdates() throws ObjectStoreException;
60 /**Не используется
61 */
62 public void setAutoCommit(boolean autoCommit);
63 public boolean isAutoCommit();
64 /**Метод вернет <code>true</code> если значение свойства установлено
65 * в <code>null</code>.
66 */
67 public boolean isPropertyValueNull(Object obj, String propertyName)
68 throws ObjectStoreException;
69 /**Метод сохраняет объект в хранилище.
70 */
71 public void save(Object obj) throws ObjectStoreException;
72 /**Метод загружает объект из хранилища.
73 */
74 public Object load(Class clazz, Serializable id)
75 throws ObjectStoreException;
76 /**Метод удаляет объект из хранилища.
77 */
78 public void delete(Object obj) throws ObjectStoreException;
79 /**Метод удаляет все объекты заданного типа.
80 */
81 public void deleteAll(Class objectClass) throws ObjectStoreException;
82 /**Метод возвращает полный ответ на заданный запрос и удовлетворяющий
83 * фильтру, присутствующему в источнике объектов.
84 * В качестве результата возвращается список объектов,
85 * где каждый элемент списка это строка, а каждый элемент в массиве объектов
86 * это объекты из списка <code>select</code> запроса.
87 */
88 public List<Object[]> queryAllRows(ObjectSource dataSource)
89 throws ObjectStoreException;
90 public Iterator query(ObjectSource dataSource);
91 /**Метод очищает кеш занимаемый текущей сессией.
92 */
93 public void reset();
94 /**Метод создает <code>Blob</code>
95 */
96 public Blob createBlob(InputStream inStream) throws ObjectStoreException;
97 }