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

pl.fhframework.menu.MenuManager Maven / Gradle / Ivy

package pl.fhframework.menu;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import pl.fhframework.core.i18n.MessageService;
import pl.fhframework.model.security.SystemUser;
import pl.fhframework.subsystems.Subsystem;
import pl.fhframework.trees.*;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * Created by mateusz.zaremba
 */
@Service
public class MenuManager {

    @Autowired
    private Environment environment;

    @Autowired
    private ApplicationEventPublisher eventPublisher;

    @Autowired
    private MessageService messageService;

    @Autowired
    private SubsystemElementsLiteTree subsystemElementsBaseTree;

    public List getMenuModel(SystemUser loggedUser) {
        List treeElements = subsystemElementsBaseTree.getAllAvailableTreeElements(loggedUser, Arrays.asList(environment.getActiveProfiles()));
        return createSubMenuElementsList(treeElements);
    }

    public ITreeElement getSubsystemMenuModel(Subsystem subsystem) {
        return SubsystemElementsLiteTree.getDynamicGroupsAndSubsystemsHierarchy(subsystem);
    }

    protected List createSubMenuElementsList(List elements) {
        List menuElements = new LinkedList<>();
        for (ITreeElement element : elements) {
            MenuElement newElement;
            if (element instanceof UseCasesGroup) {
                newElement = new MenuElement(translateLabel(element.getLabel()), element.getRef(), element.getIcon(), true, element.getActivityToken(), null);
                newElement.setChildren(createSubMenuElementsList(element.getSubelements()));
            } else {
                newElement = new MenuElement(translateLabel(element.getLabel()), element.getRef(), element.getIcon(), false, element.getActivityToken(), ((UseCaseInformation) element).getInputFactory());
            }
            menuElements.add(newElement);
        }
        return menuElements;
    }

    public void export(Subsystem subsystem, ITreeElement root) {
        subsystemElementsBaseTree.exportMenu(subsystem, new TreeElementXmlUtil().convertToXml(root, true));
    }

    public String convertTreeToXml(ITreeElement root, boolean pretty) {
        return new TreeElementXmlUtil().convertToXml(root, pretty);
    }



    protected String translateLabel(String label) {
        if (label != null && label.length() > 2 && label.startsWith("$.")) {
            return messageService.getAllBundles().getMessage(label.substring(2));
        } else {
            return label;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy