LCOV - code coverage report
Current view: top level - Azure/Cqrs.Azure.BlobStorage/DataStores - BlobStorageDataStoreConnectionStringFactory.cs Hit Total Coverage
Test: doc-coverage.info Lines: 0 8 0.0 %
Date: 2017-07-26

          Line data    Source code
       1             : #region Copyright
       2             : // // -----------------------------------------------------------------------
       3             : // // <copyright company="cdmdotnet Limited">
       4             : // //   Copyright cdmdotnet Limited. All rights reserved.
       5             : // // </copyright>
       6             : // // -----------------------------------------------------------------------
       7             : #endregion
       8             : 
       9             : using System;
      10             : using System.Collections.Generic;
      11             : using System.Linq;
      12             : using Cqrs.Configuration;
      13             : using cdmdotnet.Logging;
      14             : using Cqrs.Entities;
      15             : 
      16             : namespace Cqrs.Azure.BlobStorage.DataStores
      17             : {
      18             :         public class BlobStorageDataStoreConnectionStringFactory : IBlobStorageDataStoreConnectionStringFactory
      19           0 :         {
      20             :                 public static string BlobStorageReadableDataStoreConnectionStringKey = "Cqrs.Azure.BlobStorage.DataStore.Read.ConnectionStringName";
      21             : 
      22             :                 public static string BlobStorageWritableDataStoreConnectionStringKey = "Cqrs.Azure.BlobStorage.DataStore.Write.ConnectionStringName";
      23             : 
      24             :                 public static string BlobStorageDataStoreConnectionStringKey = "Cqrs.Azure.BlobStorage.DataStore.ConnectionStringName";
      25             : 
      26             :                 public static string BlobStorageBaseContainerNameKey = "Cqrs.Azure.BlobStorage.DataStore.BaseContainerName";
      27             : 
      28             :                 public static string BlobStorageIsContainerPublicKey = "Cqrs.Azure.BlobStorage.DataStore.{0}.IsPublic";
      29             : 
      30             :                 protected IConfigurationManager ConfigurationManager { get; private set; }
      31             : 
      32             :                 protected ILogger Logger { get; private set; }
      33             : 
      34           0 :                 public BlobStorageDataStoreConnectionStringFactory(IConfigurationManager configurationManager, ILogger logger)
      35             :                 {
      36             :                         ConfigurationManager = configurationManager;
      37             :                         Logger = logger;
      38             :                 }
      39             : 
      40           0 :                 public virtual IEnumerable<string> GetWritableConnectionStrings()
      41             :                 {
      42             :                         Logger.LogDebug("Getting blob storage writable connection strings", "BlobStorageDataStoreConnectionStringFactory\\GetWritableConnectionStrings");
      43             :                         try
      44             :                         {
      45             :                                 var collection = new List<string> ();
      46             : 
      47             :                                 string blobStorageWritableDataStoreConnectionString = ConfigurationManager.GetSetting(BlobStorageWritableDataStoreConnectionStringKey);
      48             :                                 if (blobStorageWritableDataStoreConnectionString == null)
      49             :                                 {
      50             :                                         Logger.LogDebug(string.Format("No application settings named '{0}' was found in the configuration file with the cloud storage connection string.", BlobStorageWritableDataStoreConnectionStringKey), "BlobStorageDataStoreConnectionStringFactory\\GetWritableConnectionStrings");
      51             :                                         blobStorageWritableDataStoreConnectionString = ConfigurationManager.GetSetting(BlobStorageDataStoreConnectionStringKey);
      52             :                                 }
      53             : 
      54             :                                 int writeIndex = 1;
      55             :                                 while (!string.IsNullOrWhiteSpace(blobStorageWritableDataStoreConnectionString))
      56             :                                 {
      57             :                                         collection.Add(blobStorageWritableDataStoreConnectionString);
      58             : 
      59             :                                         blobStorageWritableDataStoreConnectionString = ConfigurationManager.GetSetting(string.Format("{0}.{1}", BlobStorageWritableDataStoreConnectionStringKey, writeIndex));
      60             :                                         writeIndex++;
      61             :                                 }
      62             : 
      63             :                                 if (!collection.Any())
      64             :                                         throw new NullReferenceException();
      65             : 
      66             :                                 return collection;
      67             :                         }
      68             :                         catch (NullReferenceException exception)
      69             :                         {
      70             :                                 throw new NullReferenceException(string.Format("No application settings named '{0}' was found in the configuration file with the cloud storage connection string.", BlobStorageDataStoreConnectionStringKey), exception);
      71             :                         }
      72             :                         finally
      73             :                         {
      74             :                                 Logger.LogDebug("Getting blob storage writable connection string... Done", "BlobStorageDataStoreConnectionStringFactory\\GetWritableConnectionStrings");
      75             :                         }
      76             :                 }
      77             : 
      78           0 :                 public virtual string GetReadableConnectionString()
      79             :                 {
      80             :                         Logger.LogDebug("Getting blob storage readable connection strings", "BlobStorageDataStoreConnectionStringFactory\\GetReadableConnectionStrings");
      81             :                         try
      82             :                         {
      83             :                                 string blobStorageWritableDataStoreConnectionString = ConfigurationManager.GetSetting(BlobStorageReadableDataStoreConnectionStringKey);
      84             :                                 if (blobStorageWritableDataStoreConnectionString == null)
      85             :                                 {
      86             :                                         Logger.LogDebug(string.Format("No application settings named '{0}' was found in the configuration file with the cloud storage connection string.", BlobStorageReadableDataStoreConnectionStringKey), "BlobStorageDataStoreConnectionStringFactory\\GetReadableConnectionStrings");
      87             :                                         blobStorageWritableDataStoreConnectionString = ConfigurationManager.GetSetting(BlobStorageDataStoreConnectionStringKey);
      88             :                                 }
      89             : 
      90             :                                 if (string.IsNullOrWhiteSpace(blobStorageWritableDataStoreConnectionString))
      91             :                                         throw new NullReferenceException();
      92             : 
      93             :                                 return blobStorageWritableDataStoreConnectionString;
      94             :                         }
      95             :                         catch (NullReferenceException exception)
      96             :                         {
      97             :                                 throw new NullReferenceException(string.Format("No application settings named '{0}' was found in the configuration file with the cloud storage connection string.", BlobStorageDataStoreConnectionStringKey), exception);
      98             :                         }
      99             :                         finally
     100             :                         {
     101             :                                 Logger.LogDebug("Getting blob storage readable connection string... Done", "BlobStorageDataStoreConnectionStringFactory\\GetReadableConnectionStrings");
     102             :                         }
     103             :                 }
     104             : 
     105           0 :                 public virtual string GetBaseContainerName()
     106             :                 {
     107             :                         Logger.LogDebug("Getting blob storage base container name", "BlobStorageDataStoreConnectionStringFactory\\GetBaseContainerName");
     108             :                         try
     109             :                         {
     110             :                                 string result = ConfigurationManager.GetSetting(BlobStorageBaseContainerNameKey);
     111             : 
     112             :                                 if (string.IsNullOrWhiteSpace(result))
     113             :                                         throw new NullReferenceException();
     114             : 
     115             :                                 return result;
     116             :                         }
     117             :                         catch (NullReferenceException exception)
     118             :                         {
     119             :                                 throw new NullReferenceException(string.Format("No application setting named '{0}' in the configuration file.", BlobStorageBaseContainerNameKey), exception);
     120             :                         }
     121             :                         finally
     122             :                         {
     123             :                                 Logger.LogDebug("Getting blob storage base container name... Done", "BlobStorageDataStoreConnectionStringFactory\\GetBaseContainerName");
     124             :                         }
     125             :                 }
     126             : 
     127           0 :                 public virtual string GetContainerName<TData>()
     128             :                         where TData : Entity
     129             :                 {
     130             :                         Logger.LogDebug("Getting blob storage container name", "BlobStorageDataStoreConnectionStringFactory\\GetContainerName");
     131             : 
     132             :                         string name = string.Format("{0}\\{1}", GetBaseContainerName(), GetEntityName<TData>());
     133             : 
     134             :                         Logger.LogDebug("Getting blob storage container name... Done", "BlobStorageDataStoreConnectionStringFactory\\GetContainerName");
     135             : 
     136             :                         return name;
     137             :                 }
     138             : 
     139           0 :                 public virtual bool IsContainerPublic<TData>()
     140             :                         where TData : Entity
     141             :                 {
     142             :                         bool result;
     143             :                         // We default to false to protect the data
     144             :                         if (!ConfigurationManager.TryGetSetting(string.Format(BlobStorageIsContainerPublicKey, GetEntityName<TData>()), out result))
     145             :                                 result = false;
     146             : 
     147             :                         return result;
     148             :                 }
     149             : 
     150           0 :                 public virtual string GetEntityName<TData>()
     151             :                         where TData : Entity
     152             :                 {
     153             :                         Type type = typeof (TData);
     154             :                         string name = type.AssemblyQualifiedName;
     155             :                         int index1 = name.IndexOf(",");
     156             :                         int index2 = -1;
     157             :                         if (index1 > -1)
     158             :                                 index2 = name.IndexOf(",", index1 + 1);
     159             :                         if (index2 > -1)
     160             :                                 return name.Substring(0, index2);
     161             :                         if (index1 > -1)
     162             :                                 return name.Substring(0, index1);
     163             :                         return name;
     164             :                 }
     165             :         }
     166             : }

Generated by: LCOV version 1.10