comparison src/main/java/edu/harvard/iq/dataverse/SendFeedbackDialog.java @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
comparison
equal deleted inserted replaced
9:5926d6419569 10:a50cf11e5178
1 package edu.harvard.iq.dataverse;
2
3 import static edu.harvard.iq.dataverse.util.JsfHelper.JH;
4 import java.util.Random;
5 import java.util.logging.Logger;
6 import javax.ejb.EJB;
7 import javax.faces.application.FacesMessage;
8 import javax.faces.component.UIComponent;
9 import javax.faces.context.FacesContext;
10 import javax.faces.event.ActionEvent;
11 import javax.faces.validator.ValidatorException;
12 import javax.faces.view.ViewScoped;
13 import javax.inject.Inject;
14 import javax.inject.Named;
15
16 import org.apache.commons.validator.routines.EmailValidator;
17
18 /**
19 *
20 * @author Naomi
21 */
22 @ViewScoped
23 @Named
24 public class SendFeedbackDialog implements java.io.Serializable {
25
26 private String userEmail = "";
27 private String userMessage = "";
28 private String messageSubject = "";
29 private String messageTo = "";
30 private String defaultRecipientEmail = "support@thedata.org";
31 Long op1, op2, userSum;
32 // Either the dataverse or the dataset that the message is pertaining to
33 // If there is no recipient, this is a general feeback message
34 private DvObject recipient;
35 private Logger logger = Logger.getLogger(SendFeedbackDialog.class.getCanonicalName());
36
37 @EJB
38 MailServiceBean mailService;
39 @EJB
40 DataverseServiceBean dataverseService;
41 @Inject DataverseSession dataverseSession;
42
43 public void setUserEmail (String uEmail) {
44 userEmail = uEmail;
45 }
46
47 public String getUserEmail() {
48 return userEmail;
49 }
50
51 public void initUserInput(ActionEvent ae) {
52 System.out.println("initUserInput()");
53 userEmail="";
54 userMessage="";
55 messageTo="";
56 messageSubject="";
57 Random random = new Random();
58 op1 = new Long(random.nextInt(10));
59 op2 = new Long(random.nextInt(10));
60 userSum=null;
61
62 }
63
64 public Long getOp1() {
65 return op1;
66 }
67
68 public void setOp1(Long op1) {
69 this.op1 = op1;
70 }
71
72 public Long getOp2() {
73 return op2;
74 }
75
76 public void setOp2(Long op2) {
77 this.op2 = op2;
78 }
79
80 public Long getUserSum() {
81 return userSum;
82 }
83
84 public void setUserSum(Long userSum) {
85 this.userSum = userSum;
86 }
87
88
89 public String getMessageTo() {
90 if (recipient == null) {
91 return JH.localize("contact.support");
92 } else if (recipient.isInstanceofDataverse()) {
93 return ((Dataverse)recipient).getDisplayName() +" "+ JH.localize("contact.contact");
94 } else
95 return JH.localize("dataset") + " " + JH.localize("contact.contact");
96 }
97
98 public String getFormHeader() {
99 if (recipient == null) {
100 return JH.localize("contact.header");
101 } else if (recipient.isInstanceofDataverse()) {
102 return JH.localize("contact.dataverse.header");
103 } else
104 return JH.localize("contact.dataset.header");
105 }
106
107 public void setUserMessage (String mess) {
108 System.out.println("setUserMessage: "+mess);
109 userMessage = mess;
110 }
111
112 public String getUserMessage() {
113 return userMessage;
114 }
115
116 public void setMessageSubject(String messageSubject) {
117 this.messageSubject = messageSubject;
118 }
119
120 public String getMessageSubject() {
121 return messageSubject;
122 }
123
124 public boolean isLoggedIn() {
125 return dataverseSession.getUser().isAuthenticated();
126 }
127
128 public String loggedInUserEmail() {
129 return dataverseSession.getUser().getDisplayInfo().getEmailAddress();
130 }
131
132 public DvObject getRecipient() {
133 return recipient;
134 }
135
136 public void setRecipient(DvObject recipient) {
137 this.recipient = recipient;
138 }
139
140 private String getDataverseEmail(Dataverse dataverse) {
141 String email = "";
142
143 for (DataverseContact dc : dataverse.getDataverseContacts()) {
144 if (!email.isEmpty()) {
145 email += ",";
146 }
147 email += dc.getContactEmail();
148 }
149 return email;
150 }
151 public void validateUserSum(FacesContext context, UIComponent component, Object value) throws ValidatorException {
152
153 if (op1 + op2 !=(Long)value) {
154
155 FacesMessage msg
156 = new FacesMessage("Sum is incorrect, please try again.");
157 msg.setSeverity(FacesMessage.SEVERITY_ERROR);
158
159 throw new ValidatorException(msg);
160 }
161
162 }
163
164 public void validateUserEmail(FacesContext context, UIComponent component, Object value) throws ValidatorException {
165
166 if (!EmailValidator.getInstance().isValid((String)value)) {
167
168 FacesMessage msg
169 = new FacesMessage("Invalid email.");
170 msg.setSeverity(FacesMessage.SEVERITY_ERROR);
171
172 throw new ValidatorException(msg);
173 }
174
175 }
176 public String sendMessage() {
177 String email = "";
178 if (recipient!=null) {
179 if (recipient.isInstanceofDataverse() ) {
180 email = getDataverseEmail((Dataverse)recipient);
181 }
182 else if (recipient.isInstanceofDataset()) {
183 Dataset d = (Dataset)recipient;
184 for (DatasetField df : d.getLatestVersion().getFlatDatasetFields()){
185 if (df.getDatasetFieldType().getName().equals(DatasetFieldConstant.datasetContactEmail)) {
186 if (!email.isEmpty()) {
187 email+=",";
188 }
189 email+=df.getValue();
190 }
191 }
192 if (email.isEmpty()) {
193 email = getDataverseEmail(d.getOwner());
194 }
195 }
196 }
197 if (email.isEmpty()) {
198 email = defaultRecipientEmail;
199 }
200 if (isLoggedIn() && userMessage!=null) {
201 mailService.sendMail(loggedInUserEmail(), email, getMessageSubject(), userMessage);
202 userMessage = "";
203 return null;
204 } else {
205 if (userEmail != null && userMessage != null) {
206 mailService.sendMail(userEmail, email, getMessageSubject(), userMessage);
207 userMessage = "";
208 return null;
209 } else {
210 userMessage = "";
211 return null;
212 }
213 }
214 }
215
216
217 }