public static Lucene.Net.Store.Directory GetLuceneDirectoryImpl(IDictionary<string, string> arguments, IDictionary<string, string> argumentNameMap, bool required = true)
{
try
{
var luceneDirectoryType = arguments.GetOrThrow<string>(argumentNameMap[Arguments.DirectoryType]);
if (luceneDirectoryType.Equals(Arguments.FileStorageType, StringComparison.InvariantCultureIgnoreCase))
{
var lucenePath = arguments.GetOrThrow<string>(argumentNameMap[Arguments.Path]);
var directoryInfo = new DirectoryInfo(lucenePath);
if (directoryInfo.Exists)
{
return new SimpleFSDirectory(directoryInfo);
}
directoryInfo.Create();
directoryInfo.Refresh();
return new SimpleFSDirectory(directoryInfo);
}
if (luceneDirectoryType.Equals(Arguments.AzureStorageType, StringComparison.InvariantCultureIgnoreCase))
{
var luceneStorageAccountName = arguments.GetOrThrow<string>(argumentNameMap[Arguments.StorageAccountName]);
var luceneStorageKeyValue = arguments.GetOrThrow<string>(argumentNameMap[Arguments.StorageKeyValue]);
var luceneStorageContainer = arguments.GetOrThrow<string>(argumentNameMap[Arguments.StorageContainer]);
var credentials = new StorageCredentials(luceneStorageAccountName, luceneStorageKeyValue);
var account = new CloudStorageAccount(credentials, true);
return new AzureDirectory(account, luceneStorageContainer);
}
Trace.TraceError("Unrecognized Lucene Directory Type \"{0}\"", luceneDirectoryType);
return null;
}
catch (ArgumentException)
{
if (required)
{
throw;
}
return null;
}
}