public static string JsonSerialize(DataSourceDefinition dataSource)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            var output = serializer.Serialize(dataSource);

            return output;
        }
        public void SetUp()
        {
            var rs = GetReportingService();

            if (rs.GetItemType("/ReportFolder") == "Folder")
            {
                rs.DeleteItem("/ReportFolder");
            }

            rs.CreateFolder("ReportFolder", "/", null);

            ProductCatalogPath       = FileOnDisk.CreatePhysicalFile("ProductCatalog.rdl", "RsPackage.Testing.Resources.Product Catalog.rdl");
            EmployeeSalesSummaryPath = FileOnDisk.CreatePhysicalFile("Employee_Sales_Summary.rdl", "RsPackage.Testing.Resources.Employee_Sales_Summary.rdl");

            if (rs.GetItemType("/Data Sources") != "Folder")
            {
                rs.CreateFolder("Data Sources", "/", null);
            }

            if (rs.GetItemType("/Data Sources/AdventureWorks") != "DataSource")
            {
                var ds = new DataSourceDefinition()
                {
                    ConnectString = "Data Source=localhost;Initial Catalog=msdb;Integreted Security=SSPI",
                    Extension     = "SQL"
                };
                rs.CreateDataSource("AdventureWorks", "/Data Sources", false, ds, null);
            }
        }
        public bool TestConnectForDataSourceDefinition(RSDataSourceDefinition DataSourceDefinition, string UserName, string Password, out string ConnectError)
        {
            DataSourceDefinition dsDef = (DataSourceDefinition)Converter.Convert(DataSourceDefinition);
            bool outval = rs.TestConnectForDataSourceDefinition(dsDef, UserName, Password, out ConnectError);

            return(outval);
        }
Exemple #4
0
        /// <summary>
        /// Convert DataSource from old DataSourceDefinition to new DataSourceDefinition. It create temporaryDataSource definition and perform all operations
        /// on temporary DataSourcedefinition and return it.
        /// </summary>
        /// <param name="fromDataSourceDefinition"></param>
        /// <param name="toDataSourceDefinition"></param>
        /// <returns>Temporary DataSourceDefinition</returns>
        private DataSourceDefinition ConvertDataSource(DataSourceDefinition fromDataSourceDefinition, DataSourceDefinition toDataSourceDefinition)
        {
            Logger.Instance.WriteSupportToLog("convertDataSource():>>>> ", true);
            Logger.Instance.WriteSupportToLog(String.Format("convertDataSource(): converting table {0}", fromDataSourceDefinition.Name), true);

            GatewayResult result = null;

            string temporaryTableName = GetTemporaryTableName(fromDataSourceDefinition.Id);

            DataSourceDefinition temporaryDataSourceDefinition = (DataSourceDefinition)toDataSourceDefinition.Clone();

            temporaryDataSourceDefinition.Name = temporaryTableName;

            // In order to genearte temporary key name for the temporary dbh set magic key mask on the keys.
            for (int keyIndex = 0; keyIndex < temporaryDataSourceDefinition.Keys.Count; keyIndex++)
            {
                DBKey key = temporaryDataSourceDefinition.Keys[keyIndex];
                key.SetMask(KeyMasks.MagicKeyMask);
            }

            // Delete temporary table, if exists
            result = GatewayCommandsFactory.CreateFileDeleteCommand(temporaryTableName, temporaryDataSourceDefinition, ClientManager.Instance.LocalManager).Execute();
            if (!result.Success && result.ErrorCode != GatewayErrorCode.FileNotExist)
            {
                throw new DataSourceConversionFailedException(fromDataSourceDefinition.Name, result.ErrorDescription);
            }

            // Open source and temporary table
            temporaryDataSourceDefinition.SetMask(DbhMask.CheckExistMask);
            result = GatewayCommandsFactory.CreateFileOpenCommand(temporaryTableName, temporaryDataSourceDefinition, Access.Write, ClientManager.Instance.LocalManager).Execute();
            if (result.Success)
            {
                result = GatewayCommandsFactory.CreateFileOpenCommand(fromDataSourceDefinition.Name, fromDataSourceDefinition, Access.Read, ClientManager.Instance.LocalManager).Execute();
            }

            if (!result.Success)
            {
                throw new DataSourceConversionFailedException(fromDataSourceDefinition.Name, result.ErrorDescription);
            }

            //Convert values of source table and insert it into temporary table
            ConvertAndInsertValues(fromDataSourceDefinition, temporaryDataSourceDefinition);

            //Close source and temporary table
            result = GatewayCommandsFactory.CreateFileCloseCommand(temporaryDataSourceDefinition, ClientManager.Instance.LocalManager).Execute();
            if (result.Success)
            {
                GatewayCommandsFactory.CreateFileCloseCommand(fromDataSourceDefinition, ClientManager.Instance.LocalManager).Execute();
            }

            if (!result.Success)
            {
                throw new DataSourceConversionFailedException(fromDataSourceDefinition.Name, result.ErrorDescription);
            }

            Logger.Instance.WriteSupportToLog("convertDataSource():<<<< ", true);

            return(temporaryDataSourceDefinition);
        }
Exemple #5
0
 /// <summary>
 /// Returns RTDataSource according to its definition
 /// </summary>
 /// <param name="dataSourceDefinition"></param>
 /// <returns></returns>
 internal RTDataSource GetDataSource(DataSourceDefinition dataSourceDefinition)
 {
     if (openedDataSources.ContainsKey(dataSourceDefinition))
     {
         return(openedDataSources[dataSourceDefinition]);
     }
     return(null);
 }
Exemple #6
0
        /// <summary>
        /// Checks if correspondng table of data source is exist at backend
        /// </summary>
        /// <param name="dataSourceDefinition"></param>
        /// <returns>returns true if table exists</returns>
        private bool IsTableExist(DataSourceDefinition dataSourceDefinition)
        {
            GatewayCommandFileExist fileExistCommand = GatewayCommandsFactory.CreateFileExistCommand(dataSourceDefinition.Name, dataSourceDefinition,
                                                                                                     ClientManager.Instance.LocalManager);
            GatewayResult result = fileExistCommand.Execute();

            return(result.Success);
        }
 /// <summary>
 /// contructor
 /// </summary>
 /// <param name="dataViewOutputCommand"></param>
 public RemoteDataViewToDataSourceCommand(DataViewOutputCommand dataViewOutputCommand)
     : base(dataViewOutputCommand)
 {
     this.dataViewOutputCommand = dataViewOutputCommand;
     currTask     = (TaskBase)MGDataCollection.Instance.GetTaskByID(dataViewOutputCommand.TaskTag);
     ancestorTask = GuiExpressionEvaluator.GetContextTask((TaskBase)currTask, dataViewOutputCommand.Generation);
     destinationDataSourceDefinition = ClientManager.Instance.LocalManager.ApplicationDefinitions.DataSourceDefinitionManager.GetDataSourceDefinition(ancestorTask.getCtlIdx(), dataViewOutputCommand.DestinationDataSourceNumber);
 }
Exemple #8
0
        DataSourceDefinition GetDataSourceDefinition(byte[] dataSourceContent, string name, string guid)
        {
            var _rptDefinition    = new DataSourceDefinition();
            var _datasourceStream = this.GetFileToStream(dataSourceContent);
            var _umpDefinition    = this.DeseralizeObj <DataSourceDefinition>(_datasourceStream);

            _rptDefinition = _umpDefinition;
            return(_rptDefinition);
        }
Exemple #9
0
        /// <summary>
        /// CTOR - create and activate the parsing process
        /// </summary>
        /// <param name="dataSourceDefinition"></param>
        /// <param name="xmlData"></param>
        public DataSourceDefinitionSaxHandler(DataSourceDefinition dataSourceDefinition, DataSourceBuilder dataSourceBuilder,
                                              byte[] xmlData)
        {
            this.dataSourceDefinition = dataSourceDefinition;
            this.dataSourceBuilder    = dataSourceBuilder;
            MgSAXHandler mgSAXHandler = new MgSAXHandler(this);

            mgSAXHandler.parse(xmlData);
        }
Exemple #10
0
 private void UploadReport(string siteCollectionId, ReportItem report)
 {
     Warning[] warnings;
     if (report.FileName.ToLower().EndsWith(".rdl"))
     {
         if (dataSources == null)
         {
             dataSources = client.ListChildren($"/{siteCollectionId}", true).Where(x => x.TypeName == "DataSource").ToList();
         }
         var catalogItem       = client.CreateCatalogItem("Report", report.FileName, $"/{siteCollectionId}/{report.Folder}", true, report.BinaryData, null, out warnings);
         var reportDatasources = client.GetItemDataSources(catalogItem.Path);
         var itemRefs          = new List <ItemReference>();
         foreach (DataSource reportDatasource in reportDatasources)
         {
             if (reportDatasource.Item.GetType() == typeof(InvalidDataSourceReference))
             {
                 var existingDatasource = dataSources.Where(x => x.Name == reportDatasource.Name + ".rsds").First();
                 var itemRef            = new ItemReference()
                 {
                     Name      = reportDatasource.Name,
                     Reference = existingDatasource.Path
                 };
                 itemRefs.Add(itemRef);
             }
         }
         client.SetItemReferences(catalogItem.Path, itemRefs.ToArray());
     }
     else if (report.FileName.ToLower().EndsWith(".rsds"))
     {
         var doc = new XmlDocument();
         using (var memoryStream = new MemoryStream(report.BinaryData))
         {
             doc.Load(memoryStream);
             var definition = new DataSourceDefinition()
             {
                 CredentialRetrieval = (CredentialRetrievalEnum)Enum.Parse(typeof(CredentialRetrievalEnum), doc.GetStringValue("/m:DataSourceDefinition/m:CredentialRetrieval")),
                 ConnectString       = doc.GetStringValue("/m:DataSourceDefinition/m:ConnectString"),
                 Enabled             = doc.GetBooleanValue("/m:DataSourceDefinition/m:Enabled"),
                 Extension           = doc.GetStringValue("/m:DataSourceDefinition/m:Extension"),
                 ImpersonateUser     = doc.GetBooleanValue("/m:DataSourceDefinition/m:ImpersonateUser"),
                 OriginalConnectStringExpressionBased = doc.GetBooleanValue("/m:DataSourceDefinition/m:OriginalConnectStringExpressionBased"),
                 Prompt = doc.GetStringValue("/m:DataSourceDefinition/m:Prompt"),
                 UseOriginalConnectString = doc.GetBooleanValue("/m:DataSourceDefinition/m:UseOriginalConnectString"),
                 WindowsCredentials       = doc.GetBooleanValue("/m:DataSourceDefinition/m:WindowsCredentials"),
                 UserName = "",
                 Password = ""
             };
             if (!string.IsNullOrEmpty(report.DatasourceCredentials))
             {
                 var parts = report.DatasourceCredentials.Split(':');
                 definition.UserName = parts[0].Trim();
                 definition.Password = parts[1].Trim();
             }
             client.CreateDataSource(report.FileName, $"/{siteCollectionId}/{report.Folder}", true, definition, null);
         }
     }
 }
Exemple #11
0
 public void endElement(string elementName, string elementValue, NameValueCollection attributes)
 {
     if (elementName.Equals(ConstInterface.MG_TAG_DBH_DATA_ID))
     {
         DataSourceDefinition dataSourceDefinition = new DataSourceDefinition();
         dataSourceDefinitionManager.DataSourceBuilder.SetAttributes(dataSourceDefinition, attributes);
         dataSourceDefinitionManager.DataSourceDefinitions.Add(dataSourceDefinition.Id, dataSourceDefinition);
     }
 }
        /// <summary>
        /// Create File close command.
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="dataSourceDefinition"></param>
        /// <param name="access"></param>
        /// <param name="localManager"></param>
        /// <returns></returns>
        public static GatewayCommandFileClose CreateFileCloseCommand(DataSourceDefinition dataSourceDefinition, LocalManager localManager)
        {
            GatewayCommandFileClose fileCloseCommand = new GatewayCommandFileClose();

            fileCloseCommand.DataSourceDefinition = dataSourceDefinition;
            fileCloseCommand.LocalManager         = localManager;

            return(fileCloseCommand);
        }
        public RSCatalogItem CreateDataSource(string DataSource, string Parent, bool Overwrite, RSDataSourceDefinition Definition, RSProperty[] Properties)
        {
            DataSourceDefinition dsDef = (DataSourceDefinition)Converter.Convert(Definition);

            Property[]  props  = (Property[])Converter.Convert(Properties);
            CatalogItem outval = rs.CreateDataSource(DataSource, Parent, Overwrite, dsDef, props);

            return((RSCatalogItem)Converter.Convert(outval));
        }
Exemple #14
0
 /// <summary>
 /// Contructor
 /// </summary>
 /// <param name="updateDataViewToDataSourceCommand"></param>
 public LocalUpdateRemoteDataViewToDataSourceCommand(UpdateDataViewToDataSourceEventCommand updateDataViewToDataSourceCommand)
     : base(updateDataViewToDataSourceCommand)
 {
     this.updateDataViewToDataSourceCommand = updateDataViewToDataSourceCommand;
     this.destinationColumnList             = updateDataViewToDataSourceCommand.DestinationDataSourceFieldsList;
     this.sourceVarList = updateDataViewToDataSourceCommand.SourceVarList;
     destinationToSourceFieldIndexMapping = new Dictionary <string, int>();
     task = (TaskBase)MGDataCollection.Instance.GetTaskByID(updateDataViewToDataSourceCommand.TaskTag);
     destinationDataSourceDefinition = ClientManager.Instance.LocalManager.ApplicationDefinitions.DataSourceDefinitionManager.GetDataSourceDefinition(task.getCtlIdx(), updateDataViewToDataSourceCommand.DestDataSource);
 }
Exemple #15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="attributes"></param>
        public void SetAttributes(DataSourceDefinition dataSourceDefinition, NameValueCollection attributes)
        {
            IEnumerator enumerator = attributes.GetEnumerator();

            while (enumerator.MoveNext())
            {
                String attr = (String)enumerator.Current;
                setAttribute(dataSourceDefinition, attr, attributes[attr]);
            }
        }
        /// <summary>
        /// Create File Open command.
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="dataSourceDefinition"></param>
        /// <param name="access"></param>
        /// <returns></returns>
        public static GatewayCommandFileOpen CreateFileOpenCommand(string fileName, DataSourceDefinition dataSourceDefinition, Access access, LocalManager localManager)
        {
            GatewayCommandFileOpen fileOpenCommand = new GatewayCommandFileOpen();

            fileOpenCommand.FileName             = fileName;
            fileOpenCommand.DataSourceDefinition = dataSourceDefinition;
            fileOpenCommand.Access       = access;
            fileOpenCommand.LocalManager = localManager;

            return(fileOpenCommand);
        }
        /// <summary>
        /// Create File Rename Command.
        /// </summary>
        /// <param name="dataSourceDefinition"></param>
        /// <param name="sourceFileName"></param>
        /// <param name="destinationFileName"></param>
        /// <param name="localManager"></param>
        /// <returns></returns>
        public static GatewayCommandFileRename CreateFileRenameCommand(DataSourceDefinition sourceDataSourceDefinition, DataSourceDefinition destinationDataSourceDefinition,
                                                                       LocalManager localManager)
        {
            GatewayCommandFileRename fileRenameCommand = new GatewayCommandFileRename();

            fileRenameCommand.DataSourceDefinition            = sourceDataSourceDefinition;
            fileRenameCommand.DestinationDataSourceDefinition = destinationDataSourceDefinition;
            fileRenameCommand.LocalManager = localManager;

            return(fileRenameCommand);
        }
        public SsrsDataSource MapToSsrsObject(string itemPath, DataSourceDefinition definition)
        {
            var path = new SsrsObjectPath(itemPath);

            return(new SsrsDataSource {
                Name = path.Name,
                Path = path,
                ConnectionString = definition.ConnectString,
                Authentication = MapToAuthenticationType(definition)
            });
        }
 private void UploadReportDataSources(ReportingService2010SoapClient reportingServicesClient, TrustedUserHeader userHeader, string artifactsFolderPath)
 {
     foreach (var dataSourceDefinitionFile in Directory.GetFiles(artifactsFolderPath, String.Format("*{0}", DataSourceFileExtension)))
     {
         string               itemName    = Path.GetFileNameWithoutExtension(dataSourceDefinitionFile);
         CatalogItem          dataSetItem = null;
         DataSourceDefinition definition  = DataSourceDefinitionParser.Parse(File.OpenRead(dataSourceDefinitionFile));
         Console.WriteLine("Uploaded report data source '{0}'", itemName);
         reportingServicesClient.CreateDataSource(userHeader, itemName, "/", true, definition, null, out dataSetItem);
     }
 }
        /// <summary>
        /// Create Gateway DbDisconnect command.
        /// </summary>
        /// <param name="localManager"></param>
        /// <param name="databaseName"></param>
        /// <returns></returns>
        public static GatewayCommandDbDisconnect CreateGatewayCommandDbDisconnect(LocalManager localManager, string databaseName)
        {
            GatewayCommandDbDisconnect dbDisconnectCommand = new GatewayCommandDbDisconnect();

            dbDisconnectCommand.LocalManager = localManager;

            DataSourceDefinition datasourceDefinition = new DataSourceDefinition();

            datasourceDefinition.DBaseName           = databaseName.ToUpper();
            dbDisconnectCommand.DataSourceDefinition = datasourceDefinition;
            return(dbDisconnectCommand);
        }
Exemple #21
0
        /// <summary>
        /// Execute File delete gateway command.
        /// </summary>
        /// <returns></returns>
        internal override ReturnResultBase Execute()
        {
            ReturnResultBase result = new ReturnResult();
            bool             exist  = false;
            int    dataSourceNumber = clientDbDelCommand.DataSourceNumber;
            string dataSourceName   = clientDbDelCommand.DataSourceName;

            DataSourceDefinition dataSourceDefintion = ClientManager.Instance.LocalManager.ApplicationDefinitions.DataSourceDefinitionManager.GetDataSourceDefinition(Task.getCtlIdx(), dataSourceNumber);

            //If Wrong Data Source Number is Given
            if (dataSourceDefintion == null)
            {
                Logger.Instance.WriteExceptionToLog("ClientDbDel - Invalid Data Source Number");
                result = new ReturnResult(MsgInterface.STR_CLIENT_DB_DEL_OPERATION_FAILED);
            }
            else
            {
                if (string.IsNullOrEmpty(dataSourceName))
                {
                    dataSourceName = dataSourceDefintion.Name;
                }
                //Check for Table exist or not.
                if (dataSourceDefintion.CheckExist == 'N')
                {
                    exist = true;
                }
                else
                {
                    GatewayCommandFileExist dbFileExistCommand = GatewayCommandsFactory.CreateFileExistCommand(dataSourceName, dataSourceDefintion, LocalDataviewManager.LocalManager);
                    result = dbFileExistCommand.Execute();
                    exist  = result.Success;
                }

                //If Table exists then go for file delete operation.
                if (exist)
                {
                    GatewayCommandFileDelete dbDeleteCommand = GatewayCommandsFactory.CreateFileDeleteCommand(dataSourceName, dataSourceDefintion, LocalDataviewManager.LocalManager);

                    if (!dbDeleteCommand.Execute().Success)
                    {
                        Logger.Instance.WriteExceptionToLog("ClientDbDel - Cannot delete Table");
                        result = new ReturnResult(MsgInterface.STR_CLIENT_DB_DEL_OPERATION_FAILED);
                    }
                }
                else
                {
                    Logger.Instance.WriteExceptionToLog(string.Format("ClientDbDel - {0}", result.ErrorDescription));
                    result = new ReturnResult(MsgInterface.STR_CLIENT_DB_DEL_OPERATION_FAILED);
                }
            }

            return(result);
        }
Exemple #22
0
        public static DataSourceDefinition Parse(Stream itemDefinitionStream)
        {
            XDocument            definitionDocument = XDocument.Load(itemDefinitionStream);
            DataSourceDefinition definition         = new DataSourceDefinition()
            {
                ConnectString       = definitionDocument.Root.Descendants("ConnectString").First().Value,
                Enabled             = bool.Parse(definitionDocument.Root.Descendants("Enabled").First().Value),
                Extension           = definitionDocument.Root.Descendants("Extension").First().Value,
                CredentialRetrieval = (CredentialRetrievalEnum)Enum.Parse(typeof(CredentialRetrievalEnum), definitionDocument.Root.Descendants("CredentialRetrieval").First().Value)
            };

            return(definition);
        }
        public static DataSourceDefinition Parse(Stream itemDefinitionStream)
        {
            XDocument definitionDocument = XDocument.Load(itemDefinitionStream);
            DataSourceDefinition definition = new DataSourceDefinition()
            {
                ConnectString = definitionDocument.Root.Descendants("ConnectString").First().Value,
                Enabled = bool.Parse(definitionDocument.Root.Descendants("Enabled").First().Value),
                Extension = definitionDocument.Root.Descendants("Extension").First().Value,
                CredentialRetrieval = (CredentialRetrievalEnum)Enum.Parse(typeof(CredentialRetrievalEnum), definitionDocument.Root.Descendants("CredentialRetrieval").First().Value)
            };

            return definition;
        }
Exemple #24
0
        /// <summary>
        /// Checks if table can be deleted, by checking its references in all data sources in repository
        /// </summary>
        /// <param name="dbName">table name</param>
        /// <param name="dataSourceRepository">repository</param>
        /// <returns></returns>
        private bool CanDeleteTable(String dbName, DataSourceDefinitionManager dataSourceRepository)
        {
            foreach (KeyValuePair <DataSourceId, DataSourceDefinition> definitionEntry in dataSourceRepository.DataSourceDefinitions)
            {
                DataSourceDefinition dataSourceDefinition = (DataSourceDefinition)definitionEntry.Value;
                if (dataSourceDefinition.Name.Equals(dbName))
                {
                    return(false);
                }
            }

            return(true);
        }
        private void EditDataSource(TreeView treeView)
        {
            if ((ItemTypeEnum)(treeView.SelectedNode.Tag) != ItemTypeEnum.DataSource)
            {
                MessageBox.Show(@"Please choose a Datasource");
                return;
            }

            ReportServerProperties reportServerProperties = new ReportServerProperties(((ReportServerProperties)(treeView.Tag)).ReportsServerInstance.Url);

            DataSourceDefinition dataSourceDefinition = reportServerProperties.GetDataSourceDefinition(treeView.SelectedNode.FullPath.Replace(treeView.Nodes[0].Text, string.Empty).Replace(@"\", "/"));

            using (var frmDataSourceDetail = new frmDataSourceDetail())
            {
                string[] connectionString = dataSourceDefinition.ConnectString.Split(';');

                foreach (string[] itemDict in connectionString.Select(item => item.Split('=')))
                {
                    if (itemDict[0] == "Data Source")
                    {
                        frmDataSourceDetail.SQLServer = itemDict[1];
                    }
                    if (itemDict[0] == "Initial Catalog")
                    {
                        frmDataSourceDetail.DBName = itemDict[1];
                    }
                }

                frmDataSourceDetail.DataSourceName = treeView.SelectedNode.Text;

                CatalogItem[] catalogItems = reportServerProperties.ReportsServerInstance.ListDependentItems(treeView.SelectedNode.FullPath.Replace(treeView.Nodes[0].Text, string.Empty).Replace(@"\", "/"));

                //frmDataSourceDetail.DependentItems = catalogItems.Select(catalogItem => string.Format("{0}{1}", catalogItem.Path, catalogItem.Name)).ToList();

                if (frmDataSourceDetail.ShowDialog() == DialogResult.OK)
                {
                    string folder = treeView.SelectedNode.FullPath.Replace(treeView.Nodes[0].Text, string.Empty).Replace(@"\", "/").Replace(treeView.SelectedNode.Text, string.Empty);
                    if (ReportServerDestination.DeleteItem(ItemTypeEnum.DataSource, folder.Substring(0, folder.Length - 1), treeView.SelectedNode.Text) &&
                        ReportServerDestination.CreateDataSource(frmDataSourceDetail.DataSourceName, folder.Substring(0, folder.Length - 1), frmDataSourceDetail.SQLServer, frmDataSourceDetail.DBName))
                    {
                        treeView.SelectedNode.Text = frmDataSourceDetail.DataSourceName;
                        MessageBox.Show("DataSource modified succesfully");
                    }
                    else
                    {
                        MessageBox.Show("DataSource WASN'T modified");
                    }
                }
            }
        }
        private static void CreateDataSources(ReportingService2010 reportingService, string path)
        {
            if (reportingService == null)
            {
                throw new ArgumentNullException("reportingService");
            }

            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentException("path");
            }

            foreach (DataSourceItem dataSource in SetupDataSourceItems)
            {
                DataSourceDefinition def = new DataSourceDefinition();
                def.ConnectString = dataSource.ConnectString;

                switch (dataSource.CredentialsRetrieval)
                {
                case "Integrated":
                    def.CredentialRetrieval = CredentialRetrievalEnum.Integrated; break;

                case "None":
                    def.CredentialRetrieval = CredentialRetrievalEnum.None; break;

                case "Prompt":
                    def.CredentialRetrieval = CredentialRetrievalEnum.Prompt; break;

                case "Store":
                    def.CredentialRetrieval = CredentialRetrievalEnum.Store; break;
                }

                def.Enabled                              = dataSource.Enabled;
                def.EnabledSpecified                     = dataSource.EnabledSpecified;
                def.Extension                            = dataSource.Extension;
                def.ImpersonateUser                      = dataSource.ImpersonateUser;
                def.ImpersonateUserSpecified             = dataSource.ImpersonateUserSpecified;
                def.OriginalConnectStringExpressionBased = dataSource.OriginalConnectStringExpressionBased;
                def.Password                             = dataSource.Password;
                def.Prompt = dataSource.Prompt;
                def.UseOriginalConnectString = dataSource.UseOriginalConnectString;
                def.UserName           = dataSource.UserName;
                def.WindowsCredentials = dataSource.WindowsCredentials;

                string fullPath = string.Format(dataSource.Path, path);
                string parent   = TesterUtility.GetParentPath(fullPath);

                reportingService.CreateDataSource(dataSource.Name, parent, true, def, null);
            }
        }
        private static void CreateDataSource(ReportingService2010 reportingService, DataSourceItem dataSource)
        {
            if (reportingService == null)
            {
                throw new ArgumentNullException("reportingService");
            }

            if (dataSource == null)
            {
                throw new ArgumentNullException("dataSource");
            }

            DataSourceDefinition def = new DataSourceDefinition();

            def.ConnectString = dataSource.ConnectString;

            switch (dataSource.CredentialsRetrieval)
            {
            case "Integrated":
                def.CredentialRetrieval = CredentialRetrievalEnum.Integrated; break;

            case "None":
                def.CredentialRetrieval = CredentialRetrievalEnum.None; break;

            case "Prompt":
                def.CredentialRetrieval = CredentialRetrievalEnum.Prompt; break;

            case "Store":
                def.CredentialRetrieval = CredentialRetrievalEnum.Store; break;
            }

            def.Enabled                              = dataSource.Enabled;
            def.EnabledSpecified                     = dataSource.EnabledSpecified;
            def.Extension                            = dataSource.Extension;
            def.ImpersonateUser                      = dataSource.ImpersonateUser;
            def.ImpersonateUserSpecified             = dataSource.ImpersonateUserSpecified;
            def.OriginalConnectStringExpressionBased = dataSource.OriginalConnectStringExpressionBased;
            def.Password                             = dataSource.Password;
            def.Prompt = dataSource.Prompt;
            def.UseOriginalConnectString = dataSource.UseOriginalConnectString;
            def.UserName           = dataSource.UserName;
            def.WindowsCredentials = dataSource.WindowsCredentials;

            string parent = TesterUtility.GetParentPath(dataSource.Path);

            ReportingService2010TestEnvironment.CreateFolderFromPath(reportingService, parent);

            reportingService.CreateDataSource(dataSource.Name, parent, true, def, null);
        }
        public static void SetDataSource(string itemPath, ReportingService2010 report, string userName, string password, int timeExpiry)
        {
            if (itemPath == null)
            {
                throw new ArgumentNullException($"itemPath");
            }

            if (report == null)
            {
                throw new ArgumentNullException($"report");
            }

            List <DataSource> lstDs = new List <DataSource>();

            foreach (DataSource ds in report.GetItemDataSources(itemPath))
            {
                DataSourceDefinition tempDef = (DataSourceDefinition)ds.Item;

                DataSource dsNew = new DataSource();

                DataSourceDefinition dfNew = new DataSourceDefinition();

                dfNew.CredentialRetrieval                  = CredentialRetrievalEnum.Store;
                dfNew.UserName                             = userName;
                dfNew.Password                             = password;
                dfNew.Enabled                              = true;
                dfNew.EnabledSpecified                     = true;
                dfNew.Extension                            = $"SQL";
                dfNew.ImpersonateUser                      = false;
                dfNew.ImpersonateUserSpecified             = true;
                dfNew.OriginalConnectStringExpressionBased = true;
                dfNew.UseOriginalConnectString             = true;
                dfNew.WindowsCredentials                   = true;

                dsNew.Name = ds.Name;
                dsNew.Item = dfNew;

                lstDs.Add(dsNew);
            }

            report.SetItemDataSources(itemPath, lstDs.ToArray());

            ExpirationDefinition exprDef = new TimeExpiration()
            {
                Minutes = timeExpiry
            };

            report.SetCacheOptions(itemPath, true, exprDef);
        }
        public void UpdateDataSource(DataSourceDefinition dataSourceDefinition)
        {
            try
            {
                configurator.UpdateDataSource(dataSourceDefinition);

                scheduledJobManager.QueueScheduledJobs(clearExistingScheduledJobInstancesFromWaitingQueue: true);
            }
            catch (Exception ex)
            {
                SyncEngineLogger.WriteExceptionToLog(ex, WEB_SERVICE_EXCEPTION_MESSAGE);

                throw;
            }
        }
Exemple #30
0
        public DataSourceDefinition createDataSourceDefinition(string connectString)
        {
            DataSourceDefinition definition = new DataSourceDefinition();

            definition.CredentialRetrieval      = CredentialRetrievalEnum.Integrated;
            definition.ConnectString            = connectString; //connection string
            definition.Enabled                  = true;
            definition.EnabledSpecified         = true;
            definition.Extension                = "SQL"; //use Sql server
            definition.ImpersonateUserSpecified = true;  // use Impersonator authentication
            //Use the default prompt string.
            definition.Prompt             = null;
            definition.WindowsCredentials = true;//use window authentication
            return(definition);
        }
Exemple #31
0
        /// <summary>
        /// Fetech the values from source datasource, convert fetched values and insert values in destination dataSource.
        /// </summary>
        /// <param name="fromDataSourceDefinition"></param>
        /// <param name="toDataSourceDefinition"></param>
        private void ConvertAndInsertValues(DataSourceDefinition fromDataSourceDefinition, DataSourceDefinition toDataSourceDefinition)
        {
            GatewayResult result = null;

            MainCursorBuilder cursorBuilder = new MainCursorBuilder(null);

            RuntimeCursor fromRuntimeCursor = cursorBuilder.Build(fromDataSourceDefinition, Access.Read);
            RuntimeCursor toRuntimeCursor   = cursorBuilder.Build(toDataSourceDefinition, Access.Write);

            //Prepare and open source and destnation runtime cursor.
            PrepareAndOpenCursor(fromRuntimeCursor, true);
            PrepareAndOpenCursor(toRuntimeCursor, false);

            //Create fetch command
            GatewayCommandFetch fetchCommand = GatewayCommandsFactory.CreateCursorFetchCommand(fromRuntimeCursor, ClientManager.Instance.LocalManager);

            while (true)
            {
                //Fetch record from source table
                result = fetchCommand.Execute();
                if (!result.Success)
                {
                    if (result.ErrorCode == GatewayErrorCode.NoRecord)
                    {
                        break;
                    }
                    else
                    {
                        throw new DataSourceConversionFailedException(fromDataSourceDefinition.Name, result.ErrorDescription);
                    }
                }

                //Convert values of fields of source table.
                ConvertFields(fromDataSourceDefinition, toDataSourceDefinition, fromRuntimeCursor.RuntimeCursorData.CurrentValues, toRuntimeCursor.RuntimeCursorData.CurrentValues);

                for (int i = 0; i < toDataSourceDefinition.Fields.Count; i++)
                {
                    toRuntimeCursor.CursorDefinition.IsFieldUpdated[i] = true;
                }

                //Insert converted values into temporary table.
                result = GatewayCommandsFactory.CreateCursorInsertCommand(toRuntimeCursor, ClientManager.Instance.LocalManager).Execute();
            }

            // release and close source and destnation runtime cursor.
            ReleaseAndCloseCursor(fromRuntimeCursor, true);
            ReleaseAndCloseCursor(toRuntimeCursor, false);
        }
Exemple #32
0
        /// <summary>
        ///  Take the dataSource objects grabbed from the report server and write them in a file.
        /// </summary>
        /// <param name="dataSources">array of datasources used.</param>
        /// <param name="outputFileName">The path/name of output file.</param>
        public void WriteDataSourceContent(DataSource[] dataSources, string outputFileName)
        {
            XDocument retfile           = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XElement(DataSourceConstants.DataSources));
            string    dataSourceContent = string.Empty;

            foreach (var dataSource in dataSources)
            {
                DataSourceDefinition currentDataSource = null;
                if (dataSource.Item.GetType().Equals(new DataSourceReference().GetType()))
                {
                    string dataSourcePath = ((DataSourceReference)dataSource.Item).Reference;
                    currentDataSource = server.GetDataSourceContents(dataSourcePath);

                    byte[] rawDataSourceContent = server.GetItemDefinition(dataSourcePath);
                    dataSourceContent = new UTF8Encoding(true).GetString(rawDataSourceContent);

                    XElement currentDataSourceElement;
                    using (MemoryStream dataSourceMemoryStream = new MemoryStream(rawDataSourceContent))
                    {
                        currentDataSourceElement = XElement.Load(dataSourceMemoryStream);
                    }

                    XAttribute nameAttribute = new XAttribute("Name", dataSource.Name);
                    currentDataSourceElement.Add(nameAttribute);
                    retfile.Root.Add(currentDataSourceElement);
                }
                else
                {
                    currentDataSource = (DataSourceDefinition)dataSource.Item;

                    XAttribute nameAttribute            = new XAttribute("Name", dataSource.Name);
                    XElement   currentDataSourceElement = new XElement(DataSourceConstants.DataSourceDefinition, nameAttribute);

                    PropertyInfo[] properties = typeof(DataSourceDefinition).GetProperties();
                    foreach (PropertyInfo property in properties)
                    {
                        if (property.GetValue(currentDataSource) != null)
                        {
                            currentDataSourceElement.Add(new XElement(property.Name, property.GetValue(currentDataSource)));
                        }
                    }

                    retfile.Root.Add(currentDataSourceElement);
                }
            }

            retfile.Save(outputFileName);
        }
 /// <remarks/>
 public void SetDataSourceContentsAsync(string DataSource, DataSourceDefinition Definition, object userState)
 {
     if ((this.SetDataSourceContentsOperationCompleted == null))
     {
         this.SetDataSourceContentsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetDataSourceContentsOperationCompleted);
     }
     this.InvokeAsync("SetDataSourceContents", new object[] {
                 DataSource,
                 Definition}, this.SetDataSourceContentsOperationCompleted, userState);
 }
 public CatalogItem CreateDataSource(string DataSource, string Parent, bool Overwrite, DataSourceDefinition Definition, Property[] Properties)
 {
     object[] results = this.Invoke("CreateDataSource", new object[] {
             DataSource,
             Parent,
             Overwrite,
             Definition,
             Properties});
     return ((CatalogItem)(results[0]));
 }
        private void CreateDataSource()
        {
            mvar_ServerName = txtServerName.Text;
            mvar_DatabaseName = txtDatabaseName.Text;
            mvar_UserID = txtUserName.Text;
            mvar_Password = txtPassword.Text;
            mvar_DataSourceName = txtDataSourceName.Text;
            mvar_DataSourceLocation = txtDataSourceLocation.Text;

            try
            {
                //DataSourceLocation requires '/' at beginning of string

                //Sets parent/data source location to root
                if (mvar_DataSourceLocation == "/")
                {
                    mvar_DataSourceLocation = @"/";
                }

                //if "/" + txtDataSourceLocation doesn't exist, add @"/"
                //Check if DataSource exists, if !exists, continue, else error

                //ReportingService2010.ReportingService2010= new ReportingService2010.ReportingService2010();
                //CatalogItem[] items;

                //sroot = sroot + "Bin\\V4Web\\SSRS Reports\\"; //V4\\";
                //string strItemType = "Report";
                //string strReportName = string.Empty;
                //string strFilePath = string.Empty;
                //string parent = "/V4"; //V4

               //mvar_rs.Url = "http://localhost/ReportServer/reportservice2010.asmx"; //WebService url in ReportingServicesConfigurationManager; localhost = server name
               //mvar_rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

                #region CreateDataSource
                // Create DataSource that Report will Use
                logger.LogMsg("Begin CreateDataSource: ", Logger.LogLevel.LogIsErr);
                WriteLog("Begin CreateDataSource: ");
                DataSource dSource = new DataSource();
                DataSourceDefinition dDefinition = new DataSourceDefinition();

                dSource.Item = dDefinition;
                dDefinition.Extension = "SQL";
                dDefinition.ConnectString = @"Data Source=" + mvar_ServerName
                    + @";Initial Catalog=" + mvar_DatabaseName;
                WriteLog(dDefinition.ConnectString.ToString());
                dDefinition.ImpersonateUserSpecified = true;
                dDefinition.Prompt = null;
                dDefinition.WindowsCredentials = false;
                dDefinition.UserName = mvar_UserID;
                dDefinition.Password = mvar_Password;
                dDefinition.CredentialRetrieval = CredentialRetrievalEnum.Store;
                dSource.Name = mvar_DataSourceName;

                try
                {
                   mvar_rs.CreateDataSource(mvar_DataSourceName, mvar_DataSourceLocation, false,
                        dDefinition, null);
                    logger.LogMsg("Create DataSource " + mvar_DataSourceName + ": Success!!", Logger.LogLevel.LogIsErr);
                    WriteLog("Create DataSource " + mvar_DataSourceName + ": Success!!");
                }
                catch (System.Web.Services.Protocols.SoapException Err)
                {
                    logger.LogMsg(Err.Detail.InnerXml.ToString(), Logger.LogLevel.LogIsErr);
                    WriteLog(Err.Detail.InnerXml.ToString());
                }
                logger.LogMsg("End CreateDataSource", Logger.LogLevel.LogIsErr);
                WriteLog("End CreateDataSource");
                #endregion CreateDataSource
            }
            catch (Exception Err)
            {

                logger.LogMsg(Err.ToString(), Logger.LogLevel.LogIsErr);
                WriteLog(Err.ToString());
            }
        }
 public bool TestConnectForDataSourceDefinition(DataSourceDefinition DataSourceDefinition, string UserName, string Password, out string ConnectError)
 {
     object[] results = this.Invoke("TestConnectForDataSourceDefinition", new object[] {
             DataSourceDefinition,
             UserName,
             Password});
     ConnectError = ((string)(results[1]));
     return ((bool)(results[0]));
 }
 /// <remarks/>
 public System.IAsyncResult BeginTestConnectForDataSourceDefinition(DataSourceDefinition DataSourceDefinition, string UserName, string Password, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("TestConnectForDataSourceDefinition", new object[] {
             DataSourceDefinition,
             UserName,
             Password}, callback, asyncState);
 }
 /// <remarks/>
 public void CreateDataSourceAsync(string DataSource, string Parent, bool Overwrite, DataSourceDefinition Definition, Property[] Properties, object userState)
 {
     if ((this.CreateDataSourceOperationCompleted == null))
     {
         this.CreateDataSourceOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateDataSourceOperationCompleted);
     }
     this.InvokeAsync("CreateDataSource", new object[] {
                 DataSource,
                 Parent,
                 Overwrite,
                 Definition,
                 Properties}, this.CreateDataSourceOperationCompleted, userState);
 }
 /// <remarks/>
 public void TestConnectForDataSourceDefinitionAsync(DataSourceDefinition DataSourceDefinition, string UserName, string Password)
 {
     this.TestConnectForDataSourceDefinitionAsync(DataSourceDefinition, UserName, Password, null);
 }
 public void CreateDataSource(string DataSource, string Parent, bool Overwrite, DataSourceDefinition Definition, Property[] Properties)
 {
     this.Invoke("CreateDataSource", new object[] {
                 DataSource,
                 Parent,
                 Overwrite,
                 Definition,
                 Properties});
 }
 /// <remarks/>
 public void CreateDataSourceAsync(string DataSource, string Parent, bool Overwrite, DataSourceDefinition Definition, Property[] Properties)
 {
     this.CreateDataSourceAsync(DataSource, Parent, Overwrite, Definition, Properties, null);
 }
 /// <remarks/>
 public System.IAsyncResult BeginSetDataSourceContents(string DataSource, DataSourceDefinition Definition, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("SetDataSourceContents", new object[] {
                 DataSource,
                 Definition}, callback, asyncState);
 }
 /// <remarks/>
 public System.IAsyncResult BeginCreateDataSource(string DataSource, string Parent, bool Overwrite, DataSourceDefinition Definition, Property[] Properties, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("CreateDataSource", new object[] {
                 DataSource,
                 Parent,
                 Overwrite,
                 Definition,
                 Properties}, callback, asyncState);
 }
 /// <remarks/>
 public void TestConnectForDataSourceDefinitionAsync(DataSourceDefinition DataSourceDefinition, string UserName, string Password, object userState)
 {
     if ((this.TestConnectForDataSourceDefinitionOperationCompleted == null))
     {
         this.TestConnectForDataSourceDefinitionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnTestConnectForDataSourceDefinitionOperationCompleted);
     }
     this.InvokeAsync("TestConnectForDataSourceDefinition", new object[] {
             DataSourceDefinition,
             UserName,
             Password}, this.TestConnectForDataSourceDefinitionOperationCompleted, userState);
 }
 /// <remarks/>
 public void SetDataSourceContentsAsync(string DataSource, DataSourceDefinition Definition)
 {
     this.SetDataSourceContentsAsync(DataSource, Definition, null);
 }
 public void SetDataSourceContents(string DataSource, DataSourceDefinition Definition)
 {
     this.Invoke("SetDataSourceContents", new object[] {
                 DataSource,
                 Definition});
 }