Jean-Francois Leveque

https://tree.taiga.io/project/jr-utily-grog-v3/us/44 Implementer l'historisation pour les éditeurs

https://tree.taiga.io/project/jr-utily-grog-v3/task/77 Présentation des versions d'un éditeur
https://tree.taiga.io/project/jr-utily-grog-v3/task/53 Validation d'une version
...@@ -15,10 +15,10 @@ public class Publisher /* extends org.roliste.data.DbLinkableEntity */ { ...@@ -15,10 +15,10 @@ public class Publisher /* extends org.roliste.data.DbLinkableEntity */ {
15 private int publisherId; 15 private int publisherId;
16 16
17 @OneToOne 17 @OneToOne
18 - private PublisherRevision activeRevision; 18 + private PublisherRevision validatedRevision;
19 19
20 @OneToOne 20 @OneToOne
21 - private User activeValidator; 21 + private User validator;
22 22
23 private Timestamp validationDateTime; 23 private Timestamp validationDateTime;
24 24
...@@ -33,12 +33,12 @@ public class Publisher /* extends org.roliste.data.DbLinkableEntity */ { ...@@ -33,12 +33,12 @@ public class Publisher /* extends org.roliste.data.DbLinkableEntity */ {
33 this.publisherId = publisherId; 33 this.publisherId = publisherId;
34 } 34 }
35 35
36 - public PublisherRevision getActiveRevision() { 36 + public PublisherRevision getValidatedRevision() {
37 - return activeRevision; 37 + return validatedRevision;
38 } 38 }
39 39
40 - public void setActiveRevision(PublisherRevision activeRevision) { 40 + public void setValidatedRevision(PublisherRevision activeRevision) {
41 - this.activeRevision = activeRevision; 41 + this.validatedRevision = activeRevision;
42 } 42 }
43 43
44 public Set<PublisherRevision> getRevisions() { 44 public Set<PublisherRevision> getRevisions() {
...@@ -49,12 +49,12 @@ public class Publisher /* extends org.roliste.data.DbLinkableEntity */ { ...@@ -49,12 +49,12 @@ public class Publisher /* extends org.roliste.data.DbLinkableEntity */ {
49 this.revisions = revisions; 49 this.revisions = revisions;
50 } 50 }
51 51
52 - public User getActiveValidator() { 52 + public User getValidator() {
53 - return activeValidator; 53 + return validator;
54 } 54 }
55 55
56 - public void setActiveValidator(User activeValidator) { 56 + public void setValidator(User activeValidator) {
57 - this.activeValidator = activeValidator; 57 + this.validator = activeValidator;
58 } 58 }
59 59
60 public Timestamp getValidationDateTime() { 60 public Timestamp getValidationDateTime() {
...@@ -67,6 +67,6 @@ public class Publisher /* extends org.roliste.data.DbLinkableEntity */ { ...@@ -67,6 +67,6 @@ public class Publisher /* extends org.roliste.data.DbLinkableEntity */ {
67 67
68 @Override 68 @Override
69 public String toString() { 69 public String toString() {
70 - return "PUBLISHER_ID = " + publisherId + ", Active Revision = " + activeRevision + ", Validator = " + activeValidator + ", Validation DateTime = " + validationDateTime; 70 + return "PUBLISHER_ID = " + publisherId + ", Active Revision = " + validatedRevision + ", Validator = " + validator + ", Validation DateTime = " + validationDateTime;
71 } 71 }
72 } 72 }
......
1 -package org.legrog.web.publisher;
2 -
3 -import org.legrog.web.xyz.SharedService;
4 -import org.legrog.web.user.UserService;
5 -import org.legrog.entities.Country;
6 -import org.legrog.entities.Publisher;
7 -import org.legrog.entities.PublisherRevision;
8 -import org.legrog.entities.User;
9 -import org.slf4j.Logger;
10 -import org.slf4j.LoggerFactory;
11 -
12 -import javax.annotation.PostConstruct;
13 -import javax.enterprise.context.RequestScoped;
14 -import javax.inject.Inject;
15 -import javax.inject.Named;
16 -import java.sql.Timestamp;
17 -import java.util.Date;
18 -import java.util.HashSet;
19 -import java.util.List;
20 -import java.util.Random;
21 -
22 -@Named
23 -@RequestScoped
24 -public class AddPublisherBean {
25 - Logger logger = LoggerFactory.getLogger(getClass());
26 -
27 - @Inject
28 - private SharedService sharedService;
29 - @Inject
30 - private UserService userService;
31 - @Inject
32 - private PublisherService publisherService;
33 -
34 -
35 - private String publisherName;
36 - private String publisherStreetAddress;
37 - private String publisherPostalCode;
38 - private String publisherPostOfficeBoxNumber;
39 - private String publisherAddressRegion;
40 - private String publisherAddressLocality;
41 - private Country publisherAddressCountry;
42 - private String publisherTelephone;
43 - private String publisherEmail;
44 - private String publisherURL;
45 - private boolean publisherActive;
46 - private String publisherHistory;
47 -
48 - private List<Country> availableCountries;
49 -
50 - public String add() {
51 - logger.info("add");
52 - Publisher publisher = new Publisher();
53 - PublisherRevision publisherRevision = new PublisherRevision();
54 - HashSet<PublisherRevision> publisherRevisions = new HashSet<PublisherRevision>();
55 - publisherRevisions.add(publisherRevision);
56 - publisher.setRevisions(publisherRevisions);
57 - logger.info(publisher.toString());
58 - publisherRevision.setPublisher(publisher);
59 - publisherRevision.setPublisherActive(publisherActive);
60 - publisherRevision.setPublisherAddressCountry(publisherAddressCountry);
61 - publisherRevision.setPublisherAddressLocality(publisherAddressLocality);
62 - publisherRevision.setPublisherAddressRegion(publisherAddressRegion);
63 - publisherRevision.setPublisherEmail(publisherEmail);
64 - publisherRevision.setPublisherHistory(publisherHistory);
65 - publisherRevision.setPublisherName(publisherName);
66 - publisherRevision.setPublisherPostalCode(publisherPostalCode);
67 - publisherRevision.setPublisherPostOfficeBoxNumber(publisherPostOfficeBoxNumber);
68 - publisherRevision.setPublisherStreetAddress(publisherStreetAddress);
69 - publisherRevision.setPublisherTelephone(publisherTelephone);
70 - publisherRevision.setPublisherURL(publisherURL);
71 -
72 - publisherRevision.setPublisherRevisionDatetime(new Timestamp(new Date().getTime()));
73 -
74 - // TODO Remplacer l'astuce par une vraie récupération de l'utilisateur
75 - List<User> users = userService.getAllUsers();
76 - Random random = new Random();
77 - User user = users.get(random.nextInt(users.size()));
78 - // End TODO
79 - publisherRevision.setPublisherRevisionAuthor(user);
80 - logger.info(publisherRevision.toString());
81 -
82 - // FIXME un seul appel logique à faire (pour la gestion du rollback)
83 - publisherService.addPublisher(publisher);
84 - publisherService.addPublisherRevision(publisherRevision);
85 -
86 - // Test de récupération de l'Id
87 - logger.info(publisherRevision.toString());
88 - return "success";
89 - }
90 -
91 - @PostConstruct
92 - public void init() {
93 - availableCountries = sharedService.getAllCountries();
94 - }
95 -
96 - public String getPublisherName() {
97 - return publisherName;
98 - }
99 -
100 - public void setPublisherName(String publisherName) {
101 - this.publisherName = publisherName;
102 - }
103 -
104 - public String getPublisherStreetAddress() {
105 - return publisherStreetAddress;
106 - }
107 -
108 - public void setPublisherStreetAddress(String publisherStreetAddress) {
109 - this.publisherStreetAddress = publisherStreetAddress;
110 - }
111 -
112 - public String getPublisherPostalCode() {
113 - return publisherPostalCode;
114 - }
115 -
116 - public void setPublisherPostalCode(String publisherPostalCode) {
117 - this.publisherPostalCode = publisherPostalCode;
118 - }
119 -
120 - public String getPublisherPostOfficeBoxNumber() {
121 - return publisherPostOfficeBoxNumber;
122 - }
123 -
124 - public void setPublisherPostOfficeBoxNumber(String publisherPostOfficeBoxNumber) {
125 - this.publisherPostOfficeBoxNumber = publisherPostOfficeBoxNumber;
126 - }
127 -
128 - public String getPublisherAddressRegion() {
129 - return publisherAddressRegion;
130 - }
131 -
132 - public void setPublisherAddressRegion(String publisherAddressRegion) {
133 - this.publisherAddressRegion = publisherAddressRegion;
134 - }
135 -
136 - public String getPublisherAddressLocality() {
137 - return publisherAddressLocality;
138 - }
139 -
140 - public void setPublisherAddressLocality(String publisherAddressLocality) {
141 - this.publisherAddressLocality = publisherAddressLocality;
142 - }
143 -
144 - public Country getPublisherAddressCountry() {
145 - return publisherAddressCountry;
146 - }
147 -
148 - public void setPublisherAddressCountry(Country publisherAddressCountry) {
149 - this.publisherAddressCountry = publisherAddressCountry;
150 - }
151 -
152 - public String getPublisherTelephone() {
153 - return publisherTelephone;
154 - }
155 -
156 - public void setPublisherTelephone(String publisherTelephone) {
157 - this.publisherTelephone = publisherTelephone;
158 - }
159 -
160 - public String getPublisherEmail() {
161 - return publisherEmail;
162 - }
163 -
164 - public void setPublisherEmail(String publisherEmail) {
165 - this.publisherEmail = publisherEmail;
166 - }
167 -
168 - public String getPublisherURL() {
169 - return publisherURL;
170 - }
171 -
172 - public void setPublisherURL(String publisherURL) {
173 - this.publisherURL = publisherURL;
174 - }
175 -
176 - public boolean isPublisherActive() {
177 - return publisherActive;
178 - }
179 -
180 - public void setPublisherActive(boolean publisherActive) {
181 - this.publisherActive = publisherActive;
182 - }
183 -
184 - public String getPublisherHistory() {
185 - return publisherHistory;
186 - }
187 -
188 - public void setPublisherHistory(String publisherHistory) {
189 - this.publisherHistory = publisherHistory;
190 - }
191 -
192 - public List<Country> getAvailableCountries() {
193 - return availableCountries;
194 - }
195 -
196 - public void setAvailableCountries(List<Country> availableCountries) {
197 - this.availableCountries = availableCountries;
198 - }
199 -}
...\ No newline at end of file ...\ No newline at end of file
1 package org.legrog.web.publisher; 1 package org.legrog.web.publisher;
2 2
3 +import org.legrog.entities.Publisher;
3 import org.legrog.entities.PublisherRevision; 4 import org.legrog.entities.PublisherRevision;
5 +import org.legrog.entities.User;
6 +import org.legrog.web.user.UserService;
7 +import org.legrog.web.xyz.SharedService;
4 import org.slf4j.Logger; 8 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
6 10
7 import javax.annotation.PostConstruct; 11 import javax.annotation.PostConstruct;
8 import javax.enterprise.context.RequestScoped; 12 import javax.enterprise.context.RequestScoped;
13 +import javax.faces.context.FacesContext;
9 import javax.inject.Inject; 14 import javax.inject.Inject;
10 import javax.inject.Named; 15 import javax.inject.Named;
11 -import java.util.ArrayList; 16 +import java.sql.Timestamp;
12 -import java.util.Iterator; 17 +import java.util.*;
13 -import java.util.List;
14 18
15 @Named 19 @Named
16 @RequestScoped 20 @RequestScoped
...@@ -18,7 +22,11 @@ public class ListPublisherRevisionsBean { ...@@ -18,7 +22,11 @@ public class ListPublisherRevisionsBean {
18 Logger logger = LoggerFactory.getLogger(getClass()); 22 Logger logger = LoggerFactory.getLogger(getClass());
19 23
20 @Inject 24 @Inject
21 - PublisherService publisherRevisionService; 25 + PublisherService publisherService;
26 + @Inject
27 + SharedService sharedService;
28 + @Inject
29 + UserService userService;
22 30
23 private Integer publisherId; 31 private Integer publisherId;
24 32
...@@ -29,8 +37,26 @@ public class ListPublisherRevisionsBean { ...@@ -29,8 +37,26 @@ public class ListPublisherRevisionsBean {
29 public List<PublisherRevision> getPublisherRevisions() { 37 public List<PublisherRevision> getPublisherRevisions() {
30 return publisherRevisions; 38 return publisherRevisions;
31 } 39 }
32 -/* 40 +
33 -*/ 41 + public void validate() {
42 + logger.debug("validate");
43 + Publisher publisher = publisherService.getPublisher(publisherId);
44 + logger.debug("publisher (pre-validate) = {}", publisher);
45 + FacesContext facesContext = FacesContext.getCurrentInstance();
46 + Map<String,String> params =
47 + facesContext.getExternalContext().getRequestParameterMap();
48 + Integer publisherRevisionId = new Integer(params.get("publisherRevisionId"));
49 + publisher.setValidatedRevision(publisherService.getPublisherRevision(publisherRevisionId));
50 + User user = sharedService.getCurrentUser();
51 + publisher.setValidator(user);
52 + publisher.setValidationDateTime(new Timestamp(new Date().getTime()));
53 + publisherService.updatePublisher(publisher);
54 +// TODO : comprendre pourquoi ceci est nécessaire
55 + publisherRevisions = publisherService.getAllPublisherRevisions();
56 + publisherRevisions = filter();
57 + logger.debug("publisher (post-validate) = {}", publisher);
58 + }
59 +
34 @PostConstruct 60 @PostConstruct
35 public void init() { 61 public void init() {
36 publisherRevisions = publisherRevisionService.getAllPublisherRevisions(); 62 publisherRevisions = publisherRevisionService.getAllPublisherRevisions();
...@@ -38,22 +64,24 @@ public class ListPublisherRevisionsBean { ...@@ -38,22 +64,24 @@ public class ListPublisherRevisionsBean {
38 64
39 } 65 }
40 66
41 - public void setView() { 67 + List<PublisherRevision> filter() {
42 - logger.info("setView");
43 - logger.info("publisherId = " + publisherId);
44 - viewAll = ( publisherId == null ) ;
45 - if (!viewAll) {
46 - logger.info("!viewAll");
47 ArrayList<PublisherRevision> filteredPublisherRevisions= new ArrayList<PublisherRevision>(); 68 ArrayList<PublisherRevision> filteredPublisherRevisions= new ArrayList<PublisherRevision>();
48 69
49 - Iterator<PublisherRevision> publisherRevisionIterator = publisherRevisions.iterator();
50 -
51 for(PublisherRevision publisherRevision : publisherRevisions) { 70 for(PublisherRevision publisherRevision : publisherRevisions) {
52 - if (publisherRevision.getPublisher().getPublisherId() == publisherId.intValue()) { 71 + if (publisherRevision.getPublisher().getPublisherId() == publisherId) {
53 filteredPublisherRevisions.add(publisherRevision); 72 filteredPublisherRevisions.add(publisherRevision);
54 } 73 }
55 } 74 }
56 - publisherRevisions = filteredPublisherRevisions; 75 + return filteredPublisherRevisions;
76 + }
77 +
78 + public void setView() {
79 + logger.info("setView");
80 + logger.info("publisherId = " + publisherId);
81 + viewAll = ( publisherId == null ) ;
82 + if (!viewAll) {
83 + logger.info("!viewAll");
84 + publisherRevisions = filter();
57 } 85 }
58 } 86 }
59 87
......
...@@ -26,12 +26,11 @@ public class PublisherRevisionView implements Serializable { ...@@ -26,12 +26,11 @@ public class PublisherRevisionView implements Serializable {
26 Logger logger = LoggerFactory.getLogger(getClass()); 26 Logger logger = LoggerFactory.getLogger(getClass());
27 27
28 @Inject 28 @Inject
29 - private PublisherService publisherService; 29 + PublisherService publisherService;
30 -
31 @Inject 30 @Inject
32 UserService userService; 31 UserService userService;
33 @Inject 32 @Inject
34 - private SharedService sharedService; 33 + SharedService sharedService;
35 34
36 private boolean editMode; 35 private boolean editMode;
37 private boolean newPublisher; 36 private boolean newPublisher;
...@@ -99,11 +98,8 @@ public class PublisherRevisionView implements Serializable { ...@@ -99,11 +98,8 @@ public class PublisherRevisionView implements Serializable {
99 98
100 publisherRevision.setPublisherRevisionDatetime(new Timestamp(new Date().getTime())); 99 publisherRevision.setPublisherRevisionDatetime(new Timestamp(new Date().getTime()));
101 100
102 - // TODO Remplacer l'astuce par une vraie récupération de l'utilisateur 101 + User user = sharedService.getCurrentUser();
103 - List<User> users = userService.getAllUsers(); 102 +
104 - Random random = new Random();
105 - User user = users.get(random.nextInt(users.size()));
106 - // End TODO
107 publisherRevision.setPublisherRevisionAuthor(user); 103 publisherRevision.setPublisherRevisionAuthor(user);
108 104
109 } 105 }
......
...@@ -9,6 +9,8 @@ public interface PublisherService { ...@@ -9,6 +9,8 @@ public interface PublisherService {
9 9
10 void addPublisher(Publisher publisher); 10 void addPublisher(Publisher publisher);
11 11
12 + void updatePublisher(Publisher publisher);
13 +
12 void addRevisionToPublisher(Publisher publisher, PublisherRevision publisherRevision); 14 void addRevisionToPublisher(Publisher publisher, PublisherRevision publisherRevision);
13 15
14 List<Publisher> getAllPublishers(); 16 List<Publisher> getAllPublishers();
......
...@@ -35,6 +35,10 @@ public class PublisherServiceSpring implements PublisherService { ...@@ -35,6 +35,10 @@ public class PublisherServiceSpring implements PublisherService {
35 publisherRepository.save(publisher); 35 publisherRepository.save(publisher);
36 } 36 }
37 37
38 + public void updatePublisher(Publisher publisher) {
39 + publisherRepository.save(publisher);
40 + }
41 +
38 public void addRevisionToPublisher(Publisher publisher, PublisherRevision publisherRevision) { 42 public void addRevisionToPublisher(Publisher publisher, PublisherRevision publisherRevision) {
39 Set<PublisherRevision> publisherRevisionSet = publisher.getRevisions(); 43 Set<PublisherRevision> publisherRevisionSet = publisher.getRevisions();
40 publisherRevisionSet.add(publisherRevision); 44 publisherRevisionSet.add(publisherRevision);
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 -<html xmlns="http://www.w3.org/1999/xhtml"
5 - xmlns:h="http://xmlns.jcp.org/jsf/html"
6 - xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
7 - xmlns:f="http://xmlns.jcp.org/jsf/core">
8 -<f:view>
9 - <h:form>
10 - <h:commandLink action="home">
11 - <h:outputText value="Menu principal"/>
12 - </h:commandLink>
13 -
14 - <h:panelGrid columns="2">
15 - <h:outputText value='publisherName'/>
16 - <h:inputText value='#{addPublisherBean.publisherName}'/>
17 - <h:outputText value='publisherStreetAddress'/>
18 - <h:inputText value='#{addPublisherBean.publisherStreetAddress}'/>
19 - <h:outputText value='publisherPostalCode'/>
20 - <h:inputText value='#{addPublisherBean.publisherPostalCode}'/>
21 - <h:outputText value='publisherPostOfficeBoxNumber'/>
22 - <h:inputText value='#{addPublisherBean.publisherPostOfficeBoxNumber}'/>
23 - <h:outputText value='publisherAddressRegion'/>
24 - <h:inputText value='#{addPublisherBean.publisherAddressRegion}'/>
25 - <h:outputText value='publisherAddressLocality'/>
26 - <h:inputText value='#{addPublisherBean.publisherAddressLocality}'/>
27 -
28 - <h:outputText value='publisherAddressCountry'/>
29 - <h:selectOneMenu value="#{addPublisherBean.publisherAddressCountry}" converter="omnifaces.SelectItemsConverter">
30 - <f:selectItems value="#{addPublisherBean.availableCountries}" var="country" itemLabel="#{country.countryName}"/>
31 - </h:selectOneMenu>
32 -
33 - <h:outputText value='publisherTelephone'/>
34 - <h:inputText value='#{addPublisherBean.publisherTelephone}'/>
35 - <h:outputText value='publisherEmail'/>
36 - <h:inputText value='#{addPublisherBean.publisherEmail}'/>
37 - <h:outputText value='publisherURL'/>
38 - <h:inputText value='#{addPublisherBean.publisherURL}'/>
39 -
40 - <h:outputText value='publisherActive'/>
41 - <h:selectBooleanCheckbox value="#{addPublisherBean.publisherActive}"/>
42 -
43 - <h:outputText value='publisherHistory'/>
44 - <h:inputTextarea value='#{addPublisherBean.publisherHistory}'/>
45 - <h:outputText value='Add'/>
46 - <h:commandButton action="#{addPublisherBean.add}" value="Add"/>
47 - </h:panelGrid>
48 - </h:form>
49 -</f:view>
50 -</html>
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" 4 <html xmlns="http://www.w3.org/1999/xhtml"
5 xmlns:h="http://xmlns.jcp.org/jsf/html" 5 xmlns:h="http://xmlns.jcp.org/jsf/html"
6 + xmlns:jsf="http://xmlns.jcp.org/jsf"
6 xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 7 xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
7 xmlns:f="http://xmlns.jcp.org/jsf/core"> 8 xmlns:f="http://xmlns.jcp.org/jsf/core">
8 <f:metadata> 9 <f:metadata>
...@@ -13,21 +14,26 @@ ...@@ -13,21 +14,26 @@
13 <h:form> 14 <h:form>
14 <ul> 15 <ul>
15 <li> 16 <li>
16 - <h:link outcome="/index"> 17 + <a jsf:outcome="/index">Menu principal</a>
17 - <h:outputText value="Menu principal"/>
18 - </h:link>
19 </li> 18 </li>
20 <li> 19 <li>
21 - <h:link outcome="/publisherRevision"> 20 + <a jsf:outcome="publisherRevision">Ajouter un éditeur</a>
22 - <h:outputText value="Ajouter un éditeur"/>
23 - </h:link>
24 </li> 21 </li>
25 </ul> 22 </ul>
26 </h:form> 23 </h:form>
27 24
28 - <h:link rendered="#{not listPublisherRevisionsView.viewAll}" outcome="/listPublisherRevisions.xhtml">Voir tous les éditeurs</h:link> 25 + <h:link rendered="#{not listPublisherRevisionsView.viewAll}" outcome="listPublisherRevisions">Voir tous les éditeurs</h:link>
26 + <ui:remove>
27 + <h:outputText rendered="#{not listPublisherRevisionsView.viewAll}">Révision valide #{listPublisherRevisionsView.publisherRevisions.get(0).publisher.validatedRevision.publisherRevisionId}</h:outputText>
28 + </ui:remove>
29 <h:outputText rendered="#{listPublisherRevisionsView.publisherRevisions.isEmpty()}">Liste des révisions est vide</h:outputText> 29 <h:outputText rendered="#{listPublisherRevisionsView.publisherRevisions.isEmpty()}">Liste des révisions est vide</h:outputText>
30 <h:dataTable value="#{listPublisherRevisionsView.publisherRevisions}" var="revision"> 30 <h:dataTable value="#{listPublisherRevisionsView.publisherRevisions}" var="revision">
31 + <ui:remove>
32 + <h:column>
33 + <f:facet name="header">Id</f:facet>
34 + #{revision.publisherRevisionId}
35 + </h:column>
36 + </ui:remove>
31 <h:column> 37 <h:column>
32 <f:facet name="header">Visualiser ou Modifier</f:facet> 38 <f:facet name="header">Visualiser ou Modifier</f:facet>
33 <h:link outcome="view">Visualiser ou Modifier Version 39 <h:link outcome="view">Visualiser ou Modifier Version
...@@ -36,14 +42,21 @@ ...@@ -36,14 +42,21 @@
36 </h:column> 42 </h:column>
37 <h:column rendered="#{listPublisherRevisionsView.viewAll}"> 43 <h:column rendered="#{listPublisherRevisionsView.viewAll}">
38 <f:facet name="header">Editeur</f:facet> 44 <f:facet name="header">Editeur</f:facet>
39 - <h:link outcome="/listPublisherRevisions"> 45 + <h:link outcome="listPublisherRevisions">
40 - #{revision.publisher.publisherId} 46 + Visualiser ou valider version éditeur
41 <f:param name="publisherId" value="#{revision.publisher.publisherId}"/> 47 <f:param name="publisherId" value="#{revision.publisher.publisherId}"/>
42 </h:link> 48 </h:link>
43 </h:column> 49 </h:column>
44 - <h:column rendered="#{not listPublisherRevisionsView.viewAll}"> 50 + <h:column>
45 <f:facet name="header">Valide</f:facet> 51 <f:facet name="header">Valide</f:facet>
46 - #{revision.publisherRevisionId == revision.publisher.activeRevision} 52 + <h:outputText rendered="#{revision.publisherRevisionId == revision.publisher.validatedRevision.publisherRevisionId}">Validé</h:outputText>
53 + <h:outputText rendered="#{listPublisherRevisionsView.viewAll and revision.publisherRevisionId != revision.publisher.validatedRevision.publisherRevisionId}">Non validé</h:outputText>
54 + <!-- https://www.mkyong.com/jsf2/4-ways-to-pass-parameter-from-jsf-page-to-backing-bean/ f:param, problème avec Method expression -->
55 + <h:form rendered="#{not listPublisherRevisionsView.viewAll and revision.publisherRevisionId != revision.publisher.validatedRevision.publisherRevisionId}">
56 + <h:commandButton action="#{listPublisherRevisionsView.validate()}" value="Valider">
57 + <f:param name="publisherRevisionId" value="#{revision.publisherRevisionId}"/>
58 + </h:commandButton>
59 + </h:form>
47 </h:column> 60 </h:column>
48 <h:column> 61 <h:column>
49 <f:facet name="header">Name</f:facet> 62 <f:facet name="header">Name</f:facet>
......
...@@ -18,14 +18,10 @@ ...@@ -18,14 +18,10 @@
18 <h:form> 18 <h:form>
19 <ul> 19 <ul>
20 <li> 20 <li>
21 - <h:link outcome="/index"> 21 + <a jsf:outcome="/index">Menu principal</a>
22 - <h:outputText value="Menu principal"/>
23 - </h:link>
24 </li> 22 </li>
25 <li> 23 <li>
26 - <h:link outcome="/listPublisherRevisions"> 24 + <a jsf:outcome="listPublisherRevisions">Versions des éditeurs</a>
27 - <h:outputText value="Versions des éditeurs"/>
28 - </h:link>
29 </li> 25 </li>
30 </ul> 26 </ul>
31 27
......
1 package org.legrog.web.xyz; 1 package org.legrog.web.xyz;
2 2
3 -import org.legrog.entities.Country; 3 +import org.legrog.entities.*;
4 -import org.legrog.entities.DisplayNameMask;
5 -import org.legrog.entities.UserProperty;
6 -import org.legrog.entities.UserRole;
7 4
8 import java.util.List; 5 import java.util.List;
9 6
...@@ -19,4 +16,5 @@ public interface SharedService { ...@@ -19,4 +16,5 @@ public interface SharedService {
19 16
20 List<UserProperty> getAvailableUserProperties(); 17 List<UserProperty> getAvailableUserProperties();
21 18
19 + User getCurrentUser();
22 } 20 }
...\ No newline at end of file ...\ No newline at end of file
......
1 package org.legrog.web.xyz; 1 package org.legrog.web.xyz;
2 2
3 import org.legrog.entities.*; 3 import org.legrog.entities.*;
4 +import org.legrog.web.user.UserService;
4 //import org.slf4j.Logger; 5 //import org.slf4j.Logger;
5 //import org.slf4j.LoggerFactory; 6 //import org.slf4j.LoggerFactory;
6 7
7 import javax.ejb.Stateless; 8 import javax.ejb.Stateless;
8 import javax.inject.Inject; 9 import javax.inject.Inject;
9 import java.util.List; 10 import java.util.List;
11 +import java.util.Random;
10 import java.util.Vector; 12 import java.util.Vector;
11 13
12 @Stateless 14 @Stateless
...@@ -18,6 +20,8 @@ public class SharedServiceSpring implements SharedService { ...@@ -18,6 +20,8 @@ public class SharedServiceSpring implements SharedService {
18 UserRoleRepository userRoleRepository; 20 UserRoleRepository userRoleRepository;
19 @Inject 21 @Inject
20 UserPropertyRepository userPropertyRepository; 22 UserPropertyRepository userPropertyRepository;
23 + @Inject
24 + UserService userService;
21 25
22 private List<DisplayNameMask> allDisplayNameMasks; 26 private List<DisplayNameMask> allDisplayNameMasks;
23 27
...@@ -47,4 +51,13 @@ public class SharedServiceSpring implements SharedService { ...@@ -47,4 +51,13 @@ public class SharedServiceSpring implements SharedService {
47 } 51 }
48 52
49 public List<UserProperty> getAvailableUserProperties() { return userPropertyRepository.findAll(); } 53 public List<UserProperty> getAvailableUserProperties() { return userPropertyRepository.findAll(); }
54 +
55 + public User getCurrentUser() {
56 + // TODO Remplacer l'astuce par une vraie récupération de l'utilisateur
57 + List<User> users = userService.getAllUsers();
58 + Random random = new Random();
59 + User user = users.get(random.nextInt(users.size()));
60 + // End TODO
61 + return user;
62 + }
50 } 63 }
......
...@@ -31,9 +31,9 @@ INSERT INTO PublisherRevision (publisher_PUBLISHER_ID, publisherName, publisherS ...@@ -31,9 +31,9 @@ INSERT INTO PublisherRevision (publisher_PUBLISHER_ID, publisherName, publisherS
31 (3, 'La Vouivre', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, 'la-vouivre.com', TRUE, 'Ouvert…', 1, {ts '2000-01-01 00:02:33'}), 31 (3, 'La Vouivre', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, 'la-vouivre.com', TRUE, 'Ouvert…', 1, {ts '2000-01-01 00:02:33'}),
32 (3, 'La Vouivre', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, 'la-vouivre.com', FALSE, '… en 2015', 2, {ts '2015-01-01 00:05:22'}), 32 (3, 'La Vouivre', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, 'la-vouivre.com', FALSE, '… en 2015', 2, {ts '2015-01-01 00:05:22'}),
33 (4, 'Archmagus', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, 'archimage.net', TRUE, 'Ouvert…', 4, {ts '2016-10-14 10:56:03'}); 33 (4, 'Archmagus', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, 'archimage.net', TRUE, 'Ouvert…', 4, {ts '2016-10-14 10:56:03'});
34 -UPDATE Publisher SET (activeRevision_PUBLISHER_REVISION_ID, activeValidator_USER_ID, validationDateTime) VALUES (1, 2, {ts '2000-05-08 12:00:28'}) WHERE PUBLISHER_ID = 1; 34 +UPDATE Publisher SET validatedRevision_PUBLISHER_REVISION_ID = 1, validator_USER_ID = 2, validationDateTime = {ts '2000-05-08 12:00:28'} WHERE PUBLISHER_ID = 1;
35 -UPDATE Publisher SET (activeRevision_PUBLISHER_REVISION_ID, activeValidator_USER_ID, validationDateTime) VALUES (2, 1, TIMESTAMP '2010-06-20 14:27:35') WHERE PUBLISHER_ID = 2; 35 +UPDATE Publisher SET validatedRevision_PUBLISHER_REVISION_ID = 2, validator_USER_ID = 1, validationDateTime = {ts '2010-06-20 14:27:35'} WHERE PUBLISHER_ID = 2;
36 -UPDATE Publisher SET (activeRevision_PUBLISHER_REVISION_ID, activeValidator_USER_ID, validationDateTime) VALUES (4, 1, TIMESTAMP '2015-01-01 16:18:17') WHERE PUBLISHER_ID = 3; 36 +UPDATE Publisher SET validatedRevision_PUBLISHER_REVISION_ID = 4, validator_USER_ID = 1, validationDateTime = {ts '2015-01-01 16:18:17'} WHERE PUBLISHER_ID = 3;
37 37
38 INSERT INTO UserRole VALUES (1, 'VISITEUR', TRUE); 38 INSERT INTO UserRole VALUES (1, 'VISITEUR', TRUE);
39 INSERT INTO UserRole VALUES (2, 'RECRUE', TRUE); 39 INSERT INTO UserRole VALUES (2, 'RECRUE', TRUE);
......
...@@ -41,13 +41,6 @@ ...@@ -41,13 +41,6 @@
41 </navigation-case> 41 </navigation-case>
42 </navigation-rule> 42 </navigation-rule>
43 <navigation-rule> 43 <navigation-rule>
44 - <from-view-id>/publisher/addPublisher.xhtml</from-view-id>
45 - <navigation-case>
46 - <from-outcome>success</from-outcome>
47 - <to-view-id>/publisher/listPublisherRevisions.xhtml</to-view-id>
48 - </navigation-case>
49 - </navigation-rule>
50 - <navigation-rule>
51 <from-view-id>/xyz/addCountry.xhtml</from-view-id> 44 <from-view-id>/xyz/addCountry.xhtml</from-view-id>
52 <navigation-case> 45 <navigation-case>
53 <from-outcome>success</from-outcome> 46 <from-outcome>success</from-outcome>
......
...@@ -3,52 +3,17 @@ ...@@ -3,52 +3,17 @@
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" 4 <html xmlns="http://www.w3.org/1999/xhtml"
5 xmlns:h="http://xmlns.jcp.org/jsf/html" 5 xmlns:h="http://xmlns.jcp.org/jsf/html"
6 + xmlns:jsf="http://xmlns.jcp.org/jsf"
6 xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 7 xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
7 xmlns:f="http://xmlns.jcp.org/jsf/core"> 8 xmlns:f="http://xmlns.jcp.org/jsf/core">
8 <body> 9 <body>
9 -<h:form>
10 <ul> 10 <ul>
11 <li> 11 <li>
12 - <h:commandLink action="addBook"> 12 + <a jsf:outcome="publisher/publisherRevision">Ajouter un éditeur</a>
13 - <h:outputText value="Add book"/>
14 - </h:commandLink>
15 </li> 13 </li>
16 <li> 14 <li>
17 - <h:commandLink action="listBooks"> 15 + <a jsf:outcome="publisher/listPublisherRevisions">Liste des versions des éditeurs</a>
18 - <h:outputText value="List books"/>
19 - </h:commandLink>
20 - </li>
21 - <li>
22 - <h:commandLink action="addCountry">
23 - <h:outputText value="Add country"/>
24 - </h:commandLink>
25 - </li>
26 - <li>
27 - <h:commandLink action="listCountries">
28 - <h:outputText value="List countries"/>
29 - </h:commandLink>
30 - </li>
31 - <li>
32 - <h:commandLink action="addUser">
33 - <h:outputText value="Add user"/>
34 - </h:commandLink>
35 - </li>
36 - <li>
37 - <h:commandLink action="listUsers">
38 - <h:outputText value="List users"/>
39 - </h:commandLink>
40 - </li>
41 - <li>
42 - <h:link outcome="/publisherRevision">
43 - <h:outputText value="Ajouter un éditeur"/>
44 - </h:link>
45 - </li>
46 - <li>
47 - <h:link outcome="/listPublisherRevisions">
48 - <h:outputText value="Liste des versions des éditeurs"/>
49 - </h:link>
50 </li> 16 </li>
51 </ul> 17 </ul>
52 -</h:form>
53 </body> 18 </body>
54 </html> 19 </html>
......