Package org.dspace.app.webui.servlet

Source Code of org.dspace.app.webui.servlet.SuggestServlet

/*
* SuggestServlet.java
*
* Version: $Revision: 4462 $
*
* Date: $Date: 2009-10-22 22:53:26 +0000 (Thu, 22 Oct 2009) $
*
* Copyright (c) 2002-2005, Hewlett-Packard Company and Massachusetts
* Institute of Technology.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of the Hewlett-Packard Company nor the name of the
* Massachusetts Institute of Technology nor the names of their
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*/

package org.dspace.app.webui.servlet;

import java.io.IOException;
import java.net.InetAddress;
import java.sql.SQLException;
import java.util.Date;
import java.util.MissingResourceException;
import javax.mail.MessagingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.log4j.Logger;

import org.dspace.app.webui.util.JSPManager;
import org.dspace.authorize.AuthorizeException;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Context;
import org.dspace.core.Email;
import org.dspace.core.I18nUtil;
import org.dspace.core.LogManager;
import org.dspace.eperson.EPerson;
import org.dspace.handle.HandleManager;
import org.dspace.content.Item;
import org.dspace.content.Collection;
import org.dspace.content.DCValue;


/**
* Servlet for handling user email recommendations
*
* @author  Arnaldo Dantas
* @version $Revision: 4462 $
*/
public class SuggestServlet extends DSpaceServlet
{
    /** log4j category */
    private static Logger log = Logger.getLogger(SuggestServlet.class);

    protected void doDSGet(Context context, HttpServletRequest request,
                 HttpServletResponse response)
        throws ServletException, IOException, SQLException, AuthorizeException
    {
        // Obtain information from request
        // The page where the user came from
        String fromPage = request.getHeader("Referer");

        // Prevent spammers and splogbots from poisoning the feedback page
        String host = ConfigurationManager.getProperty("dspace.hostname");

        String basicHost = "";
        if (host.equals("localhost") || host.equals("127.0.0.1")
                || host.equals(InetAddress.getLocalHost().getHostAddress()))
            basicHost = host;
        else
        {
            // cut off all but the hostname, to cover cases where more than one URL
            // arrives at the installation; e.g. presence or absence of "www"
            int lastDot = host.lastIndexOf(".");
            basicHost = host.substring(host.substring(0, lastDot).lastIndexOf("."));
        }

        if (fromPage == null || fromPage.indexOf(basicHost) == -1)
        {
            throw new AuthorizeException();
        }

        // Obtain information from request
        String handle = request.getParameter("handle");
       
        // Lookup Item title & collection
        String title = null;
        String collName = null;
        if (handle != null && !handle.equals(""))
        {
            Item item = (Item) HandleManager.resolveToObject(context, handle);
            if (item != null)
            {  
                DCValue[] titleDC = item.getDC("title", null, Item.ANY);
                if (titleDC != null && titleDC.length > 0)
                {
                    title = titleDC[0].value;
                }
                Collection[] colls = item.getCollections();
                collName = colls[0].getMetadata("name");
            }
        }
        else
        {
          String path = request.getPathInfo();
            log.info(LogManager.getHeader(context, "invalid_id", "path=" + path));
            JSPManager.showInvalidIDError(request, response, path, -1);
            return;
        }
        if (title == null)
        {
          title = "";
        }
        if(collName == null)
        {
          collName = "";
        }
        request.setAttribute("suggest.title", title);
         
        // User email from context
        EPerson currentUser = context.getCurrentUser();
        String authEmail = null;
        String userName = null;
       
        if (currentUser != null)
        {
            authEmail = currentUser.getEmail();
            userName = currentUser.getFullName();
        }      
       
        if (request.getParameter("submit") != null)
        {
          String recipAddr = request.getParameter("recip_email");
            // the only required field is recipient email address
            if (recipAddr == null || recipAddr.equals(""))
            {
                log.info(LogManager.getHeader(context, "show_suggest_form",
                       "problem=true"));
                request.setAttribute("suggest.problem", new Boolean(true));
                JSPManager.showJSP(request, response, "/suggest/suggest.jsp");
                return;
            }
          String recipName = request.getParameter("recip_name");
          if (recipName == null || "".equals(recipName))
          {
                try
                {
                recipName = I18nUtil.getMessage("org.dspace.app.webui.servlet.SuggestServlet.recipient", context);
                }
                catch (MissingResourceException e)
                {
                    log.warn(LogManager.getHeader(context, "show_suggest_form", "Missing Resource: org.dspace.app.webui.servlet.SuggestServlet.sender"));
                    recipName = "colleague";
                }
          }
            String senderName = request.getParameter("sender_name");
            if (senderName == null || "".equals(senderName) )
            {
              // use userName if available
              if (userName != null)
              {
                senderName = userName;
              }
              else
              {
                try
                    {
                senderName = I18nUtil.getMessage("org.dspace.app.webui.servlet.SuggestServlet.sender", context);
                    }
                    catch (MissingResourceException e)
                    {
                        log.warn(LogManager.getHeader(context, "show_suggest_form", "Missing Resource: org.dspace.app.webui.servlet.SuggestServlet.sender"));
                        senderName = "A DSpace User";
                    }
              }
            }
            String senderAddr = request.getParameter("sender_email");
            if (senderAddr == null || "".equals(senderAddr) )
            {
              // use authEmail if available
              if (authEmail != null)
              {
                senderAddr = authEmail;
              }
            }
            String itemUri = HandleManager.getCanonicalForm(handle);
            String itemUrl = HandleManager.resolveToURL(context,handle);
            String message = request.getParameter("message");         
            String siteName = ConfigurationManager.getProperty("dspace.name");

            // All data is there, send the email
            try
            {
                Email email = ConfigurationManager.getEmail(I18nUtil.getEmailFilename(context.getCurrentLocale(), "suggest"));
                email.addRecipient(recipAddr);   // recipient address
                email.addArgument(recipName);    // 1st arg - recipient name
                email.addArgument(senderName);   // 2nd arg - sender name
                email.addArgument(siteName);     // 3rd arg - repository name
                email.addArgument(title);        // 4th arg - item title
                email.addArgument(itemUri);      // 5th arg - item handle URI
                email.addArgument(itemUrl);      // 6th arg - item local URL
                email.addArgument(collName);     // 7th arg - collection name
                email.addArgument(message);      // 8th arg - user comments    
               
                // Set sender's address as 'reply-to' address if supplied
                if ( senderAddr != null && ! "".equals(senderAddr))
                {
                  email.setReplyTo(senderAddr);
                }
               
                // Only actually send the email if feature is enabled
                if (ConfigurationManager.getBooleanProperty("webui.suggest.enable", false))
                {
                    email.send();
                } else
                {
                    throw new MessagingException("Suggest item email not sent - webui.suggest.enable = false");
                }

                log.info(LogManager.getHeader(context, "sent_suggest",
                                          "from=" + senderAddr));

                JSPManager.showJSP(request, response, "/suggest/suggest_ok.jsp");
            }
            catch (MessagingException me)
            {
                log.warn(LogManager.getHeader(context, "error_mailing_suggest", ""), me);
                JSPManager.showInternalError(request, response);
            }
        }
        else
        {
            // Display suggest form
            log.info(LogManager.getHeader(context, "show_suggest_form", "problem=false"));
            request.setAttribute("authenticated.email", authEmail);
            request.setAttribute("eperson.name", userName);
            JSPManager.showJSP(request, response, "/suggest/suggest.jsp"); //asd
        }
   }

    protected void doDSPost(Context context, HttpServletRequest request,
                HttpServletResponse response)
        throws ServletException, IOException, SQLException, AuthorizeException
    {
        // Treat as a GET
        doDSGet(context, request, response);
    }
}
TOP

Related Classes of org.dspace.app.webui.servlet.SuggestServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.