Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/AbstractDocument.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/AbstractDocument.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/AbstractDocument.java	(revision 7466)
@@ -126,4 +126,11 @@
   public boolean isIndexed()
   { return true;
+  }
+
+  /**
+   *  Get the date that this file was modified
+   */
+  public long getModifiedDatestamp()
+  { return this.fileSet.getModifiedDatestamp(); 
   }
 
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentFactory.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentFactory.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentFactory.java	(revision 7466)
@@ -10,4 +10,5 @@
   public static AbstractDocument createDocument(String type, DocumentID id)
   {
+      System.out.println(type + " " + id.toString());
     if (type.equals(HTMLDocument.HTML_DOCUMENT_TYPE))
     { return new HTMLDocument(id);
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentInterface.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentInterface.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentInterface.java	(revision 7466)
@@ -49,4 +49,9 @@
    */
   public boolean isIndexed();
+
+  /**
+   *  Get the date that this file was modified
+   */
+  public long getModifiedDatestamp();
 
   /**
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentLoader.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentLoader.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/DocumentLoader.java	(revision 7466)
@@ -49,10 +49,6 @@
 
   public static String getAsString(URL url)
-  { if (url.toString().startsWith("file://"))
-    { File file = new File(url.toString().substring(7));
-      return getAsString(file);
-    }
-    else if (url.toString().startsWith("file:/"))
-    { File file = new File(url.toString().substring(5));
+  { if (url.getProtocol().equals("file"))
+    { File file = new File(url.getPath());
       return getAsString(file);
     }
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/GMLRecogniser.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/GMLRecogniser.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/GMLRecogniser.java	(revision 7466)
@@ -26,6 +26,6 @@
 
   public boolean parseDocument(URL url)
-  { if (url.toString().startsWith("file://")) {
-      String fileName = url.toString().substring(7);
+  { if (url.getProtocol().equals("file")) {
+      String fileName = url.getPath();
       if (fileName.endsWith(".gml"))
       {	
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/HTMLDocument.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/HTMLDocument.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/HTMLDocument.java	(revision 7466)
@@ -57,13 +57,5 @@
     HTMLTidy tidyDoc;
     if (url.getProtocol().equals("file"))
-    {
-    }
-    if (url.toString().startsWith("file://"))
-    { //htmlDoc = new HTMLDoc(url, url.toString().substring(7));
-      tidyDoc = new HTMLTidy(new File(url.toString().substring(7)));
-    }
-    else if (url.toString().startsWith("file:/"))
-    { //htmlDoc = new HTMLDoc(url, url.toString().substring(5));
-      tidyDoc = new HTMLTidy(new File( url.toString().substring(5)));
+    { tidyDoc = new HTMLTidy(new File(url.getPath()));
     }
     else
@@ -229,9 +221,6 @@
     this.getSectionText("1");
 
-    if (url.toString().startsWith("file://"))
-    { htmlDoc = new HTMLDoc(url, url.toString().substring(7));
-    }
-    else if (url.toString().startsWith("file:/"))
-    { htmlDoc = new HTMLDoc(url, url.toString().substring(5));
+    if (url.getProtocol().equals("file"))
+    { htmlDoc = new HTMLDoc(url, url.getPath());
     }
     else
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/IndexRecogniser.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/IndexRecogniser.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/IndexRecogniser.java	(revision 7466)
@@ -28,9 +28,6 @@
   { String fileName = null;
 
-    if (url.toString().startsWith("file://"))
-    { fileName = url.toString().substring(7);
-    }
-    else if (url.toString().startsWith("file:/"))
-    { fileName = url.toString().substring(5);
+    if (url.getProtocol().equals("file"))
+    { fileName = url.getPath();
     }
     
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/METSDocument.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/METSDocument.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/METSDocument.java	(revision 7466)
@@ -26,6 +26,6 @@
   { super(url);
   
-    if (url.toString().startsWith("file://"))
-    { this._parseFile(new File(url.toString().substring(7)));
+    if (url.getProtocol().equals("file"))
+    { this._parseFile(new File(url.getPath()));
     }
   }
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/RecogniserManager.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/RecogniserManager.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/RecogniserManager.java	(revision 7466)
@@ -5,4 +5,6 @@
 import java.io.File;
 import java.net.URL;
+
+import org.greenstone.gsdl3.gs3build.util.URLTools;
 
 public class RecogniserManager implements FileCrawlObserver
@@ -18,4 +20,29 @@
   }
 
+  /**
+   *  Add a recogniser to this manager
+   */
+  public void addRecogniser(String documentType)
+  { ClassLoader loader = ClassLoader.getSystemClassLoader();
+    java.lang.Class thisClass = null;
+    try {
+       thisClass = loader.loadClass("org.greenstone.gsdl3.gs3build.doctypes." + documentType + "Recogniser");
+    }
+    catch (ClassNotFoundException ex) {
+    }
+
+    try {
+      Object instance = thisClass.newInstance();
+      this.addRecogniser((RecogniserInterface) instance);
+    }
+    catch (InstantiationException instEx) {
+    }
+    catch (IllegalAccessException accEx) {
+    }
+  }
+
+  /**
+   *
+   */
   public void addRecogniser(RecogniserInterface recogniser)
   { this.ensureCapacity(this.used + 1);
@@ -37,5 +64,5 @@
   public void processFile(File file)
   { try {
-      URL url = new URL("file://"+file.toString());
+      URL url = URLTools.getFileURL(file);
       
       this.processFile(url);
Index: /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/TextRecogniser.java
===================================================================
--- /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/TextRecogniser.java	(revision 7465)
+++ /trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/doctypes/TextRecogniser.java	(revision 7466)
@@ -29,9 +29,6 @@
   { String fileName = null;
 
-    if (url.toString().startsWith("file://")) {
-      fileName = url.toString().substring(7);
-    }
-    else if (url.toString().startsWith("file:/")) {
-      fileName = url.toString().substring(5);
+    if (url.getProtocol().equals("file")) {
+      fileName = url.getPath();
     }
 
