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;
}