internal void Load(ObjectCall call)
        {
            var sb = new StringBuilder(SiteObjectsSql);

            if ((call.TypeCode == "OF" || call.TypeCode == "O") && !string.IsNullOrEmpty(Info.PageId))
            {
                sb.Append(" and lower(obj.object_name) = N'");
                sb.Append(call.ObjectName);
                sb.Append("'");
                sb.Append(" and (obj.page_id = ");
                sb.Append(Info.PageId);
                sb.Append(" or obj.page_id is null and lower(pt.template_name) = N'");
                sb.Append(call.TemplateName);
                sb.Append("'");
                sb.Append(" and obj.object_name not in (select object_name from object where page_id = ");
                sb.Append(Info.PageId);
                sb.Append("))");
            }
            else
            {
                sb.Append(" and lower(obj.object_name) = N'");
                sb.Append(call.ObjectName);
                sb.Append("'");
                sb.Append(" and obj.page_id is null");
                sb.Append(" and lower(pt.template_name) = N'");
                sb.Append(call.TemplateName);
                sb.Append("'");
            }

            Info.Controller.Cnn.GetData(sb.ToString(), Data);
        }
        public static string GetAdditionalCallFilter(ObjectCall call)
        {
            switch (call.TypeCode)
            {
            case "TOF":
            case "TO":
                return(" and [page_id] is null ");

            case "OF":
            case "O":
                return(" and [page_id] is not null ");
            }

            return(string.Empty);
        }
        internal bool HasAlreadyLoaded(ObjectCall call)
        {
            var dvLoadedObjects = new DataView(Data);
            var dvObjects       = new DataView(Info.Objects);
            var filter          = GetCallFilter(call);

            dvObjects.RowFilter       = filter;
            dvLoadedObjects.RowFilter = filter;
            if (dvObjects.Count == 2)
            {
                dvLoadedObjects.RowFilter = dvLoadedObjects.RowFilter + GetAdditionalCallFilter(call);
            }

            var result = dvLoadedObjects.Count;

            dvObjects.Dispose();
            dvLoadedObjects.Dispose();
            return(result > 0);
        }
        public static string GetCallFilter(ObjectCall call)
        {
            var sb = new StringBuilder();

            sb.AppendFormat("[template_name] = '{0}' and [object_name] = '{1}' ", call.TemplateName, call.ObjectName);

            if (call.TypeCode == "TOF" || call.TypeCode == "OF")
            {
                sb.AppendFormat(" and [format_name] = '{0}' ", call.FormatName);
            }
            else if (call.TypeCode == "TO" || call.TypeCode == "O")
            {
                sb.Append(" and [default_format_id] = [current_format_id] ");
            }
            else
            {
                throw new ArgumentException("Unknown call type - " + call.TypeCode);
            }

            return(sb.ToString());
        }