/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/help/trunk/help-tool/src/java/org/sakaiproject/tool/help/QuestionTool.java $ * $Id: QuestionTool.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.tool.help; import org.apache.commons.logging.Log; import org.sakaiproject.api.app.help.HelpManager; import org.sakaiproject.component.cover.ServerConfigurationService; import org.sakaiproject.email.api.EmailService; import org.sakaiproject.event.cover.UsageSessionService; import org.sakaiproject.tool.cover.ToolManager; /** * question tool * @version $Id: QuestionTool.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ */ public class QuestionTool { private String lastName; private String firstName; private String userName; private String emailAddress; private String subject; private String content; private String toEmailAddress; private EmailService emailService; private Log logger; private HelpManager helpManager; /** * get help manager * @return Returns the helpManager. */ public HelpManager getHelpManager() { return helpManager; } /** * set help manager * @param helpManager The helpManager to set. */ public void setHelpManager(HelpManager helpManager) { this.helpManager = helpManager; } /** * get email address * @return Returns the emailAddress. */ public String getEmailAddress() { return emailAddress; } /** * set email address * @param emailAddress The emailAddress to set. */ public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } /** * get first name * @return Returns the firstName. */ public String getFirstName() { return firstName; } /** * set first name * @param firstName The firstName to set. */ public void setFirstName(String firstName) { this.firstName = firstName; } /** * get last name * @return Returns the lastName. */ public String getLastName() { return lastName; } /** * set last name * @param lastName The lastName to set. */ public void setLastName(String lastName) { this.lastName = lastName; } /** * get subject * @return Returns the subject. */ public String getSubject() { return subject; } /** * set subject * @param subject The subject to set. */ public void setSubject(String subject) { this.subject = subject; } /** * get user name * @return Returns the userName. */ public String getUserName() { return userName; } /** * set user name * @param userName The userName to set. */ public void setUserName(String userName) { this.userName = userName; } /** * get email service * @return Returns the emailService. */ public EmailService getEmailService() { return emailService; } /** * set email service * @param emailService The emailService to set. */ public void setEmailService(EmailService emailService) { this.emailService = emailService; } /** * get to email address * @return Returns the toEmailAddress. */ public String getToEmailAddress() { if (toEmailAddress == null) { toEmailAddress = helpManager.getSupportEmailAddress(); } return toEmailAddress; } /** * set to email address * @param toEmailAddress The toEmailAddress to set. */ public void setToEmailAddress(String toEmailAddress) { this.toEmailAddress = toEmailAddress; } /** * get detailed content * @return content */ public String getDetailedContent() { String UNAVAILABLE = "~unavailable~"; String IP = UNAVAILABLE; String agent = UNAVAILABLE; String sessionId = UNAVAILABLE; String serverName = UNAVAILABLE; if (UsageSessionService.getSession() != null) { IP = UsageSessionService.getSession().getIpAddress(); agent = UsageSessionService.getSession().getUserAgent(); sessionId = UsageSessionService.getSession().getId(); serverName = ServerConfigurationService.getServerName(); } String detailedContent = "\n\n" + "Sender's name: " + this.firstName + " " + this.lastName + "\n" + "Sender's UserName: " + userName + "\n" + "Sender's IP: " + IP + "\n" + "Sender's Browser/Agent: " + agent + "\n" + "Sender's SessionID: " + sessionId + "\n" + "Server Name: " + serverName + "\n" + "Comments or questions: \n" + this.getContent() + "\n\n" + "Sender's (reply-to) email: " + emailAddress + "\n\n" + "Site: Help Tool" + "\n" + "Site Id: " + ToolManager.getCurrentPlacement().getContext() + "\n"; return detailedContent; } /** * submit question * @return view */ public String submitQuestion() { this.sendEmail(); return "display"; } /** * reset * @return view */ public String reset() { this.content = ""; this.subject = ""; this.firstName = ""; this.lastName = ""; this.emailAddress = ""; this.userName = ""; return "main"; } /** * submit question cancel * @return */ public String submitQuestionCancel() { return this.reset(); } /** * send email */ private void sendEmail() { try { String detailedContent = getDetailedContent(); emailService.send(emailAddress, this.getToEmailAddress(), subject, detailedContent, null, null, null); } catch (Exception e) { logger .error( "email service is not set up correctly, can't send user question to support consultant!", e); } } /** * get content * @return Returns the content. */ public String getContent() { return content; } /** * set content * @param content The content to set. */ public void setContent(String content) { this.content = content; } /** * get logger * @return Returns the logger. */ public Log getLogger() { return logger; } /** * set logger * @param logger The logger to set. */ public void setLogger(Log logger) { this.logger = logger; } }