private void GenerateSlicenameAndRowColHeaders(string objectName, XmlNode thisNode)
{
//Creating row col headers if any present on R side object
string[] objcolheaders = null;
string[] objrowheaders = null;
string objslicetitlecommand = string.Empty;
string objslicetitle = string.Empty;
//finding slice name, is exists
if (objectName.Contains("$datatable")) // only for return structures those contain $datatable (BSky stat results )
{
objslicetitlecommand = objectName.Replace("$datatable", "$cartlevel");
if (!this._RServer.Evaluate("is.null(" + objslicetitlecommand + ")").AsLogical()[0])
objslicetitle = this._RServer.Evaluate(objslicetitlecommand).AsCharacter()[0];
XmlElement sliceTitletag = thisNode.OwnerDocument.CreateElement("slicename");
sliceTitletag.InnerText = objslicetitle.Replace("<", "<").Replace(">", ">").Replace("<=", "≤").Replace(">=", "≥");
thisNode.AppendChild(sliceTitletag);
}
if (!this._RServer.Evaluate("is.null(colnames(" + objectName + "))").AsLogical()[0])
{
CharacterVector cv = this._RServer.Evaluate("colnames(" + objectName + ")").AsCharacter();
int siz = cv.Count();
objcolheaders = new string[siz];
for (int ic = 0; ic < siz; ic++)
{
objcolheaders[ic] = cv[ic];
}
}
if (!this._RServer.Evaluate("is.null(rownames(" + objectName + "))").AsLogical()[0])
{
CharacterVector cv = this._RServer.Evaluate("rownames(" + objectName + ")").AsCharacter();
int siz = cv.Count();
objrowheaders = new string[siz];
for (int ic = 0; ic < siz; ic++)
{
objrowheaders[ic] = cv[ic];
}
}
//01May2014 table header
XmlElement strtableheader = thisNode.OwnerDocument.CreateElement("tableheader");
if (tableheader != null && tableheader.Length > 0)
strtableheader.InnerText = tableheader;//Table header assigned
thisNode.AppendChild(strtableheader);
XmlElement objcolnames = thisNode.OwnerDocument.CreateElement("colheaders");
if (objcolheaders != null)
{
string innertxt = string.Join(",", objcolheaders);//Array to comma separated string
objcolnames.InnerText = innertxt.Replace("<", "<").Replace(">", ">").Replace("<=", "≤").Replace(">=", "≥");
}
XmlElement objrownames = thisNode.OwnerDocument.CreateElement("rowheaders");
if (objrowheaders != null)
{
string innertxt = string.Join(",", objrowheaders);//Array to comma separated string
objrownames.InnerText = innertxt.Replace("<", "<").Replace(">", ">").Replace("<=", "≤").Replace(">=", "≥");
}
thisNode.AppendChild(objcolnames);
thisNode.AppendChild(objrownames);
}