annotate servlet/src/digilib/io/AliasingDocuDirCache.java @ 531:9cedd170b581 digilibPDF

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