From a1ba7c24aa6fbed4bb8a115336d552e81c2d6709 Mon Sep 17 00:00:00 2001 From: "tao.chen1" Date: Wed, 1 Mar 2023 16:47:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E8=B1=A1Context=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E5=A2=9E=E5=BC=BAref=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dorive-coating/pom.xml | 2 +- .../dorive/coating/api/CoatingRepository.java | 6 +- .../dorive/coating/api/ExampleBuilder.java | 4 +- .../coating/entity/RepositoryWrapper.java | 6 +- .../coating/impl/DefaultExampleBuilder.java | 20 +++--- .../repository/AbstractCoatingRepository.java | 20 +++--- dorive-core/pom.xml | 2 +- .../com/gitee/dorive/core/api/Binder.java | 9 ++- .../com/gitee/dorive/core/api/Context.java | 37 ++++++++++ .../gitee/dorive/core/api/ContextAdapter.java | 3 +- .../gitee/dorive/core/api/EntityFactory.java | 6 +- .../gitee/dorive/core/api/EntityHandler.java | 4 +- .../gitee/dorive/core/api/ExampleBuilder.java | 3 +- .../com/gitee/dorive/core/api/Executor.java | 5 +- .../dorive/core/api/ListableRepository.java | 10 ++- .../com/gitee/dorive/core/api/Processor.java | 6 +- .../com/gitee/dorive/core/api/Repository.java | 63 ++++++++--------- .../com/gitee/dorive/core/api/Selector.java | 12 +--- .../dorive/core/entity/BoundedContext.java | 58 ++++++--------- .../core/impl/DefaultContextAdapter.java | 4 +- .../core/impl/DefaultEntityFactory.java | 6 +- .../dorive/core/impl/OperationFactory.java | 20 +++--- .../core/impl/OperationTypeResolver.java | 8 +-- .../core/impl/binder/AbstractBinder.java | 14 ++-- .../core/impl/binder/ContextBinder.java | 8 +-- .../core/impl/binder/PropertyBinder.java | 6 +- .../core/impl/executor/AdaptiveExecutor.java | 14 ++-- .../core/impl/executor/ChainExecutor.java | 56 +++++++-------- .../impl/handler/AdaptiveEntityHandler.java | 8 +-- .../core/impl/handler/BatchEntityHandler.java | 24 +++---- .../core/impl/processor/DefaultProcessor.java | 6 +- .../impl/processor/PropertyProcessor.java | 4 +- .../core/impl/selector/AbstractSelector.java | 27 +++++++ .../core/impl/selector/ChainSelector.java | 34 --------- .../core/impl/selector/NameSelector.java | 10 +-- .../core/impl/selector/SceneSelector.java | 10 +-- .../repository/AbstractGenericRepository.java | 40 +++++------ .../core/repository/AbstractRepository.java | 70 +++++++++---------- .../core/repository/CommonRepository.java | 24 +++---- .../core/repository/ProxyRepository.java | 50 ++++++------- dorive-event/pom.xml | 2 +- .../dorive/event/entity/RepositoryEvent.java | 4 +- .../event/repository/EventRepository.java | 44 ++++++------ dorive-generator/pom.xml | 2 +- dorive-injection/pom.xml | 2 +- dorive-proxy/pom.xml | 2 +- dorive-ref/pom.xml | 2 +- .../java/com/gitee/dorive/ref/api/Ref.java | 4 +- .../java/com/gitee/dorive/ref/api/RefObj.java | 16 ++--- .../com/gitee/dorive/ref/impl/RefImpl.java | 39 +++++++++-- .../com/gitee/dorive/ref/impl/RefObjImpl.java | 32 +++------ dorive-service/pom.xml | 2 +- .../dorive/service/impl/AbstractService.java | 26 +++---- dorive-spring-boot-starter/pom.xml | 2 +- .../boot/starter/impl/SQLExampleBuilder.java | 6 +- .../repository/MybatisPlusExecutor.java | 24 +++---- pom.xml | 2 +- 57 files changed, 461 insertions(+), 469 deletions(-) create mode 100644 dorive-core/src/main/java/com/gitee/dorive/core/api/Context.java create mode 100644 dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/AbstractSelector.java delete mode 100644 dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/ChainSelector.java diff --git a/dorive-coating/pom.xml b/dorive-coating/pom.xml index e8afd154..81da1a76 100644 --- a/dorive-coating/pom.xml +++ b/dorive-coating/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-coating diff --git a/dorive-coating/src/main/java/com/gitee/dorive/coating/api/CoatingRepository.java b/dorive-coating/src/main/java/com/gitee/dorive/coating/api/CoatingRepository.java index b640e49c..4b320c53 100644 --- a/dorive-coating/src/main/java/com/gitee/dorive/coating/api/CoatingRepository.java +++ b/dorive-coating/src/main/java/com/gitee/dorive/coating/api/CoatingRepository.java @@ -16,15 +16,15 @@ */ package com.gitee.dorive.coating.api; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Page; import java.util.List; public interface CoatingRepository { - List selectByCoating(BoundedContext boundedContext, Object coatingObject); + List selectByCoating(Context context, Object coatingObject); - Page selectPageByCoating(BoundedContext boundedContext, Object coatingObject); + Page selectPageByCoating(Context context, Object coatingObject); } diff --git a/dorive-coating/src/main/java/com/gitee/dorive/coating/api/ExampleBuilder.java b/dorive-coating/src/main/java/com/gitee/dorive/coating/api/ExampleBuilder.java index 67cbd3db..cb756161 100644 --- a/dorive-coating/src/main/java/com/gitee/dorive/coating/api/ExampleBuilder.java +++ b/dorive-coating/src/main/java/com/gitee/dorive/coating/api/ExampleBuilder.java @@ -16,11 +16,11 @@ */ package com.gitee.dorive.coating.api; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Example; public interface ExampleBuilder { - Example buildExample(BoundedContext boundedContext, Object coatingObject); + Example buildExample(Context context, Object coatingObject); } diff --git a/dorive-coating/src/main/java/com/gitee/dorive/coating/entity/RepositoryWrapper.java b/dorive-coating/src/main/java/com/gitee/dorive/coating/entity/RepositoryWrapper.java index e4a804a2..120a62b1 100644 --- a/dorive-coating/src/main/java/com/gitee/dorive/coating/entity/RepositoryWrapper.java +++ b/dorive-coating/src/main/java/com/gitee/dorive/coating/entity/RepositoryWrapper.java @@ -17,7 +17,7 @@ package com.gitee.dorive.coating.entity; import com.gitee.dorive.coating.entity.definition.PropertyDefinition; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.element.Property; import com.gitee.dorive.core.entity.executor.Criterion; import com.gitee.dorive.core.entity.executor.Example; @@ -36,7 +36,7 @@ public class RepositoryWrapper { private MergedRepository mergedRepository; private List collectedPropertyWrappers; - public Example newExampleByCoating(BoundedContext boundedContext, Object coatingObject) { + public Example newExampleByCoating(Context context, Object coatingObject) { Example example = new Example(); for (PropertyWrapper propertyWrapper : collectedPropertyWrappers) { Property property = propertyWrapper.getProperty(); @@ -51,7 +51,7 @@ public class RepositoryWrapper { CommonRepository definedRepository = mergedRepository.getDefinedRepository(); BinderResolver binderResolver = definedRepository.getBinderResolver(); for (ContextBinder contextBinder : binderResolver.getContextBinders()) { - Object boundValue = contextBinder.getBoundValue(boundedContext, null); + Object boundValue = contextBinder.getBoundValue(context, null); if (boundValue != null) { String alias = contextBinder.getAlias(); example.eq(alias, boundValue); diff --git a/dorive-coating/src/main/java/com/gitee/dorive/coating/impl/DefaultExampleBuilder.java b/dorive-coating/src/main/java/com/gitee/dorive/coating/impl/DefaultExampleBuilder.java index f77b0677..2a296c2c 100644 --- a/dorive-coating/src/main/java/com/gitee/dorive/coating/impl/DefaultExampleBuilder.java +++ b/dorive-coating/src/main/java/com/gitee/dorive/coating/impl/DefaultExampleBuilder.java @@ -23,7 +23,7 @@ import com.gitee.dorive.coating.entity.MergedRepository; import com.gitee.dorive.coating.entity.RepositoryWrapper; import com.gitee.dorive.coating.impl.resolver.CoatingWrapperResolver; import com.gitee.dorive.coating.repository.AbstractCoatingRepository; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.impl.binder.PropertyBinder; import com.gitee.dorive.core.impl.resolver.BinderResolver; @@ -46,7 +46,7 @@ public class DefaultExampleBuilder implements ExampleBuilder { } @Override - public Example buildExample(BoundedContext boundedContext, Object coatingObject) { + public Example buildExample(Context context, Object coatingObject) { CoatingWrapperResolver coatingWrapperResolver = repository.getCoatingWrapperResolver(); Map, CoatingWrapper> coatingWrapperMap = coatingWrapperResolver.getCoatingWrapperMap(); @@ -55,7 +55,7 @@ public class DefaultExampleBuilder implements ExampleBuilder { Map repoCriterionMap = new LinkedHashMap<>(); for (RepositoryWrapper repositoryWrapper : coatingWrapper.getReversedRepositoryWrappers()) { - Example example = repositoryWrapper.newExampleByCoating(boundedContext, coatingObject); + Example example = repositoryWrapper.newExampleByCoating(context, coatingObject); RepoCriterion repoCriterion = new RepoCriterion(repositoryWrapper, example); MergedRepository mergedRepository = repositoryWrapper.getMergedRepository(); @@ -64,14 +64,14 @@ public class DefaultExampleBuilder implements ExampleBuilder { repoCriterionMap.put(relativeAccessPath, repoCriterion); } - executeChainQuery(boundedContext, repoCriterionMap); + executeChainQuery(context, repoCriterionMap); RepoCriterion repoCriterion = repoCriterionMap.get("/"); Assert.notNull(repoCriterion, "The criterion cannot be null!"); return repoCriterion.getExample(); } - private void executeChainQuery(BoundedContext boundedContext, Map repoCriterionMap) { + private void executeChainQuery(Context context, Map repoCriterionMap) { repoCriterionMap.forEach((accessPath, repoCriterion) -> { if ("/".equals(accessPath)) return; @@ -104,7 +104,7 @@ public class DefaultExampleBuilder implements ExampleBuilder { List entities = Collections.emptyList(); if (!example.isEmptyQuery() && example.isDirtyQuery()) { example.selectColumns(new ArrayList<>(binderResolver.getBoundFields())); - entities = commonRepository.selectByExample(boundedContext, example); + entities = commonRepository.selectByExample(context, example); } for (PropertyBinder propertyBinder : binderResolver.getPropertyBinders()) { @@ -117,7 +117,7 @@ public class DefaultExampleBuilder implements ExampleBuilder { continue; } - List fieldValues = collectFieldValues(boundedContext, entities, propertyBinder); + List fieldValues = collectFieldValues(context, entities, propertyBinder); if (fieldValues.isEmpty()) { targetExample.setEmptyQuery(true); continue; @@ -125,17 +125,17 @@ public class DefaultExampleBuilder implements ExampleBuilder { String bindAlias = propertyBinder.getBindAlias(); Object fieldValue = fieldValues.size() == 1 ? fieldValues.get(0) : fieldValues; - fieldValue = propertyBinder.output(boundedContext, fieldValue); + fieldValue = propertyBinder.output(context, fieldValue); targetExample.eq(bindAlias, fieldValue); } } }); } - private List collectFieldValues(BoundedContext boundedContext, List entities, PropertyBinder propertyBinder) { + private List collectFieldValues(Context context, List entities, PropertyBinder propertyBinder) { List fieldValues = new ArrayList<>(); for (Object entity : entities) { - Object fieldValue = propertyBinder.getFieldValue(boundedContext, entity); + Object fieldValue = propertyBinder.getFieldValue(context, entity); if (fieldValue != null) { fieldValues.add(fieldValue); } diff --git a/dorive-coating/src/main/java/com/gitee/dorive/coating/repository/AbstractCoatingRepository.java b/dorive-coating/src/main/java/com/gitee/dorive/coating/repository/AbstractCoatingRepository.java index b29545a0..230c0cbb 100644 --- a/dorive-coating/src/main/java/com/gitee/dorive/coating/repository/AbstractCoatingRepository.java +++ b/dorive-coating/src/main/java/com/gitee/dorive/coating/repository/AbstractCoatingRepository.java @@ -23,7 +23,7 @@ import com.gitee.dorive.coating.impl.DefaultExampleBuilder; import com.gitee.dorive.coating.impl.resolver.CoatingWrapperResolver; import com.gitee.dorive.coating.impl.resolver.MergedRepositoryResolver; import com.gitee.dorive.core.annotation.Repository; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.entity.executor.Page; import com.gitee.dorive.event.repository.AbstractEventRepository; @@ -67,31 +67,31 @@ public abstract class AbstractCoatingRepository extends AbstractEventRepo } @Override - public Example buildExample(BoundedContext boundedContext, Object coatingObject) { - return exampleBuilder.buildExample(boundedContext, coatingObject); + public Example buildExample(Context context, Object coatingObject) { + return exampleBuilder.buildExample(context, coatingObject); } @Override - public List selectByCoating(BoundedContext boundedContext, Object coatingObject) { - Example example = buildExample(boundedContext, coatingObject); + public List selectByCoating(Context context, Object coatingObject) { + Example example = buildExample(context, coatingObject); if (example.isCountQueried()) { example.setPage(null); } - return selectByExample(boundedContext, example); + return selectByExample(context, example); } @Override @SuppressWarnings("unchecked") - public Page selectPageByCoating(BoundedContext boundedContext, Object coatingObject) { - Example example = buildExample(boundedContext, coatingObject); + public Page selectPageByCoating(Context context, Object coatingObject) { + Example example = buildExample(context, coatingObject); if (example.isCountQueried()) { Page page = example.getPage(); example.setPage(null); - List records = selectByExample(boundedContext, example); + List records = selectByExample(context, example); page.setRecords((List) records); return (Page) page; } - return selectPageByExample(boundedContext, example); + return selectPageByExample(context, example); } } diff --git a/dorive-core/pom.xml b/dorive-core/pom.xml index 7c29b90f..88b31f98 100644 --- a/dorive-core/pom.xml +++ b/dorive-core/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-core diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/Binder.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/Binder.java index 8fe93b25..6e45b725 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/Binder.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/Binder.java @@ -16,19 +16,18 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.definition.BindingDefinition; public interface Binder { BindingDefinition getBindingDefinition(); - Object getFieldValue(BoundedContext boundedContext, Object entity); + Object getFieldValue(Context context, Object entity); - void setFieldValue(BoundedContext boundedContext, Object entity, Object property); + void setFieldValue(Context context, Object entity, Object property); - Object getBoundValue(BoundedContext boundedContext, Object rootEntity); + Object getBoundValue(Context context, Object rootEntity); - void setBoundValue(BoundedContext boundedContext, Object rootEntity, Object property); + void setBoundValue(Context context, Object rootEntity, Object property); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/Context.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/Context.java new file mode 100644 index 00000000..1a30addc --- /dev/null +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/Context.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gitee.dorive.core.api; + +import com.gitee.dorive.core.repository.CommonRepository; + +import java.util.List; + +public interface Context { + + Object put(String key, Object value); + + boolean containsKey(String key); + + Object get(String key); + + Object remove(String key); + + boolean matches(CommonRepository repository); + + List selectColumns(CommonRepository repository); + +} diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/ContextAdapter.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/ContextAdapter.java index 2cafdfcc..93dceefc 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/ContextAdapter.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/ContextAdapter.java @@ -16,11 +16,10 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.operation.Operation; public interface ContextAdapter { - void adapt(BoundedContext boundedContext, Operation operation); + void adapt(Context context, Operation operation); } \ No newline at end of file diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/EntityFactory.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/EntityFactory.java index 59425b7a..b01472cc 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/EntityFactory.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/EntityFactory.java @@ -16,12 +16,10 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; - public interface EntityFactory { - Object reconstitute(BoundedContext boundedContext, Object persistentObject); + Object reconstitute(Context context, Object persistentObject); - Object deconstruct(BoundedContext boundedContext, Object entity); + Object deconstruct(Context context, Object entity); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/EntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/EntityHandler.java index f5f89d48..8b41f022 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/EntityHandler.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/EntityHandler.java @@ -16,12 +16,10 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; - import java.util.List; public interface EntityHandler { - int handleEntities(BoundedContext boundedContext, List rootEntities); + int handleEntities(Context context, List rootEntities); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/ExampleBuilder.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/ExampleBuilder.java index 1fd1a007..5be1b6c3 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/ExampleBuilder.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/ExampleBuilder.java @@ -16,11 +16,10 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.executor.Example; public interface ExampleBuilder { - Example buildExample(BoundedContext boundedContext, Object rootEntity, Example example); + Example buildExample(Context context, Object rootEntity, Example example); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/Executor.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/Executor.java index 87dbda05..e851010e 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/Executor.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/Executor.java @@ -16,15 +16,14 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.executor.Result; import com.gitee.dorive.core.entity.operation.Operation; import com.gitee.dorive.core.entity.operation.Query; public interface Executor { - Result executeQuery(BoundedContext boundedContext, Query query); + Result executeQuery(Context context, Query query); - int execute(BoundedContext boundedContext, Operation operation); + int execute(Context context, Operation operation); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/ListableRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/ListableRepository.java index 111a4f65..86b68507 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/ListableRepository.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/ListableRepository.java @@ -16,18 +16,16 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; - import java.util.List; public interface ListableRepository extends Repository { - int insertList(BoundedContext boundedContext, List entities); + int insertList(Context context, List entities); - int updateList(BoundedContext boundedContext, List entities); + int updateList(Context context, List entities); - int insertOrUpdateList(BoundedContext boundedContext, List entities); + int insertOrUpdateList(Context context, List entities); - int deleteList(BoundedContext boundedContext, List entities); + int deleteList(Context context, List entities); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/Processor.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/Processor.java index 53036477..90dd72ce 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/Processor.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/Processor.java @@ -16,12 +16,10 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; - public interface Processor { - Object input(BoundedContext boundedContext, Object valueObject); + Object input(Context context, Object valueObject); - Object output(BoundedContext boundedContext, Object valueObject); + Object output(Context context, Object valueObject); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/Repository.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/Repository.java index a96a357e..d4edc8e1 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/Repository.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/Repository.java @@ -16,7 +16,6 @@ */ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.entity.executor.Page; @@ -33,93 +32,93 @@ public interface Repository { /** * 根据主键查询实体 * - * @param boundedContext 边界上下文 - * @param primaryKey 主键 + * @param context 上下文 + * @param primaryKey 主键 * @return 实体 */ - E selectByPrimaryKey(BoundedContext boundedContext, PK primaryKey); + E selectByPrimaryKey(Context context, PK primaryKey); /** * 根据条件查询实体 * - * @param boundedContext 边界上下文 - * @param example 条件 + * @param context 上下文 + * @param example 条件 * @return 实体 */ - List selectByExample(BoundedContext boundedContext, Example example); + List selectByExample(Context context, Example example); /** * 根据条件查询分页 * - * @param boundedContext 边界上下文 - * @param example 条件 + * @param context 上下文 + * @param example 条件 * @return 分页 */ - Page selectPageByExample(BoundedContext boundedContext, Example example); + Page selectPageByExample(Context context, Example example); /** * 插入一个实体 * - * @param boundedContext 边界上下文 - * @param entity 实体 + * @param context 上下文 + * @param entity 实体 * @return 操作数 */ - int insert(BoundedContext boundedContext, E entity); + int insert(Context context, E entity); /** * 根据实体的主键,修改一个实体 * - * @param boundedContext 边界上下文 - * @param entity 实体 + * @param context 上下文 + * @param entity 实体 * @return 操作数 */ - int update(BoundedContext boundedContext, E entity); + int update(Context context, E entity); /** * 根据实体和条件,修改聚合内的所有实体 * - * @param boundedContext 边界上下文 - * @param entity 实体 - * @param example 条件 + * @param context 上下文 + * @param entity 实体 + * @param example 条件 * @return 操作数 */ - int updateByExample(BoundedContext boundedContext, Object entity, Example example); + int updateByExample(Context context, Object entity, Example example); /** * 根据实体的主键,插入或者修改一个实体。 * 主键为空则插入,主键不为空则修改。 * - * @param boundedContext 边界上下文 - * @param entity 实体 + * @param context 上下文 + * @param entity 实体 * @return 操作数 */ - int insertOrUpdate(BoundedContext boundedContext, E entity); + int insertOrUpdate(Context context, E entity); /** * 根据实体的主键,删除一个实体 * - * @param boundedContext 边界上下文 - * @param entity 实体 + * @param context 上下文 + * @param entity 实体 * @return 操作数 */ - int delete(BoundedContext boundedContext, E entity); + int delete(Context context, E entity); /** * 根据主键,删除一个实体 * - * @param boundedContext 边界上下文 - * @param primaryKey 主键 + * @param context 上下文 + * @param primaryKey 主键 * @return 操作数 */ - int deleteByPrimaryKey(BoundedContext boundedContext, PK primaryKey); + int deleteByPrimaryKey(Context context, PK primaryKey); /** * 根据条件,删除聚合内的所有实体 * - * @param boundedContext 边界上下文 - * @param example 条件 + * @param context 上下文 + * @param example 条件 * @return 操作数 */ - int deleteByExample(BoundedContext boundedContext, Example example); + int deleteByExample(Context context, Example example); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/Selector.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/Selector.java index b41c1214..8fd61010 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/api/Selector.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/Selector.java @@ -1,14 +1,4 @@ package com.gitee.dorive.core.api; -import com.gitee.dorive.core.entity.BoundedContext; -import com.gitee.dorive.core.repository.CommonRepository; - -import java.util.List; - -public interface Selector { - - boolean isMatch(BoundedContext boundedContext, CommonRepository repository); - - List selectColumns(BoundedContext boundedContext, CommonRepository repository); - +public interface Selector extends Context { } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/entity/BoundedContext.java b/dorive-core/src/main/java/com/gitee/dorive/core/entity/BoundedContext.java index d49e3fe7..f4b30576 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/entity/BoundedContext.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/entity/BoundedContext.java @@ -1,28 +1,14 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package com.gitee.dorive.core.entity; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.api.ExampleBuilder; import com.gitee.dorive.core.api.Selector; -import com.gitee.dorive.core.impl.selector.ChainSelector; +import com.gitee.dorive.core.impl.selector.NameSelector; import com.gitee.dorive.core.impl.selector.SceneSelector; import com.gitee.dorive.core.repository.CommonRepository; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import java.util.Collections; import java.util.List; @@ -30,17 +16,13 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Data +@NoArgsConstructor @EqualsAndHashCode(callSuper = false) -public class BoundedContext { +public class BoundedContext implements Context { - private Selector selector; + private Selector selector = NameSelector.EMPTY_SELECTOR; private Map attachments = Collections.emptyMap(); - @Deprecated - public BoundedContext() { - selector = new SceneSelector(); - } - @Deprecated public BoundedContext(String... scenes) { this.selector = new SceneSelector(scenes); @@ -50,20 +32,7 @@ public class BoundedContext { this.selector = selector; } - public boolean isMatch(CommonRepository repository) { - return selector.isMatch(this, repository); - } - - public List selectColumns(CommonRepository repository) { - return selector.selectColumns(this, repository); - } - - public void appendNames(String... namesToAdd) { - if (namesToAdd != null && namesToAdd.length > 0) { - selector = new ChainSelector(selector, namesToAdd); - } - } - + @Override public Object put(String key, Object value) { if (attachments == Collections.EMPTY_MAP) { attachments = new ConcurrentHashMap<>(); @@ -71,18 +40,31 @@ public class BoundedContext { return attachments.put(key, value); } + @Override public boolean containsKey(String key) { return attachments.containsKey(key); } + @Override public Object get(String key) { return attachments.get(key); } + @Override public Object remove(String key) { return attachments.remove(key); } + @Override + public boolean matches(CommonRepository repository) { + return selector.matches(repository); + } + + @Override + public List selectColumns(CommonRepository repository) { + return selector.selectColumns(repository); + } + public void putBuilder(String key, ExampleBuilder builder) { put(key, builder); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/DefaultContextAdapter.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/DefaultContextAdapter.java index 1cfb4108..7f956a89 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/DefaultContextAdapter.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/DefaultContextAdapter.java @@ -17,7 +17,7 @@ package com.gitee.dorive.core.impl; import com.gitee.dorive.core.api.ContextAdapter; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.definition.AdapterDefinition; import com.gitee.dorive.core.entity.operation.Operation; import lombok.Data; @@ -28,7 +28,7 @@ public class DefaultContextAdapter implements ContextAdapter { protected AdapterDefinition adapterDefinition; @Override - public void adapt(BoundedContext boundedContext, Operation operation) { + public void adapt(Context context, Operation operation) { // ignore } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/DefaultEntityFactory.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/DefaultEntityFactory.java index 92eb1e91..5479e6f9 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/DefaultEntityFactory.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/DefaultEntityFactory.java @@ -18,8 +18,8 @@ package com.gitee.dorive.core.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.element.EntityElement; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.api.EntityFactory; import lombok.AllArgsConstructor; import lombok.Data; @@ -38,13 +38,13 @@ public class DefaultEntityFactory implements EntityFactory { protected Map propPojoMapping; @Override - public Object reconstitute(BoundedContext boundedContext, Object persistentObject) { + public Object reconstitute(Context context, Object persistentObject) { CopyOptions copyOptions = CopyOptions.create().ignoreNullValue().setFieldMapping(aliasPropMapping); return BeanUtil.toBean(persistentObject, entityElement.getGenericType(), copyOptions); } @Override - public Object deconstruct(BoundedContext boundedContext, Object entity) { + public Object deconstruct(Context context, Object entity) { CopyOptions copyOptions = CopyOptions.create().ignoreNullValue().setFieldMapping(propPojoMapping); return BeanUtil.toBean(entity, pojoClass, copyOptions); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/OperationFactory.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/OperationFactory.java index 3758338e..ab56935b 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/OperationFactory.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/OperationFactory.java @@ -1,6 +1,6 @@ package com.gitee.dorive.core.impl; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.element.EntityElement; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.entity.operation.*; @@ -13,36 +13,36 @@ public class OperationFactory { protected EntityElement entityElement; - public Query buildQueryByPK(BoundedContext boundedContext, Object primaryKey) { + public Query buildQueryByPK(Context context, Object primaryKey) { Query query = new Query(Operation.SELECT, null); query.setPrimaryKey(primaryKey); return query; } - public Query buildQuery(BoundedContext boundedContext, Example example) { + public Query buildQuery(Context context, Example example) { Query query = new Query(Operation.SELECT, null); query.setExample(example); return query; } - public Insert buildInsert(BoundedContext boundedContext, Object entity) { + public Insert buildInsert(Context context, Object entity) { return new Insert(Operation.INSERT, entity); } - public Update buildUpdate(BoundedContext boundedContext, Object entity) { + public Update buildUpdate(Context context, Object entity) { Update update = new Update(Operation.UPDATE, entity); Object primaryKey = entityElement.getPrimaryKeyProxy().getValue(entity); update.setPrimaryKey(primaryKey); return update; } - public Update buildUpdate(BoundedContext boundedContext, Object entity, Example example) { + public Update buildUpdate(Context context, Object entity, Example example) { Update update = new Update(Operation.UPDATE, entity); update.setExample(example); return update; } - public Operation buildInsertOrUpdate(BoundedContext boundedContext, Object entity) { + public Operation buildInsertOrUpdate(Context context, Object entity) { Object primaryKey = entityElement.getPrimaryKeyProxy().getValue(entity); if (primaryKey == null) { return new Insert(Operation.INSERT, entity); @@ -53,20 +53,20 @@ public class OperationFactory { } } - public Delete buildDelete(BoundedContext boundedContext, Object entity) { + public Delete buildDelete(Context context, Object entity) { Delete delete = new Delete(Operation.DELETE, entity); Object primaryKey = entityElement.getPrimaryKeyProxy().getValue(entity); delete.setPrimaryKey(primaryKey); return delete; } - public Delete buildDeleteByPK(BoundedContext boundedContext, Object primaryKey) { + public Delete buildDeleteByPK(Context context, Object primaryKey) { Delete delete = new Delete(Operation.DELETE, null); delete.setPrimaryKey(primaryKey); return delete; } - public Delete buildDelete(BoundedContext boundedContext, Example example) { + public Delete buildDelete(Context context, Example example) { Delete delete = new Delete(Operation.DELETE, null); delete.setExample(example); return delete; diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/OperationTypeResolver.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/OperationTypeResolver.java index aad36205..9f11a6f8 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/OperationTypeResolver.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/OperationTypeResolver.java @@ -16,20 +16,20 @@ */ package com.gitee.dorive.core.impl; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.definition.EntityDefinition; import com.gitee.dorive.core.entity.operation.Operation; import com.gitee.dorive.core.repository.CommonRepository; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.Command; import org.apache.commons.lang3.StringUtils; public class OperationTypeResolver { - public static int resolveOperationType(BoundedContext boundedContext, CommonRepository repository) { + public static int resolveOperationType(Context context, CommonRepository repository) { EntityDefinition entityDefinition = repository.getEntityDefinition(); String commandKey = entityDefinition.getCommandKey(); - if (StringUtils.isNotBlank(commandKey) && boundedContext.containsKey(commandKey)) { - Command command = (Command) boundedContext.get(commandKey); + if (StringUtils.isNotBlank(commandKey) && context.containsKey(commandKey)) { + Command command = (Command) context.get(commandKey); if (command.isForceIgnore()) { return Operation.FORCE_IGNORE; diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/AbstractBinder.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/AbstractBinder.java index da457055..609e67fb 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/AbstractBinder.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/AbstractBinder.java @@ -16,10 +16,10 @@ */ package com.gitee.dorive.core.impl.binder; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.definition.BindingDefinition; import com.gitee.dorive.core.api.Binder; import com.gitee.dorive.core.api.Processor; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.element.PropertyChain; import lombok.AllArgsConstructor; import lombok.Data; @@ -39,23 +39,23 @@ public abstract class AbstractBinder implements Binder, Processor { } @Override - public Object getFieldValue(BoundedContext boundedContext, Object entity) { + public Object getFieldValue(Context context, Object entity) { return fieldPropertyChain.getValue(entity); } @Override - public void setFieldValue(BoundedContext boundedContext, Object entity, Object property) { + public void setFieldValue(Context context, Object entity, Object property) { fieldPropertyChain.setValue(entity, property); } @Override - public Object input(BoundedContext boundedContext, Object valueObject) { - return processor.input(boundedContext, valueObject); + public Object input(Context context, Object valueObject) { + return processor.input(context, valueObject); } @Override - public Object output(BoundedContext boundedContext, Object valueObject) { - return processor.output(boundedContext, valueObject); + public Object output(Context context, Object valueObject) { + return processor.output(context, valueObject); } } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/ContextBinder.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/ContextBinder.java index fa6736c2..b7cd3445 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/ContextBinder.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/ContextBinder.java @@ -18,7 +18,7 @@ package com.gitee.dorive.core.impl.binder; import com.gitee.dorive.core.entity.definition.BindingDefinition; import com.gitee.dorive.core.api.Processor; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.element.PropertyChain; public class ContextBinder extends AbstractBinder { @@ -31,13 +31,13 @@ public class ContextBinder extends AbstractBinder { } @Override - public Object getBoundValue(BoundedContext boundedContext, Object rootEntity) { + public Object getBoundValue(Context context, Object rootEntity) { String bindExp = bindingDefinition.getBindExp(); - return boundedContext.get(bindExp); + return context.get(bindExp); } @Override - public void setBoundValue(BoundedContext boundedContext, Object rootEntity, Object property) { + public void setBoundValue(Context context, Object rootEntity, Object property) { // ignore } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/PropertyBinder.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/PropertyBinder.java index 15f8f870..21fa2d56 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/PropertyBinder.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/binder/PropertyBinder.java @@ -17,7 +17,7 @@ package com.gitee.dorive.core.impl.binder; import com.gitee.dorive.core.api.Processor; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.definition.BindingDefinition; import com.gitee.dorive.core.entity.element.PropertyChain; import com.gitee.dorive.core.repository.CommonRepository; @@ -53,12 +53,12 @@ public class PropertyBinder extends AbstractBinder { } @Override - public Object getBoundValue(BoundedContext boundedContext, Object rootEntity) { + public Object getBoundValue(Context context, Object rootEntity) { return boundPropertyChain.getValue(rootEntity); } @Override - public void setBoundValue(BoundedContext boundedContext, Object rootEntity, Object property) { + public void setBoundValue(Context context, Object rootEntity, Object property) { boundPropertyChain.setValue(rootEntity, property); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/AdaptiveExecutor.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/AdaptiveExecutor.java index 0b59c6cc..e38c8e25 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/AdaptiveExecutor.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/AdaptiveExecutor.java @@ -18,7 +18,7 @@ package com.gitee.dorive.core.impl.executor; import com.gitee.dorive.core.api.Executor; import com.gitee.dorive.core.api.ContextAdapter; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Result; import com.gitee.dorive.core.entity.operation.Operation; import com.gitee.dorive.core.entity.operation.Query; @@ -42,19 +42,19 @@ public class AdaptiveExecutor extends AbstractExecutor { } @Override - public Result executeQuery(BoundedContext boundedContext, Query query) { + public Result executeQuery(Context context, Query query) { AdapterResolver adapterResolver = repository.getAdapterResolver(); ContextAdapter contextAdapter = adapterResolver.getContextAdapter(); - contextAdapter.adapt(boundedContext, query); - return executor.executeQuery(boundedContext, query); + contextAdapter.adapt(context, query); + return executor.executeQuery(context, query); } @Override - public int execute(BoundedContext boundedContext, Operation operation) { + public int execute(Context context, Operation operation) { AdapterResolver adapterResolver = repository.getAdapterResolver(); ContextAdapter contextAdapter = adapterResolver.getContextAdapter(); - contextAdapter.adapt(boundedContext, operation); - return executor.execute(boundedContext, operation); + contextAdapter.adapt(context, operation); + return executor.execute(context, operation); } } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/ChainExecutor.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/ChainExecutor.java index 89bf1934..a4fc552f 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/ChainExecutor.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/ChainExecutor.java @@ -19,7 +19,7 @@ package com.gitee.dorive.core.impl.executor; import cn.hutool.core.lang.Assert; import com.gitee.dorive.core.api.Binder; import com.gitee.dorive.core.api.EntityHandler; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.element.PropertyChain; import com.gitee.dorive.core.entity.executor.Result; import com.gitee.dorive.core.entity.operation.Operation; @@ -50,22 +50,22 @@ public class ChainExecutor extends AbstractExecutor implements EntityHandler { } @Override - public Result executeQuery(BoundedContext boundedContext, Query query) { + public Result executeQuery(Context context, Query query) { Assert.isTrue(query.getPrimaryKey() != null || query.getExample() != null, "The query criteria cannot be null!"); CommonRepository rootRepository = repository.getRootRepository(); boolean isIncludeRoot = (query.getType() & Operation.INCLUDE_ROOT) == Operation.INCLUDE_ROOT; - if (boundedContext.isMatch(rootRepository) || isIncludeRoot) { + if (context.matches(rootRepository) || isIncludeRoot) { int totalCount = 0; - Result result = rootRepository.executeQuery(boundedContext, query); + Result result = rootRepository.executeQuery(context, query); totalCount += result.getTotal(); List rootEntities = result.getRecords(); if (!rootEntities.isEmpty()) { - totalCount += handleEntities(boundedContext, rootEntities); + totalCount += handleEntities(context, rootEntities); } result.setTotal(totalCount); @@ -76,12 +76,12 @@ public class ChainExecutor extends AbstractExecutor implements EntityHandler { } @Override - public int handleEntities(BoundedContext boundedContext, List rootEntities) { - return entityHandler.handleEntities(boundedContext, rootEntities); + public int handleEntities(Context context, List rootEntities) { + return entityHandler.handleEntities(context, rootEntities); } @Override - public int execute(BoundedContext boundedContext, Operation operation) { + public int execute(Context context, Operation operation) { int expectedOperationType = operation.getType(); boolean isInsertContext = (expectedOperationType & Operation.INSERT) == Operation.INSERT; @@ -105,7 +105,7 @@ public class ChainExecutor extends AbstractExecutor implements EntityHandler { continue; } - boolean isMatch = boundedContext.isMatch(repository); + boolean isMatch = context.matches(repository); boolean isForceInclude = isIncludeRoot && repository.isRoot(); boolean isAggregated = repository.isAggregated(); @@ -128,34 +128,34 @@ public class ChainExecutor extends AbstractExecutor implements EntityHandler { } if (isMatch || isForceInclude) { - int contextOperationType = OperationTypeResolver.resolveOperationType(boundedContext, repository); + int contextOperationType = OperationTypeResolver.resolveOperationType(context, repository); for (Object entity : collection) { Object primaryKey = repository.getPrimaryKey(entity); int operationType = OperationTypeResolver.mergeOperationType(expectedOperationType, contextOperationType, primaryKey); if ((operationType & Operation.INSERT) == Operation.INSERT) { - getBoundValueFromContext(boundedContext, rootEntity, repository, entity); + getBoundValueFromContext(context, rootEntity, repository, entity); } if (isAggregated) { operationType = (operationType & Operation.INSERT_OR_UPDATE_OR_DELETE) > 0 ? includeRootOperationType : ignoreRootOperationType; Operation newOperation = new Operation(operationType, entity); - totalCount += repository.execute(boundedContext, newOperation); + totalCount += repository.execute(context, newOperation); } else { - totalCount += doExecute(boundedContext, repository, entity, operationType); + totalCount += doExecute(context, repository, entity, operationType); } } if (isInsertContext && boundIdEntity != null) { - setBoundIdForBoundEntity(boundedContext, rootEntity, repository, boundIdEntity); + setBoundIdForBoundEntity(context, rootEntity, repository, boundIdEntity); } } else if (isAggregated) { for (Object entity : collection) { Operation newOperation = new Operation(ignoreRootOperationType, entity); - totalCount += repository.execute(boundedContext, newOperation); + totalCount += repository.execute(context, newOperation); } } } @@ -163,42 +163,42 @@ public class ChainExecutor extends AbstractExecutor implements EntityHandler { return totalCount; } - private int doExecute(BoundedContext boundedContext, CommonRepository repository, Object entity, int operationType) { + private int doExecute(Context context, CommonRepository repository, Object entity, int operationType) { if (operationType == Operation.INSERT) { - return repository.insert(boundedContext, entity); + return repository.insert(context, entity); } else if (operationType == Operation.UPDATE) { - return repository.update(boundedContext, entity); + return repository.update(context, entity); } else if (operationType == Operation.INSERT_OR_UPDATE) { - return repository.insertOrUpdate(boundedContext, entity); + return repository.insertOrUpdate(context, entity); } else if (operationType == Operation.DELETE) { - return repository.delete(boundedContext, entity); + return repository.delete(context, entity); } return 0; } - private void getBoundValueFromContext(BoundedContext boundedContext, Object rootEntity, CommonRepository repository, Object entity) { + private void getBoundValueFromContext(Context context, Object rootEntity, CommonRepository repository, Object entity) { for (Binder binder : repository.getBinderResolver().getBoundValueBinders()) { - Object fieldValue = binder.getFieldValue(boundedContext, entity); + Object fieldValue = binder.getFieldValue(context, entity); if (fieldValue == null) { - Object boundValue = binder.getBoundValue(boundedContext, rootEntity); + Object boundValue = binder.getBoundValue(context, rootEntity); if (boundValue != null) { - binder.setFieldValue(boundedContext, entity, boundValue); + binder.setFieldValue(context, entity, boundValue); } } } } - private void setBoundIdForBoundEntity(BoundedContext boundedContext, Object rootEntity, CommonRepository repository, Object entity) { + private void setBoundIdForBoundEntity(Context context, Object rootEntity, CommonRepository repository, Object entity) { Binder binder = repository.getBinderResolver().getBoundIdBinder(); if (binder != null) { - Object boundValue = binder.getBoundValue(boundedContext, rootEntity); + Object boundValue = binder.getBoundValue(context, rootEntity); if (boundValue == null) { - Object primaryKey = binder.getFieldValue(boundedContext, entity); + Object primaryKey = binder.getFieldValue(context, entity); if (primaryKey != null) { - binder.setBoundValue(boundedContext, rootEntity, primaryKey); + binder.setBoundValue(context, rootEntity, primaryKey); } } } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/AdaptiveEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/AdaptiveEntityHandler.java index 9a56babb..88061fb4 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/AdaptiveEntityHandler.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/AdaptiveEntityHandler.java @@ -18,7 +18,7 @@ package com.gitee.dorive.core.impl.handler; import com.gitee.dorive.core.api.EntityHandler; import com.gitee.dorive.core.api.Executor; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.impl.resolver.DelegateResolver; import com.gitee.dorive.core.repository.AbstractContextRepository; import lombok.Data; @@ -41,7 +41,7 @@ public class AdaptiveEntityHandler implements EntityHandler { } @Override - public int handleEntities(BoundedContext boundedContext, List rootEntities) { + public int handleEntities(Context context, List rootEntities) { List newRootEntities = new ArrayList<>(rootEntities.size()); int delegateCount = repository.getDelegateResolver().getDelegateCount(); @@ -52,13 +52,13 @@ public class AdaptiveEntityHandler implements EntityHandler { AtomicInteger totalCount = new AtomicInteger(); if (!newRootEntities.isEmpty()) { - totalCount.addAndGet(entityHandler.handleEntities(boundedContext, newRootEntities)); + totalCount.addAndGet(entityHandler.handleEntities(context, newRootEntities)); } repositoryEntitiesMap.forEach((repository, entities) -> { Executor executor = repository.getExecutor(); if (executor instanceof EntityHandler) { - totalCount.addAndGet(((EntityHandler) executor).handleEntities(boundedContext, entities)); + totalCount.addAndGet(((EntityHandler) executor).handleEntities(context, entities)); } }); diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/BatchEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/BatchEntityHandler.java index 733c2f37..eb9f19e8 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/BatchEntityHandler.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/BatchEntityHandler.java @@ -22,7 +22,7 @@ import com.gitee.dorive.core.api.EntityHandler; import com.gitee.dorive.core.api.EntityIndex; import com.gitee.dorive.core.api.ExampleBuilder; import com.gitee.dorive.core.api.PropertyProxy; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.element.PropertyChain; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.entity.operation.Operation; @@ -45,22 +45,22 @@ public class BatchEntityHandler implements EntityHandler { } @Override - public int handleEntities(BoundedContext boundedContext, List rootEntities) { + public int handleEntities(Context context, List rootEntities) { int totalCount = 0; for (CommonRepository repository : this.repository.getSubRepositories()) { - if (boundedContext.isMatch(repository)) { - totalCount += executeQuery(repository, boundedContext, rootEntities); + if (context.matches(repository)) { + totalCount += executeQuery(repository, context, rootEntities); } } return totalCount; } - private int executeQuery(CommonRepository repository, BoundedContext boundedContext, List rootEntities) { - UnionExample unionExample = newUnionExample(repository, boundedContext, rootEntities); + private int executeQuery(CommonRepository repository, Context context, List rootEntities) { + UnionExample unionExample = newUnionExample(repository, context, rootEntities); if (unionExample.isDirtyQuery()) { - Query query = operationFactory.buildQuery(boundedContext, unionExample); + Query query = operationFactory.buildQuery(context, unionExample); query.setType(query.getType() | Operation.INCLUDE_ROOT); - Result result = repository.executeQuery(boundedContext, query); + Result result = repository.executeQuery(context, query); if (result instanceof EntityIndex) { setValueForRootEntities(repository, rootEntities, (EntityIndex) result); } @@ -69,21 +69,21 @@ public class BatchEntityHandler implements EntityHandler { return 0; } - private UnionExample newUnionExample(CommonRepository repository, BoundedContext boundedContext, List rootEntities) { + private UnionExample newUnionExample(CommonRepository repository, Context context, List rootEntities) { PropertyChain anchorPoint = repository.getAnchorPoint(); PropertyChain lastPropertyChain = anchorPoint.getLastPropertyChain(); String builderKey = repository.getEntityDefinition().getBuilderKey(); - ExampleBuilder exampleBuilder = StringUtils.isNotBlank(builderKey) ? (ExampleBuilder) boundedContext.get(builderKey) : null; + ExampleBuilder exampleBuilder = StringUtils.isNotBlank(builderKey) ? (ExampleBuilder) context.get(builderKey) : null; UnionExample unionExample = new UnionExample(); for (int index = 0; index < rootEntities.size(); index++) { Object rootEntity = rootEntities.get(index); Object lastEntity = lastPropertyChain == null ? rootEntity : lastPropertyChain.getValue(rootEntity); if (lastEntity != null) { - Example example = repository.newExampleByContext(boundedContext, rootEntity); + Example example = repository.newExampleByContext(context, rootEntity); if (exampleBuilder != null) { - example = exampleBuilder.buildExample(boundedContext, rootEntity, example); + example = exampleBuilder.buildExample(context, rootEntity, example); } if (example.isDirtyQuery()) { example.extraColumns((index + 1) + " as $row"); diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/processor/DefaultProcessor.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/processor/DefaultProcessor.java index 2fd3d962..ca6b0acf 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/processor/DefaultProcessor.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/processor/DefaultProcessor.java @@ -16,9 +16,9 @@ */ package com.gitee.dorive.core.impl.processor; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.definition.BindingDefinition; import com.gitee.dorive.core.api.Processor; -import com.gitee.dorive.core.entity.BoundedContext; import lombok.Data; import lombok.NoArgsConstructor; @@ -29,12 +29,12 @@ public class DefaultProcessor implements Processor { protected BindingDefinition bindingDefinition; @Override - public Object input(BoundedContext boundedContext, Object valueObject) { + public Object input(Context context, Object valueObject) { return valueObject; } @Override - public Object output(BoundedContext boundedContext, Object valueObject) { + public Object output(Context context, Object valueObject) { return valueObject; } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/processor/PropertyProcessor.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/processor/PropertyProcessor.java index f6493a3a..1e3daa2c 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/processor/PropertyProcessor.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/processor/PropertyProcessor.java @@ -20,7 +20,7 @@ package com.gitee.dorive.core.impl.processor; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import lombok.Data; import lombok.EqualsAndHashCode; @@ -31,7 +31,7 @@ import java.util.Collection; public class PropertyProcessor extends DefaultProcessor { @Override - public Object input(BoundedContext boundedContext, Object valueObject) { + public Object input(Context context, Object valueObject) { String property = bindingDefinition.getProperty(); if (valueObject instanceof Collection) { return CollUtil.map((Collection) valueObject, item -> BeanUtil.getFieldValue(item, property), true); diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/AbstractSelector.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/AbstractSelector.java new file mode 100644 index 00000000..62c39125 --- /dev/null +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/AbstractSelector.java @@ -0,0 +1,27 @@ +package com.gitee.dorive.core.impl.selector; + +import com.gitee.dorive.core.api.Selector; + +public abstract class AbstractSelector implements Selector { + + @Override + public Object put(String key, Object value) { + return null; + } + + @Override + public boolean containsKey(String key) { + return false; + } + + @Override + public Object get(String key) { + return null; + } + + @Override + public Object remove(String key) { + return null; + } + +} diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/ChainSelector.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/ChainSelector.java deleted file mode 100644 index 3a55e9e7..00000000 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/ChainSelector.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gitee.dorive.core.impl.selector; - -import com.gitee.dorive.core.api.Selector; -import com.gitee.dorive.core.entity.BoundedContext; -import com.gitee.dorive.core.repository.CommonRepository; -import lombok.AllArgsConstructor; - -import java.util.List; - -@AllArgsConstructor -public class ChainSelector extends NameSelector { - - private final Selector selector; - - public ChainSelector(Selector selector, String... names) { - super(names); - this.selector = selector; - } - - @Override - public boolean isMatch(BoundedContext boundedContext, CommonRepository repository) { - return super.isMatch(boundedContext, repository) || selector.isMatch(boundedContext, repository); - } - - @Override - public List selectColumns(BoundedContext boundedContext, CommonRepository repository) { - List columns = super.selectColumns(boundedContext, repository); - if (columns == null || columns.isEmpty()) { - return selector.selectColumns(boundedContext, repository); - } - return columns; - } - -} diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/NameSelector.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/NameSelector.java index 58f2e925..d45e9d78 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/NameSelector.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/NameSelector.java @@ -1,12 +1,11 @@ package com.gitee.dorive.core.impl.selector; import cn.hutool.core.util.StrUtil; -import com.gitee.dorive.core.api.Selector; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.definition.EntityDefinition; import com.gitee.dorive.core.repository.CommonRepository; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.EqualsAndHashCode; import org.apache.commons.lang3.StringUtils; import java.util.Collections; @@ -15,7 +14,8 @@ import java.util.List; import java.util.Map; @Data -public class NameSelector implements Selector { +@EqualsAndHashCode(callSuper = false) +public class NameSelector extends AbstractSelector { public static final NameSelector EMPTY_SELECTOR = new NameSelector(); @@ -44,7 +44,7 @@ public class NameSelector implements Selector { } @Override - public boolean isMatch(BoundedContext boundedContext, CommonRepository repository) { + public boolean matches(CommonRepository repository) { if (wildcard) { return true; } @@ -54,7 +54,7 @@ public class NameSelector implements Selector { } @Override - public List selectColumns(BoundedContext boundedContext, CommonRepository repository) { + public List selectColumns(CommonRepository repository) { EntityDefinition entityDefinition = repository.getEntityDefinition(); String name = entityDefinition.getName(); NameDef nameDef = nameDefMap.get(name); diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/SceneSelector.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/SceneSelector.java index 5115f888..3f24f089 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/SceneSelector.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/SceneSelector.java @@ -1,12 +1,11 @@ package com.gitee.dorive.core.impl.selector; import cn.hutool.core.collection.CollUtil; -import com.gitee.dorive.core.api.Selector; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.definition.EntityDefinition; import com.gitee.dorive.core.repository.CommonRepository; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import java.util.Collections; @@ -16,7 +15,8 @@ import java.util.Set; @Data @NoArgsConstructor @AllArgsConstructor -public class SceneSelector implements Selector { +@EqualsAndHashCode(callSuper = false) +public class SceneSelector extends AbstractSelector { private Set scenes = Collections.emptySet(); @@ -27,7 +27,7 @@ public class SceneSelector implements Selector { } @Override - public boolean isMatch(BoundedContext boundedContext, CommonRepository repository) { + public boolean matches(CommonRepository repository) { EntityDefinition entityDefinition = repository.getEntityDefinition(); String[] scenes = entityDefinition.getScenes(); if (scenes == null || scenes.length == 0) { @@ -42,7 +42,7 @@ public class SceneSelector implements Selector { } @Override - public List selectColumns(BoundedContext boundedContext, CommonRepository repository) { + public List selectColumns(CommonRepository repository) { return null; } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractGenericRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractGenericRepository.java index 41c7c7a7..1606500c 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractGenericRepository.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractGenericRepository.java @@ -17,10 +17,10 @@ package com.gitee.dorive.core.repository; import cn.hutool.core.lang.Assert; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.api.ListableRepository; import com.gitee.dorive.core.api.MetadataHolder; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.entity.operation.Operation; import lombok.Data; import lombok.EqualsAndHashCode; @@ -33,62 +33,62 @@ public abstract class AbstractGenericRepository extends AbstractContextRe implements ListableRepository, MetadataHolder { @Override - public int updateByExample(BoundedContext boundedContext, Object entity, Example example) { + public int updateByExample(Context context, Object entity, Example example) { Assert.notNull(entity, "The entity cannot be null!"); Assert.notNull(example, "The example cannot be null!"); int totalCount = 0; for (CommonRepository repository : getOrderedRepositories()) { - if (boundedContext.isMatch(repository)) { - totalCount += repository.updateByExample(boundedContext, entity, example); + if (context.matches(repository)) { + totalCount += repository.updateByExample(context, entity, example); } } return totalCount; } @Override - public int insertOrUpdate(BoundedContext boundedContext, E entity) { + public int insertOrUpdate(Context context, E entity) { Assert.notNull(entity, "The entity cannot be null!"); Operation operation = new Operation(Operation.INSERT_OR_UPDATE, entity); - return execute(boundedContext, operation); + return execute(context, operation); } @Override - public int deleteByPrimaryKey(BoundedContext boundedContext, PK primaryKey) { + public int deleteByPrimaryKey(Context context, PK primaryKey) { Assert.notNull(primaryKey, "The primaryKey cannot be null!"); - E entity = selectByPrimaryKey(boundedContext, primaryKey); - return delete(boundedContext, entity); + E entity = selectByPrimaryKey(context, primaryKey); + return delete(context, entity); } @Override - public int deleteByExample(BoundedContext boundedContext, Example example) { + public int deleteByExample(Context context, Example example) { Assert.notNull(example, "The example cannot be null!"); int totalCount = 0; for (CommonRepository repository : getOrderedRepositories()) { - if (boundedContext.isMatch(repository)) { - totalCount += repository.deleteByExample(boundedContext, example); + if (context.matches(repository)) { + totalCount += repository.deleteByExample(context, example); } } return totalCount; } @Override - public int insertList(BoundedContext boundedContext, List entities) { - return entities.stream().mapToInt(entity -> insert(boundedContext, entity)).sum(); + public int insertList(Context context, List entities) { + return entities.stream().mapToInt(entity -> insert(context, entity)).sum(); } @Override - public int updateList(BoundedContext boundedContext, List entities) { - return entities.stream().mapToInt(entity -> update(boundedContext, entity)).sum(); + public int updateList(Context context, List entities) { + return entities.stream().mapToInt(entity -> update(context, entity)).sum(); } @Override - public int insertOrUpdateList(BoundedContext boundedContext, List entities) { - return entities.stream().mapToInt(entity -> insertOrUpdate(boundedContext, entity)).sum(); + public int insertOrUpdateList(Context context, List entities) { + return entities.stream().mapToInt(entity -> insertOrUpdate(context, entity)).sum(); } @Override - public int deleteList(BoundedContext boundedContext, List entities) { - return entities.stream().mapToInt(entity -> delete(boundedContext, entity)).sum(); + public int deleteList(Context context, List entities) { + return entities.stream().mapToInt(entity -> delete(context, entity)).sum(); } @Override diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractRepository.java index df8f6b51..52f5aeb0 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractRepository.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractRepository.java @@ -19,7 +19,7 @@ package com.gitee.dorive.core.repository; import cn.hutool.core.lang.Assert; import com.gitee.dorive.core.api.Executor; import com.gitee.dorive.core.api.Repository; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.element.EntityElement; import com.gitee.dorive.core.entity.definition.EntityDefinition; import com.gitee.dorive.core.entity.executor.Example; @@ -41,90 +41,90 @@ public abstract class AbstractRepository implements Repository, Ex @Override @SuppressWarnings("unchecked") - public E selectByPrimaryKey(BoundedContext boundedContext, PK primaryKey) { + public E selectByPrimaryKey(Context context, PK primaryKey) { Assert.notNull(primaryKey, "The primaryKey cannot be null!"); - Query query = operationFactory.buildQueryByPK(boundedContext, primaryKey); - Result result = executeQuery(boundedContext, query); + Query query = operationFactory.buildQueryByPK(context, primaryKey); + Result result = executeQuery(context, query); return (E) result.getRecord(); } @Override @SuppressWarnings("unchecked") - public List selectByExample(BoundedContext boundedContext, Example example) { + public List selectByExample(Context context, Example example) { Assert.notNull(example, "The example cannot be null!"); - Query query = operationFactory.buildQuery(boundedContext, example); - Result result = executeQuery(boundedContext, query); + Query query = operationFactory.buildQuery(context, example); + Result result = executeQuery(context, query); return (List) result.getRecords(); } @Override @SuppressWarnings("unchecked") - public Page selectPageByExample(BoundedContext boundedContext, Example example) { + public Page selectPageByExample(Context context, Example example) { Assert.notNull(example, "The example cannot be null!"); Assert.notNull(example.getPage(), "The page cannot be null!"); - Query query = operationFactory.buildQuery(boundedContext, example); - Result result = executeQuery(boundedContext, query); + Query query = operationFactory.buildQuery(context, example); + Result result = executeQuery(context, query); return (Page) result.getPage(); } @Override - public int insert(BoundedContext boundedContext, E entity) { + public int insert(Context context, E entity) { Assert.notNull(entity, "The entity cannot be null!"); - Insert insert = operationFactory.buildInsert(boundedContext, entity); - return execute(boundedContext, insert); + Insert insert = operationFactory.buildInsert(context, entity); + return execute(context, insert); } @Override - public int update(BoundedContext boundedContext, E entity) { + public int update(Context context, E entity) { Assert.notNull(entity, "The entity cannot be null!"); - Update update = operationFactory.buildUpdate(boundedContext, entity); - return execute(boundedContext, update); + Update update = operationFactory.buildUpdate(context, entity); + return execute(context, update); } @Override - public int updateByExample(BoundedContext boundedContext, Object entity, Example example) { + public int updateByExample(Context context, Object entity, Example example) { Assert.notNull(entity, "The entity cannot be null!"); Assert.notNull(example, "The example cannot be null!"); - Update update = operationFactory.buildUpdate(boundedContext, entity, example); - return execute(boundedContext, update); + Update update = operationFactory.buildUpdate(context, entity, example); + return execute(context, update); } @Override - public int insertOrUpdate(BoundedContext boundedContext, E entity) { + public int insertOrUpdate(Context context, E entity) { Assert.notNull(entity, "The entity cannot be null!"); - Operation operation = operationFactory.buildInsertOrUpdate(boundedContext, entity); - return execute(boundedContext, operation); + Operation operation = operationFactory.buildInsertOrUpdate(context, entity); + return execute(context, operation); } @Override - public int delete(BoundedContext boundedContext, E entity) { + public int delete(Context context, E entity) { Assert.notNull(entity, "The entity cannot be null!"); - Delete delete = operationFactory.buildDelete(boundedContext, entity); - return execute(boundedContext, delete); + Delete delete = operationFactory.buildDelete(context, entity); + return execute(context, delete); } @Override - public int deleteByPrimaryKey(BoundedContext boundedContext, PK primaryKey) { + public int deleteByPrimaryKey(Context context, PK primaryKey) { Assert.notNull(primaryKey, "The primaryKey cannot be null!"); - Delete delete = operationFactory.buildDeleteByPK(boundedContext, primaryKey); - return execute(boundedContext, delete); + Delete delete = operationFactory.buildDeleteByPK(context, primaryKey); + return execute(context, delete); } @Override - public int deleteByExample(BoundedContext boundedContext, Example example) { + public int deleteByExample(Context context, Example example) { Assert.notNull(example, "The example cannot be null!"); - Delete delete = operationFactory.buildDelete(boundedContext, example); - return execute(boundedContext, delete); + Delete delete = operationFactory.buildDelete(context, example); + return execute(context, delete); } @Override - public Result executeQuery(BoundedContext boundedContext, Query query) { - return executor.executeQuery(boundedContext, query); + public Result executeQuery(Context context, Query query) { + return executor.executeQuery(context, query); } @Override - public int execute(BoundedContext boundedContext, Operation operation) { - return executor.execute(boundedContext, operation); + public int execute(Context context, Operation operation) { + return executor.execute(context, operation); } } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/CommonRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/repository/CommonRepository.java index e2e038fe..af76b88a 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/CommonRepository.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/repository/CommonRepository.java @@ -18,7 +18,7 @@ package com.gitee.dorive.core.repository; import com.gitee.dorive.core.api.MetadataHolder; import com.gitee.dorive.core.api.PropertyProxy; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.element.PropertyChain; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.entity.executor.OrderBy; @@ -52,24 +52,24 @@ public class CommonRepository extends ProxyRepository implements MetadataHolder protected AliasConverter aliasConverter; @Override - public int updateByExample(BoundedContext boundedContext, Object entity, Example example) { + public int updateByExample(Context context, Object entity, Example example) { if (example.isEmptyQuery()) { return 0; } - return super.updateByExample(boundedContext, entity, example); + return super.updateByExample(context, entity, example); } @Override - public int deleteByExample(BoundedContext boundedContext, Example example) { + public int deleteByExample(Context context, Example example) { if (example.isEmptyQuery()) { return 0; } - return super.deleteByExample(boundedContext, example); + return super.deleteByExample(context, example); } @Override - public Result executeQuery(BoundedContext boundedContext, Query query) { - List properties = boundedContext.selectColumns(this); + public Result executeQuery(Context context, Query query) { + List properties = context.selectColumns(this); if (properties != null && !properties.isEmpty()) { if (query.getPrimaryKey() != null) { Example example = new Example().eq("id", query.getPrimaryKey()); @@ -91,7 +91,7 @@ public class CommonRepository extends ProxyRepository implements MetadataHolder example.setOrderBy(defaultOrderBy); } } - return super.executeQuery(boundedContext, query); + return super.executeQuery(context, query); } @Override @@ -103,16 +103,16 @@ public class CommonRepository extends ProxyRepository implements MetadataHolder return null; } - public Example newExampleByContext(BoundedContext boundedContext, Object rootEntity) { + public Example newExampleByContext(Context context, Object rootEntity) { Example example = new Example(); for (PropertyBinder propertyBinder : binderResolver.getPropertyBinders()) { String alias = propertyBinder.getAlias(); - Object boundValue = propertyBinder.getBoundValue(boundedContext, rootEntity); + Object boundValue = propertyBinder.getBoundValue(context, rootEntity); if (boundValue instanceof Collection) { boundValue = !((Collection) boundValue).isEmpty() ? boundValue : null; } if (boundValue != null) { - boundValue = propertyBinder.input(boundedContext, boundValue); + boundValue = propertyBinder.input(context, boundValue); example.eq(alias, boundValue); } else { example.getCriteria().clear(); @@ -122,7 +122,7 @@ public class CommonRepository extends ProxyRepository implements MetadataHolder if (example.isDirtyQuery()) { for (ContextBinder contextBinder : binderResolver.getContextBinders()) { String alias = contextBinder.getAlias(); - Object boundValue = contextBinder.getBoundValue(boundedContext, rootEntity); + Object boundValue = contextBinder.getBoundValue(context, rootEntity); if (boundValue != null) { example.eq(alias, boundValue); } diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/ProxyRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/repository/ProxyRepository.java index dacd4778..5b31c689 100644 --- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/ProxyRepository.java +++ b/dorive-core/src/main/java/com/gitee/dorive/core/repository/ProxyRepository.java @@ -16,7 +16,7 @@ */ package com.gitee.dorive.core.repository; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.entity.executor.Page; import com.gitee.dorive.core.entity.executor.Result; @@ -52,63 +52,63 @@ public class ProxyRepository extends AbstractRepository { } @Override - public Object selectByPrimaryKey(BoundedContext boundedContext, Object primaryKey) { - return proxyRepository.selectByPrimaryKey(boundedContext, primaryKey); + public Object selectByPrimaryKey(Context context, Object primaryKey) { + return proxyRepository.selectByPrimaryKey(context, primaryKey); } @Override - public List selectByExample(BoundedContext boundedContext, Example example) { - return proxyRepository.selectByExample(boundedContext, example); + public List selectByExample(Context context, Example example) { + return proxyRepository.selectByExample(context, example); } @Override - public Page selectPageByExample(BoundedContext boundedContext, Example example) { - return proxyRepository.selectPageByExample(boundedContext, example); + public Page selectPageByExample(Context context, Example example) { + return proxyRepository.selectPageByExample(context, example); } @Override - public int insert(BoundedContext boundedContext, Object entity) { - return proxyRepository.insert(boundedContext, entity); + public int insert(Context context, Object entity) { + return proxyRepository.insert(context, entity); } @Override - public int update(BoundedContext boundedContext, Object entity) { - return proxyRepository.update(boundedContext, entity); + public int update(Context context, Object entity) { + return proxyRepository.update(context, entity); } @Override - public int updateByExample(BoundedContext boundedContext, Object entity, Example example) { - return proxyRepository.updateByExample(boundedContext, entity, example); + public int updateByExample(Context context, Object entity, Example example) { + return proxyRepository.updateByExample(context, entity, example); } @Override - public int insertOrUpdate(BoundedContext boundedContext, Object entity) { - return proxyRepository.insertOrUpdate(boundedContext, entity); + public int insertOrUpdate(Context context, Object entity) { + return proxyRepository.insertOrUpdate(context, entity); } @Override - public int delete(BoundedContext boundedContext, Object entity) { - return proxyRepository.delete(boundedContext, entity); + public int delete(Context context, Object entity) { + return proxyRepository.delete(context, entity); } @Override - public int deleteByPrimaryKey(BoundedContext boundedContext, Object primaryKey) { - return proxyRepository.deleteByPrimaryKey(boundedContext, primaryKey); + public int deleteByPrimaryKey(Context context, Object primaryKey) { + return proxyRepository.deleteByPrimaryKey(context, primaryKey); } @Override - public int deleteByExample(BoundedContext boundedContext, Example example) { - return proxyRepository.deleteByExample(boundedContext, example); + public int deleteByExample(Context context, Example example) { + return proxyRepository.deleteByExample(context, example); } @Override - public Result executeQuery(BoundedContext boundedContext, Query query) { - return proxyRepository.executeQuery(boundedContext, query); + public Result executeQuery(Context context, Query query) { + return proxyRepository.executeQuery(context, query); } @Override - public int execute(BoundedContext boundedContext, Operation operation) { - return proxyRepository.execute(boundedContext, operation); + public int execute(Context context, Operation operation) { + return proxyRepository.execute(context, operation); } } diff --git a/dorive-event/pom.xml b/dorive-event/pom.xml index 2e408606..26af2bdc 100644 --- a/dorive-event/pom.xml +++ b/dorive-event/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-event diff --git a/dorive-event/src/main/java/com/gitee/dorive/event/entity/RepositoryEvent.java b/dorive-event/src/main/java/com/gitee/dorive/event/entity/RepositoryEvent.java index 9864d185..b6cbb047 100644 --- a/dorive-event/src/main/java/com/gitee/dorive/event/entity/RepositoryEvent.java +++ b/dorive-event/src/main/java/com/gitee/dorive/event/entity/RepositoryEvent.java @@ -16,7 +16,7 @@ */ package com.gitee.dorive.event.entity; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.operation.Operation; import com.gitee.dorive.event.repository.EventRepository; import lombok.Getter; @@ -28,7 +28,7 @@ import org.springframework.context.ApplicationEvent; public class RepositoryEvent extends ApplicationEvent { private String methodName; - private BoundedContext boundedContext; + private Context context; private Operation operation; public RepositoryEvent(EventRepository eventRepository) { diff --git a/dorive-event/src/main/java/com/gitee/dorive/event/repository/EventRepository.java b/dorive-event/src/main/java/com/gitee/dorive/event/repository/EventRepository.java index 65b74f69..4f1bd6b3 100644 --- a/dorive-event/src/main/java/com/gitee/dorive/event/repository/EventRepository.java +++ b/dorive-event/src/main/java/com/gitee/dorive/event/repository/EventRepository.java @@ -16,7 +16,7 @@ */ package com.gitee.dorive.event.repository; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.entity.operation.Delete; import com.gitee.dorive.core.entity.operation.Insert; @@ -37,12 +37,12 @@ public class EventRepository extends ProxyRepository { protected ApplicationContext applicationContext; @Override - public int insert(BoundedContext boundedContext, Object entity) { - int count = super.insert(boundedContext, entity); + public int insert(Context context, Object entity) { + int count = super.insert(context, entity); if (count != 0) { RepositoryEvent repositoryEvent = new RepositoryEvent(this); repositoryEvent.setMethodName("insert"); - repositoryEvent.setBoundedContext(boundedContext); + repositoryEvent.setContext(context); repositoryEvent.setOperation(new Insert(Operation.INSERT, entity)); applicationContext.publishEvent(repositoryEvent); } @@ -50,12 +50,12 @@ public class EventRepository extends ProxyRepository { } @Override - public int update(BoundedContext boundedContext, Object entity) { - int count = super.update(boundedContext, entity); + public int update(Context context, Object entity) { + int count = super.update(context, entity); if (count != 0) { RepositoryEvent repositoryEvent = new RepositoryEvent(this); repositoryEvent.setMethodName("update"); - repositoryEvent.setBoundedContext(boundedContext); + repositoryEvent.setContext(context); repositoryEvent.setOperation(new Update(Operation.UPDATE, entity)); applicationContext.publishEvent(repositoryEvent); } @@ -63,12 +63,12 @@ public class EventRepository extends ProxyRepository { } @Override - public int updateByExample(BoundedContext boundedContext, Object entity, Example example) { - int count = super.updateByExample(boundedContext, entity, example); + public int updateByExample(Context context, Object entity, Example example) { + int count = super.updateByExample(context, entity, example); if (count != 0) { RepositoryEvent repositoryEvent = new RepositoryEvent(this); repositoryEvent.setMethodName("updateByExample"); - repositoryEvent.setBoundedContext(boundedContext); + repositoryEvent.setContext(context); Update update = new Update(Operation.UPDATE, entity); update.setExample(example); repositoryEvent.setOperation(update); @@ -78,12 +78,12 @@ public class EventRepository extends ProxyRepository { } @Override - public int insertOrUpdate(BoundedContext boundedContext, Object entity) { - int count = super.insertOrUpdate(boundedContext, entity); + public int insertOrUpdate(Context context, Object entity) { + int count = super.insertOrUpdate(context, entity); if (count != 0) { RepositoryEvent repositoryEvent = new RepositoryEvent(this); repositoryEvent.setMethodName("insertOrUpdate"); - repositoryEvent.setBoundedContext(boundedContext); + repositoryEvent.setContext(context); repositoryEvent.setOperation(new Operation(Operation.INSERT_OR_UPDATE, entity)); applicationContext.publishEvent(repositoryEvent); } @@ -91,12 +91,12 @@ public class EventRepository extends ProxyRepository { } @Override - public int delete(BoundedContext boundedContext, Object entity) { - int count = super.delete(boundedContext, entity); + public int delete(Context context, Object entity) { + int count = super.delete(context, entity); if (count != 0) { RepositoryEvent repositoryEvent = new RepositoryEvent(this); repositoryEvent.setMethodName("delete"); - repositoryEvent.setBoundedContext(boundedContext); + repositoryEvent.setContext(context); repositoryEvent.setOperation(new Delete(Operation.DELETE, entity)); applicationContext.publishEvent(repositoryEvent); } @@ -104,12 +104,12 @@ public class EventRepository extends ProxyRepository { } @Override - public int deleteByPrimaryKey(BoundedContext boundedContext, Object primaryKey) { - int count = super.deleteByPrimaryKey(boundedContext, primaryKey); + public int deleteByPrimaryKey(Context context, Object primaryKey) { + int count = super.deleteByPrimaryKey(context, primaryKey); if (count != 0) { RepositoryEvent repositoryEvent = new RepositoryEvent(this); repositoryEvent.setMethodName("deleteByPrimaryKey"); - repositoryEvent.setBoundedContext(boundedContext); + repositoryEvent.setContext(context); Delete delete = new Delete(Operation.DELETE, null); delete.setPrimaryKey(primaryKey); repositoryEvent.setOperation(delete); @@ -119,12 +119,12 @@ public class EventRepository extends ProxyRepository { } @Override - public int deleteByExample(BoundedContext boundedContext, Example example) { - int count = super.deleteByExample(boundedContext, example); + public int deleteByExample(Context context, Example example) { + int count = super.deleteByExample(context, example); if (count != 0) { RepositoryEvent repositoryEvent = new RepositoryEvent(this); repositoryEvent.setMethodName("deleteByExample"); - repositoryEvent.setBoundedContext(boundedContext); + repositoryEvent.setContext(context); Delete delete = new Delete(Operation.DELETE, null); delete.setExample(example); repositoryEvent.setOperation(delete); diff --git a/dorive-generator/pom.xml b/dorive-generator/pom.xml index 75a4c2e8..90caa2fe 100644 --- a/dorive-generator/pom.xml +++ b/dorive-generator/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-generator diff --git a/dorive-injection/pom.xml b/dorive-injection/pom.xml index ea45ec45..a1127a3a 100644 --- a/dorive-injection/pom.xml +++ b/dorive-injection/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-injection diff --git a/dorive-proxy/pom.xml b/dorive-proxy/pom.xml index 935e1926..16bfb73e 100644 --- a/dorive-proxy/pom.xml +++ b/dorive-proxy/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-proxy diff --git a/dorive-ref/pom.xml b/dorive-ref/pom.xml index baa3979f..3ceda4f1 100644 --- a/dorive-ref/pom.xml +++ b/dorive-ref/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-ref diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/api/Ref.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/api/Ref.java index 67f7e96a..49c26685 100644 --- a/dorive-ref/src/main/java/com/gitee/dorive/ref/api/Ref.java +++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/api/Ref.java @@ -1,9 +1,9 @@ package com.gitee.dorive.ref.api; import com.gitee.dorive.coating.api.CoatingRepository; -import com.gitee.dorive.core.api.Repository; +import com.gitee.dorive.core.api.ListableRepository; -public interface Ref extends Repository, CoatingRepository { +public interface Ref extends ListableRepository, CoatingRepository { RefObj forObj(E obj); diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/api/RefObj.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/api/RefObj.java index 28574aec..36ac6a49 100644 --- a/dorive-ref/src/main/java/com/gitee/dorive/ref/api/RefObj.java +++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/api/RefObj.java @@ -1,20 +1,14 @@ package com.gitee.dorive.ref.api; -import com.gitee.dorive.core.api.Selector; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; public interface RefObj { - int select(BoundedContext boundedContext); + int select(Context context); + + int insertOrUpdate(Context context); - int select(Selector selector); + int delete(Context context); - int insertOrUpdate(BoundedContext boundedContext); - - int insertOrUpdate(Selector selector); - - int delete(BoundedContext boundedContext); - - int delete(Selector selector); } diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefImpl.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefImpl.java index 22a7e754..90db8245 100644 --- a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefImpl.java +++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefImpl.java @@ -2,7 +2,8 @@ package com.gitee.dorive.ref.impl; import com.gitee.dorive.coating.api.CoatingRepository; import com.gitee.dorive.core.api.EntityHandler; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; +import com.gitee.dorive.core.api.ListableRepository; import com.gitee.dorive.core.entity.executor.Page; import com.gitee.dorive.core.repository.AbstractRepository; import com.gitee.dorive.core.repository.ProxyRepository; @@ -18,25 +19,49 @@ import java.util.List; public class RefImpl extends ProxyRepository implements Ref { private EntityHandler entityHandler; - private CoatingRepository repository; + private ListableRepository listableRepository; + private CoatingRepository coatingRepository; @SuppressWarnings("unchecked") public RefImpl(AbstractRepository repository, EntityHandler entityHandler) { super(repository); this.entityHandler = entityHandler; + if (repository instanceof ListableRepository) { + this.listableRepository = (ListableRepository) repository; + } if (repository instanceof CoatingRepository) { - this.repository = (CoatingRepository) repository; + this.coatingRepository = (CoatingRepository) repository; } } @Override - public List selectByCoating(BoundedContext boundedContext, Object coatingObject) { - return repository.selectByCoating(boundedContext, coatingObject); + public int insertList(Context context, List entities) { + return listableRepository.insertList(context, entities); + } + + @Override + public int updateList(Context context, List entities) { + return listableRepository.updateList(context, entities); + } + + @Override + public int insertOrUpdateList(Context context, List entities) { + return listableRepository.insertOrUpdateList(context, entities); + } + + @Override + public int deleteList(Context context, List entities) { + return listableRepository.deleteList(context, entities); + } + + @Override + public List selectByCoating(Context context, Object coatingObject) { + return coatingRepository.selectByCoating(context, coatingObject); } @Override - public Page selectPageByCoating(BoundedContext boundedContext, Object coatingObject) { - return repository.selectPageByCoating(boundedContext, coatingObject); + public Page selectPageByCoating(Context context, Object coatingObject) { + return coatingRepository.selectPageByCoating(context, coatingObject); } @Override diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefObjImpl.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefObjImpl.java index bfa1ce33..07625e12 100644 --- a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefObjImpl.java +++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefObjImpl.java @@ -1,10 +1,9 @@ package com.gitee.dorive.ref.impl; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.api.EntityHandler; -import com.gitee.dorive.ref.api.RefObj; -import com.gitee.dorive.core.api.Selector; -import com.gitee.dorive.core.entity.BoundedContext; import com.gitee.dorive.core.repository.AbstractRepository; +import com.gitee.dorive.ref.api.RefObj; import lombok.AllArgsConstructor; import lombok.Data; @@ -18,36 +17,21 @@ public class RefObjImpl implements RefObj { private Object object; @Override - public int select(BoundedContext boundedContext) { + public int select(Context context) { EntityHandler entityHandler = ref.getEntityHandler(); - return entityHandler.handleEntities(boundedContext, Collections.singletonList(object)); - } - - @Override - public int select(Selector selector) { - return select(new BoundedContext(selector)); + return entityHandler.handleEntities(context, Collections.singletonList(object)); } @Override - public int insertOrUpdate(BoundedContext boundedContext) { + public int insertOrUpdate(Context context) { AbstractRepository repository = ref.getProxyRepository(); - return repository.insertOrUpdate(boundedContext, object); + return repository.insertOrUpdate(context, object); } @Override - public int insertOrUpdate(Selector selector) { - return insertOrUpdate(new BoundedContext(selector)); - } - - @Override - public int delete(BoundedContext boundedContext) { + public int delete(Context context) { AbstractRepository repository = ref.getProxyRepository(); - return repository.delete(boundedContext, object); - } - - @Override - public int delete(Selector selector) { - return delete(new BoundedContext(selector)); + return repository.delete(context, object); } } diff --git a/dorive-service/pom.xml b/dorive-service/pom.xml index 7c8c6c0b..101502c8 100644 --- a/dorive-service/pom.xml +++ b/dorive-service/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-service diff --git a/dorive-service/src/main/java/com/gitee/dorive/service/impl/AbstractService.java b/dorive-service/src/main/java/com/gitee/dorive/service/impl/AbstractService.java index 9f0bdb0b..bb920ef2 100644 --- a/dorive-service/src/main/java/com/gitee/dorive/service/impl/AbstractService.java +++ b/dorive-service/src/main/java/com/gitee/dorive/service/impl/AbstractService.java @@ -2,7 +2,7 @@ package com.gitee.dorive.service.impl; import com.gitee.dorive.coating.repository.AbstractCoatingRepository; import com.gitee.dorive.core.api.Selector; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.definition.EntityDefinition; import com.gitee.dorive.core.entity.executor.Page; import com.gitee.dorive.core.impl.selector.NameSelector; @@ -43,41 +43,41 @@ public abstract class AbstractService post(E entity) { - BoundedContext boundedContext = newBoundedContext(entity, null); - int count = repository.insert(boundedContext, entity); + Context context = newContext(entity, null); + int count = repository.insert(context, entity); return count > 0 ? ResObject.success() : ResObject.failure(); } @Override public ResObject> get(Q query) { - BoundedContext boundedContext = newBoundedContext(null, query); - List entities = repository.selectByCoating(boundedContext, query); + Context context = newContext(null, query); + List entities = repository.selectByCoating(context, query); return ResObject.successData(entities); } @Override public ResObject> page(Q query) { - BoundedContext boundedContext = newBoundedContext(null, query); - Page page = repository.selectPageByCoating(boundedContext, query); + Context context = newContext(null, query); + Page page = repository.selectPageByCoating(context, query); return ResObject.successData(page); } @Override public ResObject put(Integer id, E entity) { - BoundedContext boundedContext = newBoundedContext(entity, null); - int count = repository.update(boundedContext, entity); + Context context = newContext(entity, null); + int count = repository.update(context, entity); return count > 0 ? ResObject.success() : ResObject.failure(); } @Override public ResObject delete(Integer id) { - BoundedContext boundedContext = newBoundedContext(null, null); - int count = repository.deleteByPrimaryKey(boundedContext, id); + Context context = newContext(null, null); + int count = repository.deleteByPrimaryKey(context, id); return count > 0 ? ResObject.success() : ResObject.failure(); } - protected BoundedContext newBoundedContext(E entity, Q query) { - return new BoundedContext(selector); + protected Context newContext(E entity, Q query) { + return selector; } } diff --git a/dorive-spring-boot-starter/pom.xml b/dorive-spring-boot-starter/pom.xml index 941e6e14..44dbfaf0 100644 --- a/dorive-spring-boot-starter/pom.xml +++ b/dorive-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 dorive-spring-boot-starter diff --git a/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/impl/SQLExampleBuilder.java b/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/impl/SQLExampleBuilder.java index c0922843..5f38a045 100644 --- a/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/impl/SQLExampleBuilder.java +++ b/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/impl/SQLExampleBuilder.java @@ -30,7 +30,7 @@ import com.gitee.dorive.coating.entity.SpecificProperties; import com.gitee.dorive.coating.impl.resolver.CoatingWrapperResolver; import com.gitee.dorive.coating.repository.AbstractCoatingRepository; import com.gitee.dorive.core.api.constant.Operator; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.executor.Criterion; import com.gitee.dorive.core.entity.executor.Example; import com.gitee.dorive.core.entity.executor.OrderBy; @@ -64,7 +64,7 @@ public class SQLExampleBuilder implements ExampleBuilder { } @Override - public Example buildExample(BoundedContext boundedContext, Object coatingObject) { + public Example buildExample(Context context, Object coatingObject) { CoatingWrapperResolver coatingWrapperResolver = repository.getCoatingWrapperResolver(); Map nameCoatingWrapperMap = coatingWrapperResolver.getNameCoatingWrapperMap(); @@ -93,7 +93,7 @@ public class SQLExampleBuilder implements ExampleBuilder { String tableAlias = String.valueOf(letter); letter = (char) (letter + 1); - Example example = repositoryWrapper.newExampleByCoating(boundedContext, coatingObject); + Example example = repositoryWrapper.newExampleByCoating(context, coatingObject); aliasConverter.convert(example); boolean dirtyQuery = example.isDirtyQuery(); diff --git a/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/repository/MybatisPlusExecutor.java b/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/repository/MybatisPlusExecutor.java index 6f5d6b6b..222a7487 100644 --- a/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/repository/MybatisPlusExecutor.java +++ b/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/repository/MybatisPlusExecutor.java @@ -29,7 +29,7 @@ import com.gitee.dorive.core.api.EntityFactory; import com.gitee.dorive.core.api.MetadataHolder; import com.gitee.dorive.core.api.PropertyProxy; import com.gitee.dorive.core.api.constant.Order; -import com.gitee.dorive.core.entity.BoundedContext; +import com.gitee.dorive.core.api.Context; import com.gitee.dorive.core.entity.Command; import com.gitee.dorive.core.entity.definition.EntityDefinition; import com.gitee.dorive.core.entity.element.EntityElement; @@ -93,12 +93,12 @@ public class MybatisPlusExecutor extends AbstractExecutor implements MetadataHol } @Override - public Result executeQuery(BoundedContext boundedContext, Query query) { + public Result executeQuery(Context context, Query query) { if (query.getPrimaryKey() != null) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", query.getPrimaryKey()); List> resultMaps = baseMapper.selectMaps(queryWrapper); - List entities = reconstitute(boundedContext, resultMaps); + List entities = reconstitute(context, resultMaps); return new Result<>(entities); } else if (query.getExample() != null) { @@ -110,14 +110,14 @@ public class MybatisPlusExecutor extends AbstractExecutor implements MetadataHol aliasConverter.convert(unionExample); QueryWrapper queryWrapper = buildQueryWrapper(unionExample); List> resultMaps = baseMapper.selectMaps(queryWrapper); - List entities = reconstitute(boundedContext, resultMaps); + List entities = reconstitute(context, resultMaps); return new EntityIndexResult(unionExample, resultMaps, entities); } else { aliasConverter.convert(example); QueryWrapper queryWrapper = buildQueryWrapper(example); List> resultMaps = baseMapper.selectMaps(queryWrapper); - List entities = reconstitute(boundedContext, resultMaps); + List entities = reconstitute(context, resultMaps); return new Result<>(entities); } @@ -131,7 +131,7 @@ public class MybatisPlusExecutor extends AbstractExecutor implements MetadataHol page.setTotal(dataPage.getTotal()); List> resultMaps = dataPage.getRecords(); - List entities = reconstitute(boundedContext, resultMaps); + List entities = reconstitute(context, resultMaps); page.setRecords(entities); return new Result<>(page); @@ -140,10 +140,10 @@ public class MybatisPlusExecutor extends AbstractExecutor implements MetadataHol throw new RuntimeException("Unsupported query method!"); } - private List reconstitute(BoundedContext boundedContext, List> resultMaps) { + private List reconstitute(Context context, List> resultMaps) { List entities = new ArrayList<>(resultMaps.size()); for (Map resultMap : resultMaps) { - Object entity = entityFactory.reconstitute(boundedContext, resultMap); + Object entity = entityFactory.reconstitute(context, resultMap); entities.add(entity); } return entities; @@ -229,9 +229,9 @@ public class MybatisPlusExecutor extends AbstractExecutor implements MetadataHol } @Override - public int execute(BoundedContext boundedContext, Operation operation) { + public int execute(Context context, Operation operation) { Object entity = operation.getEntity(); - Object persistentObject = entity != null ? entityFactory.deconstruct(boundedContext, entity) : null; + Object persistentObject = entity != null ? entityFactory.deconstruct(context, entity) : null; if (operation instanceof Insert) { int count = baseMapper.insert(persistentObject); @@ -249,8 +249,8 @@ public class MybatisPlusExecutor extends AbstractExecutor implements MetadataHol } String commandKey = entityDefinition.getCommandKey(); - if (StringUtils.isNotBlank(commandKey) && boundedContext.containsKey(commandKey)) { - Command command = (Command) boundedContext.get(commandKey); + if (StringUtils.isNotBlank(commandKey) && context.containsKey(commandKey)) { + Command command = (Command) context.get(commandKey); Set nullableProperties = command.getNullableProperties(); if (nullableProperties != null && !nullableProperties.isEmpty()) { example = primaryKey != null ? new Example().eq("id", primaryKey) : example; diff --git a/pom.xml b/pom.xml index e58e09f6..21237fa2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.gitee.digital-engine dorive - 3.2.6 + 3.2.7 pom -- Gitee