private void ExecuteSinkBSkyFormatCommand(string stmt, ref int bskyfrmtobjcount, CommandOutput lst)
{
string originalCommand = stmt;
//CommandOutput lst = new CommandOutput(); ////one analysis////////
lst.IsFromSyntaxEditor = true;//lst belongs to Syn Editor
if (saveoutput.IsChecked == true)//10Jan2013
lst.SelectedForDump = true;
object o;
CommandRequest cmd = new CommandRequest();
/// find argument passed in BSkyFormat(argu) and var name ////
/// eg.. BSkyFormat(osmt <-one.smt.t.test(....) )
/// subcomm will be : osmt<-one.smt.t.test(....)
/// varname will be : osmt
string subcomm = string.Empty, varname = string.Empty, BSkyLeftVar = string.Empty, headername = string.Empty;
SplitBSkyFormat(stmt, out subcomm, out varname, out BSkyLeftVar);
if (BSkyLeftVar.Trim().Length > 0) // if left var exists
{
BSkyLeftVar = BSkyLeftVar + " <- "; // so that BSkyLeftVar <- BSkyFormat(...) )
}
////now execute subcomm first then pass varname in BSkyFormat(varname)
if (varname.Length > 0)//will be > 0 only for BSkyFormat(osmt<-one.smt.tt(...) ) OR for BSkyFormat(df)
{
headername = varname.Trim();
cmd.CommandSyntax = subcomm;// command: osmt<-one.smt.tt(...)
if (!varname.Equals(subcomm))
o = analytics.ExecuteR(cmd, false, false);//executing sub-command; osmt<-one.smt.tt(...)
}
else //for BSkyFormat(one.smt.tt(...) )
{
/////25Feb2013 for writing errors in OutputWindow////
string sinkfilefullpathname = Path.Combine(System.IO.Path.GetTempPath().Replace("\\", "/"), confService.GetConfigValueForKey("tempsink"));//23nov2012
// load default value if no path is set or invalid path is set
if (sinkfilefullpathname.Trim().Length == 0 || !IsValidFullPathFilename(sinkfilefullpathname, false))
{
MessageBox.Show(this, "Key 'tempsink' not found in config file. Aborting...");
return;
}
////////////////////////////////////////////////////////////////////////
//13Aug2012 headername = findHeaderName(subcomm); // data.frame / matrix / array header
varname = "bskytempvarname";
//Find if bskytempvarname already exists. If it exists then remove from memory
cmd.CommandSyntax = "exists('" + varname + "')";//removing var so that old obj from last session is not present.
o = analytics.ExecuteR(cmd, true, false);
if (o.ToString().ToLower().Equals("true")) // if found, remove it
{
cmd.CommandSyntax = "rm('" + varname + "')";//removing var so that old obj from last session is not present.
o = analytics.ExecuteR(cmd, false, false);
}
//Now run command
cmd.CommandSyntax = varname + " <- " + subcomm;// command: varname <- one.smt.tt(...)
o = analytics.ExecuteR(cmd, false, false);//executing sub-command
////////////////////////////////////////////////////////////////////////
}
//if var does not exists then there could be error in command execution.
cmd.CommandSyntax = "exists('" + varname + "')";
o = analytics.ExecuteR(cmd, true, false);
if (o.ToString().ToLower().Equals("false"))//possibly some error occured
{
string ewmessage = "Object cannot be formatted using BSKyFormat. Object: " + varname + ", does not exists.";
SendErrorToOutput(originalCommand + "\n" + ewmessage, ow); //03Jul2013
return;
}
//Added extra parameter with TRUE value to fix problem related to uadatasets.sk$holdBSkyFormatObject getting back objeects.
// when cmd executes in R, few line below. "analytics.ExecuteR(c..."
stmt = "BSkyFormat(" + varname + ", bSkyFormatAppRequest = TRUE)";
stmt = BSkyLeftVar + stmt;// command is BSkyLeftVar <- BSkyFormat(varname)
/// BSkyLeftVar <- can be blank if user has no assigned leftvar to BSkyFormat
string objclass = "", objectname = "";
if (stmt.Contains("BSkyFormat("))// Array, Matrix, Data Frame or BSkyObject(ie..Analytic commands)
{
bskyfrmtobjcount++;
stmt = "bskyfrmtobj <- " + stmt;// +"$tables[[1]][[1]]";// +"$additional";//return value additional
objectname = "bskyfrmtobj";// +bskyfrmtobjcount.ToString();
cmd.CommandSyntax = stmt;// command
//Following statement brings back the objects of uadatasets.sk$holdBSkyFormatObject
o = analytics.ExecuteR(cmd, false, false);//executing syntax editor commands
#region Generate UI for data.frame/ matrix / array and analytics commands
if (BSkyLeftVar.Trim().Length < 1) // if left var does not exists then generate UI tables
{
lst.NameOfAnalysis = originalCommand.Contains("BSkyFormat") ? "BSkyFormat-Command" : originalCommand;
//cmd.CommandSyntax = "class(bskyfrmtobj" + bskyfrmtobjcount.ToString() + ")";
cmd.CommandSyntax = "class(bskyfrmtobj)";
objclass = (string)analytics.ExecuteR(cmd, true, false);
if (objclass.ToString().ToLower().Equals("data.frame") || objclass.ToString().ToLower().Equals("matrix") || objclass.ToString().ToLower().Equals("array"))
{
//lst.NameOfAnalysis = originalCommand;//for tree Parent node 07Aug2012
if (headername != null && headername.Trim().Length < 1) //06May2014
{
headername = subcomm;
}
BSkyFormatDFMtxArr(lst, objectname, headername, null);
}
else if (objclass.ToString().Equals("list"))//BSkyObject returns "list"
{
//if (ow != null)//22May2014
SendToOutput("", ref lst, ow);
///tetsing whole else if
objectname = "bskyfrmtobj";// +bskyfrmtobjcount.ToString();
cmd.CommandSyntax = "is.null(" + objectname + "$BSkySplit)";//$BSkySplit or $split in return structure
bool isNonBSkyList1 = false;
object isNonBSkyList1str = analytics.ExecuteR(cmd, true, false);
if (isNonBSkyList1str != null && isNonBSkyList1str.ToString().ToLower().Equals("true"))
{
isNonBSkyList1 = true;
}
cmd.CommandSyntax = "is.null(" + objectname + "$list2name)";//another type pf BSky list
bool isNonBSkyList2 = false;
object isNonBSkyList2str = analytics.ExecuteR(cmd, true, false);
if (isNonBSkyList2str != null && isNonBSkyList2str.ToString().ToLower().Equals("true"))
{
isNonBSkyList2 = true;
}
/////////////////
if (!isNonBSkyList1)
{
RefreshOutputORDataset(objectname, cmd, originalCommand, ow); //list like one sample etc..
}
else if (!isNonBSkyList2)
{
FormatBSkyList2(lst, objectname, headername, ow); //list that contains tables 2nd location onwards
}
}
else // invalid format
{
/// put it in right place
string ewmessage = "This Object cannot be formatted using BSKyFormat. BSkyFormat can be used on Array, Matrix, Data Frame and BSky List objects only";
SendErrorToOutput(originalCommand + "\n" + ewmessage, ow);//03Jul2013
}
}/// if leftvar is not assigned generate UI
#endregion
}
}