예제 #1
0
        private void SetUpCleanUp()
        {
            mMetaData.ResultMessage = string.Empty;
            mMetaData.RevisionHistoryComment = string.Empty;

            mFileTransferErrors = new List<string>();

            resultTabBlock.Text = string.Format("{0} ({1})", RESULTS, 0);
            errorTabBlock.Text = string.Format("{0} ({1})", ERRORS, 0);
            warningTabBlock.Text = string.Format("{0} ({1})", WARNINGS, 0);

            ResultTabText = RESULTS;
            ErrorTabText = ERRORS;
            WarningTabText = WARNINGS;

            ResultTextBox.Text = string.Empty;
            ErrorsTextBox.Text = string.Empty;
            WarningsTextBox.Text = string.Empty;

            mGlobalImportResult = new DbImportResult
            {
                ErrorMessages = new List<string>(),
                WarningMessages = new List<string>(),
                InformationMessages = new List<string>(),
                DocumentVersions = new List<DocumentVersion>(),
                ImportedCount = 0
            };
        }
예제 #2
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateControlsSystems && MetaData.ImportType != CommonUtils.ImportType.UpdateControlSystems)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            mExistingControlSystemTypes = Cee.ControlSystemTypes.ToList();
            mExistingGraphics = Cee.Graphics.ToList();
            mExistingEquipmentModules = Cee.EquipmentModules.ToList();

            mExistingUnits = Cee.Units.ToList();
            ExistingTinyDocuments = (from x in Cee.Documents select new TinyDocument { Id = x.Id, Name = x.Name, DocumentTypeId = x.DocumentTypeId }).ToList();

            IList<ControlDataAdapter> importData = new List<ControlDataAdapter>();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT  * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, ControlColumn.ControlSystemName); ;

                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<ControlColumn>(GetColumnHeadersFromDataSet(cmd, (int)ControlColumn.Notes)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;

                                try
                                {
                                    var adapter = new ControlDataAdapter(dr);
                                    importData.Add(adapter);
                                }
                                catch (Exception ex)
                                {
                                    DbImportResult.ErrorMessages.Add(string.Format("ControlDataAdapter row {0} - {1}", k, ex.Message));
                                }
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateControlsSystems)
                    {
                        InsertData(importData);
                    }
                    else
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #3
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateIssue && MetaData.ImportType != CommonUtils.ImportType.UpdateIssue)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            mExistingStatuses = Cee.IssueStatuses.ToList();
            mExistingCategories = Cee.IssueCategories.ToList();
            mExistingIssueTypes = Cee.IssueTypes.ToList();
            mExistingPriorities = Cee.IssuePriorities.ToList();
            mExistingClassifications = Cee.IssueClassifications.ToList();
            mExistingIssueSubTypes = Cee.IssueSubTypes.ToList();
            mExistingIssueApprovals = Cee.IssueApprovals.ToList();
            mExistingIssueCloseouts = Cee.IssueCloseouts.ToList();
            mExistingIssueAssignedCategories = Cee.IssueAssignedCategories.ToList();

            string connString = BuildConnectionString(MetaData.FullFileName);

            IList<IssueDataAdapter> importData = new List<IssueDataAdapter>();

            using (OleDbConnection excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (OleDbCommand cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;

                        if (MetaData.ImportType == CommonUtils.ImportType.CreateIssue)
                        {
                            cmd.CommandText = IssueCommandText;
                        }
                        else
                        {
                            cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, IssueColumn.ID.ToString());
                        }

                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<IssueColumn>(GetColumnHeadersFromDataSet(cmd, (int)IssueColumn.Response)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;
                                if (k < 2)// rows 2 and 3 are not data..row 1 is our hidden headings.
                                {
                                    continue;
                                }

                                IssueDataAdapter adapter = new IssueDataAdapter(dr, WorkSheetName, k);
                                importData.Add(adapter);
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateIssue)
                    {

                        InsertData(importData);
                    }
                    else
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #4
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateDocumentLocations)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            string connString = BuildConnectionString(MetaData.FullFileName);

            IList<DocumentLocationDataAdapter> importData = new List<DocumentLocationDataAdapter>();
            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, DocumentLocationColumn.DocumentName);
                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<DocumentLocationColumn>(GetColumnHeadersFromDataSet(cmd, (int) DocumentLocationColumn.LocationName)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        List<DocumentLocation> documentLocations;
                        List<Document> documents;

                        using (var cee = new CmsEntities())
                        {
                            documentLocations = (from x in cee.DocumentLocations select x).ToList();
                            documents = (from x in cee.Documents select x).ToList();
                        }

                        int rowNumber = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            //READ ROWS
                            while (dr.Read())
                            {
                                rowNumber++;
                                var adapter = new DocumentLocationDataAdapter(dr, rowNumber, documentLocations, documents);
                                if (adapter.IsValid())
                                {
                                    importData.Add(adapter);
                                }
                                else
                                {
                                    foreach (string message in adapter.ErrorMessages)
                                    {
                                        RaiseMessage(CommonUtils.MessageType.Error, message);
                                    }
                                }
                            }
                        }

                        excelConn.Close();
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateDocumentLocations)
                    {
                        InsertData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #5
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateDocument && MetaData.ImportType != CommonUtils.ImportType.UpdateDocument)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            //Load Lookups into Memory.
            mExistingDocumentTypes = Cee.DocumentTypes.ToList();
            mExistingAuthors = Cee.DocumentAuthors.ToList();
            mExistingDisciplines = Cee.DocumentDisciplines.ToList();

            CanCreateProperties = canCreateProperties;

            string connString = BuildConnectionString(MetaData.FullFileName);

            IList<DocumentDataAdapter> importData = new List<DocumentDataAdapter>();
            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 6000;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, DocumentColumn.Name);
                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<DocumentColumn>(GetColumnHeadersFromDataSet(cmd, (int)DocumentColumn.IsActive)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int rowNumber = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                rowNumber++;

                                var adapter = new DocumentDataAdapter(dr, rowNumber, CommonUtils.ImportType.UpdateDocument);
                                importData.Add(adapter);
                            }
                        }

                        excelConn.Close();
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateDocument)
                    {
                        InsertData(importData);
                    }
                    else if (MetaData.ImportType == CommonUtils.ImportType.UpdateDocument)
                    {
                        UpdatetData(importData);
                    }
                    else
                    {
                        throw new InvalidDataException(string.Format("Invalid import type of '{0}'.  Import aborted.", MetaData.ImportType));
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #6
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateElectrical && MetaData.ImportType != CommonUtils.ImportType.UpdateElectrical)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = canCreateProperties;

            mExistingEquipmentTypes = (from x in Cee.ElectricalEquipmentTypes orderby x.Name select x).ToList();

            ExistingTinyDocuments = (from x in Cee.Documents select new TinyDocument { Id = x.Id, Name = x.Name, DocumentTypeId = x.DocumentTypeId }).ToList();

            IList<ElectricalDataAdapter> importData = new List<ElectricalDataAdapter>();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (OleDbConnection excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (OleDbCommand cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = TagCommandText;

                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<EquipmentColumn>(GetColumnHeadersFromDataSet(cmd, (int)EquipmentColumn.IsActive)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;
                                ElectricalDataAdapter adapter = new ElectricalDataAdapter(dr, WorkSheetName, k, MetaData.ImportType);
                                importData.Add(adapter);
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateElectrical)
                    {
                        InsertData(importData);
                    }
                    else
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;

                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateCalibrationComponent && MetaData.ImportType != CommonUtils.ImportType.UpdateCalibrationComponent)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            LoadCachedData();

            CanCreateProperties = canCreateProperties;

            //Include Headers so we can match up the component properties (HDR=YES).
            string connString = BuildConnectionString(MetaData.FullFileName);

            using (OleDbConnection excelConn = new OleDbConnection(connString))
            {
                IList<CalibrationComponentDataAdapter> importData = new List<CalibrationComponentDataAdapter>();

                try
                {
                    using (OleDbCommand cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = CalibrationCommandText;

                        if (excelConn.State != ConnectionState.Open)
                        {
                            excelConn.Open();
                        }

                        List<string> spreadSheetPropertyNames = GetPropertyColumnHeadersFromDataSet(cmd, (int)CalibrationColumn.Notes + 1);
                        if (spreadSheetPropertyNames.Count != spreadSheetPropertyNames.Distinct().Count())
                        {
                            DbImportResult.ErrorMessages.Add(DuplicatePropertyNamesExistMessage());
                            return DbImportResult;
                        }

                        if (!WorkSheetCheckColumnNamesAreValid<CalibrationColumn>(GetColumnHeadersFromDataSet(cmd, (int)CalibrationColumn.Notes)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            int rowNumber = 1;

                            while (dr.Read())
                            {
                                rowNumber++;
                                CalibrationComponentDataAdapter adapter = new CalibrationComponentDataAdapter(dr, mExistingProperties, spreadSheetPropertyNames,
                                    rowNumber, CanCreateProperties, MetaData.ImportType);

                                if (!adapter.IsValid())
                                {
                                    foreach (string errorMessage in adapter.ErrorMessages)
                                    {
                                        RaiseMessage(CommonUtils.MessageType.Error, errorMessage);
                                    }
                                }
                                else
                                {
                                    importData.Add(adapter);
                                }
                            }

                            excelConn.Close();
                        }
                    }

                    if (importData.Count == 0)
                    {
                        RaiseMessage(CommonUtils.MessageType.Warning, NoDataFoundForWorkSheetMessage());
                        return DbImportResult;
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateCalibrationComponent)
                    {
                        InsertData(importData);
                    }
                    else if (MetaData.ImportType == CommonUtils.ImportType.UpdateCalibrationComponent)
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #8
0
        public DbImportResult ImportDocumentVersions(ImportFileMetaData metaData, byte[] content, bool append)
        {
            try
            {

                //EXCEL DOC
                string targetFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_imports");

                if (!Directory.Exists(targetFolder))
                {
                    Directory.CreateDirectory(targetFolder);
                }

                WriteFileToDisk(metaData.FileName, content, targetFolder, false, targetFolder);

                //we now have the file saved on the server's disk so we can process safely...
                string fullPath = Path.Combine(targetFolder, targetFolder, metaData.FileName);

                metaData.FullFileName = fullPath;
                IImporter importer = ImporterFactory.CreateImporter(metaData);

                DbImportResult dbImportResult = new DbImportResult();

                importer.MessageRaised += (m, s) =>
                    {
                        switch (m)
                        {
                            case CommonUtils.MessageType.Error:
                                dbImportResult.ErrorMessages.Add(s);
                                break;

                            case CommonUtils.MessageType.Warning:
                                dbImportResult.WarningMessages.Add(s);
                                break;

                            case CommonUtils.MessageType.AlreadyExists:
                                Logger.Info(string.Format("added filename '{0}' to AlreadyExistsFileNames list.", s));
                                dbImportResult.AlreadyExistsFileNames.Add(s);
                                break;

                            case CommonUtils.MessageType.Added:
                            case CommonUtils.MessageType.Info:
                                dbImportResult.InformationMessages.Add(s);
                                break;
                        }
                    };

                DbImportResult finalResult = new DbImportResult();

                finalResult = importer.Import(false);

                // set this property last as we may have had a new result object newed up inside an importer.
                if (dbImportResult.ErrorMessages != null && dbImportResult.ErrorMessages.Any())
                {
                    finalResult.ErrorMessages.AddRange(dbImportResult.ErrorMessages);
                }

                if (dbImportResult.WarningMessages != null && dbImportResult.WarningMessages.Any())
                {
                    finalResult.WarningMessages.AddRange(dbImportResult.WarningMessages);
                }

                finalResult.WrittenByteArraySize = GetFileSizeWritten(fullPath);
                return finalResult;

            }
            catch (Exception ex)
            {
                Logger.Error("", ex, "CMS.Boddington.ImporterPlugin.PluginImport");

                DbImportResult errorResult = new DbImportResult();
                errorResult.ErrorMessages.Add("Unhandled Exceptions have occured as follows:");

                errorResult.ErrorMessages.Add("Message : " + ex.Message);
                errorResult.ErrorMessages.Add("Stack : " + ex);
                if (ex.InnerException != null)
                {
                    errorResult.ErrorMessages.Add("Message : " + ex.InnerException.Message);
                    errorResult.ErrorMessages.Add("Stack : " + ex.InnerException);
                }

                return errorResult;
            }
        }
예제 #9
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateTuningProperties && MetaData.ImportType != CommonUtils.ImportType.UpdateTuningProperties)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            mUser = (from x in Cee.Users where x.Id == MetaData.UserId select x).FirstOrDefault();

            if (mUser == null)
            {
                DbImportResult.ErrorMessages.Add(string.Format(BuildItemNotFoundInDatabaseMessage("UserId", MetaData.UserId.ToString())));
                return DbImportResult;
            }

            IList<TuningPropertiesDataAdapter> importData = new List<TuningPropertiesDataAdapter>();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, TuningPropertyColumn.ControlSystemName);

                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<TuningPropertyColumn>(GetColumnHeadersFromDataSet(cmd, (int)TuningPropertyColumn.ComponentName)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        const int STARTCOLUMN = (int)TuningPropertyColumn.ComponentName;
                        List<string> dynamicProperyNames = GetDynamicProperties(cmd, STARTCOLUMN);

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;

                                try
                                {
                                    var adapter = new TuningPropertiesDataAdapter(dr, dynamicProperyNames, STARTCOLUMN + 1);
                                    importData.Add(adapter);
                                }
                                catch (Exception ex)
                                {
                                    DbImportResult.ErrorMessages.Add(string.Format("EngineeringPropertyDataAdapter row {0} - {1}", k, ex.Message));
                                }
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateTuningProperties)
                    {
                        InsertData(importData);
                    }
                    else if (MetaData.ImportType == CommonUtils.ImportType.UpdateTuningProperties)
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());

                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #10
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateInterlockRisks && MetaData.ImportType != CommonUtils.ImportType.UpdateInterlockRisks)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            mExistingInterlockRiskCategorys = Cee.InterlockRiskCategories.ToList();
            mExistInterlockTypes = Cee.InterlockTypes.ToList();

            mUser = (from x in Cee.Users where x.Id == MetaData.UserId select x).FirstOrDefault();

            if (mUser == null)
            {
                DbImportResult.ErrorMessages.Add(string.Format(BuildItemNotFoundInDatabaseMessage("UserId", MetaData.UserId.ToString(CultureInfo.CurrentCulture))));

                return DbImportResult;
            }

            IList<InterlockRiskDataAdapter> importData = new List<InterlockRiskDataAdapter>();
            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, InterlockRiskColumn.ControlSystemName);

                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<InterlockRiskColumn>(GetColumnHeadersFromDataSet(cmd, (int) InterlockRiskColumn.Description)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;

                                try
                                {
                                    var adapter = new InterlockRiskDataAdapter(dr);
                                    importData.Add(adapter);
                                }
                                catch (Exception ex)
                                {
                                    DbImportResult.ErrorMessages.Add(string.Format("InterlockDataAdapter row {0} - {1}", k, ex.Message));
                                }
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateInterlockRisks)
                    {
                        InsertData(importData);
                    }
                    else if (MetaData.ImportType == CommonUtils.ImportType.UpdateInterlockRisks)
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mOutPutResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());

                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #11
0
        public DbImportResult PluginImport(ImportFileMetaData metaData, byte[] content, bool canCreateProperties)
        {
            string targetFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_imports");

            if (!Directory.Exists(targetFolder))
            {
                Directory.CreateDirectory(targetFolder);
            }

            string path = Guid.NewGuid().ToString();

            try
            {
                WriteFileToDisk(metaData.FileName, content, path, false, targetFolder);

                //we now have the file saved on the server's disk so we can process safely...
                string fullPath = Path.Combine(targetFolder, path, metaData.FileName);

                metaData.FullFileName = fullPath;

                IImporter importer = ImporterFactory.CreateImporter(metaData);

                DbImportResult raisedMessages = new DbImportResult();
                importer.MessageRaised += (m, s) =>
                    {
                        switch (m)
                        {
                            case CommonUtils.MessageType.Error:
                                raisedMessages.ErrorMessages.Add(s);
                                break;

                            case CommonUtils.MessageType.Warning:
                                raisedMessages.WarningMessages.Add(s);
                                break;

                            case CommonUtils.MessageType.AlreadyExists:
                                Logger.Info(string.Format("added filename '{0}' to AlreadyExistsFileNames list.", s));
                                raisedMessages.AlreadyExistsFileNames.Add(s);
                                break;

                            case CommonUtils.MessageType.Added:
                            case CommonUtils.MessageType.Info:
                                raisedMessages.InformationMessages.Add(s);
                                break;
                        }
                    };

                //IMPORT STARTS HERE----------------------------

                DbImportResult dbImportResult = importer.Import(canCreateProperties);
                //----------------------------------------------

                if (raisedMessages.WarningMessages.Count > 0)
                {
                    dbImportResult.WarningMessages.InsertRange(0, raisedMessages.WarningMessages);
                }

                if (raisedMessages.InformationMessages.Count > 0)
                {
                    dbImportResult.InformationMessages.InsertRange(0, raisedMessages.InformationMessages);
                }

                if (raisedMessages.ErrorMessages.Count > 0)
                {
                    dbImportResult.ErrorMessages.InsertRange(0, raisedMessages.ErrorMessages);
                }

                if (raisedMessages.AlreadyExistsFileNames.Count > 0)
                {
                    Logger.Info(string.Format("Adding {0} AlreadyExistsFileNames", raisedMessages.AlreadyExistsFileNames.Count));
                    dbImportResult.AlreadyExistsFileNames.InsertRange(0, raisedMessages.AlreadyExistsFileNames);
                }

                dbImportResult.WrittenByteArraySize = GetFileSizeWritten(fullPath);
                return dbImportResult;
            }
            catch (Exception ex)
            {
                Logger.Error("", ex, "CMS.Boddington.ImporterPlugin.PluginImport");

                DbImportResult errorResult = new DbImportResult();
                errorResult.ErrorMessages.Add("Unhandled Exceptions have occured as follows:");

                errorResult.ErrorMessages.Add("Message : " + ex.Message);
                errorResult.ErrorMessages.Add("Stack : " + ex);
                if (ex.InnerException != null)
                {
                    errorResult.ErrorMessages.Add("Message : " + ex.InnerException.Message);
                    errorResult.ErrorMessages.Add("Stack : " + ex.InnerException);
                }

                return errorResult;
            }
            finally
            {

                //we can clean-up
                if (Directory.Exists(Path.Combine(targetFolder, path)))
                {
                    Directory.Delete(Path.Combine(targetFolder, path), true);
                }

            }
        }
예제 #12
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.UpdateAlarms)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            mExistingResponses = (from x in Cee.ControlSystemAlarmResponses select x).ToList();
            mExistingPurposes = (from x in Cee.ControlSystemAlarmPurposes select x).ToList();
            mExistingConsequences = (from x in Cee.ControlSystemAlarmConsequences select x).ToList();
            mExistingPriorities = (from x in Cee.ControlSystemAlarmPriorities select x).ToList();

            IList<AlarmDataAdapter> importData = new List<AlarmDataAdapter>();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, AlarmColumn.ControlSystemName); ;

                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<AlarmColumn>(GetColumnHeadersFromDataSet(cmd, (int)AlarmColumn.TestedUser)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;
                                var adapter = new AlarmDataAdapter(dr, WorkSheetName, k, MetaData.ImportType);
                                importData.Add(adapter);
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.UpdateAlarms)
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #13
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreatePipe && MetaData.ImportType != CommonUtils.ImportType.UpdatePipe)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            string connString = BuildConnectionString(MetaData.FullFileName);

            IList<PipeDataAdapter> importData = new List<PipeDataAdapter>();

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = PipeCommandText;
                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<PipeColumn>(GetColumnHeadersFromDataSet(cmd, (int) PipeColumn.IsActive)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;
                                var pipeDataAdapter = new PipeDataAdapter(dr, WorkSheetName, k);
                                importData.Add(pipeDataAdapter);
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreatePipe)
                    {
                        InsertData(importData);
                    }
                    else if (MetaData.ImportType == CommonUtils.ImportType.UpdatePipe)
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }

                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #14
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.Cji3)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            IList<Cji3DataAdapter> importData = new List<Cji3DataAdapter>();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;

                        excelConn.Open();

                        DataTable dbSchema = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        if (dbSchema == null || dbSchema.Rows.Count < 1)
                        {
                            throw new Exception("Error: Could not determine the name of the first worksheet.");
                        }
                        string firstSheetName = dbSchema.Rows[0]["TABLE_NAME"].ToString();
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}] where [Period] IS NOT NULL", firstSheetName);

                        if (!WorkSheetCheckColumnNamesAreValid<Cij3Column>(GetColumnHeadersFromDataSet(cmd,
                            (int)Enum.GetValues(typeof(Cij3Column)).Cast<Cij3Column>().Max())))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int rowNumber = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr != null && dr.Read())
                            {
                                rowNumber++;
                                try
                                {
                                    var adapter = new Cji3DataAdapter(dr, rowNumber);
                                    if (adapter.IsValid())
                                    {
                                        if (ContainsDuplicates(importData, adapter))
                                        {
                                            //string message = String.Format("Duplicate Po Number '{0}', Project Definition '{1} an Reference Item '{2}''. Will SKIPP this row.",
                                            //     adapter.PoNumber, adapter.ProjectDefinition, adapter.ReferenceItem);
                                            DbImportResult.ErrorMessages.Add(string.Format("FinancialDataAdapter row {0} - {1}", rowNumber, ""));
                                        }
                                        else
                                        {
                                            importData.Add(adapter);
                                        }
                                    }
                                    else
                                    {
                                        foreach (string message in adapter.ErrorMessages)
                                        {
                                            RaiseMessage(CommonUtils.MessageType.Error, message);
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    DbImportResult.ErrorMessages.Add(string.Format("FinancialDataAdapter row {0} - {1}", rowNumber, ex.Message));
                                }
                            }
                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.Cji3)
                    {
                        //First insert data into FinancialActual table
                        InsertFinancialActuals(importData);

                        //Then Insert/Update IssueFinancials
                        //InsertUpdateData(importData);
                        //Removed as per https://jira.issgroup.com.au/browse/BODCMS-1625
                    }
                    else
                    {
                    }

                    DbImportResult.ImportedCount = mInsertedResults.Count + mUpdatedResults.Count + mInsertedFinancialActualsCount;
                    return DbImportResult;
                }
                catch (Exception ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #15
0
        private void TransferGeneralExcelFiles(ImportFileMetaData metaData, FileInfo fileInfo)
        {
            try
            {
                Stream stream = fileInfo.OpenRead();

                long sentFileSize = fileInfo.Length;
                long writtenFileSize = 0;

                int transferChunkSize = Utils.GetTransferChunkSize(stream);

                if (stream.Position > -1 && stream.Position < stream.Length)
                {
                    int chunkSize = Utils.GetCurrentChunkSize(stream, transferChunkSize);

                    byte[] fileBytes = new byte[chunkSize];
                    stream.Read(fileBytes, 0, chunkSize);

                    CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);

                    cmsWebServiceClient.UploadGenericImportExcelFileCompleted += (s1, e1) =>
                        {
                            if (e1.Result.ErrorMessages.Any())
                            {
                                ExcelTransferFailed(e1.Result);
                                stream.Close();
                                return;
                            }

                            if (stream.Position > -1 && stream.Position < stream.Length)
                            {
                                //STILL GOING
                                chunkSize = Utils.GetCurrentChunkSize(stream, transferChunkSize);

                                fileBytes = new byte[chunkSize];
                                stream.Read(fileBytes, 0, chunkSize);

                                writtenFileSize += e1.Result.WrittenByteArraySize;

                                cmsWebServiceClient.UploadGenericImportExcelFileAsync(metaData, fileBytes, GetCanCreateProperties());
                            }
                            else
                            {
                                writtenFileSize += e1.Result.WrittenByteArraySize;
                                //Transfer complete
                                stream.Close();

                                if (writtenFileSize < sentFileSize)
                                {
                                    DbImportResult r = new DbImportResult();
                                    r.ErrorMessages = new List<string>();
                                    r.ErrorMessages.Add("There was a loss of information while attempting to transfer the Excel file.  Please try again.  ");
                                    ExcelTransferFailed(r);
                                }
                                else
                                {
                                    ExcelTransferSucceeded(e1.Result);
                                    busyIndicator.IsBusy = false;
                                }
                            }
                        };

                    cmsWebServiceClient.UploadGenericImportExcelFileAsync(mMetaData, fileBytes, GetCanCreateProperties());
                }
            }
            catch (IOException)
            {
                ResultsRadTabControl.SelectedIndex = (int)ResultTab.Errors;
                ErrorsTextBox.Text = "Could not open the file - perhaps it is already open in another window?  If so close it and try again.  ";
                errorTabBlock.Text = string.Format("{0} ({1})", ERRORS, 1);
                ImportButton.IsEnabled = true;
                busyIndicator.IsBusy = false;
            }

            catch (Exception ex)
            {
                ResultsRadTabControl.SelectedIndex = (int)ResultTab.Errors;
                ErrorsTextBox.Text = ex.ToString();
                ImportButton.IsEnabled = true;
                busyIndicator.IsBusy = false;
            }
        }
예제 #16
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.LinkRelatedEquipmentDocument)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            mExistingDocuments = Cee.Documents.Select(x => new LightDocument {Id = x.Id, Name = x.Name}).ToList();
            mExistingDocumentEquipments = Cee.DocumentEquipments.ToList();
            mExistingEquipmentTypes = Cee.EquipmentTypes.ToList();

            CanCreateProperties = false;

            string connString = BuildConnectionString(MetaData.FullFileName);

            IList<DocumentEquipmentDataAdapter> importData = new List<DocumentEquipmentDataAdapter>();
            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, DocumentEquipmentColumn.DocumentName);
                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<DocumentEquipmentColumn>(GetColumnHeadersFromDataSet(cmd, (int) DocumentEquipmentColumn.Tag)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int rowNumber = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                rowNumber++;
                                var adapter = new DocumentEquipmentDataAdapter(dr, rowNumber, MetaData.ImportType);
                                importData.Add(adapter);
                            }
                        }

                        excelConn.Close();
                    }

                    SaveData(importData);

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #17
0
        private void TransferSingleAttachmentFile(FileInfo fileInfo, BaseAttachmentDto attachmentDto)
        {
            long sentFileSize = fileInfo.Length;
            long writtenFileSize = 0;

            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);
            try
            {
                Stream stream = fileInfo.OpenRead();

                if (stream.Length > int.MaxValue)
                {
                    DbImportResult r = new DbImportResult();
                    r.ErrorMessages = new List<string>();
                    r.ErrorMessages.Add(string.Format("File [{0}] can not be bigger than 2GB. ", fileInfo.Name));
                    FileTransferFailed(r);
                    return;
                }

                int transferChunkSize = Utils.GetTransferChunkSize(stream);
                CommonUploadFile file = new CommonUploadFile { Name = fileInfo.Name, Size = stream.Length, Path = attachmentDto.Path };

                if (stream.Position > -1 && stream.Position < stream.Length)
                {
                    int chunkSize = Utils.GetCurrentChunkSize(stream, transferChunkSize);

                    byte[] fileBytes = new byte[chunkSize];
                    stream.Read(fileBytes, 0, chunkSize);

                    cmsWebServiceClient.UploadFileCompleted +=
                        (s1, e1) =>
                        {
                            if (stream.Position > -1 && stream.Position < stream.Length)
                            {
                                chunkSize = Utils.GetCurrentChunkSize(stream, transferChunkSize);

                                fileBytes = new byte[chunkSize];
                                stream.Read(fileBytes, 0, chunkSize);
                                writtenFileSize += e1.Result.EntityResult.WrittenByteArraySize;

                                cmsWebServiceClient.UploadFileAsync(file.Name, fileBytes, CMS.AppSetting.AttachmentsRootUrl, file.Path, true);
                            }
                            else
                            {
                                //Close the stream when all files are uploaded
                                stream.Close();

                                writtenFileSize += e1.Result.EntityResult.WrittenByteArraySize;

                                if (writtenFileSize < sentFileSize)
                                {
                                    DbImportResult r = new DbImportResult();
                                    r.ErrorMessages = new List<string>();
                                    r.ErrorMessages.Add("There was a loss of information while attempting to transfer the file.  Please try again. ");
                                    FileTransferFailed(r);
                                    return;
                                }

                                BeginAttachmentInsert(attachmentDto);
                            }
                        };

                    cmsWebServiceClient.UploadFileAsync(file.Name, fileBytes, CMS.AppSetting.AttachmentsRootUrl, file.Path, false);
                }
            }
            catch (Exception ex)
            {
                mGlobalImportResult.ErrorMessages.Add(ex.Message);
            }
        }
예제 #18
0
        private void ImportDocuments(BackgroundWorker worker)
        {
            try
            {
                if (mExcelFileInfo == null)
                {
                    return;
                }

                mMetaData.RevisionHistoryComment = txtComment.Text;
                mMetaData.ImportType = CommonUtils.ImportType.CreateDocumentVersionStep1;
                mMetaData.FullFileName = txtExcelFileName.Text;

                DirectoryInfo dirInfo = new DirectoryInfo(folderBrowserDialog.SelectedPath);

                FileInfo[] files = dirInfo.GetFiles();
                int fileCount = files.Length;

                if (fileCount == 0)
                {
                    worker.ReportProgress(0, string.Format("No Files found in path: {0}", folderBrowserDialog.SelectedPath));
                    worker.CancelAsync();
                    return;
                }

                DocumentVersionImporter importer = new DocumentVersionImporter(mMetaData);

                DbImportResult raisedMessages = new DbImportResult();
                importer.MessageRaised += (m, s) =>
                    {
                        switch (m)
                        {
                            case CommonUtils.MessageType.Error:
                                raisedMessages.ErrorMessages.Add(s);
                                break;

                            case CommonUtils.MessageType.Warning:
                                raisedMessages.WarningMessages.Add(s);
                                break;

                            case CommonUtils.MessageType.Added:
                            case CommonUtils.MessageType.Info:
                                raisedMessages.InformationMessages.Add(s);
                                break;

                            case CommonUtils.MessageType.AlreadyExists:
                                raisedMessages.AlreadyExistsFileNames.Add(s);
                                break;
                        }
                    };

                DbImportResult result = importer.Import(false);

                worker.ReportProgress(0 / fileCount, string.Format("About to build insert candidates for Document Version records (Step 1) using {0} files.", fileCount));

                //CHECK FOR CANCELLED
                if (mWorker.CancellationPending)
                {
                    AddMessageToGrid("Cancelled!", Common.ImporterMessageType.Info, true);
                    return;
                }

                if (result.HasErrors)
                {
                    foreach (string errorMessage in result.ErrorMessages)
                    {
                        worker.ReportProgress(0 / result.DocumentVersions.Count, new FileState { Message = errorMessage, Type = Common.ImporterMessageType.Error });
                    }
                }

                if (result.WarningMessages != null && result.WarningMessages.Any())
                {
                    foreach (string warningMessage in result.WarningMessages)
                    {
                        worker.ReportProgress(0 / result.DocumentVersions.Count, new FileState { Message = warningMessage, Type = Common.ImporterMessageType.Warning });
                    }
                }

                if (result.InformationMessages != null && result.InformationMessages.Any())
                {
                    foreach (string message in result.InformationMessages)
                    {
                        worker.ReportProgress(0 / result.DocumentVersions.Count, new FileState { Message = message, Type = Common.ImporterMessageType.Info });
                    }
                }

                List<DocumentVersion> canidateVersions = result.DocumentVersions;

                foreach (var raisedMessage in raisedMessages.ErrorMessages)
                {
                    worker.ReportProgress(0, new FileState { Message = raisedMessage, Type = Common.ImporterMessageType.Error });
                }

                foreach (var raisedMessage in raisedMessages.WarningMessages)
                {
                    worker.ReportProgress(0, new FileState { Message = raisedMessage, Type = Common.ImporterMessageType.Warning });
                }

                foreach (var raisedMessage in raisedMessages.InformationMessages)
                {
                    worker.ReportProgress(0, new FileState { Message = raisedMessage, Type = Common.ImporterMessageType.Info });
                }

                foreach (var fileName in raisedMessages.AlreadyExistsFileNames)
                {
                    mAlreadyExistsFileNames.Add(fileName);
                }

                worker.ReportProgress(0, string.Format("Completed building {0}/{1} Document Version insert candidates (Step 1).", canidateVersions.Count, fileCount));

                string settingValue = CommonUtils.GetAppSettingValue(CommonUtils.AppSettingKey.UploadedDocumentsPathRoot);

                worker.ReportProgress(0, string.Format("The actual documents will be uploaded to the directory path: '{0}'.", settingValue));

                DoInsert(worker, canidateVersions, settingValue, files);
            }
            catch (Exception ex)
            {
                worker.ReportProgress(0, string.Format("Errors = {0}", ex));

                if (ex.InnerException != null)
                {
                    worker.ReportProgress(0, string.Format("Iner Exception: Errors = {0}", ex));
                }
                worker.CancelAsync();
            }
        }
예제 #19
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            base.WorkSheetName = ImportWorkSheetName.Instruments.ToString();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateInstrument && MetaData.ImportType != CommonUtils.ImportType.UpdateInstrument)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = canCreateProperties;

            mExistingInstrumentTypes = Cee.InstrumentTypes.ToList();
            mExistingVerificationFrequencies = Cee.VerificationFrequencies.ToList();

            Stopwatch sw = new Stopwatch();
            sw.Start();

            ExistingTinyDocuments = (from x in Cee.Documents select new TinyDocument { Id = x.Id, Name = x.Name, DocumentTypeId = x.DocumentTypeId }).ToList();

            sw.Stop();
            Debug.WriteLine("It took {0} seconds to get all documents", sw.Elapsed.TotalSeconds);

            string connString = BuildConnectionString(MetaData.FullFileName);

            IList<InstrumentDataAdapter> importData = new List<InstrumentDataAdapter>();

            using (OleDbConnection excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (OleDbCommand cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = TagCommandText;
                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<InstrumentColumn>(GetColumnHeadersFromDataSet(cmd, (int)InstrumentColumn.IsActive)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;
                                InstrumentDataAdapter adapter = new InstrumentDataAdapter(dr, WorkSheetName, k, MetaData.ImportType);
                                importData.Add(adapter);
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateInstrument)
                    {
                        InsertData(importData);
                    }
                    else if (MetaData.ImportType == CommonUtils.ImportType.UpdateInstrument)
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;

                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #20
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            try
            {
                if (MetaData.ImportType == CommonUtils.ImportType.CreateDocumentVersionStep1 || MetaData.ImportType == CommonUtils.ImportType.UpdateDocumentVersion)
                {
                    string connString = BuildConnectionString(MetaData.FullFileName);

                    log.Debug("excel connString: " + connString);

                    using (OleDbConnection excelConn = new OleDbConnection(connString))
                    {
                        try
                        {
                            IList<DocumentVersionDataAdapter> importData = new List<DocumentVersionDataAdapter>();

                            using (OleDbCommand cmd = new OleDbCommand())
                            {
                                cmd.CommandTimeout = 600;
                                cmd.Connection = excelConn;
                                cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, DocumentVersionColumn.DocumentName.ToString());
                                excelConn.Open();

                                List<string> spreadSheetPropertyNames = GetPropertyColumnHeadersFromDataSet(cmd);
                                if (spreadSheetPropertyNames.Count != spreadSheetPropertyNames.Distinct().Count())
                                {
                                    DbImportResult.ErrorMessages.Add(DuplicatePropertyNamesExistMessage());
                                    log.Debug(DuplicatePropertyNamesExistMessage());
                                    return DbImportResult;
                                }

                                log.Debug("spread sheet opened ok.");

                                if (!WorkSheetCheckColumnNamesAreValid<DocumentVersionColumn>(GetColumnHeadersFromDataSet(cmd, (int)DocumentVersionColumn.Native)))
                                {
                                    DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                                    return DbImportResult;
                                }

                                log.Debug("ColumnNamesAreValid");

                                int rowNumber = 1;
                                using (OleDbDataReader dr = cmd.ExecuteReader())
                                {
                                    log.Debug("about to open datareader");

                                    while (dr.Read())
                                    {
                                        rowNumber++;
                                        try
                                        {
                                            DocumentVersionDataAdapter adapter = new DocumentVersionDataAdapter(dr, rowNumber, MetaData);

                                            if (adapter.ErrorMessages.Any())
                                            {
                                                foreach (string errorMessage in adapter.ErrorMessages)
                                                {
                                                    DbImportResult.ErrorMessages.Add(errorMessage);
                                                }
                                            }
                                            else
                                            {
                                                importData.Add(adapter);
                                            }

                                        }
                                        catch (FormatException ex)
                                        {
                                            log.Debug(string.Format("Error converting from data reader on row number {0}.", rowNumber));
                                            DbImportResult.ErrorMessages.Add(ex.Message);
                                            continue;
                                        }
                                    }
                                    excelConn.Close();
                                }
                            }

                            log.Debug(string.Format("After Reading Excel we have {0} canidate importData records.", importData.Count.ToString()));

                            DbImportResult.DocumentVersions = BuildStep1Result(importData);

                            if (MetaData.ImportType == CommonUtils.ImportType.UpdateDocumentVersion)
                            {
                                Update(DbImportResult.DocumentVersions);
                                DbImportResult.ImportedCount = mImportCount;
                                return DbImportResult;
                            }

                        }
                        catch (OleDbException ex)
                        {
                            DbImportResult.ErrorMessages.Add(ex.Message);
                            log.Error("", ex, "Import");
                            if (ex.InnerException != null)
                            {
                                DbImportResult.ErrorMessages.Add(ex.InnerException.Message);
                                log.Error("", ex.InnerException, "Import");
                            }

                            return DbImportResult;
                        }
                        finally
                        {
                            if (excelConn.State == ConnectionState.Open)
                            {
                                excelConn.Close();
                            }
                        }
                    }
                }
                else
                {
                    DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                    return DbImportResult;
                }

            }
            catch (Exception ex)
            {
                DbImportResult.ErrorMessages.Add(ex.Message);
                log.Error("", ex, "Import");
                if (ex.InnerException != null)
                {
                    DbImportResult.ErrorMessages.Add(ex.InnerException.Message);
                    log.Error("", ex.InnerException, "Import");
                }
            }

            DbImportResult.ImportedCount = mImportCount;
            return DbImportResult;
        }
예제 #21
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            if (MetaData.ImportType != CommonUtils.ImportType.CreatePipeComponent && MetaData.ImportType != CommonUtils.ImportType.UpdatePipeComponent)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = canCreateProperties;

            DbImportResult = new DbImportResult();

            mExistingComponents = (from x in Cee.PipeComponents
                .Include("PipeComponentType")
                select x).ToList();

            mExistingComponentTypes = Cee.PipeComponentTypes.ToList();
            mExistingComponentProperties = Cee.PipeProperties.ToList();
            mExistingEquipmentComponentTypeProperty = (from x in Cee.PipeComponentTypeProperties.Include("PipeComponentType") select x).ToList();
            mExistingPropertyValues = Cee.PipePropertyValues.ToList();
            mExistingManufacturers = (from x in Cee.Manufacturers.Include("Models") where x.EquipmentTypeId == (int) CommonUtils.EquipmentTypeCode.PIPE select x).ToList();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                IList<PipeComponentDataAdapter> importData = new List<PipeComponentDataAdapter>();

                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = PipeComponentCommandText;

                        if (excelConn.State != ConnectionState.Open)
                        {
                            excelConn.Open();
                        }

                        List<string> spreadSheetPropertyNames = GetPropertyColumnHeadersFromDataSet(cmd, (int) PipeComponentColumn.Model + 1);

                        if (spreadSheetPropertyNames.Count != spreadSheetPropertyNames.Distinct().Count())
                        {
                            DbImportResult.ErrorMessages.Add(DuplicatePropertyNamesExistMessage());
                            return DbImportResult;
                        }

                        if (!WorkSheetCheckColumnNamesAreValid<PipeComponentColumn>(GetColumnHeadersFromDataSet(cmd, (int) PipeComponentColumn.Model)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            mEmptyPipeLineNbrCount = 0;
                            int rowNumber = 1;

                            while (dr.Read())
                            {
                                rowNumber++;
                                var adapter = new PipeComponentDataAdapter(dr, mExistingComponentProperties, spreadSheetPropertyNames, rowNumber, CanCreateProperties);

                                if (adapter.HasEmptyPipeComponentError)
                                {
                                    mEmptyPipeLineNbrCount++;

                                    if (mEmptyPipeLineNbrCount == 3)
                                    {
                                        RaiseMessage(CommonUtils.MessageType.Error, string.Format("Worksheet {0}, row {1}. The third blank 'Pipe Name' in a row. Skipping work sheet.", WorkSheetName, rowNumber));
                                    }
                                }

                                if (!adapter.IsValid())
                                {
                                    foreach (string errorMessage in adapter.ErrorMessages)
                                    {
                                        RaiseMessage(CommonUtils.MessageType.Error, errorMessage);
                                    }
                                }
                                else
                                {
                                    importData.Add(adapter);
                                }
                            }

                            excelConn.Close();
                        }
                    }

                    if (!importData.Any())
                    {
                        RaiseMessage(CommonUtils.MessageType.Warning, NoDataFoundForWorkSheetMessage());
                        return DbImportResult;
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreatePipeComponent)
                    {
                        InsertData(importData);
                    }
                    else if (MetaData.ImportType == CommonUtils.ImportType.UpdatePipeComponent)
                    {
                        UpdateData(importData);
                    }
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }

            DbImportResult.ImportedCount = mSavedResults.Count;
            return DbImportResult;
        }
예제 #22
0
        private void AccumulateResults(DbImportResult importResult)
        {
            //errors
            mGlobalImportResult.ErrorMessages.AddRange(importResult.ErrorMessages);

            //warnings
            mGlobalImportResult.WarningMessages.AddRange(importResult.WarningMessages);

            //info
            mGlobalImportResult.InformationMessages.AddRange(importResult.InformationMessages);

            //import count
            mGlobalImportResult.ImportedCount = importResult.ImportedCount;
        }
예제 #23
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateRelatedDocuments)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            IList<RelatedDocumentDataAdapter> importData = new List<RelatedDocumentDataAdapter>();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, CommonColumn.EquipmentName);
                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<CommonColumn>(GetColumnHeadersFromDataSet(cmd, (int)CommonColumn.DocumentName)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                k++;

                                try
                                {
                                    var adapter = new RelatedDocumentDataAdapter(dr);
                                    importData.Add(adapter);
                                }
                                catch (Exception ex)
                                {
                                    DbImportResult.ErrorMessages.Add(string.Format("DataAdapter row {0} - {1}", k, ex.Message));
                                }
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateRelatedDocuments)
                    {
                        InsertData(importData);
                    }

                    DbImportResult.ImportedCount = mResultMessages.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #24
0
        private void ProcessAttachmentExcelFileResults(DbImportResult dbImportResult)
        {
            if (dbImportResult.Attachments != null && dbImportResult.Attachments.Any())
            {
                foreach (BaseAttachmentDto attachmentDto in dbImportResult.Attachments)
                {
                    mAttachmentStack.Push(attachmentDto);
                }

                ProcessSingleAttachmentFile(); //gets the chain reaction started..

                //busyIndicator.IsBusy = true;
            }
        }
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateMobilePlantComponent && MetaData.ImportType != CommonUtils.ImportType.UpdateMobilePlantComponent)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            mExistingEquipments = Cee.MobilePlants.ToList();

            mExistingComponents = (from x in Cee.MobilePlantComponents
                .Include("MobilePlantComponentType")
                                   select x).ToList();

            mExistingEquipmentProperties = Cee.MobilePlantProperties.ToList();
            mExistingEquipmentComponentTypes = Cee.MobilePlantComponentTypes.ToList();
            mExistingEquipmentComponentTypeProperty = (from x in Cee.MobilePlantComponentTypeProperties.Include("MobilePlantComponentType") select x).ToList();
            mExistingPropertyValues = Cee.MobilePlantPropertyValues.ToList();

            mExistingManufacturers = (from x in Cee.Manufacturers.Include("Models") where x.EquipmentTypeId == (int)CommonUtils.EquipmentTypeCode.MOB select x).ToList();
            CanCreateProperties = canCreateProperties;

            //Include Headers so we can match up the component properties (HDR=YES).
            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                IList<MobilePlantComponentDataAdapter> importData = new List<MobilePlantComponentDataAdapter>();

                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;

                        cmd.CommandText = ComponentCommandText;
                        excelConn.Open();

                        List<string> spreadSheetPropertyNames = GetPropertyColumnHeadersFromDataSet(cmd);
                        if (spreadSheetPropertyNames.Count != spreadSheetPropertyNames.Distinct().Count())
                        {
                            DbImportResult.ErrorMessages.Add(DuplicatePropertyNamesExistMessage());
                            return DbImportResult;
                        }

                        if (!WorkSheetCheckColumnNamesAreValid<BaseComponentColumn>(GetColumnHeadersFromDataSet(cmd, (int)BaseComponentColumn.Model)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            int rowNumber = 1;

                            while (dr.Read())
                            {
                                rowNumber++;
                                var adapter = new MobilePlantComponentDataAdapter(dr, mExistingEquipmentProperties,
                                    spreadSheetPropertyNames, rowNumber, canCreateProperties, MetaData.ImportType);

                                if (!adapter.IsValid())
                                {
                                    foreach (string errorMessage in adapter.ErrorMessages)
                                    {
                                        RaiseMessage(CommonUtils.MessageType.Error, errorMessage);
                                    }
                                }
                                else
                                {
                                    importData.Add(adapter);
                                }
                            }

                            excelConn.Close();
                        }
                    }

                    if (importData.Count == 0)
                    {
                        RaiseMessage(CommonUtils.MessageType.Warning, NoDataFoundForWorkSheetMessage());
                    }

                    string operation = "Addded";
                    if (MetaData.ImportType == CommonUtils.ImportType.CreateMobilePlantComponent)
                    {
                        InsertData(importData);
                    }
                    else if (MetaData.ImportType == CommonUtils.ImportType.UpdateMobilePlantComponent)
                    {
                        UpdateData(importData);
                        operation = "Updated";
                    }

                    foreach (MobilePlantComponent result in mSavedResults)
                    {
                        RaiseMessage(CommonUtils.MessageType.Added, string.Format("{0} Component '{1}' from worksheet {2}.",
                            operation, result.Name, WorkSheetName));
                    }

                    ImportedCount = mSavedResults.Count;

                    DbImportResult.ImportedCount = ImportedCount;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }
                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
예제 #26
0
        private void ProcessDocumentVersionExcelFileResults(DbImportResult dbImportResult)
        {
            if (dbImportResult.DocumentVersions != null && dbImportResult.DocumentVersions.Any())
            {
                foreach (DocumentVersion documentVersion in dbImportResult.DocumentVersions)
                {
                    mDocVersionStack.Push(documentVersion);
                }

                ProcessSingleDocumentVersionFile(); //gets the chain reaction started..

                busyIndicator.IsBusy = (mDocVersionStack.Count > 0);

            }
        }
예제 #27
0
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.Cji5)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            IList<Cji5DataAdapter> importData = new List<Cji5DataAdapter>();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;

                        excelConn.Open();

                        DataTable dbSchema = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        if (dbSchema == null || dbSchema.Rows.Count < 1)
                        {
                            throw new Exception("Error: Could not determine the name of the first worksheet.");
                        }
                        string firstSheetName = dbSchema.Rows[0]["TABLE_NAME"].ToString();
                        cmd.CommandText = string.Format(@"SELECT * FROM [{0}] where [Ref Document Number] IS NOT NULL", firstSheetName);

                        if (!WorkSheetCheckColumnNamesAreValid<PurchaseColumn>(GetColumnHeadersFromDataSet(cmd, (int)PurchaseColumn.ValueInObjCrcy)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int rowNumber = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr != null && dr.Read())
                            {
                                rowNumber++;
                                try
                                {
                                    var adapter = new Cji5DataAdapter(dr,rowNumber);
                                    if (adapter.IsValid())
                                    {
                                        if (ContainsDuplicates(importData, adapter))
                                        {
                                            string message = String.Format(
                                                "Duplicate Po Number '{0}', Project Definition '{1}', Reference Item '{2}', Reference Doc type '{3}' and WBS Element '{4}' . Will SKIPP this row.",
                                                 adapter.PoNumber, adapter.ProjectDefinition, adapter.ReferenceItem, adapter.ReferenceDocType, adapter.WbsElement);
                                            DbImportResult.ErrorMessages.Add(string.Format("FinancialDataAdapter row {0} - {1}", rowNumber, message));
                                        }
                                        else
                                        {
                                            importData.Add(adapter);
                                        }
                                    }
                                    else
                                    {
                                        foreach (string message in adapter.ErrorMessages)
                                        {
                                            RaiseMessage(CommonUtils.MessageType.Error, message);
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    DbImportResult.ErrorMessages.Add(string.Format("FinancialDataAdapter row {0} - {1}", rowNumber, ex.Message));
                                }
                            }
                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.Cji5)
                    {
                        InsertData(importData);
                    }
                    else
                    {
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }
        public override DbImportResult Import(bool canCreateProperties = false)
        {
            DbImportResult = new DbImportResult();

            if (MetaData.ImportType != CommonUtils.ImportType.CreateIssueReferences && MetaData.ImportType != CommonUtils.ImportType.UpdateIssueReferences)
            {
                DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE);
                return DbImportResult;
            }

            CanCreateProperties = false;

            mExistingSystemReferenceTypes = Cee.SystemReferenceTypes.ToList();
            mExistingSystemReferences = Cee.SystemReferences.ToList();

            IList<IssueSystemReferencesDataAdapter> importData = new List<IssueSystemReferencesDataAdapter>();

            string connString = BuildConnectionString(MetaData.FullFileName);

            using (var excelConn = new OleDbConnection(connString))
            {
                try
                {
                    using (var cmd = new OleDbCommand())
                    {
                        cmd.CommandTimeout = 600;
                        cmd.Connection = excelConn;
                        cmd.CommandText = string.Format(@"SELECT  * FROM [{0}$] WHERE [{1}] IS NOT NULL", WorkSheetName, IssueSystemReferencesColumn.IssueId);

                        excelConn.Open();

                        if (!WorkSheetCheckColumnNamesAreValid<IssueSystemReferencesColumn>(GetColumnHeadersFromDataSet(cmd, (int)IssueSystemReferencesColumn.Funding)))
                        {
                            DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage());
                            return DbImportResult;
                        }

                        int k = 1;
                        using (OleDbDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr != null && dr.Read())
                            {
                                k++;

                                try
                                {
                                    var adapter = new IssueSystemReferencesDataAdapter(dr,k);
                                    importData.Add(adapter);
                                }
                                catch (Exception ex)
                                {
                                    DbImportResult.ErrorMessages.Add(string.Format("MilestoneDataAdapter row {0} - {1}", k, ex.Message));
                                }
                            }

                            excelConn.Close();
                        }
                    }

                    if (MetaData.ImportType == CommonUtils.ImportType.CreateIssueReferences)
                    {
                        InsertData(importData);
                    }
                    else
                    {
                        UpdateData(importData);
                    }

                    DbImportResult.ImportedCount = mSavedResults.Count;
                    return DbImportResult;
                }
                catch (OleDbException ex)
                {
                    DbImportResult.ErrorMessages.Add(ex.ToString());
                    return DbImportResult;
                }

                finally
                {
                    if (excelConn.State == ConnectionState.Open)
                    {
                        excelConn.Close();
                    }
                }
            }
        }