Revision: 5166
          http://sourceforge.net/p/jump-pilot/code/5166
Author:   edso
Date:     2016-11-06 14:23:06 +0000 (Sun, 06 Nov 2016)
Log Message:
-----------
generalize FILE/URI ReaderWriterDatasource fix somewhat

Modified Paths:
--------------
    
core/trunk/src/com/vividsolutions/jump/io/datasource/ReaderWriterFileDataSource.java

Modified: 
core/trunk/src/com/vividsolutions/jump/io/datasource/ReaderWriterFileDataSource.java
===================================================================
--- 
core/trunk/src/com/vividsolutions/jump/io/datasource/ReaderWriterFileDataSource.java
        2016-11-06 12:49:20 UTC (rev 5165)
+++ 
core/trunk/src/com/vividsolutions/jump/io/datasource/ReaderWriterFileDataSource.java
        2016-11-06 14:23:06 UTC (rev 5166)
@@ -31,6 +31,7 @@
  */
 package com.vividsolutions.jump.io.datasource;
 
+import java.io.File;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -81,8 +82,10 @@
           throw new UnsupportedOperationException("reading is not supported");
         
         try {
+          DriverProperties dp = getReaderDriverProperties();
+          fixUpDriverProperties(dp);
+
           // make readers task monitor aware
-          DriverProperties dp = getReaderDriverProperties();
           URI uri = new URI(dp.getProperty(DataSource.URI_KEY));
           if (reader instanceof TaskMonitorSupport) {
             ((TaskMonitorSupport) reader).setTaskMonitor(monitor);
@@ -113,15 +116,11 @@
         if (!isWritable())
           throw new UnsupportedOperationException("writing is not supported");
         
+        DriverProperties dp = getWriterDriverProperties();
+        fixUpDriverProperties(dp);
+
         // make readers task monitor aware
-        DriverProperties dp = getWriterDriverProperties();
-        URI uri = null;
-        if (dp.getProperty(DataSource.URI_KEY) != null) {
-          uri = new URI(dp.getProperty(DataSource.URI_KEY));
-          if (dp.getProperty(DataSource.FILE_KEY) == null) {
-            dp.setProperty(DataSource.FILE_KEY, uri.getPath());
-          }
-        }
+        URI uri = new URI(dp.getProperty(DataSource.URI_KEY));
         if (writer instanceof TaskMonitorSupport) {
           ((TaskMonitorSupport) writer).setTaskMonitor(monitor);
           TaskMonitorUtil
@@ -173,16 +172,33 @@
     return getDriverProperties();
   }
 
-  protected DriverProperties getDriverProperties() {
+  protected DriverProperties getDriverProperties(){
     DriverProperties properties = new DriverProperties();
     Map<Object,Object> map = getProperties();
-    // explicitely copy into properties object or getProperty() returns null
+
+    // explicitly copy into properties object or getProperty() returns null
     for (Map.Entry entry : map.entrySet()){
       properties.setProperty(String.valueOf(entry.getKey()), 
(String.valueOf(entry.getValue())));
     }
+
     return properties;
   }
 
+  private DriverProperties fixUpDriverProperties(DriverProperties dp)
+      throws Exception {
+    // fixup the properties: generate FILE from URI and the other way around
+    // some _old_ Drivers expect a FILE property to be set, let's generate it
+    // from URI in case it is missing
+    String uri = dp.getProperty(DataSource.URI_KEY);
+    String file = dp.getProperty(DataSource.FILE_KEY);
+    if (file == null && uri != null)
+      dp.setProperty(DataSource.FILE_KEY, new URI(uri).getPath());
+    else if (file != null && uri == null)
+      dp.setProperty(DataSource.URI_KEY, new File(file).toURI().toString());
+
+    return dp;
+  }
+
   @Override
   public boolean isReadable() {
     return reader instanceof JUMPReader;


------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to