/*
* Created on May 7, 2003
*/
package net.sf.jportlet.portlets.bookmark;
import java.io.IOException;
import java.util.Collection;
import net.sf.jportlet.portlet.Portlet;
import net.sf.jportlet.portlet.PortletAdapter;
import net.sf.jportlet.portlet.PortletConfig;
import net.sf.jportlet.portlet.PortletException;
import net.sf.jportlet.portlet.PortletRequest;
import net.sf.jportlet.portlet.PortletResponse;
import net.sf.jportlet.portlet.PortletWindow;
import net.sf.jportlet.portlets.bookmark.impl.BookmarkImpl;
import net.sf.jportlet.portlets.bookmark.impl.BookmarkManagerImpl;
import net.sf.jportlet.service.hibernate.HibernateService;
/**
* This portlet allow user to manage their bookmarks.
* This portlet uses the {@link HibernateService}.
*
* @author <a href="mailto:tchbansi@sourceforge.net">Herve Tchepannou</a>
*/
public class BookmarkPortlet
extends PortletAdapter
{
//~ Static fields/initializers ---------------------------------------------
public static final String CONFIG_MAX_ITEMS = "max.items";
public static final int DEFAULT_MAX_ITEMS = 10;
//~ Instance fields --------------------------------------------------------
private long _lastChanged;
private int _maxItems;
//~ Methods ----------------------------------------------------------------
public BookmarkManager createBookmarkManager( )
throws PortletException
{
return new BookmarkManagerImpl( getPortletContext( ) );
}
/**
* This function is called when the user's bookmarks are changed
*/
public void dataChanged( )
{
_lastChanged = System.currentTimeMillis( );
}
/**
* @see net.sf.jportlet.portlet.PortletAdapter#doEdit(net.sf.jportlet.portlet.PortletRequest, net.sf.jportlet.portlet.PortletResponse)
*/
protected void doEdit( PortletRequest request,
PortletResponse response )
throws PortletException,
IOException
{
if ( request.getAttribute( "bookmark" ) == null )
{
/* load the bookmarks */
Collection bookmarks = createBookmarkManager( ).findBookmarks( request.getUser( ) );
request.setAttribute( "bookmarks", bookmarks );
/* render */
include( "edit.vm", request, response );
}
else
{
include( "edit_bookmark.vm", request, response );
}
}
/**
* @see net.sf.jportlet.portlet.PortletAdapter#doView(net.sf.jportlet.portlet.PortletRequest, net.sf.jportlet.portlet.PortletResponse)
*/
protected void doView( PortletRequest request,
PortletResponse response )
throws PortletException,
IOException
{
int maxitems = ( request.getWindow( ).getState( ) == PortletWindow.State.NORMAL )
? _maxItems
: ( -1 );
/* load the data and put them into the request */
Collection bookmarks = createBookmarkManager( ).findBookmarks( request.getUser( ), maxitems );
request.setAttribute( "bookmarks", bookmarks );
/* render */
include( "view.vm", request, response );
}
/**
* @see net.sf.jportlet.portlet.Portlet#getLastModified(net.sf.jportlet.portlet.PortletRequest)
*/
public long getLastModified( PortletRequest request )
{
return ( request.getMode( ) == Portlet.Mode.VIEW )
? _lastChanged
: 0;
}
/**
* @see net.sf.jportlet.portlet.Portlet#init(net.sf.jportlet.portlet.PortletConfig)
*/
public void init( PortletConfig portletConfig )
throws PortletException
{
super.init( portletConfig );
/* Init-params */
String maxitems = portletConfig.getInitParameter( CONFIG_MAX_ITEMS );
try
{
_maxItems = ( maxitems != null )
? Integer.parseInt( maxitems )
: DEFAULT_MAX_ITEMS;
}
catch ( Exception e )
{
getLog( ).warn( CONFIG_MAX_ITEMS + "=" + maxitems, e );
}
/* Initialize persistence */
HibernateService hib = ( HibernateService ) getPortletContext( ).getService( HibernateService.NAME );
hib.storeClass( BookmarkImpl.class );
}
}