From e9bf5950772ada6ecd9d769f8bfae5a9799c5c11 Mon Sep 17 00:00:00 2001 From: wangmaojian Date: Tue, 5 Nov 2024 10:51:47 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=97=B6=E6=9C=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bef/core/action/delete/DeleteChecker.java | 49 +++++++++++++++++++ .../action/delete/DeleteChildMgrAction.java | 7 +++ .../core/action/delete/DeleteMgrAction.java | 9 ++++ .../action/delete/MultiDeleteMgrAction.java | 5 ++ .../BeDeleteCheckChildTransValAdapter.java | 21 ++++++++ .../com/inspur/edp/bef/core/be/BEManager.java | 11 ++++- .../inspur/edp/bef/core/be/BENodeEntity.java | 26 +++++++++- .../BefDeleteCheckValAssembler.java | 38 ++++++++++++++ .../cef/api/dataType/entity/ICefEntity.java | 2 + .../edp/cef/core/datatype/CefEntity.java | 45 +++++++++++++++++ .../cef/core/datatype/CefEntityCacheInfo.java | 22 +++++++-- .../CefDeleteCheckValAssembler.java | 21 ++++++++ .../adaptor/EntityRelationalAdaptor.java | 13 +++++ .../repository/adaptoritem/AdaptorItem.java | 3 +- .../adaptoritem/BaseAdaptorItem.java | 5 ++ .../repository/assembler/AssociationInfo.java | 36 ++++++++++++-- .../repository/repo/BaseRootRepository.java | 2 - .../edp/cef/spi/entity/AssociationInfo.java | 18 ++++++- .../edp/cef/spi/entity/DeleteCheckState.java | 34 +++++++++++++ pom.xml | 5 -- 20 files changed, 350 insertions(+), 22 deletions(-) create mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java create mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java create mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java create mode 100644 common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java create mode 100644 common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java new file mode 100644 index 00000000..c5c71007 --- /dev/null +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java @@ -0,0 +1,49 @@ +package com.inspur.edp.bef.core.action.delete; + +import com.inspur.edp.bef.api.be.IBusinessEntity; +import com.inspur.edp.bef.api.lcp.ResponseContext; +import com.inspur.edp.bef.core.scope.BefScope; +import com.inspur.edp.bef.core.session.FuncSessionManager; +import com.inspur.edp.cef.api.message.AggregateBizMsgException; +import com.inspur.edp.cef.api.message.BizMessage; +import com.inspur.edp.cef.api.message.IBizMessage; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author: wangmj + * @date: 2024/11/1 + * @Description: 删除检查器 + **/ +public class DeleteChecker { + public void check(List entities, ResponseContext responseContext){ + BefScope valScope = new BefScope(FuncSessionManager.getCurrentSession()); + valScope.beginScope(); + try { + deleteCheckValidate(entities); + valScope.setComplete(); + } catch (Throwable e) { + valScope.setAbort(); + throw e; + } + + List msgList = new ArrayList<>(); + if (!responseContext.hasErrorMessage()) { + return; + } + msgList.addAll((responseContext.getErrorMessages().stream() + .map(msg -> new BizMessage() {{ + setMessageParams(msg.getMessageParams()); + setMessageFormat(msg.getMessageFormat()); + setLevel(msg.getLevel()); + }}).collect(Collectors.toList()))); + msgList.addAll(0, responseContext.getErrorMessages()); + throw new AggregateBizMsgException(msgList); + } + + public final void deleteCheckValidate(List entities) { + entities.forEach(entity -> entity.deleteCheckValidate()); + } +} diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java index f202ff67..87836303 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java @@ -22,6 +22,7 @@ import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RespectiveRetrieveResult; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.base.ActionUtil; +import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.exception.ExceptionCode; import com.inspur.edp.bef.core.lock.LockUtils; @@ -29,6 +30,7 @@ import com.inspur.edp.bef.entity.exception.BefRunTimeBaseException; import com.inspur.edp.bef.entity.exception.ExceptionLevel; import com.inspur.edp.bef.spi.action.AbstractManagerAction; +import java.util.ArrayList; import java.util.List; public class DeleteChildMgrAction extends AbstractManagerAction { @@ -62,6 +64,11 @@ public class DeleteChildMgrAction extends AbstractManagerAction entityList = new ArrayList<>(); + entityList.add(be); + deleteChecker.check(entityList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } @Override diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java index 25b8a6d7..186b1e1a 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java @@ -23,11 +23,15 @@ import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RespectiveRetrieveResult; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.AuthorityUtil; +import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.lock.LockUtils; import com.inspur.edp.bef.core.session.FuncSessionManager; import com.inspur.edp.bef.spi.action.AbstractManagerAction; +import java.util.ArrayList; +import java.util.List; + public class DeleteMgrAction extends AbstractManagerAction { private String dataId; @@ -47,6 +51,11 @@ public class DeleteMgrAction extends AbstractManagerAction { RespectiveRetrieveResult retrieveRez = be.retrieve(tempVar); LockUtils.checkLocked(be.getBEContext()); be.delete(); + + DeleteChecker deleteChecker = new DeleteChecker(); + List entityList = new ArrayList<>(); + entityList.add(be); + deleteChecker.check(entityList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } @Override diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java index e475cf30..061b10a5 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java @@ -22,11 +22,13 @@ import com.inspur.edp.bef.api.be.IBEManagerContext; import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.base.ActionUtil; +import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.lock.LockUtils; import com.inspur.edp.bef.core.scope.BefScope; import com.inspur.edp.bef.spi.action.AbstractManagerAction; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -61,6 +63,9 @@ public class MultiDeleteMgrAction extends AbstractManagerAction be.delete()); + + DeleteChecker deleteChecker = new DeleteChecker(); + deleteChecker.check(beList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } private void checkForLockFail(List beList) { diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java new file mode 100644 index 00000000..519a4291 --- /dev/null +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java @@ -0,0 +1,21 @@ +package com.inspur.edp.bef.core.action.validation.basetypes.childtrans; + +import com.inspur.edp.bef.api.action.validation.IValidationContext; +import com.inspur.edp.bef.api.be.IBENodeEntity; + +/** + * @author: wangmj + * @date: 2024/11/1 + * @Description: + **/ +public class BeDeleteCheckChildTransValAdapter extends BeChildTransValAdapter { + public BeDeleteCheckChildTransValAdapter(String name, String childCode) { + super(name, childCode); + } + + @Override + protected void doExecute(IValidationContext compContext, IBENodeEntity itemEntity) { + itemEntity.deleteCheckValidate(); + + } +} diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java index 39869252..78320772 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java @@ -71,6 +71,7 @@ import com.inspur.edp.bef.core.determination.builtinimpls.BefB4QueryDtmAssembler import com.inspur.edp.bef.core.determination.builtinimpls.BefBeforeRetrieveDtmAssembler; import com.inspur.edp.bef.core.exception.ExceptionCode; import com.inspur.edp.bef.core.lock.LockService; +import com.inspur.edp.bef.core.scope.BefScope; import com.inspur.edp.bef.core.session.BEFuncSessionBase; import com.inspur.edp.bef.core.session.FuncSession; import com.inspur.edp.bef.core.tcc.BefTccParamItem; @@ -100,6 +101,9 @@ import com.inspur.edp.cef.api.manager.ICefManagerContext; import com.inspur.edp.cef.api.manager.IRepositoryFactory; import com.inspur.edp.cef.api.manager.action.ICefMgrAction; import com.inspur.edp.cef.api.manager.serialize.CefSerializeContext; +import com.inspur.edp.cef.api.message.AggregateBizMsgException; +import com.inspur.edp.cef.api.message.BizMessage; +import com.inspur.edp.cef.api.message.IBizMessage; import com.inspur.edp.cef.api.repository.IRootRepository; import com.inspur.edp.cef.api.resourceInfo.ModelResourceInfos; import com.inspur.edp.cef.api.rootManager.IRootEntityCacheManager; @@ -562,16 +566,18 @@ public abstract class BEManager extends CefRootManager implements IBEManager { @Override public final void delete(String dataId) { //CheckDeleteAuthorition(); - DeleteMgrAction mgrAction = getManagerActionFactory().getDeleteMgrAction(getBEManagerContext(), dataId); Execute(mgrAction); + } + @Override public final void delete(java.util.List dataIds) { //CheckDeleteAuthorition(); MultiDeleteMgrAction mgrAction = getManagerActionFactory().getMultiDeleteMgrAction(getBEManagerContext(), dataIds); Execute(mgrAction); + } @Override @@ -580,6 +586,7 @@ public abstract class BEManager extends CefRootManager implements IBEManager { DeleteChildMgrAction mgrAction = getManagerActionFactory().getDeleteChildMgrAction(getBEManagerContext(), nodeCodes, hierachyIdList, ids); Execute(mgrAction); + } @Override @@ -1254,6 +1261,8 @@ public abstract class BEManager extends CefRootManager implements IBEManager { getBEManagerContext().consumeAllEntites(entity -> entity.beforeSaveValidate()); } + + //endregion public final void saveWithScope() { diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java index 04b8c4af..729e1dd3 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java @@ -25,6 +25,7 @@ import com.inspur.edp.bef.core.action.base.ActionFactory; import com.inspur.edp.bef.core.action.base.BEEntityActionExecutor; import com.inspur.edp.bef.core.action.determination.basetypes.childtrans.*; import com.inspur.edp.bef.core.action.save.SaveContext; +import com.inspur.edp.bef.core.action.validation.basetypes.childtrans.BeDeleteCheckChildTransValAdapter; import com.inspur.edp.bef.core.coderule.CodeRuleCompensater; import com.inspur.edp.bef.core.action.tcc.EntityCustomTccExecutor; import com.inspur.edp.bef.core.action.validation.basetypes.childtrans.BeAftModifyChildTransValAdapter; @@ -45,6 +46,7 @@ import com.inspur.edp.bef.core.validation.DeleteCheckValidationAdaptor; import com.inspur.edp.bef.core.validation.builtinimpls.BefAfterModifyValAssembler; import com.inspur.edp.bef.core.validation.builtinimpls.BefAfterSaveValAssembler; import com.inspur.edp.bef.core.validation.builtinimpls.BefB4SaveValAssembler; +import com.inspur.edp.bef.core.validation.builtinimpls.BefDeleteCheckValAssembler; import com.inspur.edp.bef.entity.exception.BefRunTimeBaseException; import com.inspur.edp.bef.spi.action.AbstractAction; import com.inspur.edp.bef.spi.action.assembler.entityAssemblerFactory.AbstractActionAssemblerFactory; @@ -57,6 +59,7 @@ import com.inspur.edp.caf.transaction.api.annoation.tcc.BusinessActionContext; import com.inspur.edp.cdp.coderule.api.CodeRuleBEAssignService; import com.inspur.edp.cef.api.dataType.entity.ICefEntity; import com.inspur.edp.cef.core.determination.builtinimpls.CefAfterSaveDtmAssembler; +import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; import com.inspur.edp.cef.entity.changeset.ChangeType; import com.inspur.edp.cef.entity.entity.IEntityDataCollection; import com.inspur.edp.cef.entity.repository.DataSaveResult; @@ -792,7 +795,12 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { @Override protected void addExtendB4SaveVals(CefB4SaveValAssembler assembler) { - assembler.addValidations( + + } + + @Override + protected void addExtendDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + deleteCheckValAssembler.addValidations( new DeleteCheckValidationAdaptor( this.getEntityResInfo().getConfigId(), this.getEntityResInfo().isRoot() ? "RootNode" : this.getEntityResInfo().getEntityCode())); @@ -809,6 +817,17 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { } } + @Override + protected void addChildTransDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + if (getEntityResInfo().getChildEntityResInfos() == null || getEntityResInfo().getChildEntityResInfos().size() == 0) + return; + for (Map.Entry entityResInfoEntry : getEntityResInfo().getChildEntityResInfos().entrySet()) { + deleteCheckValAssembler.getChildAssemblers().add( + new BeDeleteCheckChildTransValAdapter(entityResInfoEntry.getValue().getEntityCode(), + entityResInfoEntry.getValue().getEntityCode())); + } + } + @Override protected IEntityRTDtmAssembler createAfterModifyDtmAssembler() { return new BefAfterModifyDtmAssembler(); @@ -839,6 +858,11 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { return new BefB4SaveValAssembler(); } + @Override + protected IEntityRTValidationAssembler createDeleteCheckValidationAssembler() { + return new BefDeleteCheckValAssembler(); + } + //region tcc public void tccCancelByCustom(BusinessActionContext tccContext, IChangeDetail reverseChg) { BefTccHandlerAssembler assembler = getTccAssembler(); diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java new file mode 100644 index 00000000..ff33fd44 --- /dev/null +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java @@ -0,0 +1,38 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed 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.inspur.edp.bef.core.validation.builtinimpls; + +import com.inspur.edp.bef.api.be.IBENodeEntityContext; +import com.inspur.edp.bef.core.validation.ValidationContext; +import com.inspur.edp.cef.api.dataType.base.ICefDataTypeContext; +import com.inspur.edp.cef.api.dataType.entity.ICefEntityContext; +import com.inspur.edp.cef.api.validation.ICefValidationContext; +import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; +import com.inspur.edp.cef.entity.changeset.IChangeDetail; + +public class BefDeleteCheckValAssembler extends CefDeleteCheckValAssembler { + + @Override + public ICefValidationContext getValidationContext(ICefEntityContext contePar) { + return new ValidationContext((IBENodeEntityContext) contePar); + } + + @Override + public IChangeDetail getChangeset(ICefDataTypeContext dataTypeContext) { + return ((IBENodeEntityContext) dataTypeContext).getCurrentTransactionalChange(); + } +} diff --git a/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java b/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java index 5ec06962..db4bab31 100644 --- a/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java +++ b/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java @@ -36,6 +36,8 @@ public interface ICefEntity extends ICefDataType { void beforeSaveValidate(); + void deleteCheckValidate(); + //endregion ICefEntity getChildEntity(String code, String id); diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java index 6ac3efe4..6253d4c4 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java @@ -31,6 +31,8 @@ import com.inspur.edp.cef.core.determination.fieldrtrimdtmadaptor.FieldRtrimDtmU import com.inspur.edp.cef.core.exception.ExceptionCode; import com.inspur.edp.cef.core.validation.builtinimpls.CefAfterModifyValAssembler; import com.inspur.edp.cef.core.validation.builtinimpls.CefB4SaveValAssembler; +import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; +import com.inspur.edp.cef.core.validation.deletecheckadaptor.DeleteCheckValidationAdaptor; import com.inspur.edp.cef.core.validation.enumvaladaptor.EnumValUtil; import com.inspur.edp.cef.core.validation.lengthvaladaptor.LengthValUtils; import com.inspur.edp.cef.core.validation.requiredvaladaptor.EntityValidationExecutor; @@ -425,6 +427,37 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { // addDeleteCheckValidations(b4SaveValAssembler); } + public void deleteCheckValidate() { + + IEntityRTValidationAssembler ass = getDeleteCheckValidationAssembler(); + if (ass == null) { + return; + } + + checkEntityContext(); + new EntityValidationExecutor(ass, getEntityContext()).execute(); + } + + /** + * 获取删除检查的组装器 + * @return + */ + private IEntityRTValidationAssembler getDeleteCheckValidationAssembler() { + if (getVersion() == 0) + return createDeleteCheckValidationAssembler(); + if (getEntityCacheInfo().getDeleteCheckAssembler() != null) + return getEntityCacheInfo().getDeleteCheckAssembler(); + CefDeleteCheckValAssembler deleteCheckValAssembler = (CefDeleteCheckValAssembler) createDeleteCheckValidationAssembler(); + addBuiltInDeleteCheckVals(deleteCheckValAssembler); + getEntityCacheInfo().setDeleteCheckAssembler(deleteCheckValAssembler); + return deleteCheckValAssembler; + } + + private void addBuiltInDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + addExtendDeleteCheckVals(deleteCheckValAssembler); + addChildTransDeleteCheckVals(deleteCheckValAssembler); + } + private void addRequireValidations(CefB4SaveValAssembler b4SaveValAssembler) { RequiredValsUtils.addRequiredVals(b4SaveValAssembler, getEntityResInfo().getEntityTypeInfo()); } @@ -476,6 +509,14 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { } + protected void addExtendDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + + } + + protected void addChildTransDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + + } + private void addUdtTransB4SaveVals(CefB4SaveValAssembler b4SaveValAssembler) { int index = 0; for (Map.Entry entry : getEntityResInfo().getEntityTypeInfo().getPropertyInfos().entrySet()) { @@ -494,6 +535,10 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { return null; } + protected IEntityRTValidationAssembler createDeleteCheckValidationAssembler() { + return null; + } + public abstract ICefEntity getChildEntity(String code, String id); public final void setExtend(List extList) { diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java index 65df119b..31ba8dac 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java @@ -24,11 +24,23 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { private IEntityRTValidationAssembler afterModifyValAssembler; private IEntityRTValidationAssembler beforeSaveValAssembler; + /** + * 删除检查组装器 + */ + private IEntityRTValidationAssembler deleteCheckAssembler; private IEntityRTDtmAssembler beforeSaveDtmAssembler; private IEntityRTDtmAssembler afterSaveDtmAssembler; private IEntityRTDtmAssembler afterModifyDtmAssembler; private IEntityRTDtmAssembler retrieveDefaultDtmAssembler; + public IEntityRTValidationAssembler getDeleteCheckAssembler() { + return deleteCheckAssembler; + } + + public void setDeleteCheckAssembler(IEntityRTValidationAssembler deleteCheckAssembler) { + this.deleteCheckAssembler = deleteCheckAssembler; + } + public IEntityRTValidationAssembler getAfterModifyValAssembler() { return afterModifyValAssembler; } @@ -51,6 +63,11 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { return beforeSaveDtmAssembler; } + public void setBeforeSaveDtmAssembler( + IEntityRTDtmAssembler beforeSaveDtmAssembler) { + this.beforeSaveDtmAssembler = beforeSaveDtmAssembler; + } + public IEntityRTDtmAssembler getAfterSaveDtmAssembler() { return afterSaveDtmAssembler; } @@ -60,11 +77,6 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { this.afterSaveDtmAssembler = afterSaveDtmAssembler; } - public void setBeforeSaveDtmAssembler( - IEntityRTDtmAssembler beforeSaveDtmAssembler) { - this.beforeSaveDtmAssembler = beforeSaveDtmAssembler; - } - public IEntityRTDtmAssembler getAfterModifyDtmAssembler() { return afterModifyDtmAssembler; } diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java new file mode 100644 index 00000000..7a225db4 --- /dev/null +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java @@ -0,0 +1,21 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed 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.inspur.edp.cef.core.validation.builtinimpls; + +public abstract class CefDeleteCheckValAssembler extends CefAbstractValAssembler { + +} diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java index 8cf0b56f..64e6875c 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java @@ -60,6 +60,7 @@ import com.inspur.edp.cef.repository.repo.BaseRootRepository; import com.inspur.edp.cef.repository.utils.DatabaseUtil; import com.inspur.edp.cef.repository.utils.FilterUtil; import com.inspur.edp.cef.repository.utils.RepositoryUtil; +import com.inspur.edp.cef.spi.entity.DeleteCheckState; import com.inspur.edp.cef.spi.entity.info.propertyinfo.*; import com.inspur.edp.cef.spi.entity.resourceInfo.builinImpls.CefEntityResInfoImpl; import com.inspur.edp.cef.spi.jsonser.base.StringUtils; @@ -3178,6 +3179,18 @@ public abstract class EntityRelationalAdaptor extends BaseEntityAdaptor { } public final boolean isRef(String[] dataIds, String propertyName) { + AssociationInfo associationInfo = null; + for (AssociationInfo item : getAssociationInfos()) { + if (propertyName.equals(item.getSourceColumn())) { + associationInfo = item; + break; + } + } + //可能存在非关联字段的场景(修改过对象类型),如果关联禁用删除检查,则返回 + if(associationInfo != null && associationInfo.getDeleteCheckState() == DeleteCheckState.Disabled){ + return false; + } + List tables = innerGetTableNames(); if (tables == null || tables.isEmpty()) { return false; diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java index 740f4a2f..8961bdd3 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java @@ -171,7 +171,8 @@ public abstract class AdaptorItem implements IAdaptorItem { tempVar.setRefRepository(refRepository); tempVar.setRefColumns(refColumns); tempVar.setConfigId(associationInfo.getConfig()); - + tempVar.setFkEnableState(associationInfo.getEnableState()); + tempVar.setDeleteCheckState(associationInfo.getDeleteCheckState()); tempVar.setWhere(associationInfo.getWhere()); if (associationInfo.getAssoConditions() != null && associationInfo.getAssoConditions().size() > 0) { ArrayList assoConditions = new ArrayList<>(); diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java index c738845f..5a64101b 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java @@ -322,6 +322,11 @@ public class BaseAdaptorItem extends AdaptorItem { initAssociationByAssociationInfo(associationInfo, dataTypePropertyInfo); } + /** + * 初始化持久化层AssociationInfo信息 + * @param associationInfo spi中的关联信息 + * @param dataTypePropertyInfo + */ private void initAssociationByAssociationInfo( AssociationInfo associationInfo, DataTypePropertyInfo dataTypePropertyInfo) { IRootRepository repository = LcpFactoryManagerUtils.getBefRepositoryFactory() diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java index 7ab7148d..a7e2c3b7 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java @@ -18,6 +18,8 @@ package com.inspur.edp.cef.repository.assembler; import com.inspur.edp.cef.api.repository.IRootRepository; import com.inspur.edp.cef.entity.repository.AssoVariable; +import com.inspur.edp.cef.spi.entity.AssociationEnableState; +import com.inspur.edp.cef.spi.entity.DeleteCheckState; import com.inspur.edp.cef.spi.repository.IAssociationInfo; import java.util.ArrayList; @@ -56,6 +58,35 @@ public class AssociationInfo implements IAssociationInfo { private ArrayList assoVariables; private String where; private String refTableAlias; + /** + * 是否扩展关联,默认为否 + */ + private boolean isExtend = false; + + /** + * 是否启用外键检查 + */ + private DeleteCheckState deleteCheckState = DeleteCheckState.Enabled; + /** + * 是否启用删除检查 + */ + private AssociationEnableState fkEnableState = AssociationEnableState.Enabled; + + public DeleteCheckState getDeleteCheckState() { + return deleteCheckState; + } + + public void setDeleteCheckState(DeleteCheckState deleteCheckState) { + this.deleteCheckState = deleteCheckState; + } + + public AssociationEnableState getFkEnableState() { + return fkEnableState; + } + + public void setFkEnableState(AssociationEnableState fkEnableState) { + this.fkEnableState = fkEnableState; + } public boolean isExtend() { return isExtend; @@ -65,11 +96,6 @@ public class AssociationInfo implements IAssociationInfo { isExtend = extend; } - /** - * 是否扩展关联,默认为否 - */ - private boolean isExtend = false; - public final String getConfigId() { return privateConfigId; } diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java index 85954286..b37bcc74 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java @@ -102,8 +102,6 @@ public abstract class BaseRootRepository implements IRootRepository { return; if (filter.getFieldsFilter().getFilterFields() == null) throw new CefRepositoryException(ExceptionCode.CEF_RUNTIME_5019); - if (filter.getFieldsFilter().getFilterFields().size() == 1) - throw new CefRepositoryException(ExceptionCode.CEF_RUNTIME_5020); } /** diff --git a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java index 2df65ac0..7f7050f0 100644 --- a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java +++ b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java @@ -36,7 +36,15 @@ public class AssociationInfo { private String nodeCode; private String mainCode; private HashMap refPropInfoTypes; + + /** + * 是否启用外键检查 + */ private AssociationEnableState enableState = AssociationEnableState.Enabled; + /** + * 是否启用删除检查 + */ + private DeleteCheckState deleteCheckState = DeleteCheckState.Enabled; private String privateSourceColumn; private String privateTargetColumn; private TreeMap refPropInfos; @@ -47,11 +55,9 @@ public class AssociationInfo { private ArrayList assoConditions; /**模型国际化资源信息服务*/ private ModelResInfoService modelResInfoService; - public AssociationInfo() { } - public AssociationInfo(String config, String nodeCode, String privateSourceColumn, String privateTargetColumn) { this(config, nodeCode, nodeCode, AssociationEnableState.Enabled, privateSourceColumn, privateTargetColumn); } @@ -65,6 +71,14 @@ public class AssociationInfo { this.privateTargetColumn = privateTargetColumn; } + public DeleteCheckState getDeleteCheckState() { + return deleteCheckState; + } + + public void setDeleteCheckState(DeleteCheckState deleteCheckState) { + this.deleteCheckState = deleteCheckState; + } + public ArrayList getAssoConditions() { return assoConditions; } diff --git a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java new file mode 100644 index 00000000..29d9f43c --- /dev/null +++ b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java @@ -0,0 +1,34 @@ +package com.inspur.edp.cef.spi.entity; + +/** + * @author: wangmj + * @date: 2024/11/2 + * @Description: 关联字段删除检查状态 + **/ +public enum DeleteCheckState { + Enabled(0), + Disabled(1); + + private static java.util.HashMap mappings; + private int intValue; + + private DeleteCheckState(int value) { + intValue = value; + DeleteCheckState.getMappings().put(value, this); + } + + private synchronized static java.util.HashMap getMappings() { + if (mappings == null) { + mappings = new java.util.HashMap(); + } + return mappings; + } + + public static DeleteCheckState forValue(int value) { + return getMappings().get(value); + } + + public int getValue() { + return intValue; + } +} diff --git a/pom.xml b/pom.xml index 114dc3ed..466087ae 100644 --- a/pom.xml +++ b/pom.xml @@ -307,11 +307,6 @@ - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.2 - org.apache.maven.plugins maven-javadoc-plugin -- Gitee From 439889e8e8a6b7df99450d3b8f1fc068ff8211dd Mon Sep 17 00:00:00 2001 From: wangmaojian Date: Tue, 5 Nov 2024 11:01:17 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Revert=20"=E5=88=A0=E9=99=A4=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E6=97=B6=E6=9C=BA=E4=BF=AE=E6=94=B9"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit e9bf5950772ada6ecd9d769f8bfae5a9799c5c11. --- .../bef/core/action/delete/DeleteChecker.java | 49 ------------------- .../action/delete/DeleteChildMgrAction.java | 7 --- .../core/action/delete/DeleteMgrAction.java | 9 ---- .../action/delete/MultiDeleteMgrAction.java | 5 -- .../BeDeleteCheckChildTransValAdapter.java | 21 -------- .../com/inspur/edp/bef/core/be/BEManager.java | 11 +---- .../inspur/edp/bef/core/be/BENodeEntity.java | 26 +--------- .../BefDeleteCheckValAssembler.java | 38 -------------- .../cef/api/dataType/entity/ICefEntity.java | 2 - .../edp/cef/core/datatype/CefEntity.java | 45 ----------------- .../cef/core/datatype/CefEntityCacheInfo.java | 22 ++------- .../CefDeleteCheckValAssembler.java | 21 -------- .../adaptor/EntityRelationalAdaptor.java | 13 ----- .../repository/adaptoritem/AdaptorItem.java | 3 +- .../adaptoritem/BaseAdaptorItem.java | 5 -- .../repository/assembler/AssociationInfo.java | 36 ++------------ .../repository/repo/BaseRootRepository.java | 2 + .../edp/cef/spi/entity/AssociationInfo.java | 18 +------ .../edp/cef/spi/entity/DeleteCheckState.java | 34 ------------- pom.xml | 5 ++ 20 files changed, 22 insertions(+), 350 deletions(-) delete mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java delete mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java delete mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java delete mode 100644 common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java delete mode 100644 common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java deleted file mode 100644 index c5c71007..00000000 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.inspur.edp.bef.core.action.delete; - -import com.inspur.edp.bef.api.be.IBusinessEntity; -import com.inspur.edp.bef.api.lcp.ResponseContext; -import com.inspur.edp.bef.core.scope.BefScope; -import com.inspur.edp.bef.core.session.FuncSessionManager; -import com.inspur.edp.cef.api.message.AggregateBizMsgException; -import com.inspur.edp.cef.api.message.BizMessage; -import com.inspur.edp.cef.api.message.IBizMessage; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author: wangmj - * @date: 2024/11/1 - * @Description: 删除检查器 - **/ -public class DeleteChecker { - public void check(List entities, ResponseContext responseContext){ - BefScope valScope = new BefScope(FuncSessionManager.getCurrentSession()); - valScope.beginScope(); - try { - deleteCheckValidate(entities); - valScope.setComplete(); - } catch (Throwable e) { - valScope.setAbort(); - throw e; - } - - List msgList = new ArrayList<>(); - if (!responseContext.hasErrorMessage()) { - return; - } - msgList.addAll((responseContext.getErrorMessages().stream() - .map(msg -> new BizMessage() {{ - setMessageParams(msg.getMessageParams()); - setMessageFormat(msg.getMessageFormat()); - setLevel(msg.getLevel()); - }}).collect(Collectors.toList()))); - msgList.addAll(0, responseContext.getErrorMessages()); - throw new AggregateBizMsgException(msgList); - } - - public final void deleteCheckValidate(List entities) { - entities.forEach(entity -> entity.deleteCheckValidate()); - } -} diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java index 87836303..f202ff67 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java @@ -22,7 +22,6 @@ import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RespectiveRetrieveResult; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.base.ActionUtil; -import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.exception.ExceptionCode; import com.inspur.edp.bef.core.lock.LockUtils; @@ -30,7 +29,6 @@ import com.inspur.edp.bef.entity.exception.BefRunTimeBaseException; import com.inspur.edp.bef.entity.exception.ExceptionLevel; import com.inspur.edp.bef.spi.action.AbstractManagerAction; -import java.util.ArrayList; import java.util.List; public class DeleteChildMgrAction extends AbstractManagerAction { @@ -64,11 +62,6 @@ public class DeleteChildMgrAction extends AbstractManagerAction entityList = new ArrayList<>(); - entityList.add(be); - deleteChecker.check(entityList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } @Override diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java index 186b1e1a..25b8a6d7 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java @@ -23,15 +23,11 @@ import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RespectiveRetrieveResult; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.AuthorityUtil; -import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.lock.LockUtils; import com.inspur.edp.bef.core.session.FuncSessionManager; import com.inspur.edp.bef.spi.action.AbstractManagerAction; -import java.util.ArrayList; -import java.util.List; - public class DeleteMgrAction extends AbstractManagerAction { private String dataId; @@ -51,11 +47,6 @@ public class DeleteMgrAction extends AbstractManagerAction { RespectiveRetrieveResult retrieveRez = be.retrieve(tempVar); LockUtils.checkLocked(be.getBEContext()); be.delete(); - - DeleteChecker deleteChecker = new DeleteChecker(); - List entityList = new ArrayList<>(); - entityList.add(be); - deleteChecker.check(entityList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } @Override diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java index 061b10a5..e475cf30 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java @@ -22,13 +22,11 @@ import com.inspur.edp.bef.api.be.IBEManagerContext; import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.base.ActionUtil; -import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.lock.LockUtils; import com.inspur.edp.bef.core.scope.BefScope; import com.inspur.edp.bef.spi.action.AbstractManagerAction; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -63,9 +61,6 @@ public class MultiDeleteMgrAction extends AbstractManagerAction be.delete()); - - DeleteChecker deleteChecker = new DeleteChecker(); - deleteChecker.check(beList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } private void checkForLockFail(List beList) { diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java deleted file mode 100644 index 519a4291..00000000 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.inspur.edp.bef.core.action.validation.basetypes.childtrans; - -import com.inspur.edp.bef.api.action.validation.IValidationContext; -import com.inspur.edp.bef.api.be.IBENodeEntity; - -/** - * @author: wangmj - * @date: 2024/11/1 - * @Description: - **/ -public class BeDeleteCheckChildTransValAdapter extends BeChildTransValAdapter { - public BeDeleteCheckChildTransValAdapter(String name, String childCode) { - super(name, childCode); - } - - @Override - protected void doExecute(IValidationContext compContext, IBENodeEntity itemEntity) { - itemEntity.deleteCheckValidate(); - - } -} diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java index 78320772..39869252 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java @@ -71,7 +71,6 @@ import com.inspur.edp.bef.core.determination.builtinimpls.BefB4QueryDtmAssembler import com.inspur.edp.bef.core.determination.builtinimpls.BefBeforeRetrieveDtmAssembler; import com.inspur.edp.bef.core.exception.ExceptionCode; import com.inspur.edp.bef.core.lock.LockService; -import com.inspur.edp.bef.core.scope.BefScope; import com.inspur.edp.bef.core.session.BEFuncSessionBase; import com.inspur.edp.bef.core.session.FuncSession; import com.inspur.edp.bef.core.tcc.BefTccParamItem; @@ -101,9 +100,6 @@ import com.inspur.edp.cef.api.manager.ICefManagerContext; import com.inspur.edp.cef.api.manager.IRepositoryFactory; import com.inspur.edp.cef.api.manager.action.ICefMgrAction; import com.inspur.edp.cef.api.manager.serialize.CefSerializeContext; -import com.inspur.edp.cef.api.message.AggregateBizMsgException; -import com.inspur.edp.cef.api.message.BizMessage; -import com.inspur.edp.cef.api.message.IBizMessage; import com.inspur.edp.cef.api.repository.IRootRepository; import com.inspur.edp.cef.api.resourceInfo.ModelResourceInfos; import com.inspur.edp.cef.api.rootManager.IRootEntityCacheManager; @@ -566,18 +562,16 @@ public abstract class BEManager extends CefRootManager implements IBEManager { @Override public final void delete(String dataId) { //CheckDeleteAuthorition(); + DeleteMgrAction mgrAction = getManagerActionFactory().getDeleteMgrAction(getBEManagerContext(), dataId); Execute(mgrAction); - } - @Override public final void delete(java.util.List dataIds) { //CheckDeleteAuthorition(); MultiDeleteMgrAction mgrAction = getManagerActionFactory().getMultiDeleteMgrAction(getBEManagerContext(), dataIds); Execute(mgrAction); - } @Override @@ -586,7 +580,6 @@ public abstract class BEManager extends CefRootManager implements IBEManager { DeleteChildMgrAction mgrAction = getManagerActionFactory().getDeleteChildMgrAction(getBEManagerContext(), nodeCodes, hierachyIdList, ids); Execute(mgrAction); - } @Override @@ -1261,8 +1254,6 @@ public abstract class BEManager extends CefRootManager implements IBEManager { getBEManagerContext().consumeAllEntites(entity -> entity.beforeSaveValidate()); } - - //endregion public final void saveWithScope() { diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java index 729e1dd3..04b8c4af 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java @@ -25,7 +25,6 @@ import com.inspur.edp.bef.core.action.base.ActionFactory; import com.inspur.edp.bef.core.action.base.BEEntityActionExecutor; import com.inspur.edp.bef.core.action.determination.basetypes.childtrans.*; import com.inspur.edp.bef.core.action.save.SaveContext; -import com.inspur.edp.bef.core.action.validation.basetypes.childtrans.BeDeleteCheckChildTransValAdapter; import com.inspur.edp.bef.core.coderule.CodeRuleCompensater; import com.inspur.edp.bef.core.action.tcc.EntityCustomTccExecutor; import com.inspur.edp.bef.core.action.validation.basetypes.childtrans.BeAftModifyChildTransValAdapter; @@ -46,7 +45,6 @@ import com.inspur.edp.bef.core.validation.DeleteCheckValidationAdaptor; import com.inspur.edp.bef.core.validation.builtinimpls.BefAfterModifyValAssembler; import com.inspur.edp.bef.core.validation.builtinimpls.BefAfterSaveValAssembler; import com.inspur.edp.bef.core.validation.builtinimpls.BefB4SaveValAssembler; -import com.inspur.edp.bef.core.validation.builtinimpls.BefDeleteCheckValAssembler; import com.inspur.edp.bef.entity.exception.BefRunTimeBaseException; import com.inspur.edp.bef.spi.action.AbstractAction; import com.inspur.edp.bef.spi.action.assembler.entityAssemblerFactory.AbstractActionAssemblerFactory; @@ -59,7 +57,6 @@ import com.inspur.edp.caf.transaction.api.annoation.tcc.BusinessActionContext; import com.inspur.edp.cdp.coderule.api.CodeRuleBEAssignService; import com.inspur.edp.cef.api.dataType.entity.ICefEntity; import com.inspur.edp.cef.core.determination.builtinimpls.CefAfterSaveDtmAssembler; -import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; import com.inspur.edp.cef.entity.changeset.ChangeType; import com.inspur.edp.cef.entity.entity.IEntityDataCollection; import com.inspur.edp.cef.entity.repository.DataSaveResult; @@ -795,12 +792,7 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { @Override protected void addExtendB4SaveVals(CefB4SaveValAssembler assembler) { - - } - - @Override - protected void addExtendDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { - deleteCheckValAssembler.addValidations( + assembler.addValidations( new DeleteCheckValidationAdaptor( this.getEntityResInfo().getConfigId(), this.getEntityResInfo().isRoot() ? "RootNode" : this.getEntityResInfo().getEntityCode())); @@ -817,17 +809,6 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { } } - @Override - protected void addChildTransDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { - if (getEntityResInfo().getChildEntityResInfos() == null || getEntityResInfo().getChildEntityResInfos().size() == 0) - return; - for (Map.Entry entityResInfoEntry : getEntityResInfo().getChildEntityResInfos().entrySet()) { - deleteCheckValAssembler.getChildAssemblers().add( - new BeDeleteCheckChildTransValAdapter(entityResInfoEntry.getValue().getEntityCode(), - entityResInfoEntry.getValue().getEntityCode())); - } - } - @Override protected IEntityRTDtmAssembler createAfterModifyDtmAssembler() { return new BefAfterModifyDtmAssembler(); @@ -858,11 +839,6 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { return new BefB4SaveValAssembler(); } - @Override - protected IEntityRTValidationAssembler createDeleteCheckValidationAssembler() { - return new BefDeleteCheckValAssembler(); - } - //region tcc public void tccCancelByCustom(BusinessActionContext tccContext, IChangeDetail reverseChg) { BefTccHandlerAssembler assembler = getTccAssembler(); diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java deleted file mode 100644 index ff33fd44..00000000 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright © OpenAtom Foundation. - * - * Licensed 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.inspur.edp.bef.core.validation.builtinimpls; - -import com.inspur.edp.bef.api.be.IBENodeEntityContext; -import com.inspur.edp.bef.core.validation.ValidationContext; -import com.inspur.edp.cef.api.dataType.base.ICefDataTypeContext; -import com.inspur.edp.cef.api.dataType.entity.ICefEntityContext; -import com.inspur.edp.cef.api.validation.ICefValidationContext; -import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; -import com.inspur.edp.cef.entity.changeset.IChangeDetail; - -public class BefDeleteCheckValAssembler extends CefDeleteCheckValAssembler { - - @Override - public ICefValidationContext getValidationContext(ICefEntityContext contePar) { - return new ValidationContext((IBENodeEntityContext) contePar); - } - - @Override - public IChangeDetail getChangeset(ICefDataTypeContext dataTypeContext) { - return ((IBENodeEntityContext) dataTypeContext).getCurrentTransactionalChange(); - } -} diff --git a/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java b/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java index db4bab31..5ec06962 100644 --- a/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java +++ b/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java @@ -36,8 +36,6 @@ public interface ICefEntity extends ICefDataType { void beforeSaveValidate(); - void deleteCheckValidate(); - //endregion ICefEntity getChildEntity(String code, String id); diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java index 6253d4c4..6ac3efe4 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java @@ -31,8 +31,6 @@ import com.inspur.edp.cef.core.determination.fieldrtrimdtmadaptor.FieldRtrimDtmU import com.inspur.edp.cef.core.exception.ExceptionCode; import com.inspur.edp.cef.core.validation.builtinimpls.CefAfterModifyValAssembler; import com.inspur.edp.cef.core.validation.builtinimpls.CefB4SaveValAssembler; -import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; -import com.inspur.edp.cef.core.validation.deletecheckadaptor.DeleteCheckValidationAdaptor; import com.inspur.edp.cef.core.validation.enumvaladaptor.EnumValUtil; import com.inspur.edp.cef.core.validation.lengthvaladaptor.LengthValUtils; import com.inspur.edp.cef.core.validation.requiredvaladaptor.EntityValidationExecutor; @@ -427,37 +425,6 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { // addDeleteCheckValidations(b4SaveValAssembler); } - public void deleteCheckValidate() { - - IEntityRTValidationAssembler ass = getDeleteCheckValidationAssembler(); - if (ass == null) { - return; - } - - checkEntityContext(); - new EntityValidationExecutor(ass, getEntityContext()).execute(); - } - - /** - * 获取删除检查的组装器 - * @return - */ - private IEntityRTValidationAssembler getDeleteCheckValidationAssembler() { - if (getVersion() == 0) - return createDeleteCheckValidationAssembler(); - if (getEntityCacheInfo().getDeleteCheckAssembler() != null) - return getEntityCacheInfo().getDeleteCheckAssembler(); - CefDeleteCheckValAssembler deleteCheckValAssembler = (CefDeleteCheckValAssembler) createDeleteCheckValidationAssembler(); - addBuiltInDeleteCheckVals(deleteCheckValAssembler); - getEntityCacheInfo().setDeleteCheckAssembler(deleteCheckValAssembler); - return deleteCheckValAssembler; - } - - private void addBuiltInDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { - addExtendDeleteCheckVals(deleteCheckValAssembler); - addChildTransDeleteCheckVals(deleteCheckValAssembler); - } - private void addRequireValidations(CefB4SaveValAssembler b4SaveValAssembler) { RequiredValsUtils.addRequiredVals(b4SaveValAssembler, getEntityResInfo().getEntityTypeInfo()); } @@ -509,14 +476,6 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { } - protected void addExtendDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { - - } - - protected void addChildTransDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { - - } - private void addUdtTransB4SaveVals(CefB4SaveValAssembler b4SaveValAssembler) { int index = 0; for (Map.Entry entry : getEntityResInfo().getEntityTypeInfo().getPropertyInfos().entrySet()) { @@ -535,10 +494,6 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { return null; } - protected IEntityRTValidationAssembler createDeleteCheckValidationAssembler() { - return null; - } - public abstract ICefEntity getChildEntity(String code, String id); public final void setExtend(List extList) { diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java index 31ba8dac..65df119b 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java @@ -24,23 +24,11 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { private IEntityRTValidationAssembler afterModifyValAssembler; private IEntityRTValidationAssembler beforeSaveValAssembler; - /** - * 删除检查组装器 - */ - private IEntityRTValidationAssembler deleteCheckAssembler; private IEntityRTDtmAssembler beforeSaveDtmAssembler; private IEntityRTDtmAssembler afterSaveDtmAssembler; private IEntityRTDtmAssembler afterModifyDtmAssembler; private IEntityRTDtmAssembler retrieveDefaultDtmAssembler; - public IEntityRTValidationAssembler getDeleteCheckAssembler() { - return deleteCheckAssembler; - } - - public void setDeleteCheckAssembler(IEntityRTValidationAssembler deleteCheckAssembler) { - this.deleteCheckAssembler = deleteCheckAssembler; - } - public IEntityRTValidationAssembler getAfterModifyValAssembler() { return afterModifyValAssembler; } @@ -63,11 +51,6 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { return beforeSaveDtmAssembler; } - public void setBeforeSaveDtmAssembler( - IEntityRTDtmAssembler beforeSaveDtmAssembler) { - this.beforeSaveDtmAssembler = beforeSaveDtmAssembler; - } - public IEntityRTDtmAssembler getAfterSaveDtmAssembler() { return afterSaveDtmAssembler; } @@ -77,6 +60,11 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { this.afterSaveDtmAssembler = afterSaveDtmAssembler; } + public void setBeforeSaveDtmAssembler( + IEntityRTDtmAssembler beforeSaveDtmAssembler) { + this.beforeSaveDtmAssembler = beforeSaveDtmAssembler; + } + public IEntityRTDtmAssembler getAfterModifyDtmAssembler() { return afterModifyDtmAssembler; } diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java deleted file mode 100644 index 7a225db4..00000000 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright © OpenAtom Foundation. - * - * Licensed 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.inspur.edp.cef.core.validation.builtinimpls; - -public abstract class CefDeleteCheckValAssembler extends CefAbstractValAssembler { - -} diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java index 64e6875c..8cf0b56f 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java @@ -60,7 +60,6 @@ import com.inspur.edp.cef.repository.repo.BaseRootRepository; import com.inspur.edp.cef.repository.utils.DatabaseUtil; import com.inspur.edp.cef.repository.utils.FilterUtil; import com.inspur.edp.cef.repository.utils.RepositoryUtil; -import com.inspur.edp.cef.spi.entity.DeleteCheckState; import com.inspur.edp.cef.spi.entity.info.propertyinfo.*; import com.inspur.edp.cef.spi.entity.resourceInfo.builinImpls.CefEntityResInfoImpl; import com.inspur.edp.cef.spi.jsonser.base.StringUtils; @@ -3179,18 +3178,6 @@ public abstract class EntityRelationalAdaptor extends BaseEntityAdaptor { } public final boolean isRef(String[] dataIds, String propertyName) { - AssociationInfo associationInfo = null; - for (AssociationInfo item : getAssociationInfos()) { - if (propertyName.equals(item.getSourceColumn())) { - associationInfo = item; - break; - } - } - //可能存在非关联字段的场景(修改过对象类型),如果关联禁用删除检查,则返回 - if(associationInfo != null && associationInfo.getDeleteCheckState() == DeleteCheckState.Disabled){ - return false; - } - List tables = innerGetTableNames(); if (tables == null || tables.isEmpty()) { return false; diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java index 8961bdd3..740f4a2f 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java @@ -171,8 +171,7 @@ public abstract class AdaptorItem implements IAdaptorItem { tempVar.setRefRepository(refRepository); tempVar.setRefColumns(refColumns); tempVar.setConfigId(associationInfo.getConfig()); - tempVar.setFkEnableState(associationInfo.getEnableState()); - tempVar.setDeleteCheckState(associationInfo.getDeleteCheckState()); + tempVar.setWhere(associationInfo.getWhere()); if (associationInfo.getAssoConditions() != null && associationInfo.getAssoConditions().size() > 0) { ArrayList assoConditions = new ArrayList<>(); diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java index 5a64101b..c738845f 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java @@ -322,11 +322,6 @@ public class BaseAdaptorItem extends AdaptorItem { initAssociationByAssociationInfo(associationInfo, dataTypePropertyInfo); } - /** - * 初始化持久化层AssociationInfo信息 - * @param associationInfo spi中的关联信息 - * @param dataTypePropertyInfo - */ private void initAssociationByAssociationInfo( AssociationInfo associationInfo, DataTypePropertyInfo dataTypePropertyInfo) { IRootRepository repository = LcpFactoryManagerUtils.getBefRepositoryFactory() diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java index a7e2c3b7..7ab7148d 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java @@ -18,8 +18,6 @@ package com.inspur.edp.cef.repository.assembler; import com.inspur.edp.cef.api.repository.IRootRepository; import com.inspur.edp.cef.entity.repository.AssoVariable; -import com.inspur.edp.cef.spi.entity.AssociationEnableState; -import com.inspur.edp.cef.spi.entity.DeleteCheckState; import com.inspur.edp.cef.spi.repository.IAssociationInfo; import java.util.ArrayList; @@ -58,35 +56,6 @@ public class AssociationInfo implements IAssociationInfo { private ArrayList assoVariables; private String where; private String refTableAlias; - /** - * 是否扩展关联,默认为否 - */ - private boolean isExtend = false; - - /** - * 是否启用外键检查 - */ - private DeleteCheckState deleteCheckState = DeleteCheckState.Enabled; - /** - * 是否启用删除检查 - */ - private AssociationEnableState fkEnableState = AssociationEnableState.Enabled; - - public DeleteCheckState getDeleteCheckState() { - return deleteCheckState; - } - - public void setDeleteCheckState(DeleteCheckState deleteCheckState) { - this.deleteCheckState = deleteCheckState; - } - - public AssociationEnableState getFkEnableState() { - return fkEnableState; - } - - public void setFkEnableState(AssociationEnableState fkEnableState) { - this.fkEnableState = fkEnableState; - } public boolean isExtend() { return isExtend; @@ -96,6 +65,11 @@ public class AssociationInfo implements IAssociationInfo { isExtend = extend; } + /** + * 是否扩展关联,默认为否 + */ + private boolean isExtend = false; + public final String getConfigId() { return privateConfigId; } diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java index b37bcc74..85954286 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java @@ -102,6 +102,8 @@ public abstract class BaseRootRepository implements IRootRepository { return; if (filter.getFieldsFilter().getFilterFields() == null) throw new CefRepositoryException(ExceptionCode.CEF_RUNTIME_5019); + if (filter.getFieldsFilter().getFilterFields().size() == 1) + throw new CefRepositoryException(ExceptionCode.CEF_RUNTIME_5020); } /** diff --git a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java index 7f7050f0..2df65ac0 100644 --- a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java +++ b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java @@ -36,15 +36,7 @@ public class AssociationInfo { private String nodeCode; private String mainCode; private HashMap refPropInfoTypes; - - /** - * 是否启用外键检查 - */ private AssociationEnableState enableState = AssociationEnableState.Enabled; - /** - * 是否启用删除检查 - */ - private DeleteCheckState deleteCheckState = DeleteCheckState.Enabled; private String privateSourceColumn; private String privateTargetColumn; private TreeMap refPropInfos; @@ -55,9 +47,11 @@ public class AssociationInfo { private ArrayList assoConditions; /**模型国际化资源信息服务*/ private ModelResInfoService modelResInfoService; + public AssociationInfo() { } + public AssociationInfo(String config, String nodeCode, String privateSourceColumn, String privateTargetColumn) { this(config, nodeCode, nodeCode, AssociationEnableState.Enabled, privateSourceColumn, privateTargetColumn); } @@ -71,14 +65,6 @@ public class AssociationInfo { this.privateTargetColumn = privateTargetColumn; } - public DeleteCheckState getDeleteCheckState() { - return deleteCheckState; - } - - public void setDeleteCheckState(DeleteCheckState deleteCheckState) { - this.deleteCheckState = deleteCheckState; - } - public ArrayList getAssoConditions() { return assoConditions; } diff --git a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java deleted file mode 100644 index 29d9f43c..00000000 --- a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.inspur.edp.cef.spi.entity; - -/** - * @author: wangmj - * @date: 2024/11/2 - * @Description: 关联字段删除检查状态 - **/ -public enum DeleteCheckState { - Enabled(0), - Disabled(1); - - private static java.util.HashMap mappings; - private int intValue; - - private DeleteCheckState(int value) { - intValue = value; - DeleteCheckState.getMappings().put(value, this); - } - - private synchronized static java.util.HashMap getMappings() { - if (mappings == null) { - mappings = new java.util.HashMap(); - } - return mappings; - } - - public static DeleteCheckState forValue(int value) { - return getMappings().get(value); - } - - public int getValue() { - return intValue; - } -} diff --git a/pom.xml b/pom.xml index 466087ae..114dc3ed 100644 --- a/pom.xml +++ b/pom.xml @@ -307,6 +307,11 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + org.apache.maven.plugins maven-javadoc-plugin -- Gitee From b7229978c2dfcb88e7e19e56fce72761051b218a Mon Sep 17 00:00:00 2001 From: wangmaojian Date: Tue, 5 Nov 2024 11:18:42 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=97=B6=E6=9C=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bef/core/action/delete/DeleteChecker.java | 49 +++++++++++++++++++ .../action/delete/DeleteChildMgrAction.java | 7 +++ .../core/action/delete/DeleteMgrAction.java | 9 ++++ .../action/delete/MultiDeleteMgrAction.java | 5 ++ .../BeDeleteCheckChildTransValAdapter.java | 21 ++++++++ .../com/inspur/edp/bef/core/be/BEManager.java | 11 ++++- .../inspur/edp/bef/core/be/BENodeEntity.java | 26 +++++++++- .../BefDeleteCheckValAssembler.java | 38 ++++++++++++++ .../cef/api/dataType/entity/ICefEntity.java | 2 + .../edp/cef/core/datatype/CefEntity.java | 45 +++++++++++++++++ .../cef/core/datatype/CefEntityCacheInfo.java | 22 +++++++-- .../CefDeleteCheckValAssembler.java | 21 ++++++++ .../adaptor/EntityRelationalAdaptor.java | 13 +++++ .../repository/adaptoritem/AdaptorItem.java | 3 +- .../adaptoritem/BaseAdaptorItem.java | 5 ++ .../repository/assembler/AssociationInfo.java | 36 ++++++++++++-- .../repository/repo/BaseRootRepository.java | 2 - .../edp/cef/spi/entity/AssociationInfo.java | 18 ++++++- .../edp/cef/spi/entity/DeleteCheckState.java | 34 +++++++++++++ pom.xml | 5 -- 20 files changed, 350 insertions(+), 22 deletions(-) create mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java create mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java create mode 100644 business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java create mode 100644 common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java create mode 100644 common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java new file mode 100644 index 00000000..c5c71007 --- /dev/null +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChecker.java @@ -0,0 +1,49 @@ +package com.inspur.edp.bef.core.action.delete; + +import com.inspur.edp.bef.api.be.IBusinessEntity; +import com.inspur.edp.bef.api.lcp.ResponseContext; +import com.inspur.edp.bef.core.scope.BefScope; +import com.inspur.edp.bef.core.session.FuncSessionManager; +import com.inspur.edp.cef.api.message.AggregateBizMsgException; +import com.inspur.edp.cef.api.message.BizMessage; +import com.inspur.edp.cef.api.message.IBizMessage; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author: wangmj + * @date: 2024/11/1 + * @Description: 删除检查器 + **/ +public class DeleteChecker { + public void check(List entities, ResponseContext responseContext){ + BefScope valScope = new BefScope(FuncSessionManager.getCurrentSession()); + valScope.beginScope(); + try { + deleteCheckValidate(entities); + valScope.setComplete(); + } catch (Throwable e) { + valScope.setAbort(); + throw e; + } + + List msgList = new ArrayList<>(); + if (!responseContext.hasErrorMessage()) { + return; + } + msgList.addAll((responseContext.getErrorMessages().stream() + .map(msg -> new BizMessage() {{ + setMessageParams(msg.getMessageParams()); + setMessageFormat(msg.getMessageFormat()); + setLevel(msg.getLevel()); + }}).collect(Collectors.toList()))); + msgList.addAll(0, responseContext.getErrorMessages()); + throw new AggregateBizMsgException(msgList); + } + + public final void deleteCheckValidate(List entities) { + entities.forEach(entity -> entity.deleteCheckValidate()); + } +} diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java index f202ff67..87836303 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteChildMgrAction.java @@ -22,6 +22,7 @@ import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RespectiveRetrieveResult; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.base.ActionUtil; +import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.exception.ExceptionCode; import com.inspur.edp.bef.core.lock.LockUtils; @@ -29,6 +30,7 @@ import com.inspur.edp.bef.entity.exception.BefRunTimeBaseException; import com.inspur.edp.bef.entity.exception.ExceptionLevel; import com.inspur.edp.bef.spi.action.AbstractManagerAction; +import java.util.ArrayList; import java.util.List; public class DeleteChildMgrAction extends AbstractManagerAction { @@ -62,6 +64,11 @@ public class DeleteChildMgrAction extends AbstractManagerAction entityList = new ArrayList<>(); + entityList.add(be); + deleteChecker.check(entityList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } @Override diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java index 25b8a6d7..186b1e1a 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/DeleteMgrAction.java @@ -23,11 +23,15 @@ import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RespectiveRetrieveResult; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.AuthorityUtil; +import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.lock.LockUtils; import com.inspur.edp.bef.core.session.FuncSessionManager; import com.inspur.edp.bef.spi.action.AbstractManagerAction; +import java.util.ArrayList; +import java.util.List; + public class DeleteMgrAction extends AbstractManagerAction { private String dataId; @@ -47,6 +51,11 @@ public class DeleteMgrAction extends AbstractManagerAction { RespectiveRetrieveResult retrieveRez = be.retrieve(tempVar); LockUtils.checkLocked(be.getBEContext()); be.delete(); + + DeleteChecker deleteChecker = new DeleteChecker(); + List entityList = new ArrayList<>(); + entityList.add(be); + deleteChecker.check(entityList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } @Override diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java index e475cf30..061b10a5 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/delete/MultiDeleteMgrAction.java @@ -22,11 +22,13 @@ import com.inspur.edp.bef.api.be.IBEManagerContext; import com.inspur.edp.bef.api.be.IBusinessEntity; import com.inspur.edp.bef.api.parameter.retrieve.RetrieveParam; import com.inspur.edp.bef.core.action.base.ActionUtil; +import com.inspur.edp.bef.core.be.BEManager; import com.inspur.edp.bef.core.be.BEManagerContext; import com.inspur.edp.bef.core.lock.LockUtils; import com.inspur.edp.bef.core.scope.BefScope; import com.inspur.edp.bef.spi.action.AbstractManagerAction; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -61,6 +63,9 @@ public class MultiDeleteMgrAction extends AbstractManagerAction be.delete()); + + DeleteChecker deleteChecker = new DeleteChecker(); + deleteChecker.check(beList, ((BEManager)getBEManagerContext().getBEManager()).getResponseContext()); } private void checkForLockFail(List beList) { diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java new file mode 100644 index 00000000..519a4291 --- /dev/null +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/action/validation/basetypes/childtrans/BeDeleteCheckChildTransValAdapter.java @@ -0,0 +1,21 @@ +package com.inspur.edp.bef.core.action.validation.basetypes.childtrans; + +import com.inspur.edp.bef.api.action.validation.IValidationContext; +import com.inspur.edp.bef.api.be.IBENodeEntity; + +/** + * @author: wangmj + * @date: 2024/11/1 + * @Description: + **/ +public class BeDeleteCheckChildTransValAdapter extends BeChildTransValAdapter { + public BeDeleteCheckChildTransValAdapter(String name, String childCode) { + super(name, childCode); + } + + @Override + protected void doExecute(IValidationContext compContext, IBENodeEntity itemEntity) { + itemEntity.deleteCheckValidate(); + + } +} diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java index 39869252..78320772 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BEManager.java @@ -71,6 +71,7 @@ import com.inspur.edp.bef.core.determination.builtinimpls.BefB4QueryDtmAssembler import com.inspur.edp.bef.core.determination.builtinimpls.BefBeforeRetrieveDtmAssembler; import com.inspur.edp.bef.core.exception.ExceptionCode; import com.inspur.edp.bef.core.lock.LockService; +import com.inspur.edp.bef.core.scope.BefScope; import com.inspur.edp.bef.core.session.BEFuncSessionBase; import com.inspur.edp.bef.core.session.FuncSession; import com.inspur.edp.bef.core.tcc.BefTccParamItem; @@ -100,6 +101,9 @@ import com.inspur.edp.cef.api.manager.ICefManagerContext; import com.inspur.edp.cef.api.manager.IRepositoryFactory; import com.inspur.edp.cef.api.manager.action.ICefMgrAction; import com.inspur.edp.cef.api.manager.serialize.CefSerializeContext; +import com.inspur.edp.cef.api.message.AggregateBizMsgException; +import com.inspur.edp.cef.api.message.BizMessage; +import com.inspur.edp.cef.api.message.IBizMessage; import com.inspur.edp.cef.api.repository.IRootRepository; import com.inspur.edp.cef.api.resourceInfo.ModelResourceInfos; import com.inspur.edp.cef.api.rootManager.IRootEntityCacheManager; @@ -562,16 +566,18 @@ public abstract class BEManager extends CefRootManager implements IBEManager { @Override public final void delete(String dataId) { //CheckDeleteAuthorition(); - DeleteMgrAction mgrAction = getManagerActionFactory().getDeleteMgrAction(getBEManagerContext(), dataId); Execute(mgrAction); + } + @Override public final void delete(java.util.List dataIds) { //CheckDeleteAuthorition(); MultiDeleteMgrAction mgrAction = getManagerActionFactory().getMultiDeleteMgrAction(getBEManagerContext(), dataIds); Execute(mgrAction); + } @Override @@ -580,6 +586,7 @@ public abstract class BEManager extends CefRootManager implements IBEManager { DeleteChildMgrAction mgrAction = getManagerActionFactory().getDeleteChildMgrAction(getBEManagerContext(), nodeCodes, hierachyIdList, ids); Execute(mgrAction); + } @Override @@ -1254,6 +1261,8 @@ public abstract class BEManager extends CefRootManager implements IBEManager { getBEManagerContext().consumeAllEntites(entity -> entity.beforeSaveValidate()); } + + //endregion public final void saveWithScope() { diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java index 04b8c4af..729e1dd3 100644 --- a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/be/BENodeEntity.java @@ -25,6 +25,7 @@ import com.inspur.edp.bef.core.action.base.ActionFactory; import com.inspur.edp.bef.core.action.base.BEEntityActionExecutor; import com.inspur.edp.bef.core.action.determination.basetypes.childtrans.*; import com.inspur.edp.bef.core.action.save.SaveContext; +import com.inspur.edp.bef.core.action.validation.basetypes.childtrans.BeDeleteCheckChildTransValAdapter; import com.inspur.edp.bef.core.coderule.CodeRuleCompensater; import com.inspur.edp.bef.core.action.tcc.EntityCustomTccExecutor; import com.inspur.edp.bef.core.action.validation.basetypes.childtrans.BeAftModifyChildTransValAdapter; @@ -45,6 +46,7 @@ import com.inspur.edp.bef.core.validation.DeleteCheckValidationAdaptor; import com.inspur.edp.bef.core.validation.builtinimpls.BefAfterModifyValAssembler; import com.inspur.edp.bef.core.validation.builtinimpls.BefAfterSaveValAssembler; import com.inspur.edp.bef.core.validation.builtinimpls.BefB4SaveValAssembler; +import com.inspur.edp.bef.core.validation.builtinimpls.BefDeleteCheckValAssembler; import com.inspur.edp.bef.entity.exception.BefRunTimeBaseException; import com.inspur.edp.bef.spi.action.AbstractAction; import com.inspur.edp.bef.spi.action.assembler.entityAssemblerFactory.AbstractActionAssemblerFactory; @@ -57,6 +59,7 @@ import com.inspur.edp.caf.transaction.api.annoation.tcc.BusinessActionContext; import com.inspur.edp.cdp.coderule.api.CodeRuleBEAssignService; import com.inspur.edp.cef.api.dataType.entity.ICefEntity; import com.inspur.edp.cef.core.determination.builtinimpls.CefAfterSaveDtmAssembler; +import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; import com.inspur.edp.cef.entity.changeset.ChangeType; import com.inspur.edp.cef.entity.entity.IEntityDataCollection; import com.inspur.edp.cef.entity.repository.DataSaveResult; @@ -792,7 +795,12 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { @Override protected void addExtendB4SaveVals(CefB4SaveValAssembler assembler) { - assembler.addValidations( + + } + + @Override + protected void addExtendDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + deleteCheckValAssembler.addValidations( new DeleteCheckValidationAdaptor( this.getEntityResInfo().getConfigId(), this.getEntityResInfo().isRoot() ? "RootNode" : this.getEntityResInfo().getEntityCode())); @@ -809,6 +817,17 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { } } + @Override + protected void addChildTransDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + if (getEntityResInfo().getChildEntityResInfos() == null || getEntityResInfo().getChildEntityResInfos().size() == 0) + return; + for (Map.Entry entityResInfoEntry : getEntityResInfo().getChildEntityResInfos().entrySet()) { + deleteCheckValAssembler.getChildAssemblers().add( + new BeDeleteCheckChildTransValAdapter(entityResInfoEntry.getValue().getEntityCode(), + entityResInfoEntry.getValue().getEntityCode())); + } + } + @Override protected IEntityRTDtmAssembler createAfterModifyDtmAssembler() { return new BefAfterModifyDtmAssembler(); @@ -839,6 +858,11 @@ public abstract class BENodeEntity extends CefEntity implements IBENodeEntity { return new BefB4SaveValAssembler(); } + @Override + protected IEntityRTValidationAssembler createDeleteCheckValidationAssembler() { + return new BefDeleteCheckValAssembler(); + } + //region tcc public void tccCancelByCustom(BusinessActionContext tccContext, IChangeDetail reverseChg) { BefTccHandlerAssembler assembler = getTccAssembler(); diff --git a/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java new file mode 100644 index 00000000..ff33fd44 --- /dev/null +++ b/business-entity-framework-core/src/main/java/com/inspur/edp/bef/core/validation/builtinimpls/BefDeleteCheckValAssembler.java @@ -0,0 +1,38 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed 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.inspur.edp.bef.core.validation.builtinimpls; + +import com.inspur.edp.bef.api.be.IBENodeEntityContext; +import com.inspur.edp.bef.core.validation.ValidationContext; +import com.inspur.edp.cef.api.dataType.base.ICefDataTypeContext; +import com.inspur.edp.cef.api.dataType.entity.ICefEntityContext; +import com.inspur.edp.cef.api.validation.ICefValidationContext; +import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; +import com.inspur.edp.cef.entity.changeset.IChangeDetail; + +public class BefDeleteCheckValAssembler extends CefDeleteCheckValAssembler { + + @Override + public ICefValidationContext getValidationContext(ICefEntityContext contePar) { + return new ValidationContext((IBENodeEntityContext) contePar); + } + + @Override + public IChangeDetail getChangeset(ICefDataTypeContext dataTypeContext) { + return ((IBENodeEntityContext) dataTypeContext).getCurrentTransactionalChange(); + } +} diff --git a/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java b/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java index 5ec06962..db4bab31 100644 --- a/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java +++ b/common-entity-framework-api/src/main/java/com/inspur/edp/cef/api/dataType/entity/ICefEntity.java @@ -36,6 +36,8 @@ public interface ICefEntity extends ICefDataType { void beforeSaveValidate(); + void deleteCheckValidate(); + //endregion ICefEntity getChildEntity(String code, String id); diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java index 6ac3efe4..6253d4c4 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java @@ -31,6 +31,8 @@ import com.inspur.edp.cef.core.determination.fieldrtrimdtmadaptor.FieldRtrimDtmU import com.inspur.edp.cef.core.exception.ExceptionCode; import com.inspur.edp.cef.core.validation.builtinimpls.CefAfterModifyValAssembler; import com.inspur.edp.cef.core.validation.builtinimpls.CefB4SaveValAssembler; +import com.inspur.edp.cef.core.validation.builtinimpls.CefDeleteCheckValAssembler; +import com.inspur.edp.cef.core.validation.deletecheckadaptor.DeleteCheckValidationAdaptor; import com.inspur.edp.cef.core.validation.enumvaladaptor.EnumValUtil; import com.inspur.edp.cef.core.validation.lengthvaladaptor.LengthValUtils; import com.inspur.edp.cef.core.validation.requiredvaladaptor.EntityValidationExecutor; @@ -425,6 +427,37 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { // addDeleteCheckValidations(b4SaveValAssembler); } + public void deleteCheckValidate() { + + IEntityRTValidationAssembler ass = getDeleteCheckValidationAssembler(); + if (ass == null) { + return; + } + + checkEntityContext(); + new EntityValidationExecutor(ass, getEntityContext()).execute(); + } + + /** + * 获取删除检查的组装器 + * @return + */ + private IEntityRTValidationAssembler getDeleteCheckValidationAssembler() { + if (getVersion() == 0) + return createDeleteCheckValidationAssembler(); + if (getEntityCacheInfo().getDeleteCheckAssembler() != null) + return getEntityCacheInfo().getDeleteCheckAssembler(); + CefDeleteCheckValAssembler deleteCheckValAssembler = (CefDeleteCheckValAssembler) createDeleteCheckValidationAssembler(); + addBuiltInDeleteCheckVals(deleteCheckValAssembler); + getEntityCacheInfo().setDeleteCheckAssembler(deleteCheckValAssembler); + return deleteCheckValAssembler; + } + + private void addBuiltInDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + addExtendDeleteCheckVals(deleteCheckValAssembler); + addChildTransDeleteCheckVals(deleteCheckValAssembler); + } + private void addRequireValidations(CefB4SaveValAssembler b4SaveValAssembler) { RequiredValsUtils.addRequiredVals(b4SaveValAssembler, getEntityResInfo().getEntityTypeInfo()); } @@ -476,6 +509,14 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { } + protected void addExtendDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + + } + + protected void addChildTransDeleteCheckVals(CefDeleteCheckValAssembler deleteCheckValAssembler) { + + } + private void addUdtTransB4SaveVals(CefB4SaveValAssembler b4SaveValAssembler) { int index = 0; for (Map.Entry entry : getEntityResInfo().getEntityTypeInfo().getPropertyInfos().entrySet()) { @@ -494,6 +535,10 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { return null; } + protected IEntityRTValidationAssembler createDeleteCheckValidationAssembler() { + return null; + } + public abstract ICefEntity getChildEntity(String code, String id); public final void setExtend(List extList) { diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java index 65df119b..31ba8dac 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntityCacheInfo.java @@ -24,11 +24,23 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { private IEntityRTValidationAssembler afterModifyValAssembler; private IEntityRTValidationAssembler beforeSaveValAssembler; + /** + * 删除检查组装器 + */ + private IEntityRTValidationAssembler deleteCheckAssembler; private IEntityRTDtmAssembler beforeSaveDtmAssembler; private IEntityRTDtmAssembler afterSaveDtmAssembler; private IEntityRTDtmAssembler afterModifyDtmAssembler; private IEntityRTDtmAssembler retrieveDefaultDtmAssembler; + public IEntityRTValidationAssembler getDeleteCheckAssembler() { + return deleteCheckAssembler; + } + + public void setDeleteCheckAssembler(IEntityRTValidationAssembler deleteCheckAssembler) { + this.deleteCheckAssembler = deleteCheckAssembler; + } + public IEntityRTValidationAssembler getAfterModifyValAssembler() { return afterModifyValAssembler; } @@ -51,6 +63,11 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { return beforeSaveDtmAssembler; } + public void setBeforeSaveDtmAssembler( + IEntityRTDtmAssembler beforeSaveDtmAssembler) { + this.beforeSaveDtmAssembler = beforeSaveDtmAssembler; + } + public IEntityRTDtmAssembler getAfterSaveDtmAssembler() { return afterSaveDtmAssembler; } @@ -60,11 +77,6 @@ public class CefEntityCacheInfo extends CefDataTypeCacheInfo { this.afterSaveDtmAssembler = afterSaveDtmAssembler; } - public void setBeforeSaveDtmAssembler( - IEntityRTDtmAssembler beforeSaveDtmAssembler) { - this.beforeSaveDtmAssembler = beforeSaveDtmAssembler; - } - public IEntityRTDtmAssembler getAfterModifyDtmAssembler() { return afterModifyDtmAssembler; } diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java new file mode 100644 index 00000000..7a225db4 --- /dev/null +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/builtinimpls/CefDeleteCheckValAssembler.java @@ -0,0 +1,21 @@ +/* + * Copyright © OpenAtom Foundation. + * + * Licensed 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.inspur.edp.cef.core.validation.builtinimpls; + +public abstract class CefDeleteCheckValAssembler extends CefAbstractValAssembler { + +} diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java index 8cf0b56f..64e6875c 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptor/EntityRelationalAdaptor.java @@ -60,6 +60,7 @@ import com.inspur.edp.cef.repository.repo.BaseRootRepository; import com.inspur.edp.cef.repository.utils.DatabaseUtil; import com.inspur.edp.cef.repository.utils.FilterUtil; import com.inspur.edp.cef.repository.utils.RepositoryUtil; +import com.inspur.edp.cef.spi.entity.DeleteCheckState; import com.inspur.edp.cef.spi.entity.info.propertyinfo.*; import com.inspur.edp.cef.spi.entity.resourceInfo.builinImpls.CefEntityResInfoImpl; import com.inspur.edp.cef.spi.jsonser.base.StringUtils; @@ -3178,6 +3179,18 @@ public abstract class EntityRelationalAdaptor extends BaseEntityAdaptor { } public final boolean isRef(String[] dataIds, String propertyName) { + AssociationInfo associationInfo = null; + for (AssociationInfo item : getAssociationInfos()) { + if (propertyName.equals(item.getSourceColumn())) { + associationInfo = item; + break; + } + } + //可能存在非关联字段的场景(修改过对象类型),如果关联禁用删除检查,则返回 + if(associationInfo != null && associationInfo.getDeleteCheckState() == DeleteCheckState.Disabled){ + return false; + } + List tables = innerGetTableNames(); if (tables == null || tables.isEmpty()) { return false; diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java index 740f4a2f..8961bdd3 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/AdaptorItem.java @@ -171,7 +171,8 @@ public abstract class AdaptorItem implements IAdaptorItem { tempVar.setRefRepository(refRepository); tempVar.setRefColumns(refColumns); tempVar.setConfigId(associationInfo.getConfig()); - + tempVar.setFkEnableState(associationInfo.getEnableState()); + tempVar.setDeleteCheckState(associationInfo.getDeleteCheckState()); tempVar.setWhere(associationInfo.getWhere()); if (associationInfo.getAssoConditions() != null && associationInfo.getAssoConditions().size() > 0) { ArrayList assoConditions = new ArrayList<>(); diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java index c738845f..5a64101b 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/adaptoritem/BaseAdaptorItem.java @@ -322,6 +322,11 @@ public class BaseAdaptorItem extends AdaptorItem { initAssociationByAssociationInfo(associationInfo, dataTypePropertyInfo); } + /** + * 初始化持久化层AssociationInfo信息 + * @param associationInfo spi中的关联信息 + * @param dataTypePropertyInfo + */ private void initAssociationByAssociationInfo( AssociationInfo associationInfo, DataTypePropertyInfo dataTypePropertyInfo) { IRootRepository repository = LcpFactoryManagerUtils.getBefRepositoryFactory() diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java index 7ab7148d..a7e2c3b7 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/assembler/AssociationInfo.java @@ -18,6 +18,8 @@ package com.inspur.edp.cef.repository.assembler; import com.inspur.edp.cef.api.repository.IRootRepository; import com.inspur.edp.cef.entity.repository.AssoVariable; +import com.inspur.edp.cef.spi.entity.AssociationEnableState; +import com.inspur.edp.cef.spi.entity.DeleteCheckState; import com.inspur.edp.cef.spi.repository.IAssociationInfo; import java.util.ArrayList; @@ -56,6 +58,35 @@ public class AssociationInfo implements IAssociationInfo { private ArrayList assoVariables; private String where; private String refTableAlias; + /** + * 是否扩展关联,默认为否 + */ + private boolean isExtend = false; + + /** + * 是否启用外键检查 + */ + private DeleteCheckState deleteCheckState = DeleteCheckState.Enabled; + /** + * 是否启用删除检查 + */ + private AssociationEnableState fkEnableState = AssociationEnableState.Enabled; + + public DeleteCheckState getDeleteCheckState() { + return deleteCheckState; + } + + public void setDeleteCheckState(DeleteCheckState deleteCheckState) { + this.deleteCheckState = deleteCheckState; + } + + public AssociationEnableState getFkEnableState() { + return fkEnableState; + } + + public void setFkEnableState(AssociationEnableState fkEnableState) { + this.fkEnableState = fkEnableState; + } public boolean isExtend() { return isExtend; @@ -65,11 +96,6 @@ public class AssociationInfo implements IAssociationInfo { isExtend = extend; } - /** - * 是否扩展关联,默认为否 - */ - private boolean isExtend = false; - public final String getConfigId() { return privateConfigId; } diff --git a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java index 85954286..b37bcc74 100644 --- a/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java +++ b/common-entity-framework-repository/src/main/java/com/inspur/edp/cef/repository/repo/BaseRootRepository.java @@ -102,8 +102,6 @@ public abstract class BaseRootRepository implements IRootRepository { return; if (filter.getFieldsFilter().getFilterFields() == null) throw new CefRepositoryException(ExceptionCode.CEF_RUNTIME_5019); - if (filter.getFieldsFilter().getFilterFields().size() == 1) - throw new CefRepositoryException(ExceptionCode.CEF_RUNTIME_5020); } /** diff --git a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java index 2df65ac0..7f7050f0 100644 --- a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java +++ b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/AssociationInfo.java @@ -36,7 +36,15 @@ public class AssociationInfo { private String nodeCode; private String mainCode; private HashMap refPropInfoTypes; + + /** + * 是否启用外键检查 + */ private AssociationEnableState enableState = AssociationEnableState.Enabled; + /** + * 是否启用删除检查 + */ + private DeleteCheckState deleteCheckState = DeleteCheckState.Enabled; private String privateSourceColumn; private String privateTargetColumn; private TreeMap refPropInfos; @@ -47,11 +55,9 @@ public class AssociationInfo { private ArrayList assoConditions; /**模型国际化资源信息服务*/ private ModelResInfoService modelResInfoService; - public AssociationInfo() { } - public AssociationInfo(String config, String nodeCode, String privateSourceColumn, String privateTargetColumn) { this(config, nodeCode, nodeCode, AssociationEnableState.Enabled, privateSourceColumn, privateTargetColumn); } @@ -65,6 +71,14 @@ public class AssociationInfo { this.privateTargetColumn = privateTargetColumn; } + public DeleteCheckState getDeleteCheckState() { + return deleteCheckState; + } + + public void setDeleteCheckState(DeleteCheckState deleteCheckState) { + this.deleteCheckState = deleteCheckState; + } + public ArrayList getAssoConditions() { return assoConditions; } diff --git a/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java new file mode 100644 index 00000000..29d9f43c --- /dev/null +++ b/common-entity-framework-spi/src/main/java/com/inspur/edp/cef/spi/entity/DeleteCheckState.java @@ -0,0 +1,34 @@ +package com.inspur.edp.cef.spi.entity; + +/** + * @author: wangmj + * @date: 2024/11/2 + * @Description: 关联字段删除检查状态 + **/ +public enum DeleteCheckState { + Enabled(0), + Disabled(1); + + private static java.util.HashMap mappings; + private int intValue; + + private DeleteCheckState(int value) { + intValue = value; + DeleteCheckState.getMappings().put(value, this); + } + + private synchronized static java.util.HashMap getMappings() { + if (mappings == null) { + mappings = new java.util.HashMap(); + } + return mappings; + } + + public static DeleteCheckState forValue(int value) { + return getMappings().get(value); + } + + public int getValue() { + return intValue; + } +} diff --git a/pom.xml b/pom.xml index 114dc3ed..466087ae 100644 --- a/pom.xml +++ b/pom.xml @@ -307,11 +307,6 @@ - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.2 - org.apache.maven.plugins maven-javadoc-plugin -- Gitee