PublisherServiceSpring.java 2.97 KB
package org.legrog.web.publisher;


import org.legrog.entities.Publisher;
import org.legrog.entities.PublisherRepository;
import org.legrog.entities.PublisherRevision;
import org.legrog.entities.PublisherRevisionRepository;
import org.legrog.web.xyz.SharedService;

import javax.ejb.Stateless;
import javax.inject.Inject;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/*
    Implémentation de l'interface PublisherService
 */

@Stateless
public class PublisherServiceSpring implements PublisherService {
    @Inject
    PublisherRepository publisherRepository;

    @Inject
    PublisherRevisionRepository publisherRevisionRepository;

    @Inject
    SharedService sharedService;

    public void addPublisherWithRevision(Publisher publisher, PublisherRevision publisherRevision) {
        Set<PublisherRevision> publisherRevisions = new HashSet<PublisherRevision>();
        publisherRevisions.add(publisherRevision);
        publisher.setRevisions(publisherRevisions);
        publisherRevision.setPublisher(publisher);
        publisherRevision.setPublisherRevisionAuthor(sharedService.getCurrentUser());
        publisherRevision.setPublisherRevisionDatetime(new Timestamp(new Date().getTime()));
        this.savePublisherRevision(publisherRevision);
        this.savePublisher(publisher);
    }

    public void addRevisionToPublisher(Publisher publisher, PublisherRevision publisherRevision) {
        Set<PublisherRevision> publisherRevisionSet = publisher.getRevisions();
        publisherRevisionSet.add(publisherRevision);
        publisher.setRevisions(publisherRevisionSet);
        publisherRevision.setPublisher(publisher);
        publisherRevision.setPublisherRevisionAuthor(sharedService.getCurrentUser());
        publisherRevision.setPublisherRevisionDatetime(new Timestamp(new Date().getTime()));
        this.savePublisherRevision(publisherRevision);
        this.savePublisher(publisher);
    }

    public void validatePublisherRevision(Publisher publisher, Integer publisherRevisionId) {
        publisher.setValidatedRevision(this.getPublisherRevision(publisherRevisionId));
        publisher.setValidator(sharedService.getCurrentUser());
        publisher.setValidationDateTime(new Timestamp(new Date().getTime()));
        this.savePublisher(publisher);
    }

    protected void savePublisherRevision(PublisherRevision publisherRevision) {
        publisherRevisionRepository.save(publisherRevision);
    }

    protected void savePublisher(Publisher publisher) {
        publisherRepository.save(publisher);
    }

    // get
    public List<PublisherRevision> getAllPublisherRevisions() {
        return publisherRevisionRepository.findAll();
    }

    public PublisherRevision getPublisherRevision(Integer publisherRevisionId) {
        return publisherRevisionRepository.findOne(publisherRevisionId);
    }

    public Publisher getPublisher(Integer publisherId) {
        return publisherRepository.findOne(publisherId);
    }

}