Esempio n. 1
0
        public static StringTable ExpandIntegerColumnsUseProcessDefinition(StringTable inStringTable, string[] columnNames, ProcessDefinition processDefinition)
        {
            bool[] columnsToExpand   = FindColumns(inStringTable.IndependentHeaders.ToList(), columnNames);
            int    countAddedColumns = 0;

            for (int inColumnIndex = 0; inColumnIndex < processDefinition.ExpandColumnsPointers.Pointers.Count; inColumnIndex++)
            {
                ExpandColumnPointers expandColumnPointers = processDefinition.ExpandColumnsPointers.Pointers[inColumnIndex];
                if (expandColumnPointers.Pointers.Count > 0)
                {
                    countAddedColumns += expandColumnPointers.Pointers.Count - 1;
                }
            }
            StringTable outStringTable  = new StringTable();
            int         totalRows       = inStringTable.Independents.GetUpperBound(0) + 1;
            int         totalInColumns  = inStringTable.Independents.GetUpperBound(1) + 1;
            int         totalOutColumns = totalInColumns + countAddedColumns;

            outStringTable.IndependentHeaders = new string[totalOutColumns];
            outStringTable.Independents       = new string[totalRows, totalOutColumns];
            int outColumnIndex         = 0;
            int countExpandedInColumns = 0;

            for (int inColumnIndex = 0; inColumnIndex < columnsToExpand.Length; inColumnIndex++)
            {
                string[] inColumn = GetColumn(inStringTable.Independents, inColumnIndex);
                if (columnsToExpand[inColumnIndex] == false)
                {
                    outStringTable.IndependentHeaders[outColumnIndex] = inStringTable.IndependentHeaders[inColumnIndex];
                    PutColumn(outStringTable.Independents, inColumn, outColumnIndex);
                    outColumnIndex++;
                }
                else
                {
                    ExpandColumnPointers expandColumnPointers = processDefinition.ExpandColumnsPointers.Pointers[countExpandedInColumns];
                    int totalNewColumns = expandColumnPointers.Pointers.Count;
                    for (int newColumnIndex = 0; newColumnIndex < totalNewColumns; newColumnIndex++)
                    {
                        ExpandColumnPointer expandColumnPointer = expandColumnPointers.Pointers[newColumnIndex];
                        outStringTable.IndependentHeaders[outColumnIndex] = inStringTable.IndependentHeaders[inColumnIndex] + "-" + newColumnIndex.ToString().Trim();
                        for (int rowIndex = 0; rowIndex < totalRows; rowIndex++)
                        {
                            if (inStringTable.Independents[rowIndex, inColumnIndex] == expandColumnPointer.CategoryName & newColumnIndex == Convert.ToInt32(expandColumnPointer.NewColumnIndex))
                            {
                                outStringTable.Independents[rowIndex, outColumnIndex] = "1";
                            }
                            else
                            {
                                outStringTable.Independents[rowIndex, outColumnIndex] = "0";
                            }
                        }
                        outColumnIndex++;
                    }
                    countExpandedInColumns++;
                }
            }
            return(outStringTable);
        }
Esempio n. 2
0
        public static StringTable ExpandIntegerColumnsUpdateProcessDefinition(StringTable inStringTable, string[] columnNames, ProcessDefinition processDefinition)
        {
            processDefinition.ExpandColumnsPointers = new ExpandColumnsPointers();
            bool[] columnsToExpand   = FindColumns(inStringTable.IndependentHeaders.ToList(), columnNames);
            int    countAddedColumns = 0;

            for (int inColumnIndex = 0; inColumnIndex < columnsToExpand.Length; inColumnIndex++)
            {
                if (columnsToExpand[inColumnIndex] == true)
                {
                    string[] column = GetColumn(inStringTable.Independents, inColumnIndex);
                    countAddedColumns += column.Distinct().ToList().Count - 1;
                }
            }
            StringTable outStringTable = new StringTable();

            outStringTable.DependantHeader = inStringTable.DependantHeader;
            outStringTable.Dependants      = inStringTable.Dependants;
            int totalRows       = inStringTable.Dependants.Length;
            int totalInColumns  = inStringTable.Independents.GetUpperBound(1) + 1;
            int totalOutColumns = totalInColumns + countAddedColumns;

            outStringTable.IndependentHeaders = new string[totalOutColumns];
            outStringTable.Independents       = new string[totalRows, totalOutColumns];
            int outColumnIndex = 0;

            for (int inColumnIndex = 0; inColumnIndex < columnsToExpand.Length; inColumnIndex++)
            {
                ExpandColumnPointers expandColumnPointers = new ExpandColumnPointers();
                string[]             inColumn             = GetColumn(inStringTable.Independents, inColumnIndex);
                if (columnsToExpand[inColumnIndex] == false)
                {
                    outStringTable.IndependentHeaders[outColumnIndex] = inStringTable.IndependentHeaders[inColumnIndex];
                    PutColumn(outStringTable.Independents, inColumn, outColumnIndex);
                    outColumnIndex++;
                }
                else
                {
                    List <string> distinctCategories = inColumn.Distinct().ToList();
                    int           totalNewColumns    = distinctCategories.Count;
                    for (int newColumnIndex = 0; newColumnIndex < totalNewColumns; newColumnIndex++)
                    {
                        ExpandColumnPointer expandColumnPointer = new ExpandColumnPointer();
                        expandColumnPointer.NewColumnIndex = newColumnIndex;
                        expandColumnPointer.CategoryName   = distinctCategories[newColumnIndex];
                        outStringTable.IndependentHeaders[outColumnIndex] = inStringTable.IndependentHeaders[inColumnIndex] + "-" + newColumnIndex.ToString().Trim();
                        for (int rowIndex = 0; rowIndex < totalRows; rowIndex++)
                        {
                            if (newColumnIndex == Convert.ToInt32(inColumn[rowIndex]))
                            {
                                outStringTable.Independents[rowIndex, outColumnIndex] = "1";
                            }
                            else
                            {
                                outStringTable.Independents[rowIndex, outColumnIndex] = "0";
                            }
                        }
                        outColumnIndex++;
                        expandColumnPointers.Pointers.Add(expandColumnPointer);
                    }
                }
                if (expandColumnPointers.Pointers.Count > 0)
                {
                    processDefinition.ExpandColumnsPointers.Pointers.Add(expandColumnPointers);
                }
            }
            return(outStringTable);
        }