All Downloads are FREE. Search and download functionalities are using the official Maven repository.

win.doyto.query.service.AbstractDynamicService Maven / Gradle / Ivy

package win.doyto.query.service;

import win.doyto.query.core.PageQuery;
import win.doyto.query.entity.Persistable;

import java.io.Serializable;

/**
 * AbstractDynamicService
 *
 * @author f0rb on 2019-05-26
 */
@SuppressWarnings("squid:S00112")
public abstract class AbstractDynamicService, I extends Serializable, Q extends PageQuery>
    extends AbstractService implements DynamicService {

    @Override
    public E get(E param) {
        return entityCacheWrapper.execute(resolveCacheKey(param), () -> fetch(param));
    }

    @Override
    public E fetch(E param) {
        return dataAccess.get(param);
    }

    @Override
    public E delete(E param) {
        E e = get(param);
        if (e != null) {
            if (!entityAspects.isEmpty()) {
                transactionOperations.execute(s -> {
                    dataAccess.delete(param);
                    entityAspects.forEach(entityAspect -> entityAspect.afterDelete(e));
                    return null;
                });
            } else {
                dataAccess.delete(param);
            }
            String key = resolveCacheKey(e);
            evictCache(key);
            entityCacheWrapper.execute(key, () -> null);
        }
        return e;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy