edu.cornell.mannlib.vitro.webapp.controller.SparqlQueryBuilderServlet.java Source code

Java tutorial

Introduction

Here is the source code for edu.cornell.mannlib.vitro.webapp.controller.SparqlQueryBuilderServlet.java

Source

/* $This file is distributed under the terms of the license in /doc/license.txt$ */

package edu.cornell.mannlib.vitro.webapp.controller;

import java.io.IOException;
import java.util.HashMap;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.hp.hpl.jena.query.Syntax;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.sparql.resultset.ResultsFormat;

import edu.cornell.mannlib.vedit.controller.BaseEditController;
import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission;

/**
 *  This servlet works as a RequestDispatcher to direct to the sparl query builder page.
 *  @author yuysun
 */
public class SparqlQueryBuilderServlet extends BaseEditController {

    private static final Log log = LogFactory.getLog(SparqlQueryBuilderServlet.class.getName());

    protected static final Syntax SYNTAX = Syntax.syntaxARQ;

    protected static HashMap<String, ResultsFormat> formatSymbols = new HashMap<String, ResultsFormat>();
    static {
        formatSymbols.put(ResultsFormat.FMT_RS_XML.getSymbol(), ResultsFormat.FMT_RS_XML);
        formatSymbols.put(ResultsFormat.FMT_RDF_XML.getSymbol(), ResultsFormat.FMT_RDF_XML);
        formatSymbols.put(ResultsFormat.FMT_RDF_N3.getSymbol(), ResultsFormat.FMT_RDF_N3);
        formatSymbols.put(ResultsFormat.FMT_TEXT.getSymbol(), ResultsFormat.FMT_TEXT);
        formatSymbols.put(ResultsFormat.FMT_RS_JSON.getSymbol(), ResultsFormat.FMT_RS_JSON);
        formatSymbols.put("vitro:csv", null);
    }

    protected static HashMap<String, String> rdfFormatSymbols = new HashMap<String, String>();
    static {
        rdfFormatSymbols.put("RDF/XML", "application/rdf+xml");
        rdfFormatSymbols.put("RDF/XML-ABBREV", "application/rdf+xml");
        rdfFormatSymbols.put("N3", "text/n3");
        rdfFormatSymbols.put("N-TRIPLE", "text/plain");
        rdfFormatSymbols.put("TTL", "application/x-turtle");
    }

    protected static HashMap<String, String> mimeTypes = new HashMap<String, String>();
    static {
        mimeTypes.put(ResultsFormat.FMT_RS_XML.getSymbol(), "text/xml");
        mimeTypes.put(ResultsFormat.FMT_RDF_XML.getSymbol(), "application/rdf+xml");
        mimeTypes.put(ResultsFormat.FMT_RDF_N3.getSymbol(), "text/plain");
        mimeTypes.put(ResultsFormat.FMT_TEXT.getSymbol(), "text/plain");
        mimeTypes.put(ResultsFormat.FMT_RS_JSON.getSymbol(), "application/javascript");
        mimeTypes.put("vitro:csv", "text/csv");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        if (!isAuthorizedToDisplayPage(request, response, SimplePermission.USE_ADVANCED_DATA_TOOLS_PAGES.ACTION)) {
            return;
        }

        VitroRequest vreq = new VitroRequest(request);

        Model model = vreq.getJenaOntModel(); // getModel()
        if (model == null) {
            doNoModelInContext(request, response);
            return;
        }

        doHelp(request, response);
        return;
    }

    private void doNoModelInContext(HttpServletRequest request, HttpServletResponse res) {
        try {
            res.setStatus(HttpServletResponse.SC_NOT_IMPLEMENTED);
            ServletOutputStream sos = res.getOutputStream();
            sos.println("<html><body>this service is not supporeted by the current "
                    + "webapp configuration. A jena model is required in the servlet context.</body></html>");
        } catch (IOException e) {
            log.error("Could not write to ServletOutputStream");
        }
    }

    private void doHelp(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        req.setAttribute("title", "SPARQL Query Builder");
        req.setAttribute("bodyJsp", "/admin/sparql.jsp");

        RequestDispatcher rd = req.getRequestDispatcher("/" + Controllers.BASIC_JSP);
        rd.forward(req, res);
    }
}