Mercurial > hg > mpdl-group
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/software/mpdl-services/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/GetDocInfo.java Tue Nov 27 12:35:19 2012 +0100 @@ -0,0 +1,172 @@ +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(); + } + +}