annotate servlet/src/digilib/io/DocuDirent.java @ 159:e743b853efca

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