BSky.Statistics.R.UAPackageAPI.RefreshDataset_old C# (CSharp) Method

RefreshDataset_old() public method

public RefreshDataset_old ( ServerDataSource dataSource ) : UAReturn
dataSource BSky.Statistics.Common.ServerDataSource
return BSky.Statistics.Common.UAReturn
        public UAReturn RefreshDataset_old(ServerDataSource dataSource)//25Mar2013 refresh on new row added by compute
        {
            UAReturn result = new UAReturn() { Success = false };
            if (true)//dispatcher.GetErrorText().Contains(BSky.Statistics.R.RService.RCommandReturn.Success))
            {
                logService.WriteToLogLevel("GetColnames Start:", LogLevelEnum.Info);
                //Get matrix columns
                string subCommand = RCommandStrings.GetDataFrameColumnNames(dataSource);

                object colnames = dispatcher.EvaluateToObject(subCommand, false);
                string[] columnNames = null;//var columnNames = new string[] { "aaa", "bbb" };
                Type retType = colnames.GetType();
                if (retType.Name == "String[]")//for multicols
                {
                    columnNames = (String[])colnames;
                }
                else if (retType.Name == "String")//for single col
                {
                    columnNames = new string[1];
                    columnNames[0] = (String)colnames;
                }
                else
                {
                    return new UAReturn() { Success = false };
                }

                logService.WriteToLogLevel("GetColnames End", LogLevelEnum.Info);

                logService.WriteToLogLevel("Get Max factor start", LogLevelEnum.Info);
                //maximum factors allowed
                object maxf = (getMaxFactors(dataSource));


                int mxf;//sym.AsInteger()[0];
                bool parseSuccess = int.TryParse(maxf.ToString(), out mxf);
                dataSource.MaxFactors = parseSuccess ? mxf : 40; //Hardcoded Default max factor count   //int.Parse(maxf.ToString());
                logService.WriteToLogLevel("Get Max factor end", LogLevelEnum.Info);

                dataSource.Variables.Clear();
                int rowcount = GetRowCount(dataSource);//31Dec2014
                int columnindex = 1;
                foreach (object s in columnNames)
                {
                    logService.WriteToLogLevel("Get Col Prop start : " + s.ToString(), LogLevelEnum.Info);
                    object resobj = GetColProp(dataSource, s.ToString()).SimpleTypeData;
                    object[] cprops = (object[])resobj;
                    logService.WriteToLogLevel("Get Col Prop end : " + s.ToString(), LogLevelEnum.Info);

                    logService.WriteToLogLevel("Set Col Prop start : " + s.ToString(), LogLevelEnum.Info);
                    DataSourceVariable var = new DataSourceVariable()
                    {
                        Name = s.ToString(),
                        Label = cprops[2].ToString(),
                        DataType = GetCovertedDataType(cprops[1].ToString()),
                        Measure = DataColumnMeasureEnum.Scale,
                        Width = 4,
                        Decimals = 0,
                        Columns = 8,
                        MissType = cprops[5].ToString(),
                        RowCount = rowcount //GetVectorLength(dataSource, s.ToString())
                        //factormapList = new List<FactorMap>()//17Apr2014
                    };
                    logService.WriteToLogLevel("Set Col Prop end : " + s.ToString(), LogLevelEnum.Info);

                    logService.WriteToLogLevel("Get-Set Col factors start : " + s.ToString(), LogLevelEnum.Info);
                    //uadatasets$lst$ added by Anil in following two
                    bool isfactors = (bool)dispatcher.EvaluateToObject(string.Format("is.factor({0}[,{1}])", dataSource.Name, columnindex), false);//is.factor(uadatasets$lst${0}[,{1}])
                    if (isfactors)
                    {    //(DataColumnMeasureEnum)Enum.Parse(typeof(DataColumnMeasureEnum), GetMeasure(dataSource, s.ToString()));
                        bool isOrdered = (bool)dispatcher.EvaluateToObject(string.Format("is.ordered({0}[,{1}])", dataSource.Name, columnindex), false);//is.ordered(uadatasets$lst${0}[,{1}])
                        if (isOrdered)
                            var.Measure = DataColumnMeasureEnum.Ordinal;
                        else
                            var.Measure = DataColumnMeasureEnum.Nominal; // default is set in above para which will be overwritten in this line if its factor type
                        //reading all levels/factors
                        object tempO = (object)GetFactorValues(dataSource, s.ToString()).SimpleTypeData;
                        if (tempO != null)
                        {
                            if (tempO.GetType().Name.Equals("String[]"))//tempO.GetType().IsArray)
                            {
                                string[] vals = tempO as string[];
                                var.Values.AddRange(vals);//adding all values to list
                            }
                            else if (tempO.GetType().Name.Equals("String"))
                            {
                                string vals = tempO as string;
                                var.Values.Add(vals);//adding all values to list
                            }
                            else
                            {
                                //some other unexpected type was returned in tempO.
                                //can print an error message here.
                                string[] charfactors = (tempO as SymbolicExpression).AsCharacter().ToArray();
                                var.Values.AddRange(charfactors);//adding all values to list
                            }
                        }
                    }
                    logService.WriteToLogLevel("Get-Set Col factors end : " + s.ToString(), LogLevelEnum.Info);

                    logService.WriteToLogLevel("Get-Set Col Missing start : " + s.ToString(), LogLevelEnum.Info);
                    if (!(var.MissType == "none"))
                    {
                        object tempObj = (object)GetMissingValues(dataSource, s.ToString()).SimpleTypeData;
                        if (tempObj != null)
                        {
                            double[] misval;
                            if (tempObj.GetType().Name.Equals("Double[]"))// (tempObj.GetType().IsArray)
                            {
                                misval = tempObj as double[];
                                foreach (double mv in misval)
                                    var.Missing.Add(mv.ToString());
                            }
                            else if (tempObj.GetType().Name.Equals("Double"))
                            {
                                double misvalue = (double)tempObj;
                                var.Missing.Add(misvalue.ToString());
                            }
                            else
                            {
                                //some other unexpected type was returned in tempO.
                                //can print an error message here.

                                var.Missing.Add("");//adding blank
                            }
                        }
                    }
                    else
                    {
                        string misval = "none";
                        var.Missing.Add(misval);
                    }
                    logService.WriteToLogLevel("Get-Set Col Missing end : " + s.ToString(), LogLevelEnum.Info);

                    logService.WriteToLogLevel("Get-Set others start : " + s.ToString(), LogLevelEnum.Info);
                    if (dataSource.Extension == "rdata")// if filetype is RDATA.
                    {
                        if (cprops[9].ToString() != "-2146826288")
                            var.Width = Int32.Parse(cprops[9].ToString());

                        if (cprops[10].ToString() != "-2146826288")
                            var.Decimals = Int32.Parse(cprops[10].ToString());

                        if (cprops[11].ToString() != "-2146826288")
                            var.Columns = UInt32.Parse(cprops[11].ToString());
                    }
                    try
                    {
                        ////////// Alignment  ////////////
                        if (cprops[6].ToString() == "-2146826288") cprops[6] = "Left";
                        DataColumnAlignmentEnum alignVal = (DataColumnAlignmentEnum)Enum.Parse(typeof(DataColumnAlignmentEnum), cprops[6].ToString());
                        if (Enum.IsDefined(typeof(DataColumnAlignmentEnum), alignVal))
                            var.Alignment = alignVal;
                        else
                            var.Alignment = DataColumnAlignmentEnum.Left;

                        var.Role = DataColumnRole.Input;// Role is not used, I guess, so 'if' is commented above
                    }
                    catch (ArgumentException)
                    {
                        //Console.WriteLine("Not a member of the enumeration.");
                        logService.WriteToLogLevel("Not a member of enum(Alignment) ", LogLevelEnum.Error);
                    }
                    logService.WriteToLogLevel("Get-Set others end : " + s.ToString(), LogLevelEnum.Info);

                    dataSource.Variables.Add(var);
                    columnindex++;
                    dataSource.RowCount = Math.Max(dataSource.RowCount, dataSource.Variables.Last().RowCount);
                }

                result.Datasource = dataSource;
                result.Success = true;

                this.DataSources.Add(dataSource);
            }
            return result;
        }
        
UAPackageAPI