List of usage examples for org.jdom2.output XMLOutputter XMLOutputter
public XMLOutputter()
XMLOutputter
with a default Format and XMLOutputProcessor . From source file:de.openVJJ.basic.ProjectConf.java
License:Open Source License
/** * Saves the Project//from w ww. j av a2 s . c o m * @param fileName the file the Project is saved to */ public static void save(String fileName) { Element rootElement = new Element(ROOT_ELEMET_NAME); // Element gpuElement = new Element(GPU_ELEMENT_NAME); // gpuElement.setAttribute("activ", String.valueOf(useGPU)); // rootElement.addContent(gpuElement); Element baseModuleElement = new Element(ELEMET_NAME_BASE_MODULE); rootElement.addContent(baseModuleElement); baseModule.getConfig(baseModuleElement); try { FileWriter fileWriter = new FileWriter(fileName); new XMLOutputter().output(new Document(rootElement), fileWriter); } catch (IOException e) { e.printStackTrace(); } }
From source file:de.openVJJ.InputComponents.java
License:Open Source License
public static void save(String fileName) { Element rootElement = new Element(ROOT_ELEMET_NAME); Element gpuElement = new Element(GPU_ELEMENT_NAME); gpuElement.setAttribute("activ", String.valueOf(useGPU)); rootElement.addContent(gpuElement);/* w ww. ja v a2 s . c o m*/ Element compnetsElement = new Element(COMPONENTS_ELEMENT_NAME); for (ImagePublisher imagePublisher : imagePublishers) { compnetsElement.addContent(componetToXML(imagePublisher)); } rootElement.addContent(compnetsElement); try { FileWriter fileWriter = new FileWriter(fileName); new XMLOutputter().output(new Document(rootElement), fileWriter); } catch (IOException e) { e.printStackTrace(); } }
From source file:de.rallye.api.LandingPage.java
License:Open Source License
@GET @Produces("image/png") @Path("timetable/{groupsCode}") public StreamingOutput getTimeTable(@PathParam("groupsCode") final String groupsCode) { StreamingOutput stream = new StreamingOutput() { @Override//w w w . j a va 2 s. co m public void write(OutputStream os) throws IOException, WebApplicationException { try { Document doc = new SAXBuilder() .build(StadtRallye.class.getResourceAsStream("timetable/stundenplan.xml")); replaceKgRooms(doc, groupsCode); Source xmlFile = new JDOMSource(doc); final JDOMResult htmlResult = new JDOMResult(); Transformer transformer = TransformerFactory.newInstance().newTransformer( new StreamSource(StadtRallye.class.getResourceAsStream("timetable/stundenplan.xsl"))); transformer.transform(xmlFile, htmlResult); PipedInputStream svgIn = new PipedInputStream(); final PipedOutputStream svgOut = new PipedOutputStream(svgIn); new Thread(new Runnable() { public void run() { XMLOutputter xmlOutputter = new XMLOutputter(); try { xmlOutputter.output(htmlResult.getDocument(), svgOut); svgOut.close(); } catch (IOException e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } } }).start(); // Create a PNG transcoder PNGTranscoder t = new PNGTranscoder(); // Create the transcoder input. //String svgURI = new File(args[0]).toURL().toString(); TranscoderInput input = new TranscoderInput(svgIn); // Create the transcoder output. TranscoderOutput output = new TranscoderOutput(os); SVGConverter x; // Save the image. t.transcode(input, output); svgIn.close(); // Flush and close the stream. os.flush(); os.close(); } catch (JDOMException e) { e.printStackTrace(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } catch (TranscoderException e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } } }; return stream; //return StadtRallye.class.getResourceAsStream("timetable/stundenplan.xml"); }
From source file:de.smartics.maven.alias.domain.AliasesProcessor.java
License:Apache License
private String readComment(final Element root) { final Element commentElement = root.getChild("comment", nsAlias); if (commentElement != null) { final XMLOutputter xout = new XMLOutputter(); final String comment = xout.outputElementContentString(commentElement); if (StringUtils.isNotBlank(comment)) { return comment; }/*from w ww. j av a 2 s .c o m*/ } return null; }
From source file:de.smartics.maven.plugin.jboss.modules.domain.ModuleBuilder.java
License:Apache License
private void createModuleXml(final File moduleFolder) throws IOException { final ModuleXmlBuilder xml = new ModuleXmlBuilder(context, module, dependencies); final XMLOutputter outputter = new XMLOutputter(); outputter.setFormat(Format.getPrettyFormat()); final File file = new File(moduleFolder, "module.xml"); OutputStream out = null;// ww w . j av a2 s. c o m try { out = new BufferedOutputStream(new FileOutputStream(file)); final Document document = xml.build(); outputter.output(document, out); } finally { IOUtils.closeQuietly(out); } }
From source file:de.tor.tribes.util.xml.JDomUtils.java
License:Apache License
public static void saveDocument(Document pDoc, String filename) { try {/*from w w w .j av a 2s .co m*/ XMLOutputter xmlOutput = new XMLOutputter(); // display nice nice xmlOutput.setFormat(Format.getPrettyFormat()); xmlOutput.output(pDoc, new FileWriter(filename)); } catch (Exception e) { logger.warn("Unable to save document", e); } }
From source file:de.tor.tribes.util.xml.JDomUtils.java
License:Apache License
public static String toShortString(Document pDoc) { XMLOutputter xmlOutput = new XMLOutputter(); // display nice nice xmlOutput.setFormat(Format.getCompactFormat()); return xmlOutput.outputString(pDoc); }
From source file:de.tu_dortmund.ub.api.daia.DaiaEndpoint.java
License:Open Source License
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ips = request.getHeader("X-Forwarded-For"); boolean isTUintern = false; boolean isUBintern = false; boolean is52bIBA = false; try {//from w w w. j a v a 2s .c o m if (ips != null) { String[] ranges = config.getProperty("service.iprange.tu").split("\\|"); for (String range : ranges) { if (ips.matches(range)) { isTUintern = true; break; } } String[] exceptions = config.getProperty("service.iprange.tu.exceptions").split("\\|"); if (isTUintern) { for (String exception : exceptions) { if (ips.matches(exception)) { isTUintern = false; break; } } } ranges = config.getProperty("service.iprange.ub").split("\\|"); for (String range : ranges) { if (ips.matches(range)) { isUBintern = true; break; } } exceptions = config.getProperty("service.iprange.ub.exceptions").split("\\|"); if (isUBintern) { for (String exception : exceptions) { if (ips.matches(exception)) { isUBintern = false; break; } } } ranges = config.getProperty("service.iprange.ub.52bIBAs").split("\\|"); exceptions = config.getProperty("service.iprange.ub.52bIBAs.exceptions").split("\\|"); String tmp[] = ips.split(", "); for (int i = 1; i < 3; i++) { try { String ip = tmp[tmp.length - i]; for (String range : ranges) { if (ip.matches(range)) { is52bIBA = true; break; } } if (exceptions.length > 0) { if (is52bIBA) { for (String exception : exceptions) { if (ip.matches(exception)) { is52bIBA = false; break; } } } } } catch (Exception e) { } } } } catch (Exception e) { this.logger.error(e.getMessage(), e.getCause()); } this.logger.info("[" + this.config.getProperty("service.name") + "] " + "Where is it from? " + request.getHeader("X-Forwarded-For") + ", " + isTUintern + ", " + isUBintern + ", " + is52bIBA); response.setHeader("Access-Control-Allow-Origin", config.getProperty("Access-Control-Allow-Origin")); try { String format = "html"; if (request.getParameter("format") != null && !request.getParameter("format").equals("")) { format = request.getParameter("format"); } else { Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String headerNameKey = headerNames.nextElement(); if (headerNameKey.equals("Accept")) { this.logger.debug("headerNameKey = " + request.getHeader(headerNameKey)); if (request.getHeader(headerNameKey).contains("text/html")) { format = "html"; } else if (request.getHeader(headerNameKey).contains("application/xml")) { format = "xml"; } else if (request.getHeader(headerNameKey).contains("application/json")) { format = "json"; } } } } if (format.equals("")) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No valid {FORMAT} requested."); } else if (request.getParameter("id") == null || request.getParameter("id").equals("")) { this.logger.debug("Query: " + request.getQueryString()); if (format.equals("html")) { response.sendRedirect(this.config.getProperty("service.doc")); } else { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Usage: http://api.ub-tu-dortmund.de.de/daia/?id={ID}&format={FORMAT}."); } } else { if (request.getParameter("id").contains(":")) { String[] tmp = request.getParameter("id").split(":"); this.logger.debug("id = " + request.getParameter("id") + "' - " + new Date()); String idtype = tmp[0]; String localpart = ""; if (tmp.length > 1) { for (int i = 1; i < tmp.length; i++) { localpart += tmp[i]; if (i < tmp.length - 1) { localpart += ":"; } } } if (!(idtype.equals("ilsid") || idtype.equals("isbn") || idtype.equals("issn") || idtype.equals("verbundid") || idtype.equals("eki") || idtype.equals("zdbid"))) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No valid {IDTYPE} requested."); } else { try { // Wenn via META-INF/services eine Implementierung zum interface "IntegratedLibrarySystem" erfolgt ist, dann frage das System ab. if (Lookup.lookupAll(IntegratedLibrarySystem.class).size() > 0) { IntegratedLibrarySystem integratedLibrarySystem = Lookup .lookup(IntegratedLibrarySystem.class); // init ILS integratedLibrarySystem.init(this.config); ArrayList<de.tu_dortmund.ub.api.daia.ils.model.Document> documents = null; documents = integratedLibrarySystem.items(idtype, localpart); if (documents != null && documents.size() > 0) { ArrayList<de.tu_dortmund.ub.api.daia.model.Document> daiaDocuments = new ArrayList<de.tu_dortmund.ub.api.daia.model.Document>(); ArrayList<Integer> indexToRemove = new ArrayList<Integer>(); for (de.tu_dortmund.ub.api.daia.ils.model.Document document : documents) { if (document == null) { // Wie kann das sein? this.logger.error( "document = null for '" + idtype + ":" + localpart + "'"); } else { if (document.getItem() == null || (document.getItem() != null && document.getItem().size() == 0) || (document.getErschform() != null && document.getErschform().equals("p") && document.getVeroefart() != null && !document.getVeroefart().equals("da")) || (document.getErschform() != null && document.getErschform().equals("z"))) { // TODO 2015-03-06: HttpClient-Aufruf an den OpenURL-DaiaService if (Lookup.lookupAll(JournalOnlinePrintService.class).size() > 0) { String issn = null; if (document.getIssnprint() != null) { issn = document.getIssnprint().replaceAll("ISSN ", ""); } else if (document.getIssn() != null) { issn = document.getIssn(); } else if (document.getIssnwww() != null) { issn = document.getIssnwww().replaceAll("ISSN ", ""); } this.logger.debug("JOP mit ISSN = " + issn); this.logger.debug("JOP mit ZDB-ID = " + document.getZdbid()); if (issn != null) { JournalOnlinePrintService journalOnlinePrintService = Lookup .lookup(JournalOnlinePrintService.class); // init JOP journalOnlinePrintService.init(this.config); // get items ArrayList<de.tu_dortmund.ub.api.daia.jop.model.Document> jopDocuments = journalOnlinePrintService .items("issn", issn); if (jopDocuments != null && jopDocuments.size() > 0) { de.tu_dortmund.ub.api.daia.model.Document daiaDocument = new de.tu_dortmund.ub.api.daia.model.Document(); if (idtype.equals("verbundid")) { //daiaDocument.setId(this.config.getProperty("daia.document.baseurl") + localpart); //daiaDocument.setHref(this.config.getProperty("daia.document.baseurl") + localpart); daiaDocument.setId(document.getId()); daiaDocument.setHref(document.getHref()); } else if (idtype.equals("issn")) { if (jopDocuments.get(0).getId() != null) { daiaDocument.setId(jopDocuments.get(0).getId()); } else { daiaDocument.setId("urn:issn:" + localpart); } if (jopDocuments.get(0).getHref() != null) { daiaDocument .setId(jopDocuments.get(0).getHref()); } } else { if (jopDocuments.get(0).getId() != null) { daiaDocument.setId(jopDocuments.get(0).getId()); } else { daiaDocument.setId(this.config.getProperty( "daia.document.baseurl") + localpart); } if (jopDocuments.get(0).getHref() != null) { daiaDocument .setId(jopDocuments.get(0).getHref()); } else { daiaDocument.setHref(this.config.getProperty( "daia.document.baseurl") + localpart); } } // print if (jopDocuments.get(0).getItem() != null && jopDocuments.get(0).getItem().size() > 0) { daiaDocument.setItem(jopDocuments.get(0).getItem()); } // digital if (jopDocuments.get(0).isExistsDigitalItems() && Lookup .lookupAll(LinkResolver.class).size() > 0) { String openurl = ""; if (document.getMediatype() != null && document.getMediatype().equals("g")) { this.logger.debug( "document.getMediatype().equals(\"g\")"); openurl += "&rft.genre=journal&rft.eissn=" + issn; if (document.getIssnprint() != null) { if (document.getIssnprint() .startsWith("ISSN ")) { openurl += "&rft.issn=" + document .getIssnprint() .replaceAll("ISSN ", ""); } else { openurl += "&rft.issn=" + document.getIssnprint(); } } } else { if (document.getIssnprint() != null) { if (document.getIssnprint() .startsWith("ISSN ")) { openurl += "&rft.genre=journal&rft.issn=" + document.getIssnprint() .replaceAll("ISSN ", ""); } else { openurl += "&rft.genre=journal&rft.issn=" + document.getIssnprint(); } openurl += "&rft.eissn=" + document.getIssn(); } else if (document.getIssnwww() != null) { if (document.getIssnwww() .startsWith("ISSN ")) { openurl += "&rft.genre=journal&rft.eissn=" + document.getIssnwww() .replaceAll("ISSN ", ""); } else { openurl += "&rft.genre=journal&rft.eissn=" + document.getIssnwww(); } openurl += "&rft.issn=" + document.getIssn(); } else { openurl += "&rft.genre=journal&&rft.issn=" + document.getIssn(); } // TODO reicht das aus? //openurl += "&rft.genre=journal&&rft.issn=" + issn; } LinkResolver linkResolver = Lookup .lookup(LinkResolver.class); // init Linkresolver linkResolver.init(this.config); // get items ArrayList<de.tu_dortmund.ub.api.daia.model.Document> linkresolverDocument = linkResolver .items("openurl", openurl); if (linkresolverDocument != null && linkresolverDocument.size() > 0) { this.logger.debug(linkresolverDocument.get(0) .getItem().size() + ", " + jopDocuments.get(0) .getCountDigitlItems()); } if (linkresolverDocument != null && linkresolverDocument.size() > 0 && linkresolverDocument.get(0).getItem() .size() >= jopDocuments.get(0) .getCountDigitlItems()) { if (daiaDocument.getItem() == null || daiaDocument.getItem().size() == 0) { daiaDocument.setItem(linkresolverDocument .get(0).getItem()); } else { daiaDocument.getItem() .addAll(linkresolverDocument.get(0) .getItem()); } } else { this.logger.debug("Ja, der Fall ist das!"); openurl = ""; if (document.getIssnprint() != null) { if (document.getIssnprint() .startsWith("ISSN ")) { openurl += "&rft.genre=journal&&rft.issn=" + document.getIssnprint() .replaceAll("ISSN ", ""); } } else if (document.getIssnwww() != null) { if (document.getIssnwww() .startsWith("ISSN ")) { openurl += "&rft.genre=journal&&rft.issn=" + document.getIssnwww() .replaceAll("ISSN ", ""); } } if (!openurl.equals("")) { // get items linkresolverDocument = linkResolver .items("openurl", openurl); if (linkresolverDocument != null && linkresolverDocument .size() > 0) { this.logger.debug(linkresolverDocument .get(0).getItem().size() + ", " + jopDocuments.get(0) .getCountDigitlItems()); } if (linkresolverDocument != null && linkresolverDocument.size() > 0 && linkresolverDocument.get(0) .getItem() .size() >= jopDocuments .get(0) .getCountDigitlItems()) { if (daiaDocument.getItem() == null || daiaDocument.getItem() .size() == 0) { daiaDocument.setItem( linkresolverDocument.get(0) .getItem()); } else { daiaDocument.getItem() .addAll(linkresolverDocument .get(0).getItem()); } } else { // TODO Ticket 11679 // E-Mail an katalogplus@ub.tu-dortmund.de mit Betreff-Prefix [Content] boolean isNatLic = true; if (isNatLic) { if (!issn.equals("")) { // request JOP again with only ISSN jopDocuments = journalOnlinePrintService .eonly("issn", issn); if (jopDocuments != null && jopDocuments .size() > 0) { this.logger .debug("JOP hits: " + jopDocuments .size()); if (daiaDocument .getItem() == null || daiaDocument .getItem() .size() == 0) { daiaDocument.setItem( jopDocuments .get(0) .getItem()); } else { daiaDocument.getItem() .addAll(jopDocuments .get(0) .getItem()); } } } else { if (daiaDocument .getItem() == null || daiaDocument .getItem() .size() == 0) { daiaDocument = null; } } } else { if (daiaDocument.getItem() == null || daiaDocument.getItem() .size() == 0) { daiaDocument = null; } } } } else { //daiaDocument = null; /* TODO tue nix? */ if (daiaDocument.getItem() == null || daiaDocument.getItem() .size() == 0) { if (daiaDocument.getItem() == null) { daiaDocument.setItem( new ArrayList<Item>()); } daiaDocument .setItem(linkresolverDocument .get(0).getItem()); } else { daiaDocument.getItem() .addAll(linkresolverDocument .get(0).getItem()); } } } } if (daiaDocument != null) { daiaDocuments.add(daiaDocument); } } } else if (document.getZdbid() != null) { this.logger.info("Bin drin!"); JournalOnlinePrintService journalOnlinePrintService = Lookup .lookup(JournalOnlinePrintService.class); // init JOP journalOnlinePrintService.init(this.config); // get items ArrayList<de.tu_dortmund.ub.api.daia.jop.model.Document> jopDocuments = journalOnlinePrintService .items("zdbid", document.getZdbid()); if (jopDocuments != null) { this.logger.info( "jopDocuments.size()=" + jopDocuments.size()); } if (jopDocuments != null && jopDocuments.size() > 0) { de.tu_dortmund.ub.api.daia.model.Document daiaDocument = new de.tu_dortmund.ub.api.daia.model.Document(); if (jopDocuments.get(0).getId() != null) { daiaDocument.setId(jopDocuments.get(0).getId()); } else { daiaDocument.setId(this.config .getProperty("daia.document.baseurl") + document.getZdbid()); } if (jopDocuments.get(0).getHref() != null) { daiaDocument.setHref(jopDocuments.get(0).getHref()); } else { daiaDocument.setHref(this.config .getProperty("daia.document.baseurl") + document.getZdbid()); } // print if (jopDocuments.get(0).getItem() != null && jopDocuments.get(0).getItem().size() > 0) { daiaDocument.setItem(jopDocuments.get(0).getItem()); } // digital - nicht mglich, da ISSN fehlt this.logger.info( "jopDocuments.get(0).isExistsDigitalItems()=" + jopDocuments.get(0) .isExistsDigitalItems()); if (jopDocuments.get(0).isExistsDigitalItems()) { jopDocuments = journalOnlinePrintService .eonly("zdbid", document.getZdbid()); if (jopDocuments != null && jopDocuments.size() > 0) { if (daiaDocument.getItem() == null || daiaDocument.getItem().size() == 0) { daiaDocument.setItem( jopDocuments.get(0).getItem()); } else { daiaDocument.getItem().addAll( jopDocuments.get(0).getItem()); } } } daiaDocuments.add(daiaDocument); } } else { // evtl. Serienaufnahme indexToRemove.add(documents.indexOf(document)); } } } else { de.tu_dortmund.ub.api.daia.model.Document daiaDocument = new de.tu_dortmund.ub.api.daia.model.Document(); daiaDocument.setId(document.getId()); daiaDocument.setHref(document.getHref()); if (document.getErschform() != null && document.getErschform().equals("p") && document.getVeroefart() != null && document.getVeroefart().equals("da")) { // TODO inhaltlich falsch if (document.getLokaleurl() != null && !document.getLokaleurl().equals("")) { //this.logger.info(document.getItem().size() + " Items"); document.getItem().get(0) .setHref(document.getLokaleurl().get(0)); } else if (document.getUrl() != null && !document.getUrl().equals("")) { document.getItem().get(0).setHref(document.getUrl().get(0)); } } daiaDocument.setItem(document.getItem()); String editionStatement = ""; if (document.getAusgabe() != null && !document.getAusgabe().equals("")) { editionStatement += document.getAusgabe() + ". "; } if (document.getErschjahr() != null && !document.getErschjahr().equals("")) { editionStatement += document.getErschjahr(); } if (document.getUmfang() != null && !document.getUmfang().equals("")) { editionStatement += ". - " + document.getUmfang(); } daiaDocument.setEdition(editionStatement); daiaDocuments.add(daiaDocument); } } } if (indexToRemove.size() > 0) { for (Integer i : indexToRemove) { documents.remove(Integer.valueOf(i)); } } if (daiaDocuments.size() > 0) { Daia daia = new Daia(); daia.setVersion(this.config.getProperty("daia.version")); daia.setSchema(this.config.getProperty("daia.schema")); GregorianCalendar gc = new GregorianCalendar(); gc.setTimeInMillis(new java.util.Date().getTime()); try { DatatypeFactory df = DatatypeFactory.newInstance(); daia.setTimestamp(df.newXMLGregorianCalendar(gc).toString()); } catch (DatatypeConfigurationException dce) { this.logger.error("ERROR: Service unavailable."); } Institution institution = new Institution(); institution.setId(this.config.getProperty("daia.institution.id")); institution.setHref(this.config.getProperty("daia.institution.href")); institution.setContent(this.config.getProperty("daia.institution.content")); daia.setInstitution(institution); daia.setDocument(daiaDocuments); // Ausgabe this.logger.debug("format = " + format); // HTML-Ausgabe via XSLT if (format.equals("html")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse StringWriter stringWriter = new StringWriter(); m.marshal(daia, stringWriter); Document doc = new SAXBuilder() .build(new StringReader(stringWriter.toString())); HashMap<String, String> parameters = new HashMap<String, String>(); parameters.put("lang", "de"); parameters.put("isTUintern", Boolean.toString(isTUintern)); parameters.put("isUBintern", Boolean.toString(isUBintern)); parameters.put("is52bIBA", Boolean.toString(is52bIBA)); this.logger.debug("idtype = " + idtype); parameters.put("id", idtype + ":" + localpart); ObjectMapper mapper = new ObjectMapper(); StringWriter json = new StringWriter(); mapper.writeValue(json, daia); parameters.put("json", json.toString()); String html = htmlOutputter(doc, this.config.getProperty("linkresolver.html.xslt"), parameters); response.setContentType("text/html;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println(html); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (JDOMException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } } // XML-Ausgabe mit JAXB if (format.equals("xml")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse response.setContentType("application/xml;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); m.marshal(daia, response.getWriter()); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } } // JSON-Ausgabe mit Jackson if (format.equals("json")) { ObjectMapper mapper = new ObjectMapper(); response.setContentType("application/json;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); mapper.writeValue(response.getWriter(), daia); } // RDF-Ausgabe mit XSLT auf XML-Ausgabe if (format.equals("rdf")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse response.setContentType("application/xml;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); StringWriter xml = new StringWriter(); m.marshal(daia, xml); XMLOutputter out = new XMLOutputter(); out.output( new SAXBuilder().build(new StringReader(xmlOutputter( new SAXBuilder() .build(new StringReader(xml.toString())), config.getProperty("xslt_xml2rdf"), null))), response.getWriter()); } catch (JDOMException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } } } else { // Document not found if (format.equals("html")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse Document doc = new Document(); doc.setRootElement(new Element("daia")); HashMap<String, String> parameters = new HashMap<String, String>(); parameters.put("lang", "de"); parameters.put("isTUintern", Boolean.toString(isTUintern)); parameters.put("isUBintern", Boolean.toString(isUBintern)); parameters.put("is52bIBA", Boolean.toString(is52bIBA)); parameters.put("id", idtype + ":" + localpart); String html = htmlOutputter(doc, this.config.getProperty("linkresolver.html.xslt"), parameters); response.setContentType("text/html;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println(html); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering a HTML message. Message is 'Document not found'."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering a HTML message. Message is 'Document not found'."); } } else { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Document not found."); } } } else { // Document not found if (format.equals("html")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse Document doc = new Document(); doc.setRootElement(new Element("daia")); HashMap<String, String> parameters = new HashMap<String, String>(); parameters.put("lang", "de"); parameters.put("isTUintern", Boolean.toString(isTUintern)); parameters.put("isUBintern", Boolean.toString(isUBintern)); parameters.put("is52bIBA", Boolean.toString(is52bIBA)); parameters.put("id", idtype + ":" + localpart); String html = htmlOutputter(doc, this.config.getProperty("linkresolver.html.xslt"), parameters); response.setContentType("text/html;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println(html); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering a HTML message. Message is 'Document not found'."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering a HTML message. Message is 'Document not found'."); } } else { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Document not found."); } } } else { response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Service unavailable (ILS): No ILS configured!"); } } catch (ILSException e) { e.printStackTrace(); response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Service unavailable (ILS)."); } catch (LinkResolverException e) { response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Service unavailable (LinkResolver)."); } catch (JOPException e) { response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Service unavailable (JOP)."); } } } } } catch (Exception e) { e.printStackTrace(); this.logger.error(new Date() + "[DAIA] Exception: " + HttpServletResponse.SC_SERVICE_UNAVAILABLE + " Service unavailable."); this.logger.error(e.getMessage(), e.getCause()); for (StackTraceElement stackTraceElement : e.getStackTrace()) { this.logger.error("\t" + stackTraceElement.toString()); } Mailer mailer = new Mailer(this.config.getProperty("service.mailer.conf")); try { String referer = "'none'"; if (request.getHeader("referer") != null) { referer = request.getHeader("referer"); } mailer.postMail( "[DAIA] Exception: " + HttpServletResponse.SC_SERVICE_UNAVAILABLE + " Service unavailable.", e.getMessage() + "\n" + request.getRequestURL() + "\n" + ips + "\n" + referer + "\n" + "\n" + e.getCause().toString()); } catch (MessagingException e1) { this.logger.error(e1.getMessage(), e1.getCause()); } response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Service unavailable."); } }
From source file:de.tu_dortmund.ub.api.daia.DaiaOpenUrlEndpoint.java
License:Open Source License
private void provideService(HttpServletRequest request, HttpServletResponse response, String format, HashMap<String, String> latinParameters, boolean isTUintern, boolean isUBintern, boolean is52bIBA) throws IOException { String openurl = ""; try {/*from w w w .ja va 2 s.c om*/ // build openurl for (String k : latinParameters.keySet()) { // repeat input-openurl if (!k.equals("format") && !k.equals("system") && !latinParameters.get(k).equals("")) { if (latinParameters.get(k).contains("/>")) { latinParameters.put(k, latinParameters.get(k).replaceAll("/>", "")); } if (latinParameters.get(k).contains(">")) { latinParameters.put(k, latinParameters.get(k).replaceAll(">", "")); } String prefix = ""; if (!k.startsWith("rft")) { prefix = "rft."; } String value = ""; if (k.contains("title") || k.contains("au")) { value = latinParameters.get(k); } else if (k.contains("issn") && !latinParameters.get(k).equals("")) { if (latinParameters.get(k).contains("-")) { value = latinParameters.get(k); } else { value = latinParameters.get(k).subSequence(0, 4) + "-" + latinParameters.get(k).subSequence(4, 8); } } else { value = latinParameters.get(k); } openurl += "&" + prefix + k + "=" + URLEncoder.encode(value, "UTF-8"); } } this.logger.debug("\n" + "\tOpenURL-Parameter = " + this.config.getProperty("linkresolver.baseurl") + this.config.getProperty("linkresolver.parameters") + openurl); ArrayList<Document> daiaDocuments = new ArrayList<Document>(); // falls OpenURL contains isbn: Anfrage an "normalen DaiaService Endpoint String isbn = ""; if (latinParameters.get("rft.isbn") != null && !latinParameters.get("rft.isbn").equals("")) { isbn = latinParameters.get("rft.isbn"); } else if (latinParameters.get("isbn") != null && !latinParameters.get("isbn").equals("")) { isbn = latinParameters.get("isbn"); } else if (latinParameters.get("id") != null && latinParameters.get("id").contains("isbn:")) { isbn = latinParameters.get("id").split(":")[1]; } this.logger.debug("ISBN = " + isbn); if (!isbn.equals("")) { if (Lookup.lookupAll(IntegratedLibrarySystem.class).size() > 0) { // erst DAIA isbn fragen if (isbn.contains("; ")) { isbn = isbn.replaceAll("; ", ","); } String daiaUrl = "http://" + request.getServerName() + ":" + request.getServerPort() + "/daia/?id=isbn:" + isbn; this.logger.debug("daiaUrl = " + daiaUrl); CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(daiaUrl); httpGet.addHeader("Accept", "application/xml"); CloseableHttpResponse httpResponse = httpclient.execute(httpGet); try { int statusCode = httpResponse.getStatusLine().getStatusCode(); HttpEntity httpEntity = httpResponse.getEntity(); switch (statusCode) { case 200: { JAXBContext jaxbContext = JAXBContext.newInstance(Daia.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Daia daia = (Daia) unmarshaller.unmarshal(httpEntity.getContent()); if (daia.getDocument() != null) { daiaDocuments.addAll(daia.getDocument()); } break; } default: { // TODO Evaluieren: Das mssten die Flle sein, in denen E-Books in der Knowledgebase eingetragen sind if (Lookup.lookupAll(LinkResolver.class).size() > 0) { Document daiaDocument = null; LinkResolver linkResolver = Lookup.lookup(LinkResolver.class); // init Linkresolver linkResolver.init(this.config); // get items ArrayList<Document> linkresolverDocument = linkResolver.items("openurl", openurl); if (linkresolverDocument != null && linkresolverDocument.size() > 0) { daiaDocument = new Document(); daiaDocument.setId("urn:isbn:" + isbn); if (daiaDocument.getItem() == null || daiaDocument.getItem().size() == 0) { daiaDocument.setItem(linkresolverDocument.get(0).getItem()); } else { daiaDocument.getItem().addAll(linkresolverDocument.get(0).getItem()); } if (daiaDocument != null) { daiaDocuments.add(daiaDocument); } } } } } EntityUtils.consume(httpEntity); } finally { httpResponse.close(); } } } else { // Wenn JOP registriert ist if (Lookup.lookupAll(JournalOnlinePrintService.class).size() > 0) { // build OpenURL for JOP String issn = ""; if (latinParameters.get("rft.issn") != null && !latinParameters.get("rft.issn").equals("")) { issn = latinParameters.get("rft.issn"); } else if (latinParameters.get("issn") != null && !latinParameters.get("issn").equals("")) { issn = latinParameters.get("issn"); } if (latinParameters.get("rft.eissn") != null && !latinParameters.get("rft.eissn").equals("")) { issn = latinParameters.get("rft.eissn"); } else if (latinParameters.get("eissn") != null && !latinParameters.get("eissn").equals("")) { issn = latinParameters.get("eissn"); } else if (latinParameters.get("id") != null && latinParameters.get("id").contains("issn:")) { issn = latinParameters.get("id").split(":")[1]; } this.logger.debug("ISSN = " + issn); String jop_openurl = ""; for (String k : latinParameters.keySet()) { // mit rft if ((latinParameters.keySet().contains("rft.atitle") || latinParameters.keySet().contains("atitle")) && k.equals("rft.date") && !latinParameters.get(k).equals("")) { jop_openurl += "&date=" + latinParameters.get(k); } if (k.equals("rft.volume") && !latinParameters.get(k).equals("")) { jop_openurl += "&volume=" + latinParameters.get(k); } if (k.equals("rft.issue") && !latinParameters.get(k).equals("")) { jop_openurl += "&issue=" + latinParameters.get(k); } // ohne rft if ((latinParameters.keySet().contains("rft.atitle") || latinParameters.keySet().contains("atitle")) && k.equals("date") && !latinParameters.get(k).equals("")) { jop_openurl += "&date=" + latinParameters.get(k); } if (k.equals("volume") && !latinParameters.get(k).equals("")) { jop_openurl += "&volume=" + latinParameters.get(k); } if (k.equals("issue") && !latinParameters.get(k).equals("")) { jop_openurl += "&issue=" + latinParameters.get(k); } } if (!issn.equals("")) { if (issn.contains("-")) { jop_openurl += "&issn=" + issn; } else { jop_openurl += "&issn=" + issn.subSequence(0, 4) + "-" + issn.subSequence(4, 8); } } if (latinParameters.keySet().contains("rft.atitle") || latinParameters.keySet().contains("atitle")) { jop_openurl += "&genre=article"; } else { jop_openurl += "&genre=journal"; } this.logger.debug("\n" + jop_openurl + "\tOpenURL-Parameter (JOP) = " + this.config.getProperty("jop.url.openurl") + jop_openurl); if (!jop_openurl.equals("&genre=journal") && (jop_openurl.contains("&title=") || jop_openurl.contains("&issn="))) { // get data try { JournalOnlinePrintService journalOnlinePrintService = Lookup .lookup(JournalOnlinePrintService.class); // init JOP journalOnlinePrintService.init(this.config); // get items ArrayList<de.tu_dortmund.ub.api.daia.jop.model.Document> jopDocuments = journalOnlinePrintService .items("openurl", jop_openurl); if (jopDocuments != null && jopDocuments.size() > 0) { Document daiaDocument = new Document(); this.logger.debug("JOP hits: " + jopDocuments.size()); if (jopDocuments.get(0).getId() != null && jopDocuments.get(0).getHref() != null) { daiaDocument.setId(jopDocuments.get(0).getId()); daiaDocument.setHref(jopDocuments.get(0).getHref()); } else { daiaDocument.setId("urn:issn:" + issn); } // print if (jopDocuments.get(0).getItem() != null && jopDocuments.get(0).getItem().size() > 0) { daiaDocument.setItem(jopDocuments.get(0).getItem()); } // digital if (jopDocuments.get(0).isExistsDigitalItems() && Lookup.lookupAll(LinkResolver.class).size() > 0) { // TODO define a boolean variable for executing a linkresolver request // TODO auslagern! LinkResolver linkResolver = Lookup.lookup(LinkResolver.class); // init Linkresolver linkResolver.init(this.config); // get items ArrayList<Document> linkresolverDocument = linkResolver.items("openurl", openurl); if (linkresolverDocument != null && linkresolverDocument.size() > 0 && linkresolverDocument.get(0).getItem().size() >= jopDocuments.get(0) .getCountDigitlItems()) { if (daiaDocument.getItem() == null || daiaDocument.getItem().size() == 0) { daiaDocument.setItem(linkresolverDocument.get(0).getItem()); } else { daiaDocument.getItem().addAll(linkresolverDocument.get(0).getItem()); } } else { // TODO Ticket 11679 // E-Mail an katalogplus@ub.tu-dortmund.de mit Betreff-Prefix [Content] boolean isNatLic = true; if (isNatLic) { if (!issn.equals("")) { // request JOP again with only ISSN jopDocuments = journalOnlinePrintService.eonly("issn", issn); if (jopDocuments != null && jopDocuments.size() > 0) { this.logger.debug("JOP hits: " + jopDocuments.size()); if (daiaDocument.getItem() == null || daiaDocument.getItem().size() == 0) { daiaDocument.setItem(jopDocuments.get(0).getItem()); } else { if (jopDocuments.get(0).getItem() != null) { daiaDocument.getItem() .addAll(jopDocuments.get(0).getItem()); } else { // Error-E-Mail "JOP<>LinkResolver: Not an NatLic" Mailer mailer = new Mailer( this.config.getProperty("service.mailer.conf")); try { int cnt = 0; if (linkresolverDocument != null) { cnt = linkresolverDocument.get(0).getItem() .size(); } mailer.postMail( "[DAIAopenurl] JOP-Document ohne Items ", "JOP-Link " + jopDocuments.get(0) .getCountDigitlItems() + ": " + this.config.getProperty( "jop.url.openurl") + jop_openurl + ".\n"); } catch (MessagingException e) { this.logger.error(e.getMessage(), e.getCause()); this.logger.debug("[DAIAopenurl] CONTENT-ERROR"); this.logger.debug("OpenUrl: " + openurl + "\n\n\tJOP-URL: " + jop_openurl); } if (daiaDocument.getItem() == null || daiaDocument.getItem().size() == 0) { daiaDocument = null; } } } } } else { // Error-E-Mail "JOP<>LinkResolver: Not an NatLic" Mailer mailer = new Mailer( this.config.getProperty("service.mailer.conf")); try { int cnt = 0; if (linkresolverDocument != null) { cnt = linkresolverDocument.get(0).getItem().size(); } mailer.postMail( "[DAIAopenurl] JOP<>LinkResolver: NatLic without ISSN ", "Laut ZDB/EZB gibt es " + jopDocuments.get(0).getCountDigitlItems() + "-mal elektronischen Bestand (vgl. " + this.config.getProperty("jop.url.openurl") + jop_openurl + ").\n" + "Laut 360 Link aber " + cnt + "-mal (vgl. " + this.config .getProperty("linkresolver.baseurl") + this.config .getProperty("linkresolver.parameters") + openurl + ")."); } catch (MessagingException e) { this.logger.error(e.getMessage(), e.getCause()); this.logger.debug("[DAIAopenurl] CONTENT-ERROR"); this.logger.debug("OpenUrl: " + openurl + "\n\n\tJOP-URL: " + jop_openurl); } if (daiaDocument.getItem() == null || daiaDocument.getItem().size() == 0) { daiaDocument = null; } } } else { // Hier kann man nix machen! } } } if (daiaDocument != null) { daiaDocuments.add(daiaDocument); } } } catch (LinkResolverException e) { // daiaDocuments bleibt leer this.logger.error("[DaiaService OpenUrl Endpoint] Exception: " + HttpServletResponse.SC_SERVICE_UNAVAILABLE + " Service unavailable (LinkResolver)."); this.logger.error(e.getMessage(), e.getCause()); for (StackTraceElement stackTraceElement : e.getStackTrace()) { this.logger.error("\t" + stackTraceElement.toString()); } Mailer mailer = new Mailer(this.config.getProperty("service.mailer.conf")); try { mailer.postMail( "[DaiaService OpenUrl Endpoint] Exception: " + HttpServletResponse.SC_SERVICE_UNAVAILABLE + " Service unavailable (LinkResolver).", e.getMessage() + "\n" + this.config.getProperty("linkresolver.baseurl") + this.config.getProperty("linkresolver.parameters") + openurl); } catch (MessagingException e1) { this.logger.error(e1.getMessage(), e1.getCause()); } } catch (JOPException e) { // daiaDocuments bleibt leer this.logger.error("[DaiaService OpenUrl Endpoint] Exception: " + HttpServletResponse.SC_SERVICE_UNAVAILABLE + " Service unavailable (Journals Online & Print)."); this.logger.error(e.getMessage(), e.getCause()); for (StackTraceElement stackTraceElement : e.getStackTrace()) { this.logger.error("\t" + stackTraceElement.toString()); } Mailer mailer = new Mailer(this.config.getProperty("service.mailer.conf")); try { mailer.postMail( "[DaiaService OpenUrl Endpoint] Exception: " + HttpServletResponse.SC_SERVICE_UNAVAILABLE + " Service unavailable (Journals Online & Print).", e.getMessage() + "\n" + this.config.getProperty("jop.url.openurl") + jop_openurl); } catch (MessagingException e1) { this.logger.error(e1.getMessage(), e1.getCause()); } } } else { // tue nix: daiaDocuments bleibt leer } } } // Abschlusskorrektur fr ACM, IEEE und LNCS vor dem response // LNCS if (Lookup.lookupAll(LncsResolver.class).size() > 0 && Boolean.parseBoolean(this.config.getProperty("licenced.lncs"))) { if (daiaDocuments.size() > 0) { for (Document daiaDocument : daiaDocuments) { if (daiaDocument != null && daiaDocument.getId() != null && daiaDocument.getId().contains("urn:issn:03029743") && ((latinParameters.keySet().contains("id") && latinParameters.get("id").startsWith("doi:10.1007")) || (latinParameters.keySet().contains("rft.id") && latinParameters.get("rft.id").startsWith("doi:10.1145")))) { daiaDocument.setItem(null); LncsResolver lncsResolver = Lookup.lookup(LncsResolver.class); lncsResolver.init(this.config); Document lncsDocument = lncsResolver.items(latinParameters); daiaDocument.setId(lncsDocument.getId()); daiaDocument.setHref(lncsDocument.getHref()); daiaDocument.setItem(lncsDocument.getItem()); } } } } // ACM if (Lookup.lookupAll(AcmResolver.class).size() > 0 && Boolean.parseBoolean(this.config.getProperty("licenced.acm"))) { if ((latinParameters.keySet().contains("id") && latinParameters.get("id").contains("10.1145")) || (latinParameters.keySet().contains("rft.id") && latinParameters.get("rft.id").contains("10.1145"))) { if (daiaDocuments.size() > 0) { for (Document daiaDocument : daiaDocuments) { daiaDocument.setItem(null); AcmResolver acmResolver = Lookup.lookup(AcmResolver.class); acmResolver.init(this.config); Document acmDocument = acmResolver.items(latinParameters); daiaDocument.setId(acmDocument.getId()); daiaDocument.setHref(acmDocument.getHref()); if (daiaDocument.getItem() == null) { daiaDocument.setItem(acmDocument.getItem()); } else { daiaDocument.getItem().addAll(acmDocument.getItem()); } } } else { Document daiaDocument = new Document(); AcmResolver acmResolver = Lookup.lookup(AcmResolver.class); acmResolver.init(this.config); Document acmDocument = acmResolver.items(latinParameters); daiaDocument.setId(acmDocument.getId()); daiaDocument.setHref(acmDocument.getHref()); if (daiaDocument.getItem() == null) { daiaDocument.setItem(acmDocument.getItem()); } else { daiaDocument.getItem().addAll(acmDocument.getItem()); } daiaDocuments.add(daiaDocument); } } } // IEEE if (Lookup.lookupAll(IeeeResolver.class).size() > 0 && Boolean.parseBoolean(this.config.getProperty("licenced.ieee"))) { if ((latinParameters.keySet().contains("id") && latinParameters.get("id").contains("10.1109")) || (latinParameters.keySet().contains("rft.id") && latinParameters.get("rft.id").contains("10.1109"))) { if (daiaDocuments.size() > 0) { for (Document daiaDocument : daiaDocuments) { daiaDocument.setItem(null); IeeeResolver ieeeResolver = Lookup.lookup(IeeeResolver.class); ieeeResolver.init(this.config); Document ieeeDocument = ieeeResolver.items(latinParameters); daiaDocument.setId(ieeeDocument.getId()); daiaDocument.setHref(ieeeDocument.getHref()); if (daiaDocument.getItem() == null) { daiaDocument.setItem(ieeeDocument.getItem()); } else { daiaDocument.getItem().addAll(ieeeDocument.getItem()); } } } else { Document daiaDocument = new Document(); IeeeResolver ieeeResolver = Lookup.lookup(IeeeResolver.class); ieeeResolver.init(this.config); Document ieeeDocument = ieeeResolver.items(latinParameters); daiaDocument.setId(ieeeDocument.getId()); daiaDocument.setHref(ieeeDocument.getHref()); if (daiaDocument.getItem() == null) { daiaDocument.setItem(ieeeDocument.getItem()); } else { daiaDocument.getItem().addAll(ieeeDocument.getItem()); } daiaDocuments.add(daiaDocument); } } } if (daiaDocuments.size() > 0) { this.logger.debug("200 Document Found"); // TODO query footnotes from ils if configured // Ausgabe Daia daia = new Daia(); daia.setVersion(this.config.getProperty("daia.version")); daia.setSchema(this.config.getProperty("daia.schema")); GregorianCalendar gc = new GregorianCalendar(); gc.setTimeInMillis(new Date().getTime()); try { DatatypeFactory df = DatatypeFactory.newInstance(); daia.setTimestamp(df.newXMLGregorianCalendar(gc).toString()); } catch (DatatypeConfigurationException dce) { this.logger.error("ERROR: Service unavailable.", dce.getCause()); } Institution institution = new Institution(); institution.setId(this.config.getProperty("daia.institution.id")); institution.setHref(this.config.getProperty("daia.institution.href")); institution.setContent(this.config.getProperty("daia.institution.content")); daia.setInstitution(institution); daia.setDocument(daiaDocuments); // Ausgabe if (daia.getDocument() == null || daia.getDocument().size() == 0) { // HTML-Ausgabe via XSLT if (format.equals("html")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse StringWriter stringWriter = new StringWriter(); m.marshal(daia, stringWriter); org.jdom2.Document doc = new org.jdom2.Document(); doc.setRootElement(new Element("daia")); HashMap<String, String> parameters = new HashMap<String, String>(); parameters.put("lang", "de"); parameters.put("isTUintern", Boolean.toString(isTUintern)); parameters.put("isUBintern", Boolean.toString(isUBintern)); parameters.put("is52bIBA", Boolean.toString(is52bIBA)); parameters.put("id", "openurl:" + URLDecoder.decode(openurl, "UTF-8")); ObjectMapper mapper = new ObjectMapper(); StringWriter json = new StringWriter(); mapper.writeValue(json, daia); parameters.put("json", json.toString()); String html = htmlOutputter(doc, this.config.getProperty("linkresolver.html.xslt"), parameters); response.setContentType("text/html;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println(html); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering a HTML message. Message is 'Document not found'."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering a HTML message. Message is 'Document not found'."); } } else { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Document not found."); } } else { this.logger.debug("format = " + format); // HTML-Ausgabe via XSLT if (format.equals("html")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse StringWriter stringWriter = new StringWriter(); m.marshal(daia, stringWriter); org.jdom2.Document doc = new SAXBuilder() .build(new StringReader(this.cleanup(stringWriter.toString()))); HashMap<String, String> parameters = new HashMap<String, String>(); parameters.put("lang", "de"); parameters.put("isTUintern", Boolean.toString(isTUintern)); parameters.put("isUBintern", Boolean.toString(isUBintern)); parameters.put("is52bIBA", Boolean.toString(is52bIBA)); parameters.put("id", "openurl:" + URLDecoder.decode(openurl, "UTF-8")); ObjectMapper mapper = new ObjectMapper(); StringWriter json = new StringWriter(); mapper.writeValue(json, daia); parameters.put("json", json.toString()); String html = htmlOutputter(doc, this.config.getProperty("linkresolver.html.xslt"), parameters); response.setContentType("text/html;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println(html); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (JDOMException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (IOException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } } // XML-Ausgabe mit JAXB if (format.equals("xml")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse response.setContentType("application/xml;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); m.marshal(daia, response.getWriter()); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } } // JSON-Ausgabe mit Jackson if (format.equals("json")) { ObjectMapper mapper = new ObjectMapper(); response.setContentType("application/json;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); mapper.writeValue(response.getWriter(), daia); } // RDF-Ausgabe mit XSLT auf XML-Ausgabe if (format.equals("rdf")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse response.setContentType("application/xml;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); StringWriter xml = new StringWriter(); m.marshal(daia, xml); XMLOutputter out = new XMLOutputter(); out.output( new SAXBuilder().build(new StringReader( xmlOutputter(new SAXBuilder().build(new StringReader(xml.toString())), config.getProperty("xslt_xml2rdf"), null))), response.getWriter()); } catch (JDOMException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering the results."); } } } } else { this.logger.debug("404 Document Not Found + (format=" + format + ")"); if (format.equals("html")) { try { JAXBContext context = JAXBContext.newInstance(Daia.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to HttpResponse org.jdom2.Document doc = new org.jdom2.Document(); doc.setRootElement(new Element("daia")); HashMap<String, String> parameters = new HashMap<String, String>(); parameters.put("lang", "de"); parameters.put("isTUintern", Boolean.toString(isTUintern)); parameters.put("isUBintern", Boolean.toString(isUBintern)); parameters.put("is52bIBA", Boolean.toString(is52bIBA)); parameters.put("id", "openurl:" + URLDecoder.decode(openurl, "UTF-8")); String html = htmlOutputter(doc, this.config.getProperty("linkresolver.html.xslt"), parameters); response.setContentType("text/html;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println(html); } catch (PropertyException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering a HTML message. Message is 'Document not found'."); } catch (JAXBException e) { this.logger.error(e.getMessage(), e.getCause()); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error: Error while rendering a HTML message. Message is 'Document not found'."); } } else { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Document not found."); } } } catch (Exception e) { this.logger.error("[DaiaService OpenUrl Endpoint] Exception: " + HttpServletResponse.SC_SERVICE_UNAVAILABLE + " Service unavailable."); this.logger.error(e.getMessage(), e.getCause()); for (StackTraceElement stackTraceElement : e.getStackTrace()) { this.logger.error("\t" + stackTraceElement.toString()); } Mailer mailer = new Mailer(this.config.getProperty("service.mailer.conf")); try { mailer.postMail("[DaiaService OpenUrl Endpoint] Exception: " + HttpServletResponse.SC_SERVICE_UNAVAILABLE + " Service unavailable.", e.getMessage() + "\n" + request.getRequestURL()); } catch (MessagingException e1) { this.logger.error(e1.getMessage(), e1.getCause()); } response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Service unavailable."); } }
From source file:de.tu_dortmund.ub.hb_ng.SolRDF.java
License:Open Source License
@Override public String getResource(String graph, String uri, String format, boolean isAuthorized) throws LinkedDataStorageException { this.logger.info("getResource: " + graph); this.logger.info("getResource: " + uri); this.logger.info("getResource: " + format); this.logger.info("getResource: " + isAuthorized); String resource = null;// w ww.ja v a2 s.c o m String queryResult = this.doResourceRequest(graph, uri, format, isAuthorized); if (queryResult != null && !queryResult.equals("")) { try { switch (format) { case "html": { Document document = new SAXBuilder().build(new StringReader(queryResult)); StringWriter stringWriter = new StringWriter(); stringWriter.write(htmlOutputter(document, this.config.getProperty("xslt.resource"), null)); resource = stringWriter.toString(); break; } case "rdf.xml": { Document document = new SAXBuilder().build(new StringReader(queryResult)); StringWriter stringWriter = new StringWriter(); XMLOutputter xmlOutputter = new XMLOutputter(); xmlOutputter.output(document, stringWriter); resource = stringWriter.toString(); break; } case "rdf.ttl": { resource = queryResult; break; } case "json": { resource = queryResult; break; } case "nquads": { resource = queryResult; break; } } } catch (JDOMException | IOException e) { throw new LinkedDataStorageException(e.getMessage(), e.getCause()); } } return resource; }