using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using log4net; using MongoDB.Driver; using Docstoc.Infrastructure; namespace Docstoc.Harvest.DataAccess.Mongo { class CONST { //prefixes public static readonly string Node_Prefix = "Node_", DB_Prefix = string.Empty, COL_Prefix = string.Empty; //node config entries public static readonly string Node_CrawlQueue = "CrawlQueue", Node_UploadQueue = "UploadQueue", Node_CrawlMeta = "CrawlMeta"; //db public static readonly string DB_CrawlQueue = "CrawlQueue", DB_UploadQueue = "UploadQueue", DB_CrawlMeta = "CrawlMeta"; //collections public static readonly string COL_CrawlQueue = "CrawlQueue", COL_CrawlHistory = "CrawlHistory", COL_CrawlSync = "CrawlSync", COL_CrawlJob = "CrawlJob", COL_UploadQueue = "UploadQueue", COL_PageReferer = "PageReferer", COL_PageStat = "PageStat", COL_PageVerion = "PageVersion", COL_CrawlSession = "CrawlSession", COL_DomainStat = "DomainStat", COL_File = "File"; static readonly ILog _logger = LogManager.GetLogger(typeof(CONST)); static readonly Dictionary _slaves = new Dictionary(); static CONST() { try { Node_Prefix = ConfigurationManager.AppSettings.ExtractValue("Node_Prefix", Node_Prefix); DB_Prefix = ConfigurationManager.AppSettings.ExtractValue("DB_Prefix", DB_Prefix); COL_Prefix = ConfigurationManager.AppSettings.ExtractValue("COL_Prefix", COL_Prefix); { var nn = new List(); Node_CrawlQueue = nn.AddReturn(Node_Prefix + Node_CrawlQueue); Node_UploadQueue = nn.AddReturn(Node_Prefix + Node_UploadQueue); Node_CrawlMeta = nn.AddReturn(Node_Prefix + Node_CrawlMeta); foreach (string n in nn) { string s = ConfigurationManager.AppSettings.ExtractValue(n, string.Empty); if (!string.IsNullOrEmpty(s)) { var u = new MongoUrl(s); _slaves.Add(Node_Prefix + n, u != null && u.Servers != null && u.Servers.Count() > 0); } else if(_logger.IsWarnEnabled) _logger.WarnFormat("Unable to read Mongo config server for: {0}", n); } } DB_CrawlQueue = ConfigurationManager.AppSettings.ExtractValue("DB_CrawlQueue", DB_Prefix + DB_CrawlQueue); DB_UploadQueue = ConfigurationManager.AppSettings.ExtractValue("DB_UploadQueue", DB_Prefix + DB_UploadQueue); DB_CrawlMeta = ConfigurationManager.AppSettings.ExtractValue("DB_CrawlMeta", DB_Prefix + DB_CrawlMeta); COL_CrawlQueue = ConfigurationManager.AppSettings.ExtractValue("COL_CrawlQueue", COL_Prefix + COL_CrawlQueue); COL_CrawlHistory = ConfigurationManager.AppSettings.ExtractValue("COL_CrawlHistory", COL_Prefix + COL_CrawlHistory); COL_CrawlSync = ConfigurationManager.AppSettings.ExtractValue("COL_CrawlSync", COL_Prefix + COL_CrawlSync); COL_CrawlJob = ConfigurationManager.AppSettings.ExtractValue("COL_CrawlJob", COL_Prefix + COL_CrawlJob); COL_UploadQueue = ConfigurationManager.AppSettings.ExtractValue("COL_UploadQueue", COL_Prefix + COL_UploadQueue); COL_PageReferer = ConfigurationManager.AppSettings.ExtractValue("COL_PageReferer", COL_Prefix + COL_PageReferer); COL_PageStat = ConfigurationManager.AppSettings.ExtractValue("COL_PageStat", COL_Prefix + COL_PageStat); COL_PageVerion = ConfigurationManager.AppSettings.ExtractValue("COL_PageVerion", COL_Prefix + COL_PageVerion); COL_CrawlSession = ConfigurationManager.AppSettings.ExtractValue("COL_CrawlSession", COL_Prefix + COL_CrawlSession); COL_DomainStat = ConfigurationManager.AppSettings.ExtractValue("COL_DomainStat", COL_Prefix + COL_DomainStat); COL_File = ConfigurationManager.AppSettings.ExtractValue("COL_File", COL_Prefix + COL_File); } catch (Exception ex) { _logger.Fatal("Static CTOR", ex); throw; } } public static bool HaveSlaves(string key) { return _slaves.ContainsKey(key) && _slaves[key]; } } }