annotate servlet/src/digilib/io/DocuDirentImpl.java @ 576:dad720e9b12b stream

try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
author robcast
date Wed, 22 Dec 2010 20:19:06 +0100
parents servlet/src/digilib/io/DocuDirent.java@790cbfb58b52
children c7034d166a24
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;
271
d3abaf38fb5f Servlet version 1.21b3
robcast
parents: 259
diff changeset
26 import java.util.Map;
159
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
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 536
diff changeset
30 import digilib.io.FileOps.FileClass;
686086d6e6d6 more refactoring and rearranging
robcast
parents: 536
diff changeset
31
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
32 /**
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
33 * Abstract directory entry in a DocuDirectory.
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
34 *
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
35 * @author casties
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 176
diff changeset
36 *
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
37 */
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
38 public abstract class DocuDirentImpl implements DocuDirent {
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
39
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
40 /** the file class of this file */
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 536
diff changeset
41 protected static FileClass fileClass = FileClass.NONE;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
42 /** HashMap with metadata */
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
43 protected MetadataMap fileMeta = null;
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
44 /** Is the Metadata valid */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
45 protected boolean metaChecked = false;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
46 /** the parent directory */
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
47 protected Directory parent = null;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
48
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
49 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
50 * @see digilib.io.DocuDirent#checkMeta()
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
51 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
52 public abstract void checkMeta();
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
53
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
54 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
55 * @see digilib.io.DocuDirent#getInput()
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
56 */
574
790cbfb58b52 ripping apart ImageFileSet
robcast
parents: 563
diff changeset
57 public abstract File getInput();
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
58
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
59 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
60 * @see digilib.io.DocuDirent#readMeta()
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
61 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
62 public void readMeta() {
574
790cbfb58b52 ripping apart ImageFileSet
robcast
parents: 563
diff changeset
63 if ((fileMeta != null) || (getInput() == null)) {
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
64 // there is already metadata or there is no file
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
65 return;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
66 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
67 // metadata is in the file {filename}.meta
574
790cbfb58b52 ripping apart ImageFileSet
robcast
parents: 563
diff changeset
68 String fn = getInput().getAbsolutePath();
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
69 File mf = new File(fn + ".meta");
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
70 if (mf.canRead()) {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
71 XMLMetaLoader ml = new XMLMetaLoader();
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
72 try {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
73 // read meta file
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
74 Map<String, MetadataMap> meta = ml.loadURL(mf.getAbsolutePath());
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
75 if (meta == null) {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
76 return;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
77 }
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
78 fileMeta = meta.get(getName());
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
79 } catch (Exception e) {
195
f921735dc578 Servlet version 1.18b4
robcast
parents: 181
diff changeset
80 Logger.getLogger(this.getClass()).warn("error reading file .meta", e);
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
81 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
82 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
83 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
84
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
85 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
86 * @see digilib.io.DocuDirent#getName()
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
87 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
88 public String getName() {
574
790cbfb58b52 ripping apart ImageFileSet
robcast
parents: 563
diff changeset
89 File f = getInput();
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
90 return (f != null) ? f.getName() : null;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
91 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
92
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
93 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
94 * @see digilib.io.DocuDirent#getParent()
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
95 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
96 public Directory getParent() {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
97 return parent;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
98 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
99
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
100 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
101 * @see digilib.io.DocuDirent#setParent(digilib.io.Directory)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
102 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
103 public void setParent(Directory parent) {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
104 this.parent = parent;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
105 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
106
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
107 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
108 * @see digilib.io.DocuDirent#getFileMeta()
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
109 */
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
110 public MetadataMap getFileMeta() {
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
111 return fileMeta;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
112 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
113
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
114 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
115 * @see digilib.io.DocuDirent#setFileMeta(digilib.io.MetadataMap)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
116 */
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
117 public void setFileMeta(MetadataMap fileMeta) {
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
118 this.fileMeta = fileMeta;
259
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
119 }
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
120
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
121 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
122 * @see digilib.io.DocuDirent#isMetaChecked()
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
123 */
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
124 public boolean isMetaChecked() {
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
125 return metaChecked;
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 * @return
beed92ee6022 Servlet version 1.21b1
robcast
parents: 195
diff changeset
130 */
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 536
diff changeset
131 public static FileClass getFileClass() {
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
132 return fileClass;
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
133 }
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
134
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
135 /* (non-Javadoc)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
136 * @see digilib.io.DocuDirent#compareTo(java.lang.Object)
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
137 */
271
d3abaf38fb5f Servlet version 1.21b3
robcast
parents: 259
diff changeset
138 public int compareTo(Object arg0) {
576
dad720e9b12b try: DocuDirent as interface, ImageFile inherits from ImageInput and implements DocuDirent
robcast
parents: 574
diff changeset
139 if (arg0 instanceof DocuDirentImpl) {
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
140 return getName().compareTo(((DocuDirent) arg0).getName());
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
141 } else {
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
142 return getName().compareTo((String) arg0);
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents:
diff changeset
143 }
271
d3abaf38fb5f Servlet version 1.21b3
robcast
parents: 259
diff changeset
144 }
475
1fc30116efc3 modified DocuDirent.compareTo instead of ImageFileset.compareTo
hertzhaft
parents: 371
diff changeset
145
271
d3abaf38fb5f Servlet version 1.21b3
robcast
parents: 259
diff changeset
146
159
e743b853efca servlet version 1.16a4
robcast
parents:
diff changeset
147 }