public IList<string> FormatDsfActivityField(string activityField)
{
//2013.06.10: Ashley Lewis for bug 9306 - handle the case of miss-matched region braces
IList<string> result = new List<string>();
var regions = DataListCleaningUtils.SplitIntoRegionsForFindMissing(activityField);
foreach(var region in regions)
{
// Sashen: 09-10-2012 : Using the new parser
var intellisenseParser = new SyntaxTreeBuilder();
Node[] nodes = intellisenseParser.Build(region);
// No point in continuing ;)
if(nodes == null)
{
return result;
}
if(intellisenseParser.EventLog.HasEventLogs)
{
IDev2StudioDataLanguageParser languageParser = DataListFactory.CreateStudioLanguageParser();
try
{
result = languageParser.ParseForActivityDataItems(region);
}
catch(Dev2DataLanguageParseError)
{
return new List<string>();
}
catch(NullReferenceException)
{
return new List<string>();
}
}
var allNodes = new List<Node>();
if(nodes.Any() && !(intellisenseParser.EventLog.HasEventLogs))
{
nodes[0].CollectNodes(allNodes);
// ReSharper disable once ForCanBeConvertedToForeach
for(int i = 0; i < allNodes.Count; i++)
{
if(allNodes[i] is DatalistRecordSetNode)
{
var refNode = allNodes[i] as DatalistRecordSetNode;
string nodeName = refNode.GetRepresentationForEvaluation();
nodeName = nodeName.Substring(2, nodeName.Length - 4);
result.Add(nodeName);
}
else if(allNodes[i] is DatalistReferenceNode)
{
var refNode = allNodes[i] as DatalistReferenceNode;
string nodeName = refNode.GetRepresentationForEvaluation();
nodeName = nodeName.Substring(2, nodeName.Length - 4);
result.Add(nodeName);
}
}
}
}
return result;
}