/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 2007.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.http.webclient.repository.explore;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import info.aduna.iteration.CloseableIteration;
import info.aduna.text.ToStringComparator;
import org.openrdf.http.webclient.SessionKeys;
import org.openrdf.model.Namespace;
import org.openrdf.repository.RepositoryConnection;
import org.openrdf.repository.RepositoryException;
import org.openrdf.repository.http.HTTPRepository;
/**
*
* @author Herko ter Horst
*/
public class ExploreNamespacesController implements Controller {
final Logger logger = LoggerFactory.getLogger(this.getClass());
private String view;
public String getView() {
return view;
}
public void setView(String view) {
this.view = view;
}
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
ModelAndView result = new ModelAndView();
result.setViewName(view);
Map<String, Object> model = new HashMap<String, Object>();
List<Namespace> namespaces = getNamespaces(request);
Collections.sort(namespaces, ToStringComparator.getInstance());
model.put("namespaces", namespaces);
result.addAllObjects(model);
return result;
}
private List<Namespace> getNamespaces(HttpServletRequest request) {
List<Namespace> result = null;
HTTPRepository repo = (HTTPRepository)request.getSession().getAttribute(SessionKeys.REPOSITORY_KEY);
RepositoryConnection conn = null;
try {
conn = repo.getConnection();
CloseableIteration<? extends Namespace, RepositoryException> namespaces = conn.getNamespaces();
result = new ArrayList<Namespace>();
while (namespaces.hasNext()) {
result.add(namespaces.next());
}
}
catch (RepositoryException e) {
logger.warn("Unable to retrieve namespaces", e);
}
finally {
if (conn != null) {
try {
conn.close();
}
catch (RepositoryException e) {
logger.debug("Unable to close connection...", e);
}
}
}
return result;
}
}