Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- */
- package org.project.core.upload.impl;
- import java.io.IOException;
- import javax.activation.MimetypesFileTypeMap;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.project.core.dao.ImageAlbumDao;
- import org.project.core.dao.UserDao;
- import org.project.core.domain.ImageAlbum;
- import org.project.core.domain.ImageEntry;
- import org.project.core.domain.UserAccount;
- import org.project.core.services.ImageService;
- import org.project.core.upload.ImageUploadRequestService;
- import org.springframework.util.StringUtils;
- /**
- * Service handling images which were uploaded over AjaxImageUploadPanel
- *
- * @author zvilutis
- */
- public class AjaxImageUploadRequestServiceImpl implements ImageUploadRequestService {
- private static final Logger log = LoggerFactory.getLogger( AjaxImageUploadRequestServiceImpl.class );
- private static final MimetypesFileTypeMap MIME_TYPES_MAP = new MimetypesFileTypeMap();
- protected ImageService imageService;
- protected ImageAlbumDao imageAlbumDao;
- protected UserDao userDao;
- /* (non-Javadoc)
- * @see org.project.core.upload.ImageUploadRequestService#processImageUploadRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
- public void processImageUploadRequest( HttpServletRequest request, HttpServletResponse response ) throws IOException {
- try {
- if ( request.getHeader( "X-File-Name" ) != null ) {
- String filename = request.getHeader( "X-File-Name" );
- final ImageEntry imageEntry = new ImageEntry();
- imageEntry.setContentType( MIME_TYPES_MAP.getContentType( filename ) );
- imageEntry.setName( filename );
- imageService.save( imageEntry, request.getInputStream(), 600 );
- Long imageId = imageEntry.getId();
- // returns ok to swfupload. Otherwise swfupload will be at 100% for ever
- if ( imageId != null ) {
- doWithImage( request, imageEntry );
- response.setStatus( HttpServletResponse.SC_OK );
- StringBuilder sb = new StringBuilder( "{" )
- .append( "success: true" )
- .append( ", imageId: " ).append( imageEntry.getId() )
- .append( "}" );
- response.getWriter().write( sb.toString() );
- response.getWriter().flush();
- return;
- }
- }
- } catch ( Exception e ) {
- final String message = "Image upload failed : " + e.getMessage();
- response.sendError( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message );
- response.getOutputStream().println( message );
- log.error( message, e );
- return;
- }
- response.getWriter().write( "{success: false}" );
- response.getWriter().flush();
- }
- /**
- * Implement the image usage here. Whether it is adding it to a gallery or setting as a user profile photo.
- *
- * @param request
- * @param imageId
- */
- protected void doWithImage( HttpServletRequest request, ImageEntry imageEntry ) {
- String action = request.getParameter( "action" );
- if ( "setProfilePhoto".equals( action ) ) {
- String userIdParam = request.getParameter( "userId" );
- if ( StringUtils.hasText( userIdParam ) ) {
- Long userId = Long.parseLong( userIdParam );
- UserAccount user = userDao.find( userId );
- user.setImageId( imageEntry.getId() );
- userDao.update( user );
- }
- } else {
- String albumIdParam = request.getParameter( "albumId" );
- if ( StringUtils.hasText( albumIdParam ) ) {
- Long albumId = Long.parseLong( albumIdParam );
- ImageAlbum album = imageAlbumDao.find( albumId );
- if ( album.getThumbnail() == null ) {
- album.setThumbnail( imageEntry );
- }
- album.add( imageEntry );
- imageAlbumDao.update( album );
- }
- }
- }
- public void setImageService( ImageService imageService ) {
- this.imageService = imageService;
- }
- public void setImageAlbumDao( ImageAlbumDao imageAlbumDao ) {
- this.imageAlbumDao = imageAlbumDao;
- }
- public void setUserDao( UserDao userDao ) {
- this.userDao = userDao;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment