annotate servlet/src/digilib/io/DocuDirent.java @ 270:b21915a3fc24

Servlet version 1.21b3 - searching in directories got faster (real binarySearch now!) - cached file lists get disposed - some code cleaning (Map types instead of HashMap)
author robcast
date Tue, 12 Oct 2004 16:06:43 +0200
parents beed92ee6022
children d3abaf38fb5f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
1 /*
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
2 * DocuDirent.java -- Abstract directory entry in a DocuDirectory
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
3 *
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
4 * Digital Image Library servlet components
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
5 *
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
6 * Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de)
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
7 *
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
8 * This program is free software; you can redistribute it and/or modify it
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
9 * under the terms of the GNU General Public License as published by the Free
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
10 * Software Foundation; either version 2 of the License, or (at your option)
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
11 * any later version.
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
12 *
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
13 * Please read license.txt for the full details. A copy of the GPL may be found
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
14 * at http://www.gnu.org/copyleft/lgpl.html
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
15 *
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
16 * You should have received a copy of the GNU General Public License along with
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
17 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
18 * Place, Suite 330, Boston, MA 02111-1307 USA
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
19 *
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
20 * Created on 15.09.2003 by casties
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
21 *
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
22 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
23 package digilib.io;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
24
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
25 import java.io.File;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
26 import java.util.HashMap;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
27
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
28 import org.apache.log4j.Logger;
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
29
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
30 /**
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
31 * Abstract directory entry in a DocuDirectory.
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
32 *
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
33 * @author casties
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
34 *
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
35 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
36 public abstract class DocuDirent {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
37
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
38 /** the file class of this file */
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
39 protected static int fileClass = FileOps.CLASS_NONE;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
40 /** HashMap with metadata */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
41 protected HashMap fileMeta = null;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
42 /** Is the Metadata valid */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
43 protected boolean metaChecked = false;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
44 /** the parent directory */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
45 protected Directory parent = null;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
46
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
47 /**
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
48 * Checks metadata and does something with it.
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
49 *
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
50 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
51 public abstract void checkMeta();
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
52
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
53 /**
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
54 * gets the (default) File
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
55 *
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
56 * @return
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
57 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
58 public abstract File getFile();
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
59
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
60 /**
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
61 * Reads meta-data for this Fileset if there is any.
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
62 *
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
63 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
64 public void readMeta() {
195
f921735dc578 Servlet version 1.18b4
robcast
parents: 181
diff changeset
65 if ((fileMeta != null) || (getFile() == null)) {
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
66 // there is already metadata or there is no file
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
67 return;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
68 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
69 // metadata is in the file {filename}.meta
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
70 String fn = getFile().getAbsolutePath();
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
71 File mf = new File(fn + ".meta");
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
72 if (mf.canRead()) {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
73 XMLMetaLoader ml = new XMLMetaLoader();
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
74 try {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
75 // read meta file
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
76 HashMap meta = ml.loadURL(mf.getAbsolutePath());
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
77 if (meta == null) {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
78 return;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
79 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
80 fileMeta = (HashMap) meta.get(getName());
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
81 } catch (Exception e) {
195
f921735dc578 Servlet version 1.18b4
robcast
parents: 181
diff changeset
82 Logger.getLogger(this.getClass()).warn("error reading file .meta", e);
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
83 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
84 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
85 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
86
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
87 /**
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
88 * The name of the file.
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents: 159
diff changeset
89 *
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
90 * If this is a Fileset, the method returns the name of the default file
176
67ff8c7fecb9 Servlet version 1.17b2
robcast
parents: 159
diff changeset
91 * (for image filesets the highest resolution file).
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
92 *
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
93 * @return
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
94 */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
95 public String getName() {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
96 File f = getFile();
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
97 return (f != null) ? f.getName() : null;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
98 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
99
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
100 /**
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
101 * Returns the parent Directory.
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
102 *
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
103 * @return DocuDirectory
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
104 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
105 public Directory getParent() {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
106 return parent;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
107 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
108
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
109 /**
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
110 * Sets the parent Directory.
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
111 *
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
112 * @param parent
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
113 * The parent to set
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
114 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
115 public void setParent(Directory parent) {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
116 this.parent = parent;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
117 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
118
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
119 /**
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
120 * Returns the meta-data for this file(set).
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
121 *
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
122 * @return HashMap
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
123 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
124 public HashMap getFileMeta() {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
125 return fileMeta;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
126 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
127
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
128 /**
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
129 * Sets the meta-data for this file(set) .
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
130 *
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
131 * @param fileMeta
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
132 * The fileMeta to set
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
133 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
134 public void setFileMeta(HashMap fileMeta) {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
135 this.fileMeta = fileMeta;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
136 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
137
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
138 /**
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
139 * @return
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
140 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
141 public boolean isMetaChecked() {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
142 return metaChecked;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
143 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
144
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
145 /**
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
146 * @return
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
147 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
148 public static int getFileClass() {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
149 return fileClass;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
150 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
151
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
152 }