1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package org.openrdf.elmo.example.foaf;
30
31 import java.io.PrintWriter;
32 import java.io.UnsupportedEncodingException;
33 import java.net.URLEncoder;
34 import java.util.Set;
35
36 import javax.persistence.EntityManager;
37 import javax.persistence.PersistenceContext;
38 import javax.servlet.http.HttpServletRequest;
39 import javax.servlet.http.HttpServletResponse;
40 import javax.xml.namespace.QName;
41
42 import org.openrdf.concepts.foaf.Person;
43 import org.springframework.transaction.annotation.Transactional;
44 import org.springframework.web.servlet.ModelAndView;
45 import org.springframework.web.servlet.mvc.Controller;
46
47
48
49
50
51
52
53 @Transactional
54 public class App implements Controller {
55 private static final long serialVersionUID = 1L;
56
57 private static String NS = "http://www.cs.vu.nl/~pmika/socionet#";
58
59 @PersistenceContext
60 private EntityManager manager;
61
62 public ModelAndView handleRequest(HttpServletRequest request,
63 HttpServletResponse response) throws Exception {
64 String id = request.getParameter("id");
65 PrintWriter out = response.getWriter();
66 printPage(id, out);
67 return null;
68 }
69
70 private void printPage(String id, PrintWriter out) {
71 out.println("<html><body><form>");
72 printHeader(out, id);
73 if (id != null) {
74 printTable(out, id);
75 }
76 out.println("</form></body></html>");
77 }
78
79 private void printHeader(PrintWriter out, String id) {
80 out.print("<input name='id' size='64' value='");
81 if (id != null) {
82 out.print(id);
83 }
84 out.println("'/>");
85 out.println("<button type='submit'>List Friends</button>");
86 }
87
88 private void printTable(PrintWriter out, String id) {
89 Person person = manager.find(Person.class, new QName(NS, id));
90 out.print("<h1>");
91 for (Object name : person.getFoafNames()) {
92 out.print(name);
93 }
94 out.println("</h1>");
95 printTable(out, person.getFoafKnows());
96 }
97
98 private void printTable(PrintWriter out, Set<Person> friends) {
99 out.println("<ul>");
100 for (Person person : friends) {
101 out.print("<li>");
102 out.print("<a href='?id=");
103 try {
104 String id = person.getQName().getLocalPart();
105 out.print(URLEncoder.encode(id, "UTF-8"));
106 } catch (UnsupportedEncodingException e) {
107 throw new RuntimeException(e);
108 }
109 out.print("'>");
110 for (Object name : person.getFoafNames()) {
111 out.print(name);
112 }
113 out.print("</a>");
114 out.println("</li>");
115 }
116 out.println("</ul>");
117 }
118
119 }