1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wkgcass-DAF4J

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
daf4j-ds-tutorial.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 23:39 32eb533

DAF4J DataSource. Руководство по разработке

Рабочий процесс DataSource

В рабочем процессе будет предложен рекомендуемый способ реализации интерфейса, но не обязательно следовать ему полностью.

Метод find

<En> En find(Class<En> entityClass, Object pkValue)

Метод find вызывает и возвращает результат:

interface AroundParser {
<En> En find(DS source, Class<En> entityClass, Object pkValue){...}
}

Метод list

<En> List<En> list(En entity, Where whereClause, QueryParameter parameter)

Рабочий процесс метода list:

####1 Вызов

interface AroundParser {
Context beforeParsingList(DS source, Object entity, Where where, QueryParameter parameter) }

Инициализация метода list, создание и возврат контекста (Context).

####2 Вызов приватного метода parseSelectOperation в DataSource (будет описан позже).

Этот метод генерирует запрос и возвращает окончательный контекст.

####3 Передача контекста для вызова

interface AroundParser {
List<?> afterParsingList(Context context) }

Выполнение соответствующих операций и возвращение набора результатов поиска.

Метод parseSelectOperation

####1 Передача текущего контекста и параметров для вызова:

interface AroundParser {
Context beforeParsingWhere(Context context, Where where) }

Перед началом объяснения where-предложения выполняется соответствующая обработка и возвращается контекст.

####2 Вызывается приватный метод parseWhere:

Определяется тип where — And, Or, Condition, BooleanExpression, и каждый из них соответствует своему блоку кода.

Тип And

Передаётся текущий контекст и параметры для вызова:

interface AndOrParser {
Context beforeParsingAnd(Context context, And and) }

Выполняется соответствующая обработка перед объяснением предложения And и возвращается обработанный контекст.

Для каждого Or в объекте And выполняется рекурсивный вызов (шаг 2) для создания соответствующего «базового элемента». Если результат не равен нулю, он помещается в список.

Затем вызываются:

interface AndOrParser {
BasicElement and(Context context, List<Condition> conditionList, List<ExpressionBoolean> expList) }

Объяснение предложения And и возврат результата объяснения. Если результат не нулевой, он добавляется в список.

Если список не пустой, то он передаётся в этот список для вызова:

interface AndOrParser {
BasicElement and(Context context, List<BasicElement> elemList) }

Возвращается объединённый «базовый элемент».

В противном случае «базовый элемент», который должен был быть возвращён, считается нулевым.

Наконец, передаются контекст и базовый элемент для вызова:

interface AndOrParser {
BasicElement afterParsingAnd(Context context, BasicElement elem) }

Выполняются окончательные операции над And и возвращается обработанный базовый элемент.

####Тип Or Передаётся текущий контекст и параметры для вызова:

interface AndOrParser {
Context beforeParsingOr(Context context, Or or) }

Выполняется соответствующая обработка перед объяснением предложения Or и возвращается обработанный контекст.

Каждый And в объекте Or рекурсивно вызывается (шаг 2), чтобы создать соответствующий «базовый элемент». Если результат не равен нулю, он помещается в список.

Затем вызываются:

interface AndOrParser {
BasicElement or(Context context, List<Condition> conditionList, List<ExpressionBoolean> expList) }

Объяснение предложения Or и возврат результата объяснения. Если результат не нулевой, он добавляется в список.

Если список не пустой, то он передаётся в этот список для вызова:

interface AndOrParser {
BasicElement or(Context context, List<BasicElement> elemList) }

Возвращается объединённый «базовый элемент».

В противном случае «базовый элемент», который должен был быть возвращён, считается нулевым.

Наконец, передаются контекст и базовый элемент для вызова:

interface AndOrParser {
BasicElement afterParsingOr(Context context, BasicElement elem) }

Выполняются окончательные операции над Or и возвращается обработанный базовый элемент.

Condition тип — напрямую conditionResolver.resolve(...) для этого объекта.

ExpressionBoolean тип — напрямую expressionResolver.resolve(...) для этого объекта.

3

Вызывается:

interface AroundParser {
void afterParsingWhere(Context context) }

Выполняются заключительные операции по объяснению предложения where.

####4 Вызывается:

interface AroundParser {
Context beforeParsingQueryParameter(Context context, QueryParameter parameter) }

Выполняются шаги перед объяснением QueryParameter и возвращается контекст.

####5 Для queryParameter.parameters каждого key--value в паре (QueryParameterType -- Object[]) выполняется проверка:

Если Type равен limit, то выполняется:

queryParameterParser.limit(context, (Integer) objArr[0], (Integer) objArr[1]);

Если orderBy, то:

queryParameterParser.orderBy(context, (OrderBase[]) objArr);

Если top, то:

queryParameterParser.top(context, (Integer) objArr[0]);

Если distinct, то:

queryParameterParser.distinct(context);

####6 Вызывается:

interface AroundParser {
void afterParsingQueryParameter(Context context) }

Завершаются операции по объяснению запроса.

####7 Возвращается контекст. Метод parseSelectOperation завершается.

##Метод projection

List<Map<String, Object>> projection(Object entity, Where whereClause, QueryParameterWithFocus parameter)

####1 Вызывается:

interface AroundParser {
Context beforeParsingProjection(DS source, Object entity, Where where, QueryParameterWithFocus parameter) }

Инициируется объяснение проекции и возвращается контекст.

####2 Вызывается метод parseSelectOperation.

####3 Вызывается метод parseQueryParameterWithFocus:

Вызывается queryParameterParser.focus(context, qpwf.focusMap).

Вызывается:

interface AroundParser {
void afterParsingFocusPart(Context context) }

Завершается объяснение Focus части.

####4 Вызывается:


Здесь текст обрывается. Возможно, это ошибка исходного текста или неполный перевод. Интерфейс AroundParser {
List<Map<String, Object>> afterParsingProjection(Context context) }

Генерирует результирующую коллекцию и возвращает её.

Метод update

1

Вызывает:

interface AroundParser {
Context beforeParsingUpdate(DS source, Object entity, Where where, UpdateEntry[] entries) }

Инициализирует метод update и возвращает контекст.

2

Вызывает:

interface AroundParser {
void afterParsingWhere(Context context) }

Выполняет обработку перед интерпретацией условия.

3

Вызывает метод parseWhere.

4

Вызывает:

interface AroundParser {
void afterParsingWhere(Context context) }

Выполняет окончательную обработку условия.

5

Вызывает:

interface AroundParser {
Context beforeParsingUpdateEntries(Context context, UpdateEntry[] entries) }

Выполняет операцию перед интерпретацией UpdateEntry.

6

Вызывает:

interface UpdateEntryParser {
void parseUpdateEntry(Context context, UpdateEntry[] updateEntries) }

Интерпретирует обновление.

7

Вызывает:

interface AroundParser {
void afterParsingUpdateEntries(Context context) }

Выполняет последующую обработку после интерпретации обновления.

8

Вызывает:

interface AroundParser {
void afterParsingUpdate(Context context) }

Выполняет обновление.

Метод remove

void remove(Object entity, Where whereClause)

1

Вызывает:

interface AroundParser {
Context beforeParsingRemove(DS source, Object entity, Where where) }

Инициализирует метод remove и возвращает контекст.

2

Вызывает:

interface AroundParser {
void afterParsingWhere(Context context) }

Выполняет обработку перед интерпретацией условия.

3

Вызывает метод parseWhere.

4

Вызывает:

interface AroundParser {
void afterParsingWhere(Context context) }

Выполняет окончательную обработку условия.

5

Вызывает:

interface AroundParser {
void afterParsingRemove(Context context) }

Удаляет объект.

Метод save

void save(Object[] entities)

Вызывает:

interface AroundParser {
void save(DS source, entities) }

Сохраняет объекты.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wkgcass-DAF4J.git
git@api.gitlife.ru:oschina-mirror/wkgcass-DAF4J.git
oschina-mirror
wkgcass-DAF4J
wkgcass-DAF4J
master