Exemplo n.º 1
0
        /// <summary>
        /// Preload reports that are used in access rules.
        /// </summary>
        private static void PreloadAccessRuleReports( )
        {
            var authReports = Entity.GetInstancesOfType <AccessRule>(true, "accessRuleReport.isOfType.id")
                              .Select(auth => auth.AccessRuleReport)
                              .Where(r => r != null)
                              .Select(r => r.Id)
                              .Distinct( );

            foreach (long reportId in authReports)
            {
                try
                {
                    ReportHelpers.PreloadQuery(new EntityRef(reportId));
                }
                catch (Exception ex)
                {
                    EventLog.Application.WriteError("Access rule report {0} failed to preload\n{1}", reportId, ex);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converts a report into a structured query object.
        /// </summary>
        /// <param name="report">The report to convert</param>
        /// <param name="settings">Conversion settings.</param>
        /// <returns>The structured query.</returns>
        public static StructuredQuery ConvertReport(Report report, ReportToQueryConverterSettings settings)
        {
            if (report == null)
            {
                throw new ArgumentNullException();
            }
            if (settings == null)
            {
                settings = ReportToQueryConverterSettings.Default;
            }

            Report reportToLoad = report;

            if (report.RootNode == null)
            {
                throw new ArgumentException(string.Format("Invalid report '{0}' to load the structured query", report.Id));
            }

            // Preload the entities
            if (!settings.SuppressPreload)
            {
                ReportHelpers.PreloadQuery(reportToLoad.Id);
            }

            // Create context that contains information for conversion
            FromEntityContext fromEntityContext = new FromEntityContext {
                Report = reportToLoad, Settings = settings
            };

            // Convet the report entity
            StructuredQuery sq = BuildStructuredQuery(fromEntityContext, settings);

            // Attach the report to the structured query (why??)
            sq.Report = report;

            return(sq);
        }