annotate servlet/src/digilib/io/AliasingDocuDirCache.java @ 563:686086d6e6d6 digilibPDF

more refactoring and rearranging more enums pdf and image generation still works
author robcast
date Fri, 17 Dec 2010 20:42:25 +0100
parents e758a49258e8
children 69bc69381ac4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
1 /*
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
2 * AliasingDocuDirCache -- DocuDirCache using alias entries from config file
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
3 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
4 * Digital Image Library servlet components
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
5 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
6 * Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de)
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
7 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify it
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
9 * under the terms of the GNU General Public License as published by the Free
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
10 * Software Foundation; either version 2 of the License, or (at your option)
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
11 * any later version.
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
12 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
13 * Please read license.txt for the full details. A copy of the GPL may be found
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
14 * at http://www.gnu.org/copyleft/lgpl.html
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
15 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License along with
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
17 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
18 * Place, Suite 330, Boston, MA 02111-1307 USA
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
19 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
20 * Created on 04.11.2003
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
21 */
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
22
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
23 package digilib.io;
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
24
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
25 import java.io.File;
268
2c7747cc1838 Servlet version 1.21b3
robcast
parents: 259
diff changeset
26 import java.util.Map;
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
27 import java.util.Map.Entry;
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
28
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 536
diff changeset
29 import digilib.io.FileOps.FileClass;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
30 import digilib.servlet.DigilibConfiguration;
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
31
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
32 /**
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
33 * @author casties
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
34 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
35 */
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
36 public class AliasingDocuDirCache extends DocuDirCache {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
37
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
38 /**
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
39 * @param baseDirs
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 536
diff changeset
40 * @param fcs
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
41 * @param confFileName
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
42 * @throws FileOpException
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
43 */
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 536
diff changeset
44 public AliasingDocuDirCache(String[] baseDirs, FileClass[] fcs,
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
45 File confFile, DigilibConfiguration dlConfig)
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
46 throws FileOpException {
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
47 // create standard DocuDirCache
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 536
diff changeset
48 super(baseDirs, fcs, dlConfig);
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
49 Map<String,String> pathMap = null;
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
50 // read alias config file
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
51 try {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
52 // load into pathMap
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
53 XMLListLoader mapLoader = new XMLListLoader("digilib-aliases",
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
54 "mapping", "link", "dir");
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
55 pathMap = mapLoader.loadURL(confFile.toURL().toString());
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
56 } catch (Exception e) {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
57 throw new FileOpException("ERROR loading mapping file: " + e);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
58 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
59 if (pathMap == null) {
197
bb4ed821d06e Servlet version 1.18b6
robcast
parents: 181
diff changeset
60 throw new FileOpException("ERROR: unable to load mapping file!");
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
61 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
62
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
63 /*
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
64 * load map entries into cache
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
65 */
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
66
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
67 for (Entry<String, String> linkdir: pathMap.entrySet()) {
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
68 if (linkdir.getValue() == null) {
350
86e50ca164f1 Servlet version 1.5.8b
robcast
parents: 268
diff changeset
69 logger.error("Key mismatch in mapping file!");
86e50ca164f1 Servlet version 1.5.8b
robcast
parents: 268
diff changeset
70 break;
86e50ca164f1 Servlet version 1.5.8b
robcast
parents: 268
diff changeset
71 }
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
72 DocuDirectory destDir = new DocuDirectory(linkdir.getValue(), this);
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
73 if (destDir.isValid()) {
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
74 logger.debug("Aliasing dir: " + linkdir.getKey());
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
75 // add the alias name
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
76 putName(FileOps.normalName(linkdir.getKey()), destDir);
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
77 // add the real dir
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
78 putDir(destDir);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
79 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
80 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
81 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
82
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
83 /**
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
84 * Adds a DocuDirectory under another name to the cache.
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
85 *
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
86 * @param name
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
87 * @param newdir
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
88 */
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
89 public void putName(String name, DocuDirectory newdir) {
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
90 if (map.containsKey(name)) {
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
91 logger.warn("Duplicate key in AliasingDocuDirCache.put -- ignored!");
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
92 } else {
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
93 map.put(name, newdir);
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
94 }
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
95 }
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 209
diff changeset
96
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
97 }