public static Tuple<string, string> SplitRecordsetAndFieldNames(IPath path)
{
var rsName = string.Empty;
var fieldName = path.ActualPath.Replace(".", "");
var indexOf = path.ActualPath.LastIndexOf("()", StringComparison.InvariantCultureIgnoreCase);
if(indexOf != -1)
{
int length = path.ActualPath.Length;
if(indexOf + 2 == length) // This means we have a primitive array as property
{
var upperRecsetName = path.ActualPath.LastIndexOf(".", StringComparison.InvariantCultureIgnoreCase);
if(upperRecsetName == -1)
{
rsName = path.ActualPath.Substring(0, indexOf + 2).Replace("()", "").Replace(".", "_");
}
else
{
rsName = path.ActualPath.Substring(0, upperRecsetName).Replace("()", "").Replace(".", "_");
fieldName = path.ActualPath.Substring(upperRecsetName).Replace(".", "").Replace("()", "");
}
}
else
{
rsName = path.ActualPath.Substring(0, indexOf + 2).Replace("()", "").Replace(".", "_");
fieldName = path.ActualPath.Substring(indexOf + 2).Replace(".", "");
}
}
return new Tuple<string, string>(rsName, fieldName);
}