/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2007.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.http.webclient;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import info.aduna.webapp.navigation.NavigationModel;
import org.openrdf.http.webclient.server.Server;
import org.openrdf.repository.manager.RepositoryInfo;
/**
* @author Herko ter Horst
*/
public class NavigationRulesHandlerInterceptor implements HandlerInterceptor {
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception
{
// nop
}
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception
{
// nop
}
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2)
throws Exception
{
HttpSession session = request.getSession(true);
NavigationModel navigationModel = (NavigationModel)session.getAttribute(NavigationModel.NAVIGATION_MODEL_KEY);
Server server = (Server)session.getAttribute(SessionKeys.SERVER_KEY);
RepositoryInfo repoInfo = (RepositoryInfo)session.getAttribute(SessionKeys.REPOSITORY_INFO_KEY);
navigationModel.getGroup("server").getView("overview").setEnabled(server != null);
navigationModel.getGroup("repository").setEnabled(server != null && repoInfo != null);
navigationModel.getGroup("repository").getGroup("modify").setEnabled(repoInfo != null && repoInfo.isWritable());
navigationModel.getGroup("repository").getGroup("query").setEnabled(repoInfo != null && repoInfo.isReadable());
navigationModel.getGroup("repository").getGroup("explore").setEnabled(repoInfo != null && repoInfo.isReadable());
navigationModel.getGroup("repository").getGroup("extract").setEnabled(repoInfo != null && repoInfo.isReadable());
return true;
}
}