DomainLimitRestController.java

package sk.iway.iwcm.dmail.rest;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import sk.iway.iwcm.dmail.DomainLimitBean;
import sk.iway.iwcm.dmail.DomainLimitsDB;
import sk.iway.iwcm.system.datatable.BaseEditorFields;
import sk.iway.iwcm.system.datatable.Datatable;
import sk.iway.iwcm.system.datatable.DatatablePageImpl;
import sk.iway.iwcm.system.datatable.DatatableRestControllerV2;
import sk.iway.iwcm.system.datatable.ProcessItemAction;

@RestController
@RequestMapping("/admin/rest/dmail/domain-limits")
@PreAuthorize("@WebjetSecurityService.hasPermission('cmp_dmail_domainlimits')")
@Datatable
public class DomainLimitRestController extends DatatableRestControllerV2<DomainLimitBean, Long>{

    @Autowired
    public DomainLimitRestController() {
        super(null);
    }

    @Override
    public Page<DomainLimitBean> getAllItems(Pageable pageable) {

        DomainLimitsDB db = DomainLimitsDB.getInstance();

        List<DomainLimitBean> items =  db.getAll();

        DatatablePageImpl<DomainLimitBean> page = new DatatablePageImpl<>(items);
        processFromEntity(page, ProcessItemAction.GETALL);
        return page;
    }

    @Override
    public DomainLimitBean insertItem(DomainLimitBean entity) {

        if(entity.save()) {
            return entity;
        } else {
            throwError("");
            return null;
        }
    }

    @Override
    public DomainLimitBean getOneItem(long id) {
        DomainLimitsDB db = DomainLimitsDB.getInstance();

        DomainLimitBean bean = db.getById((int) id);
        if (bean == null) bean = new DomainLimitBean();

        return bean;
    }

    @Override
    public DomainLimitBean editItem(DomainLimitBean entity, long id) {

        if(entity.save()) {
            return entity;
        } else {
            throwError("");
            return null;
        }
    }

    @Override
    public boolean deleteItem(DomainLimitBean entity, long id) {
       return entity.delete();
    }

    @Override
    public DomainLimitBean processFromEntity(DomainLimitBean entity, ProcessItemAction action) {
        if (entity.isActive()==false) {
            BaseEditorFields bef = new BaseEditorFields();
            bef.addRowClass("is-disabled");
            entity.setEditorFields(bef);
        }
        return entity;
    }

}