public static ShortSaleSchemaDataContext GetOrCreateContext(String connectionString)
 {
     if(context == null)
     {
         context = CreateNewContext(connectionString);
     }
     return context;
 }
 public static ShortSaleSchemaDataContext CreateNewContext(String connectionString)
 {
     if (String.IsNullOrEmpty(connectionString))
     {
         throw new ApplicationException(
             "Cannot create a PersistentSession Context without first setting the ConnectionString");
     }
     context = new ShortSaleSchemaDataContext(connectionString);
     return context;
 }
Example #3
0
        private void run(String[] args)
        {
            String connectionString = ConfigurationManager.ConnectionStrings["EnterpriseDB"].ConnectionString;
            db = ShortSaleSchemaSession.GetOrCreateContext(connectionString);

            DateTime referenceDate = args.Length == 0 ? DateTime.Today : Convert.ToDateTime(args[0]);
            
            var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            partyDirectory = config.AppSettings.Settings["PartyDirectory"].Value;
            processedDirectory = partyDirectory + "\\processed\\";
            DirectoryInfo dirInfo = new DirectoryInfo(partyDirectory);
            csvFiles = dirInfo.GetFiles("*.csv");
            if (!Directory.Exists(processedDirectory))
            {
                Directory.CreateDirectory(processedDirectory);
            }

            String partySectionGroup = "partyGroup";
            var configGroup = config.GetSectionGroup(partySectionGroup);
            if(configGroup == null)
            {
                throw new ApplicationException("App Config eror: Missing PartyGroup section group.");
            }

            initializeLogger(partyDirectory);
            log.Info("Starting loader");

            foreach (ConfigurationSection configSection in configGroup.Sections)
            {
                String party = configSection.SectionInformation.Name;

                var partySettings = ConfigurationManager.GetSection(
                    partySectionGroup + "/" + party) as NameValueCollection;

                if(partySettings == null)
                {
                    throw new ApplicationException("App Config error: Missing custom party configuration.");
                }

                try
                {
                    this.loadPartyLimits(party, partySettings, referenceDate);
                }
                catch (Exception ex)
                {
                    String error = String.Format("Error loading {0} data.\n{1}\n", party, ex.Message);
                    log.Error(error);

                    //limitaiton in LINQ to SQL. Must create new DB context in order to purge exceptions.
                    db = ShortSaleSchemaSession.CreateNewContext(connectionString);
                }
            }

            try
            {
                //clean up step. file created because log4net configuration requires default file name
                //in app.config.  We override this file name above.
                File.Delete("log4net.temp");
            }
            catch (Exception ex)
            {
                log.Warn("Failed to delete log4net.temp file from program directory");
            }

            log.Info("Ending loader");
        }