annotate software/mpdl-services-new/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/GetDocInfo.java @ 25:e9fe3186670c default tip

letzter Stand eingecheckt
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 21 May 2013 10:19:32 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 package de.mpg.mpiwg.berlin.mpdl.servlets.cms;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 import java.io.File;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 import java.io.IOException;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 import java.io.PrintWriter;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 import java.util.Date;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
7
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 import javax.servlet.ServletConfig;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 import javax.servlet.ServletContext;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 import javax.servlet.ServletException;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 import javax.servlet.http.HttpServlet;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 import javax.servlet.http.HttpServletRequest;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 import javax.servlet.http.HttpServletResponse;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
14
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 import org.apache.commons.io.FileUtils;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
16
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 import de.mpg.mpiwg.berlin.mpdl.cms.document.DocumentHandler;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 import de.mpg.mpiwg.berlin.mpdl.cms.document.MetadataRecord;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 import de.mpg.mpiwg.berlin.mpdl.cms.lucene.IndexHandler;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 import de.mpg.mpiwg.berlin.mpdl.cms.transform.TocTransformer;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 import de.mpg.mpiwg.berlin.mpdl.util.Util;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
23
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 public class GetDocInfo extends HttpServlet {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 private static final long serialVersionUID = 1L;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 private TocTransformer tocTransformer;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
27
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 public GetDocInfo() {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 super();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
31
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 public void init(ServletConfig config) throws ServletException {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 super.init(config);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 ServletContext context = getServletContext();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 tocTransformer = (TocTransformer) context.getAttribute("tocTransformer");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
37
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 request.setCharacterEncoding("utf-8");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 response.setCharacterEncoding("utf-8");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 String docId = request.getParameter("docId");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 String field = request.getParameter("field");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 String outputFormat = request.getParameter("outputFormat");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 if (outputFormat == null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 outputFormat = "xml";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 String cssUrl = request.getParameter("cssUrl");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 if (cssUrl == null) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 String baseUrl = getBaseUrl(request);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 cssUrl = baseUrl + "/css/page.css";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 try {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 IndexHandler indexHandler = IndexHandler.getInstance();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 MetadataRecord mdRecord = indexHandler.getDocMetadata(docId);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 if (outputFormat.equals("xml"))
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 response.setContentType("text/xml");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 else if (outputFormat.equals("html"))
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 response.setContentType("text/html");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 PrintWriter out = response.getWriter();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 if (mdRecord != null && outputFormat.equals("xml")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 out.print("<doc>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 out.print("<id>" + docId + "</id>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 String identifier = mdRecord.getIdentifier();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 if ((field == null || (field != null && field.equals("identifier"))) && identifier != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 out.print("<identifier>" + identifier + "</identifier>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 String uri = mdRecord.getUri();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 if ((field == null || (field != null && field.equals("uri"))) && uri != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 out.print("<uri>" + uri + "</uri>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 String collectionNames = mdRecord.getCollectionNames();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 if ((field == null || (field != null && field.equals("collectionNames"))) && collectionNames != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 out.print("<collectionNames>" + collectionNames + "</collectionNames>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 String author = mdRecord.getCreator();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 if ((field == null || (field != null && field.equals("author"))) && author != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 out.print("<author>" + author + "</author>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 String title = mdRecord.getTitle();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 if ((field == null || (field != null && field.equals("title"))) && title != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 out.print("<title>" + title + "</title>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 String language = mdRecord.getLanguage();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 if ((field == null || (field != null && field.equals("language"))) && language != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 out.print("<language>" + language + "</language>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
80 String publisher = mdRecord.getPublisher();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 if ((field == null || (field != null && field.equals("publisher"))) && publisher != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 out.print("<publisher>" + publisher + "</publisher>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 String date = mdRecord.getYear();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 if ((field == null || (field != null && field.equals("date"))) && date != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 out.print("<date>" + date + "</date>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 String subject = mdRecord.getSubject();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 if ((field == null || (field != null && field.equals("subject"))) && subject != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 out.print("<subject>" + subject + "</subject>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 String rights = mdRecord.getRights();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 if ((field == null || (field != null && field.equals("rights"))) && rights != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 out.print("<rights>" + rights + "</rights>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 String license = mdRecord.getLicense();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 if ((field == null || (field != null && field.equals("license"))) && license != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 out.print("<license>" + license + "</license>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 String accessRights = mdRecord.getAccessRights();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 if ((field == null || (field != null && field.equals("accessRights"))) && accessRights != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 out.print("<accessRights>" + accessRights + "</accessRights>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 String echoId = mdRecord.getEchoId();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 if ((field == null || (field != null && field.equals("echoId"))) && echoId != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 out.print("<echoId>" + echoId + "</echoId>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
101 String echoPageImageDir = mdRecord.getEchoPageImageDir();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 if ((field == null || (field != null && field.equals("echoPageImageDir"))) && echoPageImageDir != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 out.print("<echoPageImageDir>" + echoPageImageDir + "</echoPageImageDir>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
104 String echoFiguresDir = mdRecord.getEchoFiguresDir();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 if ((field == null || (field != null && field.equals("echoFiguresDir"))) && echoFiguresDir != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
106 out.print("<echoFiguresDir>" + echoFiguresDir + "</echoFiguresDir>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 String mpiwgDocId = mdRecord.getMpiwgDocId();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
108 if ((field == null || (field != null && field.equals("mpiwgDocId"))) && mpiwgDocId != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
109 out.print("<mpiwgDocId>" + mpiwgDocId + "</mpiwgDocId>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
110 if (field == null || (field != null && ! field.equals("toc") && ! field.equals("figures") && ! field.equals("notes") && ! field.equals("notesHandwritten") && ! field.equals("pages") && ! field.equals("places")))
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
111 out.print("<system>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
112 int pageCount = mdRecord.getPageCount();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
113 if (field == null || (field != null && field.equals("countPages")))
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
114 out.print("<countPages>" + pageCount + "</countPages>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
115 DocumentHandler docHandler = new DocumentHandler();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
116 String docDir = docHandler.getDocDir(docId);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
117 String tocFileName = docDir + "/toc.xml";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
118 File tocFile = new File(tocFileName);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
119 String tocStr = FileUtils.readFileToString(tocFile, "utf-8");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
120 String tocCount = getTocCount(tocStr, "toc");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
121 out.print("<countTocEntries>" + tocCount + "</countTocEntries>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
122 String figuresCount = getTocCount(tocStr, "figures");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
123 out.print("<countFigures>" + figuresCount + "</countFigures>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
124 String notesCount = getTocCount(tocStr, "notes");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
125 out.print("<countNotes>" + notesCount + "</countNotes>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
126 String notesHandwrittenCount = getTocCount(tocStr, "notesHandwritten");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
127 out.print("<countNotesHandwritten>" + notesHandwrittenCount + "</countNotesHandwritten>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
128 String placesCount = getTocCount(tocStr, "places");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
129 out.print("<countPlaces>" + placesCount + "</countPlaces>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
130 Date lastModified = mdRecord.getLastModified();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
131 if ((field == null || (field != null && field.equals("lastModified"))) && lastModified != null) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
132 String lastModifiedStr = new Util().toXsDate(lastModified);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
133 out.print("<lastModified>" + lastModifiedStr + "</lastModified>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
134 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
135 String schemaName = mdRecord.getSchemaName();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
136 if ((field == null || (field != null && field.equals("schema"))) && schemaName != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
137 out.print("<schema>" + schemaName + "</schema>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
138 if (field == null || (field != null && ! field.equals("toc") && ! field.equals("figures") && ! field.equals("notes") && ! field.equals("notesHandwritten") && ! field.equals("pages") && ! field.equals("places")))
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
139 out.print("</system>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
140 if (field != null && (field.equals("toc") || field.equals("figures") || field.equals("notes") || field.equals("notesHandwritten") || field.equals("pages") || field.equals("places"))) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
141 String tocXmlStr = tocTransformer.transform(tocStr, field, outputFormat);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
142 out.print(tocXmlStr);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
143 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
144 out.print("</doc>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
145 } else if (mdRecord != null && outputFormat.equals("html")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
146 if (field != null && (field.equals("toc") || field.equals("figures") || field.equals("notes") || field.equals("notesHandwritten") || field.equals("pages") || field.equals("places"))) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
147 DocumentHandler docHandler = new DocumentHandler();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
148 String docDir = docHandler.getDocDir(docId);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
149 String tocFileName = docDir + "/toc.xml";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
150 File tocFile = new File(tocFileName);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
151 String tocStr = FileUtils.readFileToString(tocFile, "utf-8");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
152 String tocHtmlStr = tocTransformer.transform(tocStr, field, outputFormat);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
153 String title = docId + ", " + field;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
154 String head = "<head><title>" + title + "</title><link rel=\"stylesheet\" type=\"text/css\" href=\"" + cssUrl + "\"/></head>";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
155 String result = "<html>" + head + "<body>" + tocHtmlStr + "</body>" + "</html>";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
156 out.print(result);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
157 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
158 } else {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
159 out.print("<result>" + "no document found with id: " + docId + "</result>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
160 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
161 out.close();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
162 } catch (ApplicationException e) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
163 throw new ServletException(e);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
164 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
165 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
166
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
167 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
168 doGet(request, response);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
169 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
170
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
171 private String getBaseUrl(HttpServletRequest request) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
172 return getServerUrl(request) + request.getContextPath();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
173 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
174
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
175 private String getServerUrl(HttpServletRequest request) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
176 if ( ( request.getServerPort() == 80 ) || ( request.getServerPort() == 443 ) )
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
177 return request.getScheme() + "://" + request.getServerName();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
178 else
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
179 return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
180 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
181
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
182 private String getTocCount(String tocStr, String type) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
183 String tocCount = "0";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
184 if (tocStr == null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
185 return "0";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
186 String listTypeStr = "<list type=\"" + type + "\" count=\"";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
187 int from = tocStr.indexOf(listTypeStr);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
188 if (from != -1) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
189 from = from + listTypeStr.length();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
190 int to = tocStr.indexOf("\"", from);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
191 tocCount = tocStr.substring(from, to);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
192 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
193 return tocCount;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
194 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
195 }