private bool ExecuteBSkyLoadRefreshDataframe(string stmt)//13Feb2014
{
CommandRequest cmd = new CommandRequest();
int start = stmt.IndexOf('(');
int end = stmt.IndexOf(')');
string parameters = stmt.Substring(start + 1, end - start - 1);
//parameters can be 1 or 2 (if 2 params, then one is bool)
// IMPORTANT :: Assumed that max parameters are 2. One is optional bool parameter.
string[] eachparam = parameters.Split(',');
string dataframename = string.Empty;
string boolparam = string.Empty;
if (eachparam.Length==2)
{
//either of the two is dataframe name
if (eachparam[1].Contains("load.dataframe") || eachparam[1].Contains("TRUE") || eachparam[1].Contains("FALSE"))
{
dataframename = eachparam[0];
boolparam = eachparam[1];
}
else // if bool is passed as first parameter and dataframe name as second param.
{
dataframename = eachparam[1];
boolparam = eachparam[0];
}
}
else if (eachparam.Length == 1)//only one madatory param is passed which is dataframe name
{
dataframename = eachparam[0];
boolparam = "TRUE";
}
/////get dataframe name
if (dataframename.Contains("="))//dframe="Dataset1"
{
dataframename = dataframename.Substring(dataframename.IndexOf("=") + 1);
}
dataframename = dataframename.Trim();
//09Jun2015 if dataframename is not passed that means there is no need to load/refresh dataframe
if (dataframename.Length < 1)
{
return true;
}
///get bool parama value
if (boolparam.Contains("="))//dframe="Dataset1"
{
boolparam = boolparam.Substring(boolparam.IndexOf("=") + 1);
}
boolparam = boolparam.Trim();
if (boolparam.Contains("FALSE"))//do not refresh dataframe
{
return true;
}
cmd.CommandSyntax = "exists('" + dataframename + "')";//check if that dataset exists in memory.
object o1 = analytics.ExecuteR(cmd, true, false);
if (o1.ToString().ToLower().Equals("true")) // if found, check if data.frame type. then load it
{
cmd.CommandSyntax = "is.data.frame(" + dataframename + ")";//check if its 'data.frame' type.
object o2 = analytics.ExecuteR(cmd, true, false);
if (o2.ToString().ToLower().Equals("true")) // if data.frame type
{
FileOpenCommand foc = new FileOpenCommand();
return foc.OpenDataframe(dataframename);
}
else
{
return false;
}
}
else
{
return false;
}
}