Explorar el Código

Refactor bulkDelete methods

pull/12/head
Kristijan Mitrovic hace 4 años
padre
commit
c591f6970b
Se han modificado 1 ficheros con 12 adiciones y 18 borrados
  1. +12
    -18
      wizard-server/src/main/java/org/cobbzilla/wizard/dao/AbstractCRUDDAO.java

+ 12
- 18
wizard-server/src/main/java/org/cobbzilla/wizard/dao/AbstractCRUDDAO.java Ver fichero

@@ -8,6 +8,7 @@ package org.cobbzilla.wizard.dao;
import lombok.Getter;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.map.SingletonMap;
import org.cobbzilla.util.reflect.ReflectionUtil;
import org.cobbzilla.wizard.api.CrudOperation;
import org.cobbzilla.wizard.model.AuditLog;
@@ -340,30 +341,23 @@ public abstract class AbstractCRUDDAO<E extends Identifiable>
public static final String EX_UUID = "__exclude_uuid__";

private int bulkDelete(String field, Object value, boolean notUuid) {
final Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
final Query query;
final String deleteSql = "DELETE FROM " + getEntityClass().getSimpleName() + " WHERE ";
if (value == null) {
query = session.createQuery(deleteSql + field + " IS NULL");

} else if (notUuid) {
query = session.createQuery(deleteSql + field + " = :" + field + " AND uuid != :" + EX_UUID)
.setParameter(field, value)
.setParameter(EX_UUID, value);
} else {
query = session.createQuery(deleteSql + field + " = :" + field)
.setParameter(field, value);
if (value == null) return bulkDeleteWhere(field + " IS NULL", null);

if (notUuid) {
final var params = new HashMap<String, Object>();
params.put(field, value);
params.put(EX_UUID, value);
return bulkDeleteWhere(field + " = :" + field + " AND uuid != :" + EX_UUID, params);
}
final int count = query.executeUpdate();
session.setFlushMode(FlushMode.COMMIT);
session.flush();
return count;

return bulkDeleteWhere(field + " = :" + field, new SingletonMap(field, value));
}

public int bulkDeleteWhere(String whereClause) {
public int bulkDeleteWhere(@NonNull final String whereClause, @Nullable final Map<String, Object> parameters) {
final Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
final String deleteSql = "DELETE FROM " + getEntityClass().getSimpleName() + " WHERE " + whereClause;
final Query query = session.createQuery(deleteSql);
if (!empty(parameters)) parameters.forEach(query::setParameter);
final int count = query.executeUpdate();
session.setFlushMode(FlushMode.COMMIT);
session.flush();


Cargando…
Cancelar
Guardar