Mercurial > hg > digilib-old
comparison servlet/src/main/java/digilib/io/DocuDirentImpl.java @ 892:ba1eb2d821a2 mvnify
rearrange sources to maven directory standard
| author | robcast |
|---|---|
| date | Tue, 19 Apr 2011 18:44:25 +0200 |
| parents | servlet/src/digilib/io/DocuDirentImpl.java@69bc69381ac4 |
| children |
comparison
equal
deleted
inserted
replaced
| 891:6584af320296 | 892:ba1eb2d821a2 |
|---|---|
| 1 /* | |
| 2 * DocuDirent.java -- Abstract directory entry in a DocuDirectory | |
| 3 * | |
| 4 * Digital Image Library servlet components | |
| 5 * | |
| 6 * Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de) | |
| 7 * | |
| 8 * This program is free software; you can redistribute it and/or modify it | |
| 9 * under the terms of the GNU General Public License as published by the Free | |
| 10 * Software Foundation; either version 2 of the License, or (at your option) | |
| 11 * any later version. | |
| 12 * | |
| 13 * Please read license.txt for the full details. A copy of the GPL may be found | |
| 14 * at http://www.gnu.org/copyleft/lgpl.html | |
| 15 * | |
| 16 * You should have received a copy of the GNU General Public License along with | |
| 17 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple | |
| 18 * Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 * | |
| 20 * Created on 15.09.2003 by casties | |
| 21 * | |
| 22 */ | |
| 23 package digilib.io; | |
| 24 | |
| 25 import java.io.File; | |
| 26 import java.util.Map; | |
| 27 | |
| 28 import org.apache.log4j.Logger; | |
| 29 | |
| 30 import digilib.io.FileOps.FileClass; | |
| 31 import digilib.meta.MetadataMap; | |
| 32 import digilib.meta.XMLMetaLoader; | |
| 33 | |
| 34 /** | |
| 35 * Abstract directory entry in a DocuDirectory. | |
| 36 * | |
| 37 * @author casties | |
| 38 * | |
| 39 */ | |
| 40 public abstract class DocuDirentImpl implements DocuDirent { | |
| 41 | |
| 42 /** the file class of this file */ | |
| 43 protected static FileClass fileClass = FileClass.NONE; | |
| 44 /** HashMap with metadata */ | |
| 45 protected MetadataMap fileMeta = null; | |
| 46 /** Is the Metadata valid */ | |
| 47 protected boolean metaChecked = false; | |
| 48 /** the parent directory */ | |
| 49 protected Directory parent = null; | |
| 50 | |
| 51 /* (non-Javadoc) | |
| 52 * @see digilib.io.DocuDirent#checkMeta() | |
| 53 */ | |
| 54 public abstract void checkMeta(); | |
| 55 | |
| 56 /* (non-Javadoc) | |
| 57 * @see digilib.io.DocuDirent#getInput() | |
| 58 */ | |
| 59 public abstract File getFile(); | |
| 60 | |
| 61 /* (non-Javadoc) | |
| 62 * @see digilib.io.DocuDirent#readMeta() | |
| 63 */ | |
| 64 public void readMeta() { | |
| 65 if ((fileMeta != null) || (getFile() == null)) { | |
| 66 // there is already metadata or there is no file | |
| 67 return; | |
| 68 } | |
| 69 // metadata is in the file {filename}.meta | |
| 70 String fn = getFile().getAbsolutePath(); | |
| 71 File mf = new File(fn + ".meta"); | |
| 72 if (mf.canRead()) { | |
| 73 XMLMetaLoader ml = new XMLMetaLoader(); | |
| 74 try { | |
| 75 // read meta file | |
| 76 Map<String, MetadataMap> meta = ml.loadURL(mf.getAbsolutePath()); | |
| 77 if (meta == null) { | |
| 78 return; | |
| 79 } | |
| 80 fileMeta = meta.get(getName()); | |
| 81 } catch (Exception e) { | |
| 82 Logger.getLogger(this.getClass()).warn("error reading file .meta", e); | |
| 83 } | |
| 84 } | |
| 85 } | |
| 86 | |
| 87 /* (non-Javadoc) | |
| 88 * @see digilib.io.DocuDirent#getName() | |
| 89 */ | |
| 90 public String getName() { | |
| 91 File f = getFile(); | |
| 92 return (f != null) ? f.getName() : null; | |
| 93 } | |
| 94 | |
| 95 /* (non-Javadoc) | |
| 96 * @see digilib.io.DocuDirent#getParent() | |
| 97 */ | |
| 98 public Directory getParent() { | |
| 99 return parent; | |
| 100 } | |
| 101 | |
| 102 /* (non-Javadoc) | |
| 103 * @see digilib.io.DocuDirent#setParent(digilib.io.Directory) | |
| 104 */ | |
| 105 public void setParent(Directory parent) { | |
| 106 this.parent = parent; | |
| 107 } | |
| 108 | |
| 109 /* (non-Javadoc) | |
| 110 * @see digilib.io.DocuDirent#getFileMeta() | |
| 111 */ | |
| 112 public MetadataMap getFileMeta() { | |
| 113 return fileMeta; | |
| 114 } | |
| 115 | |
| 116 /* (non-Javadoc) | |
| 117 * @see digilib.io.DocuDirent#setFileMeta(digilib.io.MetadataMap) | |
| 118 */ | |
| 119 public void setFileMeta(MetadataMap fileMeta) { | |
| 120 this.fileMeta = fileMeta; | |
| 121 } | |
| 122 | |
| 123 /* (non-Javadoc) | |
| 124 * @see digilib.io.DocuDirent#isMetaChecked() | |
| 125 */ | |
| 126 public boolean isMetaChecked() { | |
| 127 return metaChecked; | |
| 128 } | |
| 129 | |
| 130 /** | |
| 131 * @return | |
| 132 */ | |
| 133 public static FileClass getFileClass() { | |
| 134 return fileClass; | |
| 135 } | |
| 136 | |
| 137 /* (non-Javadoc) | |
| 138 * @see digilib.io.DocuDirent#compareTo(java.lang.Object) | |
| 139 */ | |
| 140 public int compareTo(Object arg0) { | |
| 141 if (arg0 instanceof DocuDirentImpl) { | |
| 142 return getName().compareTo(((DocuDirent) arg0).getName()); | |
| 143 } else { | |
| 144 return getName().compareTo((String) arg0); | |
| 145 } | |
| 146 } | |
| 147 | |
| 148 | |
| 149 } |
