Guest User

AjaxImageUploadRequestServiceImpl

a guest
Dec 9th, 2010
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.72 KB | None | 0 0
  1. /**
  2.  *
  3.  */
  4. package org.project.core.upload.impl;
  5.  
  6. import java.io.IOException;
  7.  
  8. import javax.activation.MimetypesFileTypeMap;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.project.core.dao.ImageAlbumDao;
  15. import org.project.core.dao.UserDao;
  16. import org.project.core.domain.ImageAlbum;
  17. import org.project.core.domain.ImageEntry;
  18. import org.project.core.domain.UserAccount;
  19. import org.project.core.services.ImageService;
  20. import org.project.core.upload.ImageUploadRequestService;
  21. import org.springframework.util.StringUtils;
  22.  
  23. /**
  24.  * Service handling images which were uploaded over AjaxImageUploadPanel
  25.  *
  26.  * @author zvilutis
  27.  */
  28. public class AjaxImageUploadRequestServiceImpl implements ImageUploadRequestService {
  29.    
  30.     private static final Logger log = LoggerFactory.getLogger( AjaxImageUploadRequestServiceImpl.class );
  31.     private static final MimetypesFileTypeMap MIME_TYPES_MAP = new MimetypesFileTypeMap();
  32.  
  33.     protected ImageService imageService;
  34.     protected ImageAlbumDao imageAlbumDao;
  35.     protected UserDao userDao;
  36.  
  37.     /* (non-Javadoc)
  38.      * @see org.project.core.upload.ImageUploadRequestService#processImageUploadRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  39.      */
  40.     public void processImageUploadRequest( HttpServletRequest request, HttpServletResponse response ) throws IOException {
  41.        
  42.         try {
  43.             if ( request.getHeader( "X-File-Name" ) != null ) {
  44.                 String filename = request.getHeader( "X-File-Name" );
  45.                
  46.                 final ImageEntry imageEntry = new ImageEntry();
  47.                
  48.                 imageEntry.setContentType( MIME_TYPES_MAP.getContentType( filename ) );
  49.  
  50.                 imageEntry.setName( filename );
  51.  
  52.                 imageService.save( imageEntry, request.getInputStream(), 600 );
  53.  
  54.                 Long imageId = imageEntry.getId();
  55.  
  56.                 // returns ok to swfupload. Otherwise swfupload will be at 100% for ever
  57.                 if ( imageId != null ) {
  58.                    
  59.                     doWithImage( request, imageEntry );
  60.                    
  61.                     response.setStatus( HttpServletResponse.SC_OK );
  62.                     StringBuilder sb = new StringBuilder( "{" )
  63.                             .append( "success: true" )
  64.                             .append( ", imageId: " ).append( imageEntry.getId() )
  65.                             .append( "}" );
  66.                     response.getWriter().write( sb.toString() );
  67.                     response.getWriter().flush();
  68.                     return;
  69.                 }
  70.             }
  71.         } catch ( Exception e ) {
  72.             final String message = "Image upload failed : " + e.getMessage();
  73.             response.sendError( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message );
  74.             response.getOutputStream().println( message );
  75.             log.error( message, e );
  76.             return;
  77.         }
  78.         response.getWriter().write( "{success: false}" );
  79.         response.getWriter().flush();
  80.     }
  81.  
  82.     /**
  83.      * Implement the image usage here. Whether it is adding it to a gallery or setting as a user profile photo.
  84.      *
  85.      * @param request
  86.      * @param imageId
  87.      */
  88.     protected void doWithImage( HttpServletRequest request, ImageEntry imageEntry ) {
  89.         String action = request.getParameter( "action" );
  90.         if ( "setProfilePhoto".equals( action ) ) {
  91.             String userIdParam = request.getParameter( "userId" );
  92.             if ( StringUtils.hasText( userIdParam ) ) {
  93.                 Long userId = Long.parseLong( userIdParam );
  94.                 UserAccount user = userDao.find( userId );
  95.                 user.setImageId( imageEntry.getId() );
  96.                 userDao.update( user );
  97.             }
  98.         } else {
  99.             String albumIdParam = request.getParameter( "albumId" );
  100.             if ( StringUtils.hasText( albumIdParam ) ) {
  101.                 Long albumId = Long.parseLong( albumIdParam );
  102.                 ImageAlbum album = imageAlbumDao.find( albumId );
  103.                 if ( album.getThumbnail() == null ) {
  104.                     album.setThumbnail( imageEntry );
  105.                 }
  106.                 album.add( imageEntry );
  107.                 imageAlbumDao.update( album );
  108.             }
  109.         }
  110.     }
  111.    
  112.     public void setImageService( ImageService imageService ) {
  113.         this.imageService = imageService;
  114.     }
  115.    
  116.     public void setImageAlbumDao( ImageAlbumDao imageAlbumDao ) {
  117.         this.imageAlbumDao = imageAlbumDao;
  118.     }
  119.    
  120.     public void setUserDao( UserDao userDao ) {
  121.         this.userDao = userDao;
  122.     }
  123.  
  124. }
Advertisement
Add Comment
Please, Sign In to add comment