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

ars.module.system.service.AbstractRecycleService Maven / Gradle / Ivy

package ars.module.system.service;

import java.util.List;

import ars.invoke.request.Requester;
import ars.invoke.request.RequestHandleException;
import ars.module.system.model.Recycle;
import ars.database.repository.Query;
import ars.database.repository.Repository;
import ars.database.repository.Repositories;
import ars.database.service.StandardGeneralService;

/**
 * 数据回收业务操作抽象实现
 *
 * @param  数据模型
 * @author wuyongqiang
 */
public abstract class AbstractRecycleService extends StandardGeneralService
    implements RecycleService {

    @Override
    public Query getQuery(Requester requester) {
        return super.getQuery(requester).eq("creator", requester.getUser());
    }

    @Override
    public void deleteObject(Requester requester, T object) {
        if (!requester.getUser().equals(object.getCreator())) {
            throw new RequestHandleException("Unauthorized operation");
        }
        super.deleteObject(requester, object);
    }

    @Override
    public void clear(Requester requester) {
        List histories = this.getQuery(requester).list();
        for (int i = 0; i < histories.size(); i++) {
            this.deleteObject(requester, histories.get(i));
        }
    }

    @SuppressWarnings({"rawtypes", "unchecked"})
    @Override
    public void restore(Requester requester) throws Exception {
        List recycles = this.getQuery(requester, true).custom(requester.getParameters()).list();
        for (int i = 0; i < recycles.size(); i++) {
            T recycle = recycles.get(i);
            Object entity = recycle.getEntity();
            Class model = Class.forName(recycle.getModel());
            Repository repository = Repositories.getRepository(model);
            repository.save(entity);
            this.deleteObject(requester, recycle);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy