Ejemplo n.º 1
0
        private void writeContents()
        {
            OnProgressMaxChanged(new ProgressMaxArgs(RowCount));

            if (lua.SpecialCase)
            {
                switch (lua.Case)
                {
                case SpecialCase.DOUBLE_LOOP:

                    int pVal = 0;

                    for (int rowIdx = 0; rowIdx < RowCount; rowIdx++)
                    {
                        Row row  = rows[rowIdx];
                        int cVal = (int)row.GetValueByFlag(FlagType.LOOP_COUNTER);

                        if (pVal != cVal)
                        {
                            string counterName = row.GetNameByFlag(FlagType.LOOP_COUNTER);
                            Row[]  treeRows    = FindAll(counterName, cVal);

                            sHelper.WriteInt32(treeRows.Length);

                            for (int tR = 0; tR < treeRows.Length; tR++)
                            {
                                if (lua.UseRowProcessor)
                                {
                                    lua.CallRowProcessor("write", rows[tR], rowIdx);
                                }

                                writeRow(treeRows[tR], SenderType.WRITE_ROW);
                            }

                            pVal = cVal;
                        }
                    }

                    break;
                }
            }
            else
            {
                for (int r = 0; r < RowCount; r++)
                {
                    Row i = rows[r];
                    Row o = new Row(row_Template);

                    if (lua.UseRowProcessor)
                    {
                        i.Clone(ref o);
                        lua.CallRowProcessor(FileMode.Write, o, r);
                    }
                    else
                    {
                        o = i;
                    }

                    writeRow(o, SenderType.WRITE_ROW);

                    if ((r * 100 / RowCount) != ((r - 1) * 100 / RowCount))
                    {
                        OnProgressValueChanged(new ProgressValueArgs(r));
                    }
                }
            }

            OnMessageOccured(new MessageArgs(string.Format("Writing {0}", RdbPath)));
            sHelper.WriteToFile(RdbPath);

            OnProgressMaxChanged(new ProgressMaxArgs(100));
            OnProgressValueChanged(new ProgressValueArgs(0));
        }