コード例 #1
0
        private static void FixedWidthSortMurgePurge <T>(string dbConnPath, string line,
                                                         MasterFixedWidthFileSource <T> master,
                                                         DelimitedFileSource <T> detail,
                                                         MergePurgeParam mgPurgeParam,
                                                         Action <MergePurgeParam> processData,
                                                         MergePurgeResults mgPurgeResults,
                                                         DataMode processMode,
                                                         StreamWriter[] actionWriters)
        {
            SortKey <T> srtKey = null;

            using (SqliteRepository <T> sqlRepo = new SqliteRepository <T>(dbConnPath))
            {
                srtKey = sqlRepo.KeyInDb(detail.GetKey(mgPurgeParam.DetailFields, line));
            }
            mgPurgeParam.KeyFound = srtKey.Found;
            string masterData = !srtKey.Found ? string.Empty : srtKey.Data;

            if (mgPurgeParam.KeyFound)
            {
                mgPurgeParam.MasterFields = GetMasterFields <T>(master, masterData);
            }
            if (processData != null)
            {
                processData(mgPurgeParam);
                mgPurgeResults.IncrementAction(mpAction: mgPurgeParam.DataAction);
                string detailLine    = GetDetailLine <T>(detail, mgPurgeParam);
                string newMasterData = GetNewMasterDataFixedWidth(GetMasterLine <T>(master, mgPurgeParam));
                PerformDataActionForPassiveModeWriter(mgPurgeParam.DataAction, mgPurgeParam.KeyFound, processMode, detailLine, actionWriters);
                PerformDataAction(mgPurgeParam, dbConnPath, processMode, newMasterData, srtKey);
            }
        }
コード例 #2
0
        private static void PerformDataAction <T>(MergePurgeParam mgPurgeParam,
                                                  string dbConnPath,
                                                  DataMode processMode,
                                                  string newMasterData,
                                                  SortKey <T> sortKey
                                                  )
        {
            using (SqliteRepository <T> sqlRepo = new SqliteRepository <T>(dbConnPath))
            {
                switch (mgPurgeParam.DataAction)
                {
                case MergePurgeAction.Add:
                    if (!mgPurgeParam.KeyFound)
                    {
                        if (processMode == DataMode.Active)
                        {
                            sqlRepo.Add(sortKey.Key, newMasterData);
                        }
                    }
                    break;

                case MergePurgeAction.Delete:
                    if (mgPurgeParam.KeyFound)
                    {
                        if (processMode == DataMode.Active)
                        {
                            sqlRepo.Delete(sortKey.Id);
                        }
                    }
                    break;

                case MergePurgeAction.Update:
                    if (mgPurgeParam.KeyFound)
                    {
                        if (processMode == DataMode.Active)
                        {
                            sqlRepo.Update(sortKey.Id, newMasterData);
                        }
                    }

                    break;

                default:
                    break;
                }
            }
        }
コード例 #3
0
        public SortKey <T> KeyInDb(T theKey)
        {
            string sqlCmd = null;

            if (typeof(T) == typeof(long))
            {
                sqlCmd = @"SELECT * FROM FileData WHERE SortKey = " + theKey;
            }
            else
            {
                sqlCmd = string.Format(@"SELECT * FROM FileData WHERE SortKey = '{0}'", theKey);
            }

            using (var cmd = new SQLiteCommand(sqlCmd, dbConnection))
            {
                SortKey <T> srtKey = null;
                using (SQLiteDataReader rdr = cmd.ExecuteReader(System.Data.CommandBehavior.SingleRow))
                {
                    if (rdr.Read())
                    {
                        var     tmpId       = rdr["Id"];
                        dynamic lastReadKey = null;
                        long    id          = (long)tmpId;
                        string  sqlLiteData = (string)rdr["LineData"];
                        lastReadKey = rdr["SortKey"];
                        srtKey      = new SortKey <T>()
                        {
                            Id = id, Data = sqlLiteData, Key = lastReadKey, Found = true
                        };
                    }
                }
                if (srtKey == null)
                {
                    srtKey = new SortKey <T>()
                    {
                        Id = 0, Data = string.Empty, Key = theKey, Found = false
                    };
                }
                return(srtKey);
            }
        }