annotate servlet/src/digilib/io/AliasingDocuDirCache.java @ 181:afe7ff98bb71

Servlet version 1.18b1 - new transfer mode "rawfile" with mime-type application/octet-stream - finally proper logging with Log4J! - therefore a lot of debugging-prints changed - the Util class is now useless - ServletOps and FileOps are now purely static
author robcast
date Fri, 21 Nov 2003 00:17:31 +0100
parents 67ff8c7fecb9
children bb4ed821d06e
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;
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
26 import java.util.HashMap;
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
27 import java.util.Iterator;
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
28
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
29 /**
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
30 * @author casties
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
31 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
32 */
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
33 public class AliasingDocuDirCache extends DocuDirCache {
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 * @param baseDirs
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
37 * @param fileClasses
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
38 * @param confFileName
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
39 * @throws FileOpException
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
40 */
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
41 public AliasingDocuDirCache(
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
42 String[] baseDirs,
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
43 int[] fileClasses,
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
44 String confFileName)
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
45 throws FileOpException {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
46 // create standard DocuDirCache
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
47 super(baseDirs, fileClasses);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
48 HashMap pathMap = null;
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
49 // read alias config file
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
50 try {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
51 // create data loader for mapping-file
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
52 File confFile = new File(confFileName);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
53 // load into pathMap
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
54 XMLListLoader mapLoader =
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
55 new XMLListLoader("digilib-aliases", "mapping", "link", "dir");
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
56 pathMap = mapLoader.loadURL(confFile.toURL().toString());
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
57 } catch (Exception e) {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
58 throw new FileOpException("ERROR loading mapping file: " + e);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
59 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
60 if (pathMap == null) {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
61 throw new FileOpException("ERROR unable to load mapping file!");
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 /*
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
65 * load map entries into cache
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
66 */
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
67
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
68 for (Iterator i = pathMap.keySet().iterator(); i.hasNext();) {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
69 String link = (String)i.next();
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
70 String dir = (String) pathMap.get(link);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
71 DocuDirectory destDir = new DocuDirectory(dir, this);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
72 if (destDir.isValid()) {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
73 // add the alias name
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
74 putName(link, destDir);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
75 // add the real dir
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
76 putDir(destDir);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
77 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
78 }
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 /** Adds a DocuDirectory under another name to the cache.
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
82 *
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
83 * @param name
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
84 * @param newdir
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
85 */
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
86 public void putName(String name, DocuDirectory newdir) {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
87 if (map.containsKey(name)) {
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
88 logger.warn("Baah, duplicate key in AliasingDocuDirCache.put!");
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
89 } else {
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
90 map.put(name, newdir);
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
91 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
92 }
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
93
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents:
diff changeset
94 }