Package de.fuberlin.wiwiss.d2rq.server

Source Code of de.fuberlin.wiwiss.d2rq.server.DirectoryServlet

package de.fuberlin.wiwiss.d2rq.server;

import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.velocity.context.Context;

import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ResIterator;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;

import de.fuberlin.wiwiss.d2rq.ClassMapLister;

public class DirectoryServlet extends HttpServlet {

 
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    D2RServer server = D2RServer.fromServletContext(getServletContext());
    server.checkMappingFileChanged();
    if (request.getPathInfo() == null) {
      response.sendError(404);
      return;
    }
    int limit = server.getConfig().getLimitPerClassMap();
    String classMapName = request.getPathInfo().substring(1);
    Model resourceList = getClassMapLister().classMapInventory(
        classMapName, limit);
    if (resourceList == null) {
      response.sendError(404, "Sorry, class map '" + classMapName + "' not found.");
      return;
    }
    Map<String,String> resources = new TreeMap<String,String>();
    ResIterator subjects = resourceList.listSubjects();
    while (subjects.hasNext()) {
      Resource resource = subjects.nextResource();
      if (!resource.isURIResource()) {
        continue;
      }
      String uri = resource.getURI();
      Statement labelStmt = PageServlet.getBestLabel(resource);
      String label = (labelStmt == null) ? resource.getURI() : labelStmt.getString();
      resources.put(uri, label);
    }
    Map<String,String> classMapLinks = new TreeMap<String,String>();
    for (String name: getClassMapLister().classMapNames()) {
      classMapLinks.put(name, server.baseURI() + "directory/" + name);
    }
    VelocityWrapper velocity = new VelocityWrapper(this, request, response);
    Context context = velocity.getContext();
    context.put("rdf_link", server.baseURI() + "all/" + classMapName);
    context.put("classmap", classMapName);
    context.put("classmap_links", classMapLinks);
    context.put("resources", resources);
    context.put("limit_per_class_map", limit > 0 ? limit : null);
    velocity.mergeTemplateXHTML("directory_page.vm");
  }

  private ClassMapLister getClassMapLister() {
    return D2RServer.retrieveSystemLoader(getServletContext()).getClassMapLister();
  }

  private static final long serialVersionUID = 8398973058486421941L;
}
TOP

Related Classes of de.fuberlin.wiwiss.d2rq.server.DirectoryServlet

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.