コード例 #1
0
        public CrcReportFolder Create(ReportingService2005Soap rService, string path)
        {
            var ret = new CrcReportFolder();

            ret.Path       = path;
            ret.FolderName = CrcReportDefinition.ReportNameFromPath(path);

            var lcRequest = new ListChildrenRequest(path, false);

            var lcResponse = rService.ListChildren(lcRequest);

            foreach (CatalogItem itemLoop in lcResponse.CatalogItems)
            {
                if (itemLoop.Type == ItemTypeEnum.Folder)
                {
                    var sf = Create(rService, itemLoop.Path);
                    if (sf.Reports.Count() > 0 || sf.SubFolders.Count() > 0)
                    {
                        ret.SubFolders.Add(sf);
                    }
                }
                else if (itemLoop.Type == ItemTypeEnum.Report)
                {
                    if (!itemLoop.Hidden)
                    {
                        var repItem = new CrcReportItem();
                        repItem.ReportPath  = itemLoop.Path;
                        repItem.DisplayName = itemLoop.Name;
                        repItem.Description = itemLoop.Description;
                        ret.Reports.Add(repItem);
                    }
                }
            }
            return(ret);
        }
コード例 #2
0
        public CrissCrossLib.Hierarchical.CrcReportFolder GetAllReportsHierarchicalNoCache(string username)
        {
            ReportingService2005Soap rService = m_ssrsSoapClientFactory.MakeSsrsSoapClient();
            var fac = new CrissCrossLib.Hierarchical.CrcReportFolderFactory();

            return(fac.Create(rService));
        }
コード例 #3
0
        public CrcReportFolder Create(ReportingService2005Soap rService, string path)
        {
            var ret = new CrcReportFolder();
            ret.Path = path;
            ret.FolderName = CrcReportDefinition.ReportNameFromPath(path);

            var lcRequest = new ListChildrenRequest(path, false);

            var lcResponse = rService.ListChildren(lcRequest);
            foreach (CatalogItem itemLoop in lcResponse.CatalogItems)
            {
                if (itemLoop.Type == ItemTypeEnum.Folder)
                {
                    var sf = Create(rService, itemLoop.Path);
                    if (sf.Reports.Count() > 0 || sf.SubFolders.Count() > 0)
                        ret.SubFolders.Add(sf);
                }
                else if (itemLoop.Type == ItemTypeEnum.Report)
                {
                    if (!itemLoop.Hidden)
                    {
                        var repItem = new CrcReportItem();
                        repItem.ReportPath = itemLoop.Path;
                        repItem.DisplayName = itemLoop.Name;
                        repItem.Description = itemLoop.Description;
                        ret.Reports.Add(repItem);
                    }
                }

            }
            return ret;
        }
コード例 #4
0
 public CrcSsrsSoapClientFactory MakeMockSoapClientFactory(ReportingService2005Soap serviceClient)
 {
     // mock the factory
     var soapClientFactory = MockRepository.GenerateMock<CrcSsrsSoapClientFactory>();
     soapClientFactory.Expect(s => s.MakeSsrsSoapClient()).Return(serviceClient);
     return soapClientFactory;
 }
コード例 #5
0
        public CrcSsrsSoapClientFactory MakeMockSoapClientFactory(ReportingService2005Soap serviceClient)
        {
            // mock the factory
            var soapClientFactory = MockRepository.GenerateMock <CrcSsrsSoapClientFactory>();

            soapClientFactory.Expect(s => s.MakeSsrsSoapClient()).Return(serviceClient);
            return(soapClientFactory);
        }
コード例 #6
0
        public void SetListChildrenExpectation(ReportingService2005Soap mockService, string path, CatalogItem[] returnItems)
        {
            var lcResponse = new ListChildrenResponse(null, returnItems);

            mockService.Expect(m => m.ListChildren(
                                   Arg <ListChildrenRequest> .Matches(
                                       lcr => lcr.Item == path)
                                   )).Return(lcResponse);
        }
コード例 #7
0
        public CatalogItem[] GetAllReportsNoCache(string username)
        {
            ReportingService2005Soap rService = m_ssrsSoapClientFactory.MakeSsrsSoapClient();

            var lcRequest = new ListChildrenRequest()
            {
                Item      = "/",
                Recursive = true
            };
            //CatalogItem[] catalogItems = null;
            var lcResponse = rService.ListChildren(lcRequest);

            var reportsOnly = lcResponse.CatalogItems.Where(c => c.Type == ItemTypeEnum.Report).ToArray();

            //var foldersOnly = lcResponse.CatalogItems.Where(c => c.Type == ItemTypeEnum.Folder).ToArray();
            return(reportsOnly);
        }
コード例 #8
0
        public CrcReportDefinition GetReportDefn(string reportPath, string username)
        {
            // first, use the username to get description
            var reportCat = this.GetReportCatalogItem(reportPath, username);

            ReportingService2005Soap   rService = m_ssrsSoapClientFactory.MakeSsrsSoapClient();
            GetReportParametersRequest req      = new GetReportParametersRequest()
            {
                Report       = reportPath,
                ForRendering = true
            };
            var resp = rService.GetReportParameters(req);

            var factory = new CrcReportDefinitionFactory();

            return(factory.Create(reportPath, reportCat, resp.Parameters, m_extraConfiguration));
        }
コード例 #9
0
        /// <summary>
        /// Applies the specified choices to the already-existing report definition
        /// and updates the dependant parameters
        /// </summary>
        public void RefreshDependantParameters(CrcReportDefinition repDefn, CrcParameterChoiceCollection newChoices)
        {
            var mapResult = repDefn.MapParameterChoices(newChoices);

            if (!mapResult.MappingValid)
            {
                // todo - friendlier message back to ui
                throw new ApplicationException(string.Format("invalid params - could not map supplied values to definitions for report {0}. complaints: {1}",
                                                             repDefn.DisplayName, string.Join(", ", mapResult.Complaints.ToArray())));
            }
            var conv = new CrcParameterConverter();
            List <ParameterValue> valueList = conv.GetParametersValuesForSsrsWebService(repDefn);
            // get new params from web service
            ReportingService2005Soap rService = m_ssrsSoapClientFactory.MakeSsrsSoapClient();

            logger.DebugFormat("RefreshDependantParameters: rep {0} calling WS to get new validvalid. Passing {1} values", repDefn.DisplayName, valueList.Count());

            var grpRequest  = new GetReportParametersRequest(repDefn.ReportPath, null, true, valueList.ToArray(), null);
            var grpResponse = rService.GetReportParameters(grpRequest);

            // work out which params to refresh
            List <string> paramsToRefresh = new List <string>();

            foreach (string updatedParam in newChoices.ParameterChoiceList.Select(p => p.Name))
            {
                var paramDefn = repDefn.ParameterDefinitions.First(p => p.Name == updatedParam);
                paramsToRefresh = paramsToRefresh.Union(paramDefn.DependantParameterNames).ToList();
            }
            logger.DebugFormat("RefreshDependantParameters: rep {0} based on choices, have {1} parameters that need refreshing", repDefn.DisplayName, paramsToRefresh.Count());

            var refresher = new CrcParameterRefresher();

            foreach (string paramLoop in paramsToRefresh)
            {
                var paramDefn          = repDefn.ParameterDefinitions.First(p => p.Name == paramLoop);
                var latestParamDetails = grpResponse.Parameters.FirstOrDefault(p => p.Name == paramLoop);
                if (latestParamDetails == null)
                {
                    throw new ApplicationException(String.Format("Was expecting web service to return new details for parameter {0} but none found",
                                                                 paramLoop));
                }
                refresher.RefreshParameter(paramDefn, latestParamDetails);
            }
        }
コード例 #10
0
 public CrcReportFolder Create(ReportingService2005Soap rService)
 {
     return(Create(rService, @"/"));
 }
コード例 #11
0
 public CrcReportFolder Create(ReportingService2005Soap rService)
 {
     return Create(rService, @"/");
 }
コード例 #12
0
 public void SetListChildrenExpectation(ReportingService2005Soap mockService, string path, CatalogItem[] returnItems)
 {
     var lcResponse = new ListChildrenResponse(null, returnItems);
     mockService.Expect(m => m.ListChildren(
         Arg<ListChildrenRequest>.Matches(
         lcr => lcr.Item == path)
         )).Return(lcResponse);
 }