コード例 #1
0
ファイル: MapCallback.cs プロジェクト: SDRC-India/sdrcdevinfo
    /// <summary>
    /// Reduce my data to map Data structure
    /// </summary>
    /// <param name="mapDataColumns"></param>
    /// <param name="dtSessionData"></param>
    /// <returns></returns>
    private DataTable TransformTableMyDataCase(DI_MapDataColumns mapDataColumns, DataTable dtSessionData, ref bool isMrdColumnAdded)
    {
        DataTable RetVal = new DataTable();

        string numericColumnIndexes = string.Empty;
        List<string> numericColumnList = new List<string>();

        string areaColumnIndexes = string.Empty;
        List<string> areaColumnList = new List<string>();

        string isMRDColumnIndexes = string.Empty;
        List<string> isMRDColumnList = new List<string>();

        string timePeriodColumnIndexes = string.Empty;
        List<string> timePeriodColumnList = new List<string>();

        int counter = 1;
        DataRow DRRow = null;
        Dictionary<string, string> columnHistory = new Dictionary<string, string>();
        List<string> seriesCombinations = new List<string>();
        string SeriesText = string.Empty;
        isMrdColumnAdded = false;

        try
        {

            //1) getColumnCaption of Area and Numeric column and set columns index
            foreach (DataColumn column in dtSessionData.Columns)
            {
                if (!string.IsNullOrEmpty(column.Caption))
                {
                    //area columns
                    if (column.Caption == mapDataColumns.AreaID || column.Caption == mapDataColumns.AreaName)
                    {
                        if (column.Caption == mapDataColumns.AreaID && areaColumnIndexes != "")
                        {
                            areaColumnIndexes = dtSessionData.Columns.IndexOf(column) + "," + areaColumnIndexes;
                        }
                        else
                        {
                            areaColumnIndexes += dtSessionData.Columns.IndexOf(column) + ",";
                        }
                        continue;
                    }

                    ////numeric columns
                    //if (column.DataType == typeof(decimal))
                    //{
                    //    numericColumnIndexes += dtSessionData.Columns.IndexOf(column) + ",";
                    //}

                    //numeric columns
                    if (column.Caption.StartsWith("[**Data_Value**]"))
                    {
                        numericColumnIndexes += dtSessionData.Columns.IndexOf(column) + ",";
                    }

                    ////ToDo Manage it by gaurav in DES case Column caption get Time instead of TimePeriod
                    //if (column.Caption == "Time")
                    //{
                    //    column.Caption = mapDataColumns.TimePeriod;
                    //    column.ColumnName = mapDataColumns.TimePeriod;
                    //}

                    //timeperiod columns
                    if (column.Caption == mapDataColumns.TimePeriod)
                    {
                        timePeriodColumnIndexes += dtSessionData.Columns.IndexOf(column) + ",";
                    }
                    if (column.Caption == mapDataColumns.isMRD)
                    {
                        isMRDColumnIndexes += dtSessionData.Columns.IndexOf(column) + ",";
                    }
                }
            }
            areaColumnIndexes = areaColumnIndexes.Trim(',');
            numericColumnIndexes = numericColumnIndexes.Trim(',');
            timePeriodColumnIndexes = timePeriodColumnIndexes.Trim(',');
            isMRDColumnIndexes = isMRDColumnIndexes.Trim(',');

            //2. get column name by column Index
            //2.1 for numeric columns
            foreach (string numericColumnIndex in numericColumnIndexes.Split(','))
            {
                if (!string.IsNullOrEmpty(numericColumnIndex))
                {
                    numericColumnList.Add(dtSessionData.Columns[Convert.ToInt32(numericColumnIndex)].ColumnName);
                }
            }
            //2.2. for area columns
            foreach (string areaColumnIndex in areaColumnIndexes.Split(','))
            {
                if (!string.IsNullOrEmpty(areaColumnIndex))
                {
                    areaColumnList.Add(dtSessionData.Columns[Convert.ToInt32(areaColumnIndex)].ColumnName);
                }
            }
            //2.3. for timeperiod columns
            foreach (string timeperiodColumnIndex in timePeriodColumnIndexes.Split(','))
            {
                if (!string.IsNullOrEmpty(timeperiodColumnIndex))
                {
                    timePeriodColumnList.Add(dtSessionData.Columns[Convert.ToInt32(timeperiodColumnIndex)].ColumnName);
                }
            }

            //2.4. for timeperiod columns
            foreach (string MRDColumnIndex in isMRDColumnIndexes.Split(','))
            {
                if (!string.IsNullOrEmpty(MRDColumnIndex))
                {
                    isMRDColumnList.Add(dtSessionData.Columns[Convert.ToInt32(MRDColumnIndex)].ColumnName);
                }
            }

            ////Remove extra quotes from session data table
            //dtSessionData = this.RemoveQuotefromTableContent(Timeperiods.TimePeriod, dtSessionData);

            //3. create columns
            //3.1 for area column
            RetVal.Columns.Add(mapDataColumns.AreaID, typeof(string));
            if (areaColumnIndexes.Split(',').Length > 1)
            {
                RetVal.Columns.Add(mapDataColumns.AreaName, typeof(string));
            }

            //3.2 for timeperiod Column
            RetVal.Columns.Add(mapDataColumns.TimePeriod, typeof(string));

            //3.3 for series ID for distinct combination od data
            RetVal.Columns.Add(mapDataColumns.SeriesNid, typeof(int));
            foreach (DataColumn column in dtSessionData.Columns)
            {
                if (!string.IsNullOrEmpty(column.ColumnName) && !numericColumnList.Contains(column.ColumnName) && column.Caption != mapDataColumns.AreaID && column.Caption != mapDataColumns.AreaName && column.Caption != mapDataColumns.TimePeriod && column.Caption.ToLower() != "ismrd")
                {
                    RetVal.Columns.Add("s" + counter, typeof(string));
                    RetVal.Columns["s" + counter].Caption = "[**SERIES**]s" + counter;
                    columnHistory.Add(column.ColumnName, "s" + counter);
                    counter++;
                }
            }

            //3.4 For Numeric combinations like India,IMR,2010,Male for male and itz kind of subgroup_Val
            RetVal.Columns.Add("s" + counter, typeof(string));
            RetVal.Columns["s" + counter].Caption = "[**SERIES**]s" + counter;

            //3.5 for other combination type column
            RetVal.Columns.Add(mapDataColumns.isMRD, typeof(bool));

            //3.6 for other combination type column
            RetVal.Columns.Add(mapDataColumns.DataValue, typeof(string));

            //4. add rows for discinct combination
            foreach (DataRow row in dtSessionData.Rows)
            {
                //4.1 add all numeric combinations
                foreach (string columnName in numericColumnList)
                {
                    SeriesText = string.Empty;
                    if (string.IsNullOrEmpty(row[areaColumnList[0]].ToString().Trim()) || string.IsNullOrEmpty(row[columnName].ToString().Trim()))
                    {
                        //areaID is blank then wont cosider unmapped area //check for data value also if blank then not add column
                        continue;
                    }

                    DRRow = RetVal.NewRow();

                    //4.1.1 set area values by index
                    DRRow[mapDataColumns.AreaID] = row[areaColumnList[0]].ToString().Trim();

                    if (isMRDColumnList.Count > 0)
                    {
                        DRRow[mapDataColumns.isMRD] = row[isMRDColumnList[0]];
                    }
                    else
                    {
                        if (isMrdColumnAdded == false)
                            isMrdColumnAdded = true;

                        DRRow[mapDataColumns.isMRD] = false;
                    }

                    if (areaColumnList.Count > 1)
                    {
                        DRRow[mapDataColumns.AreaName] = row[areaColumnList[1]].ToString().Trim();
                    }

                    //4.1.2 set timeperiod values by index
                    if (timePeriodColumnList.Count > 0)
                    {
                        DRRow[mapDataColumns.TimePeriod] = row[timePeriodColumnList[0]];
                    }
                    else
                    {
                        DRRow[mapDataColumns.TimePeriod] = string.Empty;
                    }

                    //4.1.3 set value for other combination type column
                    foreach (KeyValuePair<string, string> columnDic in columnHistory)
                    {
                        DRRow[columnDic.Value] = row[columnDic.Key];
                        SeriesText += row[columnDic.Key] + ",";
                    }

                    // subgroup_Val
                    DRRow["s" + counter] = columnName;
                    DRRow[mapDataColumns.DataValue] = row[columnName];

                    SeriesText += columnName;
                    if (!seriesCombinations.Contains(SeriesText))
                    {
                        seriesCombinations.Add(SeriesText);
                    }
                    DRRow[mapDataColumns.SeriesNid] = seriesCombinations.IndexOf(SeriesText) + 1;

                    RetVal.Rows.Add(DRRow);

                    RetVal.AcceptChanges();
                }
            }

        }
        catch (Exception ex)
        {
            Global.CreateExceptionString(ex, null);

            throw;
        }
        finally
        {
            if (RetVal == null)
            { RetVal = dtSessionData; }
        }
        return RetVal;
    }
コード例 #2
0
ファイル: MapCallback.cs プロジェクト: SDRC-India/sdrcdevinfo
    private DataTable ResetDTColumns(DI_MapDataColumns mapDataColumns, DataTable dtSessionData, bool isMyData, ref bool isMrdColumnAdded)
    {
        DataTable RetVal = null;
        string dataValue = string.Empty;
        string IUSNId = string.Empty;
        bool isNumericColumnAdded = false;
        DataTable distinctSessionTable = null;
        isMrdColumnAdded = false;

        try
        {
            //1. if my data case then transform myData format to MapData
            if (isMyData && !dtSessionData.Columns.Contains(mapDataColumns.SeriesNid))
            {
                dtSessionData = this.TransformTableMyDataCase(mapDataColumns, dtSessionData, ref isMrdColumnAdded);
            }

            //2. set table name
            dtSessionData.TableName = "dvTable";

            //3. Add data_value column as NumericData with datatype decimal. This will handle texual values
            isNumericColumnAdded = this.CheckNCreateColumn(dtSessionData, mapDataColumns.NumericData, typeof(decimal));

            if (isNumericColumnAdded)
            {
                //2. add new column as numeric data
                for (int row = 0; row < dtSessionData.Rows.Count; row++)
                {
                    dataValue = Convert.ToString(dtSessionData.Rows[row][mapDataColumns.DataValue]);
                    if (!Global.isNumeric(dataValue, System.Globalization.NumberStyles.Any))
                    {
                        //set numeric values for distinct textual data values (Yes, No, Don't Know)
                        distinctSessionTable = dtSessionData.DefaultView.ToTable(true, mapDataColumns.DataValue);
                        distinctSessionTable.Columns.Add(mapDataColumns.NumericData, typeof(decimal));
                        for (int i = 0; i < distinctSessionTable.Rows.Count; i++)
                        {
                            distinctSessionTable.Rows[i][mapDataColumns.NumericData] = i + 1;
                        }

                        //remove then add again
                        dtSessionData.Columns.Remove(mapDataColumns.NumericData);
                        dtSessionData = this.AddRecordFromTableWithoutLoop(dtSessionData, distinctSessionTable, mapDataColumns.DataValue, mapDataColumns.DataValue + "," + mapDataColumns.NumericData);
                        break;
                    }
                    else
                    {
                        dtSessionData.Rows[row][mapDataColumns.NumericData] = dtSessionData.Rows[row][mapDataColumns.DataValue];
                    }
                }
            }

            RetVal = dtSessionData;
        }
        catch (Exception ex)
        {
            Global.CreateExceptionString(ex, null);

            throw;
        }
        return RetVal;
    }
コード例 #3
0
ファイル: MapCallback.cs プロジェクト: SDRC-India/sdrcdevinfo
    private SeriesData GetSeriesInfo(DI_MapDataColumns mapDataColumns, DataTable SeriesDataTable, bool isMyData, string dbNid, string LanguageCode)
    {
        SeriesData RetVal = null;
        Hashtable Indicators = new Hashtable();
        DataTable dtDistinctIUSs = null;
        DataTable dtDistinctIndicatorNIds = null;
        Hashtable IUSs = null;
        SeriesInfo seriesInfo;
        List<string> distinctIUSNIds = new List<string>();
        List<string> columnsToSkipFilter = new List<string>();
        List<string> distinctColumns = new List<string>();
        string SeriesName = string.Empty;

        try
        {
            if (SeriesDataTable.Rows.Count > 0)
            {
                seriesInfo = new SeriesInfo();
                RetVal = new SeriesData();
                if (!isMyData)
                {
                    //get theme name IndicatorUnitSubgroup from Database

                    _DBCon = Global.GetDbConnection(int.Parse(dbNid));
                    dtDistinctIndicatorNIds = SeriesDataTable.DefaultView.ToTable(true, mapDataColumns.SeriesNid);
                    dtDistinctIUSs = SeriesDataTable.DefaultView.ToTable(true, mapDataColumns.SeriesNid);
                    this.SetTimeLogIntoFile("Start getting IUSs Nmaes from Procedure sp_getIUSNames_-> " + DateTime.Now.ToLongTimeString());
                    IUSs = getIUSNames(dtDistinctIUSs, LanguageCode);
                    this.SetTimeLogIntoFile("Ends getting IUSs Nmaes from Procedure sp_getIUSNames_-> " + DateTime.Now.ToLongTimeString());
                    foreach (object key in IUSs.Keys)
                    {
                        seriesInfo = new SeriesInfo();
                        seriesInfo.SeriesID = key.ToString();
                        seriesInfo.SeriesName = IUSs[key].ToString();
                        RetVal.Add(seriesInfo);
                    }
                }
                else
                {
                    columnsToSkipFilter.Add(mapDataColumns.AreaID);
                    columnsToSkipFilter.Add(mapDataColumns.AreaName);
                    columnsToSkipFilter.Add(mapDataColumns.DataValue);
                    columnsToSkipFilter.Add(mapDataColumns.NumericData);
                    columnsToSkipFilter.Add(mapDataColumns.TimePeriod);
                    columnsToSkipFilter.Add(mapDataColumns.isMRD);

                    //set row filter
                    foreach (DataColumn column in SeriesDataTable.Columns)
                    {
                        if (!columnsToSkipFilter.Contains(column.ColumnName))
                        {
                            distinctColumns.Add(column.ColumnName);
                        }
                    }

                    dtDistinctIndicatorNIds = SeriesDataTable.DefaultView.ToTable(true, distinctColumns.ToArray());
                    foreach (DataRow row in dtDistinctIndicatorNIds.Rows)
                    {
                        seriesInfo = new SeriesInfo();
                        SeriesName = string.Empty;
                        seriesInfo.SeriesID = Convert.ToString(row[mapDataColumns.SeriesNid]);
                        foreach (string columnName in distinctColumns)
                        {
                            if (columnName != mapDataColumns.SeriesNid)
                            {
                                SeriesName += Convert.ToString(row[columnName]) + ", ";
                            }
                        }

                        seriesInfo.SeriesName = SeriesName.TrimEnd(", ".ToCharArray());
                        RetVal.Add(seriesInfo);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Global.CreateExceptionString(ex, null);

            throw;
        }

        return RetVal;
    }
コード例 #4
0
ファイル: MapCallback.cs プロジェクト: SDRC-India/sdrcdevinfo
    private SourceData GetSourceInfo(DI_MapDataColumns mapDataColumns, DataTable sessionData, bool isMyData, string dbNid, string LanguageCode)
    {
        SourceData RetVal = null;
        DataTable SourceTable = null;
        SourceInfo sourceInfo;
        try
        {
            if (sessionData.Rows.Count > 0)
            {
                sourceInfo = new SourceInfo();
                RetVal = new SourceData();

                //get theme name IndicatorUnitSubgroup from Database
                _DBCon = Global.GetDbConnection(int.Parse(dbNid));
                //Step 2 Get IUS and Source information
                //Step 2.1. Get Source Information from Database
                List<DbParameter> DbParams = null;
                DbParameter sourceParam1 = _DBCon.CreateDBParameter();
                sourceParam1.ParameterName = "SourceNIds";
                sourceParam1.DbType = DbType.String;
                sourceParam1.Value = this.AddQuotesInCommaSeperated(this.GetCSV(sessionData, mapDataColumns.SourceNid), false);

                DbParams = new List<DbParameter>();
                DbParams.Add(sourceParam1);
                SourceTable = _DBCon.ExecuteDataTable("sp_get_sources_from_nids_" + LanguageCode, CommandType.StoredProcedure, DbParams).DefaultView.ToTable(true, mapDataColumns.SourceNid, mapDataColumns.SourceName);

                foreach (DataRow row in SourceTable.Rows)
                {
                    sourceInfo = new SourceInfo();
                    sourceInfo.SourceNId = row[mapDataColumns.SourceNid].ToString();
                    sourceInfo.SourceName = row[mapDataColumns.SourceName].ToString();
                    RetVal.Add(sourceInfo);
                }

            }
        }
        catch (Exception ex)
        {
            Global.CreateExceptionString(ex, null);

            throw;
        }

        return RetVal;
    }
コード例 #5
0
ファイル: MapCallback.cs プロジェクト: SDRC-India/sdrcdevinfo
    private void CheckNCreateIsMRDColumn(DI_MapDataColumns mapDataColumns, DataTable dtSessionData)
    {
        bool isNewColumnCreated = false;
        try
        {
            isNewColumnCreated = this.CheckNCreateColumn(dtSessionData, mapDataColumns.isMRD, typeof(bool));

            if (isNewColumnCreated)
            {
                //to do get MRD

            }
        }
        catch (Exception ex)
        {
            Global.CreateExceptionString(ex, null);

        }
    }