/** * This method retrieves an xml document from the database based on its resource identifier. The * document is returned as an org.w3c.dom.Document. * * @param collection The name of the collection to look for the document. * @param resourceId The resource identifier of the document to be retrieved. * @param username The identifier of the user calling the method used for authentication. * @param password The password of the user calling the method used for authentication. * @return The xml document retrieved as an org.w3c.dom.Document. */ public Document retrieveDocument( String collection, String resourceId, String username, String password) { Document doc = null; try { // initialize database driver Class cl = Class.forName(_driver); Database database = (Database) cl.newInstance(); DatabaseManager.registerDatabase(database); // get the collection Collection col = DatabaseManager.getCollection(_URI + collection, username, password); col.setProperty(OutputKeys.INDENT, "no"); XMLResource res = (XMLResource) col.getResource(resourceId); if (res == null) System.out.println("document not found!"); else { doc = (Document) (res.getContentAsDOM()).getOwnerDocument(); } } catch (Exception e) { e.printStackTrace(); } return doc; }
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String URI = "xmldb:exist://localhost:8444/exist/xmlrpc"; String driver = "org.exist.xmldb.DatabaseImpl"; XMLResource res = null; Node resNode = null; Document doc = null; String path = getServletContext().getRealPath("/"); String XSLFileName = path + "/Slideshow.xsl"; File XslFile = new File(XSLFileName); String name; String rating; try { name = request.getParameter("name"); rating = request.getParameter("rating"); if (name == null) { name = ""; } if (rating == null) { rating = ""; } } catch (Exception e) { name = ""; rating = ""; } try { Class cl = Class.forName(driver); Database database = (Database) cl.newInstance(); DatabaseManager.registerDatabase(database); // get the collection Collection col = DatabaseManager.getCollection(URI + "/db/Project", "admin", "password"); XQueryService service = (XQueryService) col.getService("XQueryService", "1.0"); XQueryService another = (XQueryService) col.getService("XQueryService", "1.0"); service.setProperty("indent", "yes"); another.setProperty("indent", "yes"); String queryString = ""; if (!(rating.equals(""))) { service.declareVariable("rating", ""); queryString = "for $rating in //app//name[text()='" + name + "']/../rating " + "return update replace $rating with <rating>" + rating + "</rating>"; service.query(queryString); } col.setProperty(OutputKeys.INDENT, "no"); res = (XMLResource) col.getResource("Review.xml"); resNode = res.getContentAsDOM(); doc = (Document) resNode; } catch (Exception e) { System.err.println("Error Document: " + e.getMessage()); } DOMSource origDocSource = new DOMSource(doc); try { TransformerFactory transformerFactory = TransformerFactory.newInstance(); StreamSource stylesheet = new StreamSource(XslFile); Transformer transformer = transformerFactory.newTransformer(stylesheet); NodeList appNodes = doc.getElementsByTagName("name"); int numEvent = appNodes.getLength(); String prev; String next; for (int i = 0; i < numEvent; i++) { Node eventNode = appNodes.item(i); NodeList eventNodeListChildren = eventNode.getChildNodes(); Node eventTextNode = eventNodeListChildren.item(0); String appname = eventTextNode.getNodeValue(); if (name.equals(appname)) { if (i != 0) { prev = appNodes.item(i - 1).getChildNodes().item(0).getNodeValue(); } else { prev = appNodes.item(numEvent - 1).getChildNodes().item(0).getNodeValue(); } if (i != (numEvent - 1)) { next = appNodes.item(i + 1).getChildNodes().item(0).getNodeValue(); } else { next = appNodes.item(0).getChildNodes().item(0).getNodeValue(); } transformer.setParameter("app_name", appname); transformer.setParameter("prev_name", prev); transformer.setParameter("next_name", next); transformer.transform(origDocSource, new StreamResult(out)); } } } catch (Exception e) { out.println("Exception transformation :" + e.getMessage()); e.printStackTrace(out); } finally { out.close(); } }