Smrf.NodeXL.ExcelTemplate.TableColumnMapper.TryMapToNumericRange C# (CSharp) Method

TryMapToNumericRange() public static method

public static TryMapToNumericRange ( ListObject table, String sourceColumnName, String destinationColumnName, System.Boolean useSourceNumber1, System.Boolean useSourceNumber2, Double sourceNumber1, Double sourceNumber2, Double destinationNumber1, Double destinationNumber2, System.Boolean ignoreOutliers, System.Boolean useLogs, Double &sourceCalculationNumber1, Double &sourceCalculationNumber2, Int32 &decimalPlaces ) : System.Boolean
table ListObject
sourceColumnName String
destinationColumnName String
useSourceNumber1 System.Boolean
useSourceNumber2 System.Boolean
sourceNumber1 Double
sourceNumber2 Double
destinationNumber1 Double
destinationNumber2 Double
ignoreOutliers System.Boolean
useLogs System.Boolean
sourceCalculationNumber1 Double
sourceCalculationNumber2 Double
decimalPlaces System.Int32
return System.Boolean
    TryMapToNumericRange
    (
        ListObject table,
        String sourceColumnName,
        String destinationColumnName,
        Boolean useSourceNumber1,
        Boolean useSourceNumber2,
        Double sourceNumber1,
        Double sourceNumber2,
        Double destinationNumber1,
        Double destinationNumber2,
        Boolean ignoreOutliers,
        Boolean useLogs,
        out Double sourceCalculationNumber1,
        out Double sourceCalculationNumber2,
        out Int32 decimalPlaces
    )
    {
        Debug.Assert(table != null);
        Debug.Assert( !String.IsNullOrEmpty(sourceColumnName) );
        Debug.Assert( !String.IsNullOrEmpty(destinationColumnName) );
        Debug.Assert(!useLogs || !useSourceNumber1 || sourceNumber1 > 0);
        Debug.Assert(!useLogs || !useSourceNumber2 || sourceNumber2 > 0);

        sourceCalculationNumber1 = sourceCalculationNumber2 = Double.MinValue;
        decimalPlaces = Int32.MinValue;

        Range oVisibleSourceRange, oVisibleDestinationRange;

        if ( !TryGetVisibleSourceAndDestination(table, sourceColumnName,
            destinationColumnName, out oVisibleSourceRange,
            out oVisibleDestinationRange) )
        {
            return (false);
        }

        // Get the source calculation range, which is the range of source
        // numbers used in calculating the mapping of source numbers to
        // destination numbers.

        if ( !TryGetSourceCalculationRange(oVisibleSourceRange,
            useSourceNumber1, useSourceNumber2, sourceNumber1, sourceNumber2,
            ignoreOutliers, useLogs, out sourceCalculationNumber1,
            out sourceCalculationNumber2) )
        {
            return (false);
        }

        // Convert to log if necessary.

        Double dSourceCalculationNumberWithLog1 =
            GetLogIfRequested(sourceCalculationNumber1, useLogs);

        Double dSourceCalculationNumberWithLog2 =
            GetLogIfRequested(sourceCalculationNumber2, useLogs);

        // Loop through the areas.

        Int32 iAreas = oVisibleSourceRange.Areas.Count;

        Debug.Assert(iAreas == oVisibleDestinationRange.Areas.Count);

        for (Int32 iArea = 1; iArea <= iAreas; iArea++)
        {
            Range oSourceArea = oVisibleSourceRange.Areas[iArea];
            Range oDestinationArea = oVisibleDestinationRange.Areas[iArea];

            Debug.Assert(oSourceArea.Rows.Count ==
                oDestinationArea.Rows.Count);

            Object [,] aoSourceAreaValues =
                ExcelUtil.GetRangeValues(oSourceArea);

            Object [,] aoDestinationAreaValues =
                ExcelUtil.GetRangeValues(oDestinationArea);

            Int32 iRows = oSourceArea.Rows.Count;

            for (Int32 iRow = 1; iRow <= iRows; iRow++)
            {
                // If the source cell doesn't contain a number, skip it.

                Double dSourceNumber;

                if ( !TryGetNumber( aoSourceAreaValues[iRow, 1], useLogs,
                    out dSourceNumber) )
                {
                    continue;
                }

                // Map the source number to a destination number.

                Double dSourceNumberWithLog =
                    GetLogIfRequested(dSourceNumber, useLogs);

                Double dDestinationNumber = MapSourceNumberToDestinationNumber(
                    dSourceNumberWithLog, dSourceCalculationNumberWithLog1,
                    dSourceCalculationNumberWithLog2, destinationNumber1,
                    destinationNumber2, useLogs);

                aoDestinationAreaValues[iRow, 1] = dDestinationNumber;
            }

            oDestinationArea.set_Value(Missing.Value, aoDestinationAreaValues);
        }

        decimalPlaces = GetDecimalPlaces(table, sourceColumnName);

        return (true);
    }