package org.aksw.sparqlify.web;
import org.aksw.jena_sparql_api.compare.QueryExecutionFactoryCompare;
import org.aksw.jena_sparql_api.core.QueryExecutionFactory;
import org.aksw.jena_sparql_api.http.QueryExecutionFactoryHttp;
import org.aksw.sparqlify.core.sparql.QueryExecutionFactoryExWrapper;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.servlet.ServletContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CompareMain {
/**
* @param exitCode
*/
public static void printHelpAndExit(int exitCode) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp(HttpSparqlEndpoint.class.getName(), cliOptions);
System.exit(exitCode);
}
private static final Logger logger = LoggerFactory
.getLogger(HttpSparqlEndpoint.class);
private static final Options cliOptions = new Options();
/**
* @param args
* the command line arguments
*/
@SuppressWarnings("static-access")
public static void main(String[] args) throws Exception {
/*
PropertyConfigurator.configure("log4j.properties");
LogManager.getLogManager().readConfiguration(
new FileInputStream("jdklog.properties"));
*/
CommandLineParser cliParser = new GnuParser();
cliOptions.addOption("P", "port", true, "Server port");
cliOptions.addOption("C", "context", true, "Context e.g. /sparqlify");
cliOptions.addOption("B", "backlog", true,
"Maximum number of connections");
CommandLine commandLine = cliParser.parse(cliOptions, args);
String serviceUrlA;
String serviceUrlB;
String[] serviceArgs = commandLine.getArgs();
if(serviceArgs.length != 2) {
throw new RuntimeException("Expecting two URL to SPARQL endpoints which to compare as result");
}
serviceUrlA = serviceArgs[0];
serviceUrlB = serviceArgs[1];
// Parsing of command line args
String portStr = commandLine.getOptionValue("P", "3333");
//String backLogStr = commandLine.getOptionValue("B", "100");
//String contextStr = commandLine.getOptionValue("C", "/sparqlify");
int port = Integer.parseInt(portStr);
//int backLog = Integer.parseInt(backLogStr);
QueryExecutionFactory qefA = new QueryExecutionFactoryHttp(serviceUrlA);
QueryExecutionFactory qefB = new QueryExecutionFactoryHttp(serviceUrlB);
QueryExecutionFactory qef = new QueryExecutionFactoryCompare(qefA, qefB, true);
HttpSparqlEndpoint.sparqler = QueryExecutionFactoryExWrapper.wrap(qef);
ServletHolder sh = new ServletHolder(ServletContainer.class);
sh.setInitParameter(
"com.sun.jersey.config.property.resourceConfigClass",
"com.sun.jersey.api.core.PackagesResourceConfig");
sh.setInitParameter("com.sun.jersey.config.property.packages",
"org.aksw.sparqlify.web");
Server server = new Server(port);
ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);
context.addServlet(sh, "/*");
server.start();
}
}