BlueSky.SyntaxEditorWindow.ExecuteSinkBSkyFormatCommand C# (CSharp) Метод

ExecuteSinkBSkyFormatCommand() приватный Метод

private ExecuteSinkBSkyFormatCommand ( string stmt, int &bskyfrmtobjcount, CommandOutput lst ) : void
stmt string
bskyfrmtobjcount int
lst CommandOutput
Результат void
        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
            }

        }
SyntaxEditorWindow