Example usage for org.jdom2.input SAXBuilder SAXBuilder

List of usage examples for org.jdom2.input SAXBuilder SAXBuilder

Introduction

In this page you can find the example usage for org.jdom2.input SAXBuilder SAXBuilder.

Prototype

public SAXBuilder() 

Source Link

Document

Creates a new JAXP-based SAXBuilder.

Usage

From source file:de.sub.goobi.helper.HelperSchritte.java

License:Open Source License

public static void extractMetadata(Path metadataFile, Map<String, List<String>> metadataPairs) {
    SAXBuilder builder = new SAXBuilder();
    Document doc;/*from w  w w. j  a  va2 s .c  o m*/
    try {
        doc = builder.build(metadataFile.toString());
    } catch (JDOMException | IOException e1) {
        return;
    }
    Element root = doc.getRootElement();
    try {
        Element goobi = root.getChildren("dmdSec", mets).get(0).getChild("mdWrap", mets)
                .getChild("xmlData", mets).getChild("mods", mods).getChild("extension", mods)
                .getChild("goobi", goobiNamespace);
        List<Element> metadataList = goobi.getChildren();
        addMetadata(metadataList, metadataPairs);
        for (Element el : root.getChildren("dmdSec", mets)) {
            if (el.getAttributeValue("ID").equals("DMDPHYS_0000")) {
                Element phys = el.getChild("mdWrap", mets).getChild("xmlData", mets).getChild("mods", mods)
                        .getChild("extension", mods).getChild("goobi", goobiNamespace);
                List<Element> physList = phys.getChildren();
                addMetadata(physList, metadataPairs);
            }
        }
        // create field for "DocStruct"
        String docType = root.getChildren("structMap", mets).get(0).getChild("div", mets)
                .getAttributeValue("TYPE");
        metadataPairs.put("DocStruct", Collections.singletonList(docType));

    } catch (Exception e) {
        logger.error(e);
        logger.error("Cannot extract metadata from " + metadataFile.toString());
    }
}

From source file:de.sub.goobi.helper.tasks.ProcessSwapInTask.java

License:Open Source License

/**
 * Aufruf als Thread ================================================================
 *///w w  w  .  ja v a2  s  .co  m
@SuppressWarnings("deprecation")
@Override
public void run() {
    setStatusProgress(5);
    String swapPath = null;
    //      ProzessDAO dao = new ProzessDAO();
    String processDirectory = "";

    if (ConfigurationHelper.getInstance().isUseSwapping()) {
        swapPath = ConfigurationHelper.getInstance().getSwapPath();
    } else {
        setStatusMessage("swapping not activated");
        setStatusProgress(-1);
        return;
    }
    if (swapPath == null || swapPath.length() == 0) {
        setStatusMessage("no swappingPath defined");
        setStatusProgress(-1);
        return;
    }
    Path swapFile = Paths.get(swapPath);
    if (!StorageProvider.getInstance().isFileExists(swapFile)) {
        setStatusMessage("Swap folder does not exist or is not mounted");
        setStatusProgress(-1);
        return;
    }
    try {
        processDirectory = getProzess().getProcessDataDirectoryIgnoreSwapping();
        // TODO: Don't catch Exception (the super class)
    } catch (Exception e) {
        logger.warn("Exception:", e);
        setStatusMessage(
                "Error while getting process data folder: " + e.getClass().getName() + " - " + e.getMessage());
        setStatusProgress(-1);
        return;
    }

    Path fileIn = Paths.get(processDirectory);
    Path fileOut = Paths.get(swapPath + getProzess().getId() + FileSystems.getDefault().getSeparator());

    if (!StorageProvider.getInstance().isFileExists(fileOut)) {
        setStatusMessage(getProzess().getTitel() + ": swappingOutTarget does not exist");
        setStatusProgress(-1);
        return;
    }
    if (!StorageProvider.getInstance().isFileExists(fileIn)) {
        setStatusMessage(getProzess().getTitel() + ": process data folder does not exist");
        setStatusProgress(-1);
        return;
    }

    SAXBuilder builder = new SAXBuilder();
    Document docOld;
    try {
        Path swapLogFile = Paths.get(processDirectory, "swapped.xml");
        docOld = builder.build(swapLogFile.toFile());
        // TODO: Don't catch Exception (the super class)
    } catch (Exception e) {
        logger.warn("Exception:", e);
        setStatusMessage("Error while reading swapped.xml in process data folder: " + e.getClass().getName()
                + " - " + e.getMessage());
        setStatusProgress(-1);
        return;
    }

    /*
     * --------------------- alte Checksummen in HashMap schreiben -------------------
     */
    setStatusMessage("reading checksums");
    Element rootOld = docOld.getRootElement();

    HashMap<String, String> crcMap = new HashMap<String, String>();

    // TODO: Don't use Iterators
    for (Iterator<Element> it = rootOld.getChildren("file").iterator(); it.hasNext();) {
        Element el = it.next();
        crcMap.put(el.getAttribute("path").getValue(), el.getAttribute("crc32").getValue());
    }
    StorageProvider.getInstance().deleteDataInDir(fileIn);

    /*
     * --------------------- Dateien kopieren und Checksummen ermitteln -------------------
     */
    Document doc = new Document();
    Element root = new Element("goobiArchive");
    doc.setRootElement(root);

    /*
     * --------------------- Verzeichnisse und Dateien kopieren und anschliessend den Ordner leeren -------------------
     */
    setStatusProgress(50);
    try {
        setStatusMessage("copying process files");
        Helper.copyDirectoryWithCrc32Check(fileOut, fileIn, swapPath.length(), root);
    } catch (IOException e) {
        logger.warn("IOException:", e);
        setStatusMessage("IOException in copyDirectory: " + e.getMessage());
        setStatusProgress(-1);
        return;
    }
    setStatusProgress(80);

    /*
     * --------------------- Checksummen vergleichen -------------------
     */
    setStatusMessage("checking checksums");
    // TODO: Don't use Iterators
    for (Iterator<Element> it = root.getChildren("file").iterator(); it.hasNext();) {
        Element el = it.next();
        String newPath = el.getAttribute("path").getValue();
        String newCrc = el.getAttribute("crc32").getValue();
        if (crcMap.containsKey(newPath)) {
            if (!crcMap.get(newPath).equals(newCrc)) {
                setLongMessage(getLongMessage() + "File " + newPath + " has different checksum<br/>");
            }
            crcMap.remove(newPath);
        }
    }

    setStatusProgress(85);
    /*
     * --------------------- prfen, ob noch Dateien fehlen -------------------
     */
    setStatusMessage("checking missing files");
    if (crcMap.size() > 0) {
        for (String myFile : crcMap.keySet()) {
            setLongMessage(getLongMessage() + "File " + myFile + " is missing<br/>");
        }
    }

    setStatusProgress(90);

    /* in Prozess speichern */
    StorageProvider.getInstance().deleteDir(fileOut);
    try {
        setStatusMessage("saving process");
        Process myProzess = ProcessManager.getProcessById(getProzess().getId());
        myProzess.setSwappedOutGui(false);
        ProcessManager.saveProcess(myProzess);
    } catch (DAOException e) {
        setStatusMessage("DAOException while saving process: " + e.getMessage());
        logger.warn("DAOException:", e);
        setStatusProgress(-1);
        return;
    }
    setStatusMessage("done");

    setStatusProgress(100);
}

From source file:de.tor.tribes.util.xml.JDomUtils.java

License:Apache License

public static Document getDocument(InputStream inStream) throws Exception {
    return new SAXBuilder().build(inStream);
}

From source file:de.tsystems.mms.apm.performancesignature.viewer.rest.DashboardXMLReader.java

License:Apache License

private static Document useSAXParser(final String xml) throws JDOMException, IOException {
    SAXBuilder saxBuilder = new SAXBuilder();
    return saxBuilder.build(new StringReader(xml));
}

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 ww.j a v a  2  s.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 {/*  ww  w .  j  a v  a  2s .c o  m*/

        // 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.data.dswarm.Task.java

License:Open Source License

/**
 * upload a file and update an existing resource with it
 *
 * @param resourceUUID/*from   ww w. j  ava2  s .c  o  m*/
 * @param filename
 * @param name
 * @param description
 * @return responseJson
 * @throws Exception
 */
private String uploadFileAndUpdateResource(String resourceUUID, String filename, String name,
        String description) throws Exception {

    if (null == resourceUUID)
        throw new Exception("ID of the resource to update was null.");

    String responseJson = null;

    String file = config.getProperty("resource.watchfolder") + File.separatorChar + filename;

    // ggf. Preprocessing: insert CDATA in XML and write new XML file to tmp folder
    if (Boolean.parseBoolean(config.getProperty("resource.preprocessing"))) {

        Document document = new SAXBuilder().build(new File(file));

        file = config.getProperty("preprocessing.folder") + File.separatorChar + UUID.randomUUID() + ".xml";

        XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
        BufferedWriter bufferedWriter = null;
        try {

            bufferedWriter = new BufferedWriter(new FileWriter(file));

            out.output(new SAXBuilder().build(new StringReader(
                    XmlTransformer.xmlOutputter(document, config.getProperty("preprocessing.xslt"), null))),
                    bufferedWriter);
        } finally {
            if (bufferedWriter != null) {
                bufferedWriter.close();
            }
        }
    }

    // upload
    CloseableHttpClient httpclient = HttpClients.createDefault();

    try {
        HttpPut httpPut = new HttpPut(config.getProperty("engine.dswarm.api") + "resources/" + resourceUUID);

        FileBody fileBody = new FileBody(new File(file));
        StringBody stringBodyForName = new StringBody(name, ContentType.TEXT_PLAIN);
        StringBody stringBodyForDescription = new StringBody(description, ContentType.TEXT_PLAIN);

        HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("file", fileBody)
                .addPart("name", stringBodyForName).addPart("description", stringBodyForDescription).build();

        httpPut.setEntity(reqEntity);

        logger.info("[" + config.getProperty("service.name") + "] " + "request : " + httpPut.getRequestLine());

        CloseableHttpResponse httpResponse = httpclient.execute(httpPut);

        try {
            int statusCode = httpResponse.getStatusLine().getStatusCode();
            HttpEntity httpEntity = httpResponse.getEntity();

            switch (statusCode) {

            case 200: {

                logger.info("[" + config.getProperty("service.name") + "] " + statusCode + " : "
                        + httpResponse.getStatusLine().getReasonPhrase());
                StringWriter writer = new StringWriter();
                IOUtils.copy(httpEntity.getContent(), writer, "UTF-8");
                responseJson = writer.toString();

                logger.info("[" + config.getProperty("service.name") + "] responseJson : " + responseJson);

                break;
            }
            default: {

                logger.error("[" + config.getProperty("service.name") + "] " + statusCode + " : "
                        + httpResponse.getStatusLine().getReasonPhrase());
            }
            }

            EntityUtils.consume(httpEntity);
        } finally {
            httpResponse.close();
        }
    } finally {
        httpclient.close();
    }

    return responseJson;
}

From source file:de.tu_dortmund.ub.data.util.XmlTransformer.java

License:Open Source License

public static void main(String[] args) throws Exception {

    Document document = new SAXBuilder().build(new File("data/project.mods.xml"));

    XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());

    BufferedWriter bufferedWriter = null;
    try {/*ww  w  .j  av  a 2 s  .  c  o m*/

        bufferedWriter = new BufferedWriter(new FileWriter("data/cdata.project.mods.xml"));

        out.output(new SAXBuilder().build(new StringReader(xmlOutputter(document, "xslt/cdata.xsl", null))),
                bufferedWriter);
    } finally {
        if (bufferedWriter != null) {
            bufferedWriter.close();
        }
    }

}

From source file:de.tu_dortmund.ub.hb_ng.SolRDF.java

License:Open Source License

@Override
public HashMap<String, String> health(Properties properties) {

    this.logger.info("[" + config.getProperty("service.name") + "] " + "health requested");

    HashMap<String, String> health = new HashMap<String, String>();

    // Teste Verbindung zu SolRDF
    try {/*from  w  w w  . j ava  2s . com*/

        this.logger.info("[" + config.getProperty("service.name") + "] " + "SolRDF try to start session");

        new SAXBuilder().build(new URL(this.config.getProperty("storage.search-endpoint") + "&wt=xml"));

        this.logger.info("[" + config.getProperty("service.name") + "] " + "SolRDF ok");

        health.put("SolRDF", "ok");

    } catch (Exception e) {

        e.printStackTrace();

        this.logger.info("[" + config.getProperty("service.name") + "] " + "SolRDF failed");

        health.put("SolRDF", "failed");
    }

    return health;
}

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;//from  ww  w. j a  va  2s  .  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;
}