ListPublisherVersionsView.java 3.11 KB
package org.legrog.web.publisher;

import org.legrog.entities.Publisher;
import org.legrog.entities.PublisherVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/*
    Vue de listPublisherVersions.xhtml
    Permet de voir l'ensemble des versions des éditeurs.
    Permet de voir l'ensemble des versions d'un éditeur et de valider l'une d'elles.
 */
@Named
@RequestScoped
public class ListPublisherVersionsView {

    Logger logger = LoggerFactory.getLogger(getClass());

    protected PublisherService publisherService;

    private Integer publisherId;
    private boolean viewAll;
    private List<PublisherVersion> publisherVersions;

    @Inject
    public ListPublisherVersionsView(PublisherService publisherService) {
        this.publisherService = publisherService;
    }

    // View Action being executed at view loading
    public void setView() {
        logger.trace("setView");
        logger.debug("publisherId = {}", publisherId);
        publisherVersions = publisherService.getAllPublisherVersions();
        viewAll = ( publisherId == null ) ;
        if (!viewAll) {
            logger.trace("!viewAll");
            filterOnID();
        }
    }

    protected void filterOnID() {
        publisherVersions = publisherVersions.stream()
                .filter(version -> version.getPublisher().getPublisherId() == publisherId)
                .collect(Collectors.toList());

    }

    public void validate() {
        logger.trace("validate");
        Publisher publisher = publisherService.getPublisher(publisherId);
        logger.debug("publisher (pre-validate) = {}", publisher);
        Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        Integer publisherVersionId = new Integer(params.get("publisherVersionId"));

        publisherService.validatePublisherVersion(publisher, publisherVersionId);

        publisherVersions = publisherService.getAllPublisherVersions();
        filterOnID();
        logger.debug("publisher (post-validate) = {}", publisher);
    }

    /** no args constructor to make it proxyable */
    protected ListPublisherVersionsView() {
    }

    public PublisherService getPublisherService() {
        return publisherService;
    }

    public void setPublisherService(PublisherService publisherService) {
        this.publisherService = publisherService;
    }

    public Integer getPublisherId() {
        return publisherId;
    }

    public void setPublisherId(Integer publisherId) {
        this.publisherId = publisherId;
    }

    public boolean isViewAll() {
        return viewAll;
    }

    public void setViewAll(boolean viewAll) {
        this.viewAll = viewAll;
    }

    public List<PublisherVersion> getPublisherVersions() {
        return publisherVersions;
    }

    public void setPublisherVersions(List<PublisherVersion> publisherVersions) {
        this.publisherVersions = publisherVersions;
    }
}