Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import dev.krud.crudframework.crud.hooks.create.from.CRUDOnCreateFromHook;
import dev.krud.crudframework.crud.hooks.create.from.CRUDPostCreateFromHook;
import dev.krud.crudframework.crud.hooks.create.from.CRUDPreCreateFromHook;
import dev.krud.crudframework.crud.hooks.interfaces.AbstractChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.CreateFromHooks;
import dev.krud.crudframework.crud.hooks.interfaces.CreateHooks;
import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHook;
import dev.krud.crudframework.crud.policy.PolicyRuleType;
import dev.krud.crudframework.exception.WrapException;
import dev.krud.crudframework.model.BaseCrudEntity;
Expand Down Expand Up @@ -53,16 +53,16 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity creat
preHook.run(entity);
}

List<FieldChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(entity.getClass());
for (FieldChangeHook fieldChangeHook : fieldChangeHooks) {
List<AbstractChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(entity.getClass());
for (AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runPreChange(entity, entity.generateEmptyEntity());
}

entity = crudCreateTransactionalHandler.createTransactional(entity, hooks.getOnHooks(), fieldChangeHooks);
for (CRUDPostCreateHook<ID, Entity> postHook : hooks.getPostHooks()) {
postHook.run(entity);
}
for (FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for (AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runPostChange(entity, entity.generateEmptyEntity());
}

Expand All @@ -85,7 +85,7 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity>
List<CreateHooks> hooks = crudHelper.getHooks(CreateHooks.class, entityClazz);
hooks.forEach(hook -> entities.forEach(hook::preCreate));

List<FieldChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(entityClazz);
List<AbstractChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(entityClazz);
fieldChangeHooks.forEach(hook -> entities.forEach(entity -> hook.runPreChange(entity, entity.generateEmptyEntity())));

List<Entity> createdEntities = crudCreateTransactionalHandler.bulkCreateTransactional(entities, hooks, fieldChangeHooks);
Expand Down Expand Up @@ -113,13 +113,13 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity creat
preHook.run(object);
}

List<FieldChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(clazz);
List<AbstractChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(clazz);

Entity entity = crudCreateTransactionalHandler.createFromTransactional(object, clazz, hooks.getOnHooks(), fieldChangeHooks);
for (CRUDPostCreateFromHook<ID, Entity> postHook : hooks.getPostHooks()) {
postHook.run(entity);
}
for (FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for (AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runPostChange(entity, entity.generateEmptyEntity());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@

import dev.krud.crudframework.crud.hooks.create.CRUDOnCreateHook;
import dev.krud.crudframework.crud.hooks.create.from.CRUDOnCreateFromHook;
import dev.krud.crudframework.crud.hooks.interfaces.AbstractChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.CreateHooks;
import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHooks;
import dev.krud.crudframework.model.BaseCrudEntity;

import java.io.Serializable;
import java.util.List;

public interface CrudCreateTransactionalHandler {
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity createTransactional(Entity entity, List<CRUDOnCreateHook<ID, Entity>> onHooks, List<FieldChangeHook> fieldChangeHooks);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity createTransactional(Entity entity, List<CRUDOnCreateHook<ID, Entity>> onHooks, List<AbstractChangeHook> fieldChangeHooks);

<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity createFromTransactional(Object object, Class<Entity> clazz, List<CRUDOnCreateFromHook<ID, Entity>> onHooks, List<FieldChangeHook> fieldChangeHooks);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity createFromTransactional(Object object, Class<Entity> clazz, List<CRUDOnCreateFromHook<ID, Entity>> onHooks, List<AbstractChangeHook> fieldChangeHooks);

<ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity> bulkCreateTransactional(List<Entity> entities, List<CreateHooks> hooks, List<FieldChangeHook> fieldChangeHooks);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity> bulkCreateTransactional(List<Entity> entities, List<CreateHooks> hooks, List<AbstractChangeHook> fieldChangeHooks);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import dev.krud.crudframework.crud.exception.CrudDeleteException;
import dev.krud.crudframework.crud.hooks.create.CRUDOnCreateHook;
import dev.krud.crudframework.crud.hooks.create.from.CRUDOnCreateFromHook;
import dev.krud.crudframework.crud.hooks.interfaces.AbstractChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.CreateHooks;
import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHook;
import dev.krud.crudframework.model.BaseCrudEntity;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -23,21 +23,22 @@ public CrudCreateTransactionalHandlerImpl(CrudHelper crudHelper, CrudSecurityHan

@Override
@Transactional(readOnly = false)
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity createTransactional(Entity entity, List<CRUDOnCreateHook<ID, Entity>> onHooks, List<FieldChangeHook> fieldChangeHooks) {
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity createTransactional(Entity entity, List<CRUDOnCreateHook<ID, Entity>> onHooks, List<AbstractChangeHook> fieldChangeHooks) {

for(CRUDOnCreateHook<ID, Entity> onHook : onHooks) {
onHook.run(entity);
}

for(FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for(AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runOnChange(entity, entity.generateEmptyEntity());
}

return crudHelper.getCrudDaoForEntity(entity.getClass()).saveOrUpdate(entity);
}

@Override
@Transactional(readOnly = false)
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity createFromTransactional(Object object, Class<Entity> clazz, List<CRUDOnCreateFromHook<ID, Entity>> onHooks, List<FieldChangeHook> fieldChangeHooks) {
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity createFromTransactional(Object object, Class<Entity> clazz, List<CRUDOnCreateFromHook<ID, Entity>> onHooks, List<AbstractChangeHook> fieldChangeHooks) {
Entity entity = crudHelper.fill(object, clazz);

if(entity.exists()) {
Expand All @@ -48,7 +49,7 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity creat
onHook.run(entity, object);
}

for(FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for(AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runOnChange(entity, entity.generateEmptyEntity());
}

Expand All @@ -57,7 +58,7 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity creat

@Override
@Transactional(readOnly = false)
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity> bulkCreateTransactional(List<Entity> entities, List<CreateHooks> hooks, List<FieldChangeHook> fieldChangeHooks) {
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity> bulkCreateTransactional(List<Entity> entities, List<CreateHooks> hooks, List<AbstractChangeHook> fieldChangeHooks) {
hooks.forEach(hook -> entities.forEach(hook::onCreate));
fieldChangeHooks.forEach(hook -> entities.forEach(entity -> hook.runPreChange(entity, entity.generateEmptyEntity())));
return crudHelper.getCrudDaoForEntity(entities.get(0).getClass()).saveOrUpdate(entities);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import dev.krud.crudframework.crud.cache.CrudCache;
import dev.krud.crudframework.crud.hooks.interfaces.CRUDHooks;
import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.AbstractChangeHook;
import dev.krud.crudframework.crud.model.EntityMetadataDTO;
import dev.krud.crudframework.model.BaseCrudEntity;
import dev.krud.crudframework.modelfilter.DynamicModelFilter;
Expand All @@ -21,7 +21,7 @@ public interface CrudHelper {

<ID extends Serializable, Entity extends BaseCrudEntity<ID>, HooksType extends CRUDHooks> List<HooksType> getHooks(Class<HooksType> crudHooksClazz, Class<Entity> entityClazz);

<ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<FieldChangeHook> getFieldChangeHooks(Class<Entity> entityClazz);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<AbstractChangeHook> getFieldChangeHooks(Class<Entity> entityClazz);

<ID extends Serializable, Entity extends BaseCrudEntity<ID>> boolean isEntityDeleted(Entity entity);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import dev.krud.crudframework.crud.exception.CrudInvalidStateException;
import dev.krud.crudframework.crud.exception.CrudTransformationException;
import dev.krud.crudframework.crud.hooks.interfaces.CRUDHooks;
import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.AbstractChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHooks;
import dev.krud.crudframework.crud.model.EntityCacheMetadata;
import dev.krud.crudframework.crud.model.EntityMetadataDTO;
Expand Down Expand Up @@ -105,8 +105,8 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>, HooksType ex
}

@Override
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<FieldChangeHook> getFieldChangeHooks(Class<Entity> entityClazz) {
List<FieldChangeHook> fieldChangeHooks = new ArrayList<>();
public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<AbstractChangeHook> getFieldChangeHooks(Class<Entity> entityClazz) {
List<AbstractChangeHook> fieldChangeHooks = new ArrayList<>();
List<FieldChangeHooks> fieldChangeHooksList = getHooks(FieldChangeHooks.class, entityClazz);

if (fieldChangeHooksList != null && !fieldChangeHooksList.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import dev.krud.crudframework.crud.exception.CrudUpdateException;
import dev.krud.crudframework.crud.hooks.HooksDTO;
import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.AbstractChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.UpdateFromHooks;
import dev.krud.crudframework.crud.hooks.interfaces.UpdateHooks;
import dev.krud.crudframework.crud.hooks.update.CRUDOnUpdateHook;
Expand Down Expand Up @@ -91,13 +91,13 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updat
preHook.run(entity);
}

List<FieldChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(entity.getClass());
List<AbstractChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(entity.getClass());
Entity original = null;
if (fieldChangeHooks != null && !fieldChangeHooks.isEmpty()) {
if (!fieldChangeHooks.isEmpty()) {
original = (Entity) entity.saveOrGetCopy();
}

for (FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for (AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runPreChange(entity, original);
}

Expand All @@ -109,7 +109,7 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updat
postHook.run(entity);
}

for (FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for (AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runPostChange(entity, original);
}

Expand Down Expand Up @@ -142,7 +142,7 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updat
preHook.run(id, object);
}

List<FieldChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(clazz);
List<AbstractChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(clazz);

Entity entity = crudUpdateTransactionalHandler.updateFromTransactional(filter, object, clazz, hooks.getOnHooks(), fieldChangeHooks, applyPolicies);

Expand All @@ -151,7 +151,7 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updat
for(CRUDPostUpdateFromHook<ID, Entity> postHook : hooks.getPostHooks()) {
postHook.run(entity);
}
for (FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for (AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runPostChange(entity, entity.saveOrGetCopy());
}

Expand All @@ -165,7 +165,7 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity>
}

Class<Entity> entityClazz = (Class<Entity>) entities.get(0).getClass();
List<FieldChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(entityClazz);
List<AbstractChangeHook> fieldChangeHooks = crudHelper.getFieldChangeHooks(entityClazz);
DynamicModelFilter filter = new DynamicModelFilter()
.add(FilterFields.in("id", FilterFieldDataType.get(entities.get(0).getId().getClass()), entities.stream().map(BaseCrudEntity::getId).toArray()));

Expand Down Expand Up @@ -199,11 +199,11 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity>
preHook.run(entity);
}

if (fieldChangeHooks != null && !fieldChangeHooks.isEmpty()) {
if (!fieldChangeHooks.isEmpty()) {
originals.put(entity.getId(), (Entity) entity.saveOrGetCopy());
}

for (FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for (AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runPreChange(entity, originals.get(entity.getId()));
}
}
Expand All @@ -217,7 +217,7 @@ public <ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity>
postHook.run(entity);
}

for (FieldChangeHook fieldChangeHook : fieldChangeHooks) {
for (AbstractChangeHook fieldChangeHook : fieldChangeHooks) {
fieldChangeHook.runPostChange(entity, originals.get(entity.getId()));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package dev.krud.crudframework.crud.handler;

import dev.krud.crudframework.crud.hooks.interfaces.FieldChangeHook;
import dev.krud.crudframework.crud.hooks.interfaces.AbstractChangeHook;
import dev.krud.crudframework.crud.hooks.update.CRUDOnUpdateHook;
import dev.krud.crudframework.crud.hooks.update.from.CRUDOnUpdateFromHook;
import dev.krud.crudframework.model.BaseCrudEntity;
Expand All @@ -12,11 +12,7 @@

public interface CrudUpdateTransactionalHandler {

default <ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updateTransactional(Entity entity, List<CRUDOnUpdateHook<ID, Entity>> onHooks, List<FieldChangeHook> fieldChangeHooks) {
return updateTransactional(entity, onHooks, fieldChangeHooks);
}

<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updateTransactional(Entity entity, DynamicModelFilter filter, List<CRUDOnUpdateHook<ID, Entity>> onHooks, List<FieldChangeHook> fieldChangeHooks, boolean applyPolicies);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updateFromTransactional(DynamicModelFilter filter, Object object, Class<Entity> clazz, List<CRUDOnUpdateFromHook<ID, Entity>> onHooks, List<FieldChangeHook> fieldChangeHooks, boolean applyPolicies);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity> bulkUpdateTransactional(List<Entity> entities, DynamicModelFilter filter, List<CRUDOnUpdateHook<ID, Entity>> onHooks, List<FieldChangeHook> fieldChangeHooks, boolean applyPolicies);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updateTransactional(Entity entity, DynamicModelFilter filter, List<CRUDOnUpdateHook<ID, Entity>> onHooks, List<AbstractChangeHook> fieldChangeHooks, boolean applyPolicies);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> Entity updateFromTransactional(DynamicModelFilter filter, Object object, Class<Entity> clazz, List<CRUDOnUpdateFromHook<ID, Entity>> onHooks, List<AbstractChangeHook> fieldChangeHooks, boolean applyPolicies);
<ID extends Serializable, Entity extends BaseCrudEntity<ID>> List<Entity> bulkUpdateTransactional(List<Entity> entities, DynamicModelFilter filter, List<CRUDOnUpdateHook<ID, Entity>> onHooks, List<AbstractChangeHook> fieldChangeHooks, boolean applyPolicies);
}
Loading
Loading