Mercurial > hg > LGDataverses
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 } |
