Mercurial > hg > mpdl-group
view software/mpdl-services/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/GetDocInfo.java @ 23:e845310098ba
diverse Korrekturen
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 27 Nov 2012 12:35:19 +0100 |
parents | |
children |
line wrap: on
line source
package de.mpg.mpiwg.berlin.mpdl.servlets.cms; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FileUtils; import de.mpg.mpiwg.berlin.mpdl.cms.document.DocumentHandler; import de.mpg.mpiwg.berlin.mpdl.cms.document.MetadataRecord; import de.mpg.mpiwg.berlin.mpdl.cms.lucene.IndexHandler; import de.mpg.mpiwg.berlin.mpdl.cms.transform.TocTransformer; import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException; import de.mpg.mpiwg.berlin.mpdl.util.Util; public class GetDocInfo extends HttpServlet { private static final long serialVersionUID = 1L; private TocTransformer tocTransformer; public GetDocInfo() { super(); } public void init(ServletConfig config) throws ServletException { super.init(config); ServletContext context = getServletContext(); tocTransformer = (TocTransformer) context.getAttribute("tocTransformer"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String docId = request.getParameter("docId"); String field = request.getParameter("field"); String outputFormat = request.getParameter("outputFormat"); if (outputFormat == null) outputFormat = "xml"; String cssUrl = request.getParameter("cssUrl"); if (cssUrl == null) { String baseUrl = getBaseUrl(request); cssUrl = baseUrl + "/css/page.css"; } try { IndexHandler indexHandler = IndexHandler.getInstance(); MetadataRecord mdRecord = indexHandler.getDocMetadata(docId); if (outputFormat.equals("xml")) response.setContentType("text/xml"); else if (outputFormat.equals("html")) response.setContentType("text/html"); PrintWriter out = response.getWriter(); if (mdRecord != null && outputFormat.equals("xml")) { out.print("<doc>"); out.print("<id>" + docId + "</id>"); String identifier = mdRecord.getIdentifier(); if ((field == null || (field != null && field.equals("identifier"))) && identifier != null) out.print("<identifier>" + identifier + "</identifier>"); String uri = mdRecord.getUri(); if ((field == null || (field != null && field.equals("uri"))) && uri != null) out.print("<uri>" + uri + "</uri>"); String collectionNames = mdRecord.getCollectionNames(); if ((field == null || (field != null && field.equals("collectionNames"))) && collectionNames != null) out.print("<collectionNames>" + collectionNames + "</collectionNames>"); String author = mdRecord.getCreator(); if ((field == null || (field != null && field.equals("author"))) && author != null) out.print("<author>" + author + "</author>"); String title = mdRecord.getTitle(); if ((field == null || (field != null && field.equals("title"))) && title != null) out.print("<title>" + title + "</title>"); String language = mdRecord.getLanguage(); if ((field == null || (field != null && field.equals("language"))) && language != null) out.print("<language>" + language + "</language>"); String publisher = mdRecord.getPublisher(); if ((field == null || (field != null && field.equals("publisher"))) && publisher != null) out.print("<publisher>" + publisher + "</publisher>"); String date = mdRecord.getYear(); if ((field == null || (field != null && field.equals("date"))) && date != null) out.print("<date>" + date + "</date>"); String subject = mdRecord.getSubject(); if ((field == null || (field != null && field.equals("subject"))) && subject != null) out.print("<subject>" + subject + "</subject>"); String rights = mdRecord.getRights(); if ((field == null || (field != null && field.equals("rights"))) && rights != null) out.print("<rights>" + rights + "</rights>"); String license = mdRecord.getLicense(); if ((field == null || (field != null && field.equals("license"))) && license != null) out.print("<license>" + license + "</license>"); String accessRights = mdRecord.getAccessRights(); if ((field == null || (field != null && field.equals("accessRights"))) && accessRights != null) out.print("<accessRights>" + accessRights + "</accessRights>"); String echoId = mdRecord.getEchoId(); if ((field == null || (field != null && field.equals("echoId"))) && echoId != null) out.print("<echoId>" + echoId + "</echoId>"); String echoPageImageDir = mdRecord.getEchoPageImageDir(); if ((field == null || (field != null && field.equals("echoPageImageDir"))) && echoPageImageDir != null) out.print("<echoPageImageDir>" + echoPageImageDir + "</echoPageImageDir>"); String echoFiguresDir = mdRecord.getEchoFiguresDir(); if ((field == null || (field != null && field.equals("echoFiguresDir"))) && echoFiguresDir != null) out.print("<echoFiguresDir>" + echoFiguresDir + "</echoFiguresDir>"); String mpiwgDocId = mdRecord.getMpiwgDocId(); if ((field == null || (field != null && field.equals("mpiwgDocId"))) && mpiwgDocId != null) out.print("<mpiwgDocId>" + mpiwgDocId + "</mpiwgDocId>"); if (field == null || (field != null && ! field.equals("toc") && ! field.equals("figures") && ! field.equals("notes") && ! field.equals("notesHandwritten") && ! field.equals("pages") && ! field.equals("places"))) out.print("<system>"); int pageCount = mdRecord.getPageCount(); if (field == null || (field != null && field.equals("countPages"))) out.print("<countPages>" + pageCount + "</countPages>"); Date lastModified = mdRecord.getLastModified(); if ((field == null || (field != null && field.equals("lastModified"))) && lastModified != null) { String lastModifiedStr = new Util().toXsDate(lastModified); out.print("<lastModified>" + lastModifiedStr + "</lastModified>"); } String schemaName = mdRecord.getSchemaName(); if ((field == null || (field != null && field.equals("schema"))) && schemaName != null) out.print("<schema>" + schemaName + "</schema>"); if (field == null || (field != null && ! field.equals("toc") && ! field.equals("figures") && ! field.equals("notes") && ! field.equals("notesHandwritten") && ! field.equals("pages") && ! field.equals("places"))) out.print("</system>"); if (field != null && (field.equals("toc") || field.equals("figures") || field.equals("notes") || field.equals("notesHandwritten") || field.equals("pages") || field.equals("places"))) { DocumentHandler docHandler = new DocumentHandler(); String docDir = docHandler.getDocDir(docId); String tocFileName = docDir + "/toc.xml"; File tocFile = new File(tocFileName); String tocStr = FileUtils.readFileToString(tocFile, "utf-8"); String tocXmlStr = tocTransformer.transform(tocStr, field, outputFormat); out.print(tocXmlStr); } out.print("</doc>"); } else if (mdRecord != null && outputFormat.equals("html")) { if (field != null && (field.equals("toc") || field.equals("figures") || field.equals("notes") || field.equals("notesHandwritten") || field.equals("pages") || field.equals("places"))) { DocumentHandler docHandler = new DocumentHandler(); String docDir = docHandler.getDocDir(docId); String tocFileName = docDir + "/toc.xml"; File tocFile = new File(tocFileName); String tocStr = FileUtils.readFileToString(tocFile, "utf-8"); String tocHtmlStr = tocTransformer.transform(tocStr, field, outputFormat); String title = docId + ", " + field; String head = "<head><title>" + title + "</title><link rel=\"stylesheet\" type=\"text/css\" href=\"" + cssUrl + "\"/></head>"; String result = "<html>" + head + "<body>" + tocHtmlStr + "</body>" + "</html>"; out.print(result); } } else { out.print("<result>" + "no document found with id: " + docId + "</result>"); } out.close(); } catch (ApplicationException e) { throw new ServletException(e); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } private String getBaseUrl(HttpServletRequest request) { return getServerUrl(request) + request.getContextPath(); } private String getServerUrl(HttpServletRequest request) { if ( ( request.getServerPort() == 80 ) || ( request.getServerPort() == 443 ) ) return request.getScheme() + "://" + request.getServerName(); else return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort(); } }