Exemplo n.º 1
0
        protected virtual void AddEntry(DataRow entry)
        {
            // Only add entries with an primary key
            var pkValue = entry[0];

            if (pkValue == null || string.IsNullOrEmpty(pkValue.ToString()))
            {
                return;
            }

            // Clean primary key
            var pkCleaned = pkValue.ToString().Replace("\r\n", "").Trim();

            pkCleaned = Encoding.UTF8.GetString(Encoding.GetBytes(pkCleaned));
            pkCleaned = Regex.Replace(pkCleaned, "[^0-9]", "");
            var pkey = 0;

            if (int.TryParse(pkCleaned, out pkey) == false)
            {
                Console.WriteLine("Failed to parse primary key in column: " + pkValue);
                return;
            }

            if (RowSearchIndex.ContainsKey(pkey))
            {
                return;
            }

            // Add primary key to search index
            RowSearchIndex.Add(pkey, Entries.Rows.Count);

            // Encode entries

            /*
             * for (var i = 1; i < entry.ItemArray.Length; i++) {
             *      entry[i] = Encoding.UTF8.GetString(Encoding.GetBytes(entry[i].ToString()));
             * }
             */

            entry[0] = pkey;
            Entries.Rows.Add(entry);
        }
Exemplo n.º 2
0
        public virtual bool ReadTranslation(Encoding translationEncoding)
        {
            // Read translation file
            var translationFilepath = BuildTranslationFilepath();

            mTranslationFile = new PipeTrailedFile(translationEncoding, false, false);
            mTranslationFile.Read(translationFilepath);

            Entries.BeginInit();

            // Apply translations by the first column (always ID?)
            for (var r = 0; r < mTranslationFile.Entries.Rows.Count; r++)
            {
                var translatedRow = mTranslationFile.Entries.Rows[r];
                var pkey          = int.Parse(translatedRow[0].ToString());
                if (RowSearchIndex.ContainsKey(pkey) == false)
                {
                    continue;
                }

                var sourceIndex = RowSearchIndex[pkey];
                var sourceRow   = Entries.Rows[sourceIndex];

                for (var c = 1; c < mTranslationFile.Entries.Columns.Count; c++)
                {
                    var columnSourceValue = mTranslationFile.ColumnMappings[c];
                    var columnSourceIndex = int.Parse(columnSourceValue);
                    // Columns start with 0, numbers with 1
                    columnSourceIndex--;
                    sourceRow[columnSourceIndex] = translatedRow[c];
                }
            }

            Entries.EndInit();

            return(true);
        }
Exemplo n.º 3
0
        protected virtual void ReadInternalByChar(int columnCount, bool foundColumnNames)
        {
            var currentColIndex = 0;
            var entry           = Entries.NewRow();
            var columnValue     = string.Empty;

            while (mLineReader.EndOfStream == false)
            {
                var c = (char)mLineReader.Read();

                // We got the trailing sign?
                if (c == '|')
                {
                    // We have reached the next column number, or we have reached the next entry
                    entry[currentColIndex] = columnValue;
                    // Advance column index
                    currentColIndex++;
                    if (currentColIndex >= columnCount)
                    {
                        // Reached the amount of columns, means new entry

                        // Got column names?
                        if (mHasColumnNames && foundColumnNames == false)
                        {
                            // Third line contains column names, not an entry
                            foundColumnNames = true;
                            for (var i = 0; i < columnCount; i++)
                            {
                                Entries.Columns[i].ColumnName = string.Format("{0} ({1})", entry[i], ColumnMappings[i]);
                            }

                            // Now we have entries
                        }
                        else
                        {
                            // Only add entries with an primary key
                            var pkValue = entry[0];
                            if (pkValue != null && string.IsNullOrEmpty(pkValue.ToString()) == false)
                            {
                                // Clean primary key
                                var pkCleaned = pkValue.ToString().Replace("\r\n", "").Trim();
                                pkCleaned = Encoding.UTF8.GetString(Encoding.GetBytes(pkCleaned));
                                pkCleaned = Regex.Replace(pkCleaned, "[^0-9]", "");
                                var pkey = 0;
                                if (int.TryParse(pkCleaned, out pkey) == false)
                                {
                                    Console.WriteLine("Failed to parse primary key in column: " + pkValue);
                                }
                                else if (RowSearchIndex.ContainsKey(pkey) == false)
                                {
                                    // Add primary key to search index
                                    RowSearchIndex.Add(pkey, Entries.Rows.Count);

                                    // Encode entries

                                    /*
                                     * for (var i = 1; i < entry.ItemArray.Length; i++) {
                                     *      entry[i] = Encoding.UTF8.GetString(Encoding.GetBytes(entry[i].ToString()));
                                     * }
                                     */

                                    entry[0] = pkey;
                                    Entries.Rows.Add(entry);
                                }
                            }
                        }

                        entry           = Entries.NewRow();
                        currentColIndex = 0;
                    }

                    // Prepare new column value
                    columnValue = string.Empty;

                    continue;
                }

                // No new column or entry, store sign in current column
                columnValue += c;
            }
        }