PublisherRevisionView.java 9.98 KB
package org.legrog.web.publisher;

import org.legrog.web.xyz.SharedService;
import org.legrog.web.user.UserService;
import org.legrog.entities.Country;
import org.legrog.entities.Publisher;
import org.legrog.entities.PublisherRevision;
import org.legrog.entities.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
//import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.Random;

@Named
@ViewScoped
public class PublisherRevisionView implements Serializable {
    Logger logger = LoggerFactory.getLogger(getClass());

    @Inject
    private PublisherService publisherService;

    @Inject
    UserService userService;
    @Inject
    private SharedService sharedService;

    private boolean editMode;
    private boolean newPublisher;

    private int publisherId;
    // Données temporaires d'un PublisherRevision
    private int publisherRevisionId;
    private String publisherName;
    private String publisherStreetAddress;
    private String publisherPostalCode;
    private String publisherPostOfficeBoxNumber;
    private String publisherAddressRegion;
    private String publisherAddressLocality;
    private Country publisherAddressCountry;
    private String publisherTelephone;
    private String publisherEmail;
    private String publisherURL;
    private boolean publisherActive;
    private String publisherHistory;
    private User publisherRevisionAuthor;
    private Timestamp publisherRevisionDatetime;
    private Publisher publisher;

    // Table de codification
    private List<Country> availableCountries;

    @PostConstruct
    public void init() {
        availableCountries = sharedService.getAllCountries();
    }

    public void edit() {
        editMode = true;
    }

    public void cancel() {
        editMode = false;
    }

    public boolean isEditMode() {
        return editMode;
    }

    public void save() {
        if (newPublisher) {
            add();
        } else {
            update();
        }
    }

    private void setValues(PublisherRevision publisherRevision) {
        publisherRevision.setPublisherActive(publisherActive);
        publisherRevision.setPublisherAddressCountry(publisherAddressCountry);
        publisherRevision.setPublisherAddressLocality(publisherAddressLocality);
        publisherRevision.setPublisherAddressRegion(publisherAddressRegion);
        publisherRevision.setPublisherEmail(publisherEmail);
        publisherRevision.setPublisherHistory(publisherHistory);
        publisherRevision.setPublisherName(publisherName);
        publisherRevision.setPublisherPostalCode(publisherPostalCode);
        publisherRevision.setPublisherPostOfficeBoxNumber(publisherPostOfficeBoxNumber);
        publisherRevision.setPublisherStreetAddress(publisherStreetAddress);
        publisherRevision.setPublisherTelephone(publisherTelephone);
        publisherRevision.setPublisherURL(publisherURL);

        publisherRevision.setPublisherRevisionDatetime(new Timestamp(new Date().getTime()));

        // TODO Remplacer l'astuce par une vraie récupération de l'utilisateur
        List<User> users = userService.getAllUsers();
        Random random = new Random();
        User user = users.get(random.nextInt(users.size()));
        // End TODO
        publisherRevision.setPublisherRevisionAuthor(user);

    }

    public void add() {
        Publisher publisher = new Publisher();
        PublisherRevision publisherRevision = new PublisherRevision();
        HashSet<PublisherRevision> publisherRevisions = new HashSet<PublisherRevision>();
        publisherRevisions.add(publisherRevision);
        publisher.setRevisions(publisherRevisions);

        publisherRevision.setPublisher(publisher);

        setValues(publisherRevision);

        publisherService.addPublisher(publisher);
        publisherRevisionService.addPublisherRevision(publisherRevision);
        newPublisher = false;
        publisherRevisionId = publisherRevision.getPublisherRevisionId();
        publisherId = publisher.getPublisherId();
        this.publisher = publisher;
        publisherRevisionAuthor = publisherRevision.getPublisherRevisionAuthor();
        publisherRevisionDatetime = publisherRevision.getPublisherRevisionDatetime();
        editMode = false;
    }

    public void update() {
        PublisherRevision publisherRevision = new PublisherRevision();

        setValues(publisherRevision);

        publisherService.addRevisionToPublisher(publisher, publisherRevision);
        publisherService.addPublisherRevision(publisherRevision);

        editMode = false;
    }

    public void loadData() {
        logger.debug("publisherRevisionId = {}", this.publisherRevisionId);

        if (publisherRevisionId != 0) {
            PublisherRevision publisherRevision = publisherRevisionService.getPublisherRevision(publisherRevisionId);

            logger.debug("Found a publisher revision : {}", publisherRevision.toString());

            publisherName = publisherRevision.getPublisherName();
            publisherStreetAddress = publisherRevision.getPublisherStreetAddress();
            publisherPostalCode = publisherRevision.getPublisherPostalCode();
            publisherPostOfficeBoxNumber = publisherRevision.getPublisherPostOfficeBoxNumber();
            publisherAddressRegion = publisherRevision.getPublisherAddressRegion();
            publisherAddressLocality = publisherRevision.getPublisherAddressLocality();
            publisherAddressCountry = publisherRevision.getPublisherAddressCountry();
            publisherTelephone = publisherRevision.getPublisherTelephone();
            publisherEmail = publisherRevision.getPublisherEmail();
            publisherURL = publisherRevision.getPublisherURL();
            publisherActive = publisherRevision.isPublisherActive();
            publisherHistory = publisherRevision.getPublisherHistory();
            publisherRevisionAuthor = publisherRevision.getPublisherRevisionAuthor();
            publisherRevisionDatetime = publisherRevision.getPublisherRevisionDatetime();
            publisher = publisherRevision.getPublisher();

            logger.debug("Found a publisher : {}", publisher.toString());
            newPublisher = false;
        } else {
            logger.debug("No publisher.");
            editMode = true;
            newPublisher = true;
        }

    }

    public int getPublisherRevisionId() {
        return publisherRevisionId;
    }

    public void setPublisherRevisionId(int publisherRevisionId) {
        this.publisherRevisionId = publisherRevisionId;
    }

    public String getPublisherName() {
        return publisherName;
    }

    public void setPublisherName(String publisherName) {
        this.publisherName = publisherName;
    }

    public String getPublisherStreetAddress() {
        return publisherStreetAddress;
    }

    public void setPublisherStreetAddress(String publisherStreetAddress) {
        this.publisherStreetAddress = publisherStreetAddress;
    }

    public String getPublisherPostalCode() {
        return publisherPostalCode;
    }

    public void setPublisherPostalCode(String publisherPostalCode) {
        this.publisherPostalCode = publisherPostalCode;
    }

    public String getPublisherPostOfficeBoxNumber() {
        return publisherPostOfficeBoxNumber;
    }

    public void setPublisherPostOfficeBoxNumber(String publisherPostOfficeBoxNumber) {
        this.publisherPostOfficeBoxNumber = publisherPostOfficeBoxNumber;
    }

    public String getPublisherAddressRegion() {
        return publisherAddressRegion;
    }

    public void setPublisherAddressRegion(String publisherAddressRegion) {
        this.publisherAddressRegion = publisherAddressRegion;
    }

    public String getPublisherAddressLocality() {
        return publisherAddressLocality;
    }

    public void setPublisherAddressLocality(String publisherAddressLocality) {
        this.publisherAddressLocality = publisherAddressLocality;
    }

    public Country getPublisherAddressCountry() {
        return publisherAddressCountry;
    }

    public void setPublisherAddressCountry(Country publisherAddressCountry) {
        this.publisherAddressCountry = publisherAddressCountry;
    }

    public String getPublisherTelephone() {
        return publisherTelephone;
    }

    public void setPublisherTelephone(String publisherTelephone) {
        this.publisherTelephone = publisherTelephone;
    }

    public String getPublisherEmail() {
        return publisherEmail;
    }

    public void setPublisherEmail(String publisherEmail) {
        this.publisherEmail = publisherEmail;
    }

    public String getPublisherURL() {
        return publisherURL;
    }

    public void setPublisherURL(String publisherURL) {
        this.publisherURL = publisherURL;
    }

    public boolean isPublisherActive() {
        return publisherActive;
    }

    public void setPublisherActive(boolean publisherActive) {
        this.publisherActive = publisherActive;
    }

    public String getPublisherHistory() {
        return publisherHistory;
    }

    public void setPublisherHistory(String publisherHistory) {
        this.publisherHistory = publisherHistory;
    }

    public User getPublisherRevisionAuthor() {
        return publisherRevisionAuthor;
    }

    public void setPublisherRevisionAuthor(User publisherRevisionAuthor) {
        this.publisherRevisionAuthor = publisherRevisionAuthor;
    }

    public Timestamp getPublisherRevisionDatetime() {
        return publisherRevisionDatetime;
    }

    public void setPublisherRevisionDatetime(Timestamp publisherRevisionDatetime) {
        this.publisherRevisionDatetime = publisherRevisionDatetime;
    }

    public List<Country> getAvailableCountries() {
        return availableCountries;
    }

    public void setAvailableCountries(List<Country> availableCountries) {
        this.availableCountries = availableCountries;
    }

    public boolean isNewPublisher() {
        return newPublisher;
    }
}