/RDFstruct/src/foo/dbgroup/spark/LunchSite.java

https://github.com/linkTDP/RDFstruct · Java · 181 lines · 119 code · 50 blank · 12 comment · 3 complexity · d3261545616680c0c76e0008bca09064 MD5 · raw file

  1. package foo.dbgroup.spark;
  2. import static spark.Spark.get;
  3. import static spark.Spark.setPort;
  4. import java.io.IOException;
  5. import java.io.StringWriter;
  6. import java.io.Writer;
  7. import java.net.UnknownHostException;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import org.bson.types.ObjectId;
  11. import spark.Request;
  12. import spark.Response;
  13. import spark.Route;
  14. import com.google.code.morphia.Morphia;
  15. import com.google.code.morphia.logging.MorphiaLoggerFactory;
  16. import com.google.code.morphia.logging.slf4j.SLF4JLogrImplFactory;
  17. import com.mongodb.DB;
  18. import com.mongodb.Mongo;
  19. import com.mongodb.MongoClient;
  20. import com.mongodb.MongoClientURI;
  21. import foo.dbgroup.mongo.dao.DatasetResultDAO;
  22. import foo.dbgroup.mongo.dao.EndpointSparqlDAO;
  23. import foo.dbgroup.mongo.dao.GenericQueryDAO;
  24. import foo.dbgroup.mongo.entity.DatasetResult;
  25. import foo.dbgroup.mongo.entity.EndPointSparql;
  26. import freemarker.template.Configuration;
  27. import freemarker.template.SimpleHash;
  28. import freemarker.template.Template;
  29. import freemarker.template.TemplateException;
  30. public class LunchSite {
  31. private final Configuration cfg;
  32. private final DatasetResultDAO daDao;
  33. private final EndpointSparqlDAO endDao;
  34. private final GenericQueryDAO queryDao;
  35. public static void main(String[] args) throws IOException {
  36. if (args.length == 0) {
  37. new LunchSite("mongodb://localhost");
  38. }
  39. else {
  40. new LunchSite(args[0]);
  41. }
  42. }
  43. public LunchSite(String mongoURIString) throws IOException {
  44. // final MongoClient mongoClient = new MongoClient(new MongoClientURI(mongoURIString));
  45. // final DB blogDatabase = mongoClient.getDB("blog");
  46. MorphiaLoggerFactory.registerLogger(SLF4JLogrImplFactory.class);
  47. Mongo mongo= null;
  48. try {
  49. mongo = new Mongo();
  50. } catch (UnknownHostException e1) {
  51. // TODO Auto-generated catch block
  52. e1.printStackTrace();
  53. }
  54. Morphia morphia = new Morphia();
  55. daDao=new DatasetResultDAO(mongo,morphia);
  56. endDao= new EndpointSparqlDAO(mongo, morphia);
  57. queryDao= new GenericQueryDAO(mongo, morphia);
  58. // userDAO = new UserDAO(blogDatabase);
  59. // sessionDAO = new SessionDAO(blogDatabase);
  60. cfg = createFreemarkerConfiguration();
  61. setPort(8082);
  62. initializeRoutes();
  63. }
  64. abstract class FreemarkerBasedRoute extends Route {
  65. final Template template;
  66. /**
  67. * Constructor
  68. *
  69. * @param path The route path which is used for matching. (e.g. /hello, users/:name)
  70. */
  71. protected FreemarkerBasedRoute(final String path, final String templateName) throws IOException {
  72. super(path);
  73. template = cfg.getTemplate(templateName);
  74. }
  75. @Override
  76. public Object handle(Request request, Response response) {
  77. StringWriter writer = new StringWriter();
  78. try {
  79. doHandle(request, response, writer);
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. response.redirect("/internal_error");
  83. }
  84. return writer;
  85. }
  86. protected abstract void doHandle(final Request request, final Response response, final Writer writer)
  87. throws IOException, TemplateException;
  88. }
  89. private void initializeRoutes() throws IOException {
  90. // this is the blog home page
  91. get(new FreemarkerBasedRoute("/","index.ftl"){
  92. @Override
  93. protected void doHandle(Request request, Response response,
  94. Writer writer) throws IOException, TemplateException {
  95. List<EndPointSparql> datasets=endDao.find().asList();
  96. SimpleHash root = new SimpleHash();
  97. root.put("datasets",datasets);
  98. template.process(root, writer);
  99. }
  100. });
  101. get(new FreemarkerBasedRoute("/internal_error", "error_template.ftl") {
  102. @Override
  103. protected void doHandle(Request request, Response response, Writer writer) throws IOException, TemplateException {
  104. SimpleHash root = new SimpleHash();
  105. root.put("error", "System has encountered an error.");
  106. template.process(root, writer);
  107. }
  108. });
  109. get(new FreemarkerBasedRoute("/result/:id","result.ftl"){
  110. @Override
  111. protected void doHandle(Request request, Response response,
  112. Writer writer) throws IOException, TemplateException {
  113. String id = request.params(":id");
  114. Integer o=new Integer(Integer.parseInt(id));
  115. EndPointSparql end=endDao.findOne("id", o);
  116. DatasetResult d=daDao.findOne("uri", end.getUri());
  117. SimpleHash root = new SimpleHash();
  118. root.put("queryResult", d.getQueryResult());
  119. // root.put("queryResult", d.getQueryResultNoSchema());
  120. root.put("name", d.getName());
  121. root.put("uri", d.getUri());
  122. template.process(root, writer);
  123. }
  124. });
  125. }
  126. private Configuration createFreemarkerConfiguration() {
  127. Configuration retVal = new Configuration();
  128. retVal.setClassForTemplateLoading(LunchSite.class, "/freemarker");
  129. return retVal;
  130. }
  131. }