Package net.sf.jportlet.portlets.bookmark

Source Code of net.sf.jportlet.portlets.bookmark.BookmarkActionListener

/*
* Created on 08-May-2003
*/
package net.sf.jportlet.portlets.bookmark;

import java.net.MalformedURLException;
import java.net.URL;

import net.sf.jportlet.portlet.Portlet;
import net.sf.jportlet.portlet.PortletException;
import net.sf.jportlet.portlet.PortletRequest;
import net.sf.jportlet.portlet.PortletResponse;
import net.sf.jportlet.portlet.PortletURI;
import net.sf.jportlet.portlet.PortletWindow;
import net.sf.jportlet.portlet.User;
import net.sf.jportlet.portlet.event.ActionEvent;
import net.sf.jportlet.portlet.event.ActionListener;
import net.sf.jportlet.portlets.ObjectNotFoundException;
import net.sf.jportlet.portlets.ValidationHelper;
import net.sf.jportlet.portlets.bookmark.impl.BookmarkImpl;


/**
* @author <a href="mailto:tchbansi@sourceforge.net">Herve Tchepannou</a>
*/
public class BookmarkActionListener
    implements ActionListener
{
    //~ Methods ----------------------------------------------------------------

    /**
     * @see net.sf.jportlet.portlet.event.ActionListener#actionPerformed(net.sf.jportlet.portlet.event.ActionEvent)
     */
    public void actionPerformed( ActionEvent event )
        throws PortletException
    {
        String action = event.getAction(  );

        if ( ActionEvent.ACTION_EDIT.equals( action ) )
        {
            PortletRequest request = event.getPortletRequest(  );
            String         command = request.getParameter( "command" );
            if ( "delete".equals( command ) )
            {
                doDelete( event, request );
            }
            else if ( "new".equals( command ) )
            {
                doNew( event, request );
            }
            else if ( "edit".equals( command ) )
            {
                doEditBookmark( event, request );
            }
            else if ( "save".equals( command ) )
            {
                doSave( event, request );
            }
            else if ( "cancel".equals( command ) )
            {
                doCancel( event, request );
            }
            else
            {
                throw new PortletException( "Invalid command: " + action + "/" + command );
            }
           
            PortletResponse response = event.getPortletResponse();
            PortletURI nextURI = response.createURI(Portlet.Mode.EDIT, PortletWindow.State.MAXIMIZED );
            event.setNextURI( nextURI );
        }
        else
        {
            throw new PortletException( "Invalid action: " + action );
        }
    }

    private void doCancel( ActionEvent    event,
                           PortletRequest request )
    {
    }

    private void doDelete( ActionEvent    event,
                           PortletRequest request )
        throws PortletException
    {
        String ids[] = request.getParameterValues( "id" );
        if ( ( ids != null ) && ( ids.length > 0 ) )
        {
            getBookmarkManager( event ).deleteBookmarks( ids );
            notifyDataChanged(event);
        }
        else
        {
            ValidationHelper.addError( "no_selection", event);
        }
    }

    private void doEditBookmark( ActionEvent    event,
                                 PortletRequest request )
        throws PortletException
    {
        String id = request.getParameter( "id" );
        if ( id != null )
        {
            try
            {
                Bookmark bookmark = getBookmarkManager( event ).findBookmark( id );
                request.setAttribute( "bookmark", bookmark );
            }
            catch ( ObjectNotFoundException e )
            {
                throw new PortletException( "Bookmark#" + id + " not found" );
            }
        }
        else
        {
            ValidationHelper.addError( "no_selection", event);
        }       
    }

    private void doNew( ActionEvent    event,
                        PortletRequest request )
    {
        request.setAttribute( "bookmark", new BookmarkImpl( "", "", "", "", null ) );
    }

    private void doSave( ActionEvent    event,
                         PortletRequest request )
        throws PortletException
    {
        String id = request.getParameter( "id" ).trim(  );
        String title = request.getParameter( "title" ).trim(  );
        String description = request.getParameter( "description" ).trim(  );
        String url = request.getParameter( "url" ).trim(  );
        User   user = request.getUser(  );

        if ( !validate( title, url, description, event ) )
        {
            BookmarkImpl bookmark = new BookmarkImpl( id, title, url, description, user );
            request.setAttribute( "bookmark", bookmark );
        }
        else
        {
            BookmarkManager mgr = getBookmarkManager( event );
            try
            {
                if ( id.length(  ) == 0 )
                {
                    mgr.createBookmark( title, new URL( url ), description, user );
                }
                else
                {
                    mgr.updateBookmark( id, title, new URL( url ), description );
                }

        notifyDataChanged(event);
            }
            catch ( MalformedURLException e )
            {
                throw new PortletException( "Bad URL: " + url, e );
            }
            catch ( ObjectNotFoundException e )
            {
                throw new PortletException( "The bookmark you are tring to update no longer exist", e );
            }
        }
    }

    private BookmarkManager getBookmarkManager( ActionEvent event )
        throws PortletException
    {
        return ( ( BookmarkPortlet ) event.getPortlet(  ) ).createBookmarkManager(  );
    }

    private boolean validate( String      title,
                              String      url,
                              String      description,
                              ActionEvent event )
    {
        ValidationHelper.assertNotEmpty( title, "error_empty_title", event );
        ValidationHelper.assertNotEmpty( url, "error_empty_url", event );
        ValidationHelper.assertURL( url, "error_malformed_url", event );
        ValidationHelper.assertLength( description, 255, "error_description_length", event );

        return !event.hasErrors(  );
    }
   
    private void notifyDataChanged( ActionEvent event )
    {
    ( ( BookmarkPortlet ) event.getPortlet(  ) ).dataChanged();
    }
}
TOP

Related Classes of net.sf.jportlet.portlets.bookmark.BookmarkActionListener

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.