/* * Copyright Aduna (http://www.aduna-software.com/) (c) 2007. * * Licensed under the Aduna BSD-style license. */ package org.openrdf.http.server.repository.size; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.ApplicationContextException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; import info.aduna.webapp.views.SimpleResponseView; import org.openrdf.http.protocol.Protocol; import org.openrdf.http.server.ServerHTTPException; import org.openrdf.http.server.ProtocolUtil; import org.openrdf.http.server.repository.RepositoryInterceptor; import org.openrdf.model.Resource; import org.openrdf.model.ValueFactory; import org.openrdf.repository.Repository; import org.openrdf.repository.RepositoryConnection; import org.openrdf.repository.RepositoryException; /** * Handles requests for the size of (set of contexts in) a repository. * * @author Herko ter Horst */ public class SizeController extends AbstractController { public SizeController() throws ApplicationContextException { setSupportedMethods(new String[] { METHOD_GET }); } @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ProtocolUtil.logRequestParameters(request); Repository repository = RepositoryInterceptor.getRepository(request); RepositoryConnection repositoryCon = RepositoryInterceptor.getRepositoryConnection(request); ValueFactory vf = repository.getValueFactory(); Resource[] contexts = ProtocolUtil.parseContextParam(request, Protocol.CONTEXT_PARAM_NAME, vf); long size = -1; try { size = repositoryCon.size(contexts); } catch (RepositoryException e) { throw new ServerHTTPException("Repository error: " + e.getMessage(), e); } Map<String, Object> model = new HashMap<String, Object>(); model.put(SimpleResponseView.CONTENT_KEY, String.valueOf(size)); return new ModelAndView(SimpleResponseView.getInstance(), model); } }