В рабочем процессе будет предложен рекомендуемый способ реализации интерфейса, но не обязательно следовать ему полностью.
<En> En find(Class<En> entityClass, Object pkValue)
Метод find вызывает и возвращает результат:
interface AroundParser {
<En> En find(DS source, Class<En> entityClass, Object pkValue){...}
}
<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) }
Выполнение соответствующих операций и возвращение набора результатов поиска.
####1 Передача текущего контекста и параметров для вызова:
interface AroundParser {
Context beforeParsingWhere(Context context, Where where) }
Перед началом объяснения where-предложения выполняется соответствующая обработка и возвращается контекст.
####2
Вызывается приватный метод parseWhere
:
Определяется тип where — And
, Or
, Condition
, BooleanExpression
, и каждый из них соответствует своему блоку кода.
Передаётся текущий контекст и параметры для вызова:
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(...)
для этого объекта.
Вызывается:
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) }
Генерирует результирующую коллекцию и возвращает её.
Вызывает:
interface AroundParser {
Context beforeParsingUpdate(DS source, Object entity, Where where, UpdateEntry[] entries) }
Инициализирует метод update и возвращает контекст.
Вызывает:
interface AroundParser {
void afterParsingWhere(Context context) }
Выполняет обработку перед интерпретацией условия.
Вызывает метод parseWhere.
Вызывает:
interface AroundParser {
void afterParsingWhere(Context context) }
Выполняет окончательную обработку условия.
Вызывает:
interface AroundParser {
Context beforeParsingUpdateEntries(Context context, UpdateEntry[] entries) }
Выполняет операцию перед интерпретацией UpdateEntry.
Вызывает:
interface UpdateEntryParser {
void parseUpdateEntry(Context context, UpdateEntry[] updateEntries) }
Интерпретирует обновление.
Вызывает:
interface AroundParser {
void afterParsingUpdateEntries(Context context) }
Выполняет последующую обработку после интерпретации обновления.
Вызывает:
interface AroundParser {
void afterParsingUpdate(Context context) }
Выполняет обновление.
void remove(Object entity, Where whereClause)
Вызывает:
interface AroundParser {
Context beforeParsingRemove(DS source, Object entity, Where where) }
Инициализирует метод remove и возвращает контекст.
Вызывает:
interface AroundParser {
void afterParsingWhere(Context context) }
Выполняет обработку перед интерпретацией условия.
Вызывает метод parseWhere.
Вызывает:
interface AroundParser {
void afterParsingWhere(Context context) }
Выполняет окончательную обработку условия.
Вызывает:
interface AroundParser {
void afterParsingRemove(Context context) }
Удаляет объект.
void save(Object[] entities)
Вызывает:
interface AroundParser {
void save(DS source, entities) }
Сохраняет объекты.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )