diff servlet/src/digilib/io/DocuDirectory.java @ 341:d10e4ce2a153

Servlet version 1.5.4b - filenames with dots (brr...) work when given without extension
author robcast
date Wed, 17 Nov 2004 19:30:34 +0100
parents 90bab835fc25
children f8ca069517a2
line wrap: on
line diff
--- a/servlet/src/digilib/io/DocuDirectory.java	Thu Nov 04 17:06:13 2004 +0100
+++ b/servlet/src/digilib/io/DocuDirectory.java	Wed Nov 17 19:30:34 2004 +0100
@@ -425,21 +425,16 @@
 		} else {
 			// try closest matches without extension
 			idx = -idx - 1;
-			String fb = FileOps.basename(fn);
-			DocuDirent fs;
 			if ((idx < fileList.size())
-					&& (FileOps.basename(((DocuDirent) fileList.get(idx))
-							.getName()).equals(fb))) {
+					&& isBaseInList(fileList, idx, fn)) {
 				// idx matches
 				return idx;
 			} else if ((idx > 0)
-					&& (FileOps.basename(((DocuDirent) fileList.get(idx - 1))
-							.getName()).equals(fb))) {
+					&& isBaseInList(fileList, idx-1, fn)) {
 				// idx-1 matches
 				return idx - 1;
 			} else if ((idx + 1 < fileList.size())
-					&& (FileOps.basename(((DocuDirent) fileList.get(idx - 1))
-							.getName()).equals(fb))) {
+					&& isBaseInList(fileList, idx+1, fn)) {
 				// idx+1 matches
 				return idx + 1;
 			}
@@ -448,6 +443,13 @@
 		return -1;
 	}
 
+	private boolean isBaseInList(List fl, int idx, String fn) {
+		String dfn = FileOps.basename(((DocuDirent) fl.get(idx))
+				.getName());
+		return (dfn.equals(fn)||dfn.equals(FileOps.basename(fn))); 
+	}
+	
+	
 	/**
 	 * Finds the DocuDirent with the name <code>fn</code>.
 	 *