New test.
[mono.git] / mcs / class / System.Data / Mainsoft.Data.Configuration.jvm / KeyMapperBase.cs
index 5f3f55f71fbe896557fc071fa7dbc3173a9038f1..ca914ae011efbde2fd3724c4b36d1d5a00d19986 100644 (file)
@@ -34,6 +34,7 @@ using System.Collections;
 using System.Collections.Specialized;
 using System.Text;
 using System.Globalization;
+using System.IO;
 
 namespace Mainsoft.Data.Configuration
 {
@@ -44,6 +45,7 @@ namespace Mainsoft.Data.Configuration
                private readonly IDictionary _dictionary;
                private readonly NameValueCollection _mapping;
                private readonly NameValueCollection _actualKeys;
+               const string DataDirectoryPlaceholder = "|DataDirectory|";
 
                #endregion // Fields
 
@@ -96,6 +98,17 @@ namespace Mainsoft.Data.Configuration
                        }
                        //connectionString += ";";
 
+                       if (connectionString.IndexOf (DataDirectoryPlaceholder, StringComparison.Ordinal) >= 0) {
+                               string dataDirectory = (string) AppDomain.CurrentDomain.GetData ("DataDirectory");
+                               if (dataDirectory != null && dataDirectory.Length > 0) {
+                                       char lastChar = dataDirectory [dataDirectory.Length - 1];
+                                       if (lastChar != Path.DirectorySeparatorChar &&
+                                               lastChar != Path.AltDirectorySeparatorChar)
+                                               dataDirectory += '/';
+                               }
+                               connectionString = connectionString.Replace (DataDirectoryPlaceholder, dataDirectory);
+                       }
+
                        bool inQuote = false;
                        bool inDQuote = false;
                        bool inName = true;