annotate client/digitallibrary/WEB-INF/classes/Relato.java @ 361:8a58a25b6097

changed default image names; added config line for "not found" image
author hertzhaft
date Tue, 06 Dec 2005 18:10:19 +0100
parents 9bd2ae6f5e77
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
211
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
1 import java.io.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
2 import java.net.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
3 import java.util.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
4 import javax.servlet.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
5 import javax.servlet.http.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
6 import javax.xml.transform.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
7 import javax.xml.transform.dom.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
8 import javax.xml.transform.stream.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
9 import org.apache.xerces.parsers.DOMParser;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
10 import org.apache.xpath.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
11 import org.w3c.dom.*;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
12
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
13 public class Relato extends HttpServlet {
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
14
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
15 public final static String FS = System.getProperty("file.separator");
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
16
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
17 // Respond to HTTP GET requests from browsers.
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
18 public void doGet (HttpServletRequest request, HttpServletResponse response)
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
19 throws ServletException, IOException {
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
20
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
21 Hashtable params = new Hashtable();
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
22 Enumeration enum = request.getParameterNames();
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
23 while (enum.hasMoreElements()) {
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
24 String pName = (String) enum.nextElement();
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
25 params.put(pName, request.getParameter(pName));
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
26
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
27 }
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
28 // Set content type for HTML.
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
29 response.setContentType("text/html; charset=UTF-8");
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
30 // Output goes to the response PrintWriter.
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
31 PrintWriter out = response.getWriter();
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
32 DOMParser parser = new DOMParser();
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
33
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
34 try {
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
35 TransformerFactory tFactory = TransformerFactory.newInstance();
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
36 //get the real path for xml and xsl files.
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
37 String ctx = getServletContext().getRealPath("") + FS;
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
38
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
39 parser.parse(ctx + (String) params.get("xml"));
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
40 Document document = parser.getDocument();
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
41
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
42 Element topFrameset = (Element) XPathAPI.selectSingleNode(document, "/relato/frames/frameset");
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
43 topFrameset.setAttribute("onload", "init();");
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
44
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
45 NodeList nodelist = XPathAPI.selectNodeList(document, "//frameset/frame");
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
46 for (int i = 0; i < nodelist.getLength(); i++) {
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
47 Element elem = (Element)nodelist.item(i);
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
48 String name = elem.getAttribute("name");
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
49 if (name != "") {
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
50 if (params.containsKey(name)) {
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
51 String src = (String) params.get(name);
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
52 elem.setAttribute("src", src);
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
53 }
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
54 }
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
55 }
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
56
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
57 Source xmlSource = new DOMSource (document);
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
58 Source xslSource = new StreamSource (new URL("file", "", ctx+"relato/relato.xsl").openStream());
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
59 // Generate the transformer.
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
60 Transformer transformer = tFactory.newTransformer(xslSource);
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
61 // Perform the transformation, sending the output to the response.
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
62 transformer.transform(xmlSource, new StreamResult(out));
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
63 }
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
64
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
65 // If an Exception occurs, return the error to the client.
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
66 catch (Exception e) {
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
67 out.write(e.getMessage());
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
68 e.printStackTrace(out);
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
69 }
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
70
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
71 // Close the PrintWriter.
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
72 out.close();
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
73 }
9bd2ae6f5e77 relato juhuii
luginbue
parents:
diff changeset
74 }