Mercurial > hg > LGDataverses
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/edu/harvard/iq/dataverse/SendFeedbackDialog.java Tue Sep 08 17:00:21 2015 +0200 @@ -0,0 +1,217 @@ +package edu.harvard.iq.dataverse; + +import static edu.harvard.iq.dataverse.util.JsfHelper.JH; +import java.util.Random; +import java.util.logging.Logger; +import javax.ejb.EJB; +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.event.ActionEvent; +import javax.faces.validator.ValidatorException; +import javax.faces.view.ViewScoped; +import javax.inject.Inject; +import javax.inject.Named; + +import org.apache.commons.validator.routines.EmailValidator; + +/** + * + * @author Naomi + */ +@ViewScoped +@Named +public class SendFeedbackDialog implements java.io.Serializable { + + private String userEmail = ""; + private String userMessage = ""; + private String messageSubject = ""; + private String messageTo = ""; + private String defaultRecipientEmail = "support@thedata.org"; + Long op1, op2, userSum; + // Either the dataverse or the dataset that the message is pertaining to + // If there is no recipient, this is a general feeback message + private DvObject recipient; + private Logger logger = Logger.getLogger(SendFeedbackDialog.class.getCanonicalName()); + + @EJB + MailServiceBean mailService; + @EJB + DataverseServiceBean dataverseService; + @Inject DataverseSession dataverseSession; + + public void setUserEmail (String uEmail) { + userEmail = uEmail; + } + + public String getUserEmail() { + return userEmail; + } + + public void initUserInput(ActionEvent ae) { + System.out.println("initUserInput()"); + userEmail=""; + userMessage=""; + messageTo=""; + messageSubject=""; + Random random = new Random(); + op1 = new Long(random.nextInt(10)); + op2 = new Long(random.nextInt(10)); + userSum=null; + + } + + public Long getOp1() { + return op1; + } + + public void setOp1(Long op1) { + this.op1 = op1; + } + + public Long getOp2() { + return op2; + } + + public void setOp2(Long op2) { + this.op2 = op2; + } + + public Long getUserSum() { + return userSum; + } + + public void setUserSum(Long userSum) { + this.userSum = userSum; + } + + + public String getMessageTo() { + if (recipient == null) { + return JH.localize("contact.support"); + } else if (recipient.isInstanceofDataverse()) { + return ((Dataverse)recipient).getDisplayName() +" "+ JH.localize("contact.contact"); + } else + return JH.localize("dataset") + " " + JH.localize("contact.contact"); + } + + public String getFormHeader() { + if (recipient == null) { + return JH.localize("contact.header"); + } else if (recipient.isInstanceofDataverse()) { + return JH.localize("contact.dataverse.header"); + } else + return JH.localize("contact.dataset.header"); + } + + public void setUserMessage (String mess) { + System.out.println("setUserMessage: "+mess); + userMessage = mess; + } + + public String getUserMessage() { + return userMessage; + } + + public void setMessageSubject(String messageSubject) { + this.messageSubject = messageSubject; + } + + public String getMessageSubject() { + return messageSubject; + } + + public boolean isLoggedIn() { + return dataverseSession.getUser().isAuthenticated(); + } + + public String loggedInUserEmail() { + return dataverseSession.getUser().getDisplayInfo().getEmailAddress(); + } + + public DvObject getRecipient() { + return recipient; + } + + public void setRecipient(DvObject recipient) { + this.recipient = recipient; + } + + private String getDataverseEmail(Dataverse dataverse) { + String email = ""; + + for (DataverseContact dc : dataverse.getDataverseContacts()) { + if (!email.isEmpty()) { + email += ","; + } + email += dc.getContactEmail(); + } + return email; + } + public void validateUserSum(FacesContext context, UIComponent component, Object value) throws ValidatorException { + + if (op1 + op2 !=(Long)value) { + + FacesMessage msg + = new FacesMessage("Sum is incorrect, please try again."); + msg.setSeverity(FacesMessage.SEVERITY_ERROR); + + throw new ValidatorException(msg); + } + + } + + public void validateUserEmail(FacesContext context, UIComponent component, Object value) throws ValidatorException { + + if (!EmailValidator.getInstance().isValid((String)value)) { + + FacesMessage msg + = new FacesMessage("Invalid email."); + msg.setSeverity(FacesMessage.SEVERITY_ERROR); + + throw new ValidatorException(msg); + } + + } + public String sendMessage() { + String email = ""; + if (recipient!=null) { + if (recipient.isInstanceofDataverse() ) { + email = getDataverseEmail((Dataverse)recipient); + } + else if (recipient.isInstanceofDataset()) { + Dataset d = (Dataset)recipient; + for (DatasetField df : d.getLatestVersion().getFlatDatasetFields()){ + if (df.getDatasetFieldType().getName().equals(DatasetFieldConstant.datasetContactEmail)) { + if (!email.isEmpty()) { + email+=","; + } + email+=df.getValue(); + } + } + if (email.isEmpty()) { + email = getDataverseEmail(d.getOwner()); + } + } + } + if (email.isEmpty()) { + email = defaultRecipientEmail; + } + if (isLoggedIn() && userMessage!=null) { + mailService.sendMail(loggedInUserEmail(), email, getMessageSubject(), userMessage); + userMessage = ""; + return null; + } else { + if (userEmail != null && userMessage != null) { + mailService.sendMail(userEmail, email, getMessageSubject(), userMessage); + userMessage = ""; + return null; + } else { + userMessage = ""; + return null; + } + } + } + + +}
