MissingKeysRestController.java

package sk.iway.iwcm.components.translation_keys.rest;

import java.util.ArrayList;

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.components.translation_keys.jpa.MissingKeysDto;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.system.datatable.Datatable;
import sk.iway.iwcm.system.datatable.DatatablePageImpl;
import sk.iway.iwcm.system.datatable.DatatableRestControllerV2;

@RestController
@Datatable
@RequestMapping(value = "/admin/v9/settings/missing-keys")
@PreAuthorize(value = "@WebjetSecurityService.hasPermission('edit_text')")
public class MissingKeysRestController extends DatatableRestControllerV2<MissingKeysDto, Long> {

    private TranslationKeyService translationKeyService;

    @Autowired
    public MissingKeysRestController(TranslationKeyService translationKeyService) {
        super(null);
        this.translationKeyService = translationKeyService;
    }

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

        Prop prop = Prop.getInstance();

        //Get all missing keys (under all languages)
        DatatablePageImpl<MissingKeysDto> page = new DatatablePageImpl<>(new ArrayList<>(Prop.getMissingTexts()));

        long id = 1;
        for (MissingKeysDto dto : page.getContent()) {
            dto.setId(id++);
        }

        for(String lng : Constants.getArray("languages"))
            page.addOption("language", prop.getText("language." + lng.toLowerCase()), lng, false);

        return page;
    }

    @Override
	public MissingKeysDto editItem(MissingKeysDto entity, long logId) {
        translationKeyService.saveTranslation(entity.getKey(), entity.getTranslation(), entity.getLanguage());
        setForceReload(true);
        return entity;
	}

	@Override
    public boolean beforeDelete(MissingKeysDto entity) {
        return false;
    }

    @Override
    public boolean processAction(MissingKeysDto entity, String action) {
        if ("deleteAllCacheObjects".equals(action)) {
            Prop.clearMissingTexts();
            return true;
        }
        return false;
    }


}