Пример #1
0
        private void ScanForNewImports()
        {
            try
            {
                importFolders.CheckFolderStructure();

                bool foundImport = false;
                bool firstRun    = true;
                while (!cancel)
                {
                    DateTime dtNow = DateTime.Now;
                    if (firstRun || dtNow.Minute == 30 || dtNow.Minute == 0 || foundImport)
                    {
                        firstRun = false;
                        // Time for Check-Run.
                        Loggers.TechLogger.Debug("Starting Import Check");
                        NextImport nextImport = importFolders.GetNextImport();
                        if (nextImport == null)
                        {
                            foundImport = false;
                            if (singleShot)
                            {
                                return;              // used with synchronous mode
                            }
                            try
                            {
                                System.Threading.Thread.Sleep(sleepMs);
                            }
                            catch (ThreadInterruptedException)
                            {
                            }
                            continue;
                        }
                        foundImport = true;
                        if (!StartImport(nextImport))
                        {
                            Loggers.TechLogger.Error("Errors: Scanner has been stopped!");
                            break;  // exit loop!
                        }
                    }
                    else
                    {
                        System.Threading.Thread.Sleep(sleepMs);
                    }
                }
            }
            catch (Exception ex)
            {
                Loggers.TechLogger.Error("Import Scanner stopped due to fatal error:");
                Loggers.TechLogger.Error(ex.ToString() + "\r\n" + ex.StackTrace);
                cancel = true;
            }
        }
Пример #2
0
        private bool StartImport(NextImport nextImport)
        {
            if (logFileWriter != null)
            {
                throw new Exception("logFileWriter != null: are you already running an import?");
            }

            Console.WriteLine("logging to: " + nextImport.FullLogFilename);

            using (logFileWriter = new StreamWriter(nextImport.FullLogFilename))
            {
                try
                {
                    WriteLog("Starting Axis-Import: " + nextImport.FullFilename);

                    TransactionScopeFactory transactionScopeFactory = new TransactionScopeFactory(new MsSQLNHibernateConfigurationProvider(new ServerConfigurationProvider()));
                    {
                        AxisImport.AxisImport axisImport = this.GetImportInstance(transactionScopeFactory);

                        axisImport.RunImport(nextImport.FullFilename, nextImport.SenderTimestamp);

                        logFileWriter.WriteLine("Finished: " + axisImport.Statistics);
                    }

                    System.IO.File.Move(nextImport.FullFilename, nextImport.FullSaveFilename);

                    WriteLog("Moved File to Save-Folder");
                }
                catch (AxisImportCancelledException)
                {
                    WriteLog("Import cancelled");
                    return(false);
                }
                catch (Exception ex)
                {
                    WriteLog("Import failed");
                    WriteLog(ex + "\n" + ex.StackTrace);
                    return(false);
                }
                finally
                {
                    logFileWriter.Close();
                    logFileWriter = null;
                }
            }
            return(true);  // success -> continue
        }
Пример #3
0
        /// <summary>
        /// check if there are files to be processed in the In-Folder
        /// </summary>
        /// <returns>null, if there are none</returns>
        public NextImport GetNextImport()
        {
            CheckFolderStructure();

            List <string> files = System.IO.Directory.GetFiles(GetInFolder(), "*.xtf").ToList();

            string filename = GetOldestFile(files);

            if (filename == null)
            {
                return(null);
            }

            NextImport nextImport = new NextImport();

            //nextImport.FullFilename = System.IO.Path.Combine(this.importBaseDir, filename);
            nextImport.FullFilename     = filename;
            nextImport.FullLogFilename  = System.IO.Path.Combine(GetOutFolder(), "" + System.IO.Path.GetFileNameWithoutExtension(filename) + ".log");
            nextImport.FullSaveFilename = System.IO.Path.Combine(GetSaveFolder(), "" + System.IO.Path.GetFileName(filename));
            // once again, but cheaper than moving it around.
            nextImport.SenderTimestamp = ParseSenderDate(filename).Value;
            return(nextImport);
        }