annotate client/digitallibrary/WEB-INF/classes/Relato.java @ 313:152ad1e1ca27

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