コード例 #1
0
        protected void Page_Init(object sender, EventArgs e)
        {
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Expires     = -1;
            lblErrorSite.Visible = false;

            _DAO = new EPMData(SPContext.Current.Web.Site.ID);
            _DAO.OpenClientReportingConnection             = _DAO.remoteCs;
            DropDownListScheduleType.SelectedIndexChanged += DropDownListScheduleType_SelectedIndexChanged;

            try
            {
                //using (SPWeb web = SPContext.Current.Web)
                //{
                if (!IsPostBack)
                {
                    PopulateLists();
                    loadData(SPContext.Current.Web);
                }
                //}
            }
            catch (Exception ex)
            {
                Response.Write("Error: " + ex.Message);
            }
        }
コード例 #2
0
        public void CreateEventMessageWithParams_WhenExceptionIsNull_ThrowsException()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                FakesForSpSecurity();
                FakesForConstructor();

                var epmData = new EPMData(Guid.NewGuid());
                _privateObject = new PrivateObject(epmData);
                _exception     = null;

                var sqlParameters = new List <SqlParameter>();

                try
                {
                    // Act
                    _privateObject.Invoke(CreateEventMessageWithParamsMethod, _exception, DummyCommand, sqlParameters);
                    Assert.Fail("CreateEventMessageWithParamsMethod: not throw ArgumentNullException");
                }
                catch (Exception ex)
                {
                    // Assert
                    Assert.IsTrue(ex is ArgumentNullException);
                }
            };
        }
コード例 #3
0
        public void execute(SPSite site, SPWeb web, string data)
        {
            EPMData epmdata = null;

            try
            {
                epmdata = new EPMData(site.ID);

                ProcessSecurity.ProcessSecurityGroups(site, epmdata.GetClientReportingConnection, data);
            }
            catch { }
            finally
            {
                if (epmdata != null)
                {
                    epmdata.Dispose();
                }
                if (web != null)
                {
                    web.Dispose();
                }
                if (site != null)
                {
                    site.Dispose();
                }
                data = null;
            }
        }
コード例 #4
0
        private void setRPTSettings(EPMData epmdata, SPSite site)
        {
            int    hours    = 0;
            string workdays = " ";

            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                int startHour = site.RootWeb.RegionalSettings.WorkDayStartHour / 60;
                int endHour   = site.RootWeb.RegionalSettings.WorkDayEndHour / 60;
                hours         = endHour - startHour - 1;

                int work = site.RootWeb.RegionalSettings.WorkDays;
                for (byte x = 0; x < 7; x++)
                {
                    workdays = ((((work >> x) & 0x01) == 0x01) ? "" : "," + (7 - x)) + workdays;
                }
            });

            if (workdays.Length > 1)
            {
                workdays = workdays.Substring(1);
            }

            string sResults = "";

            epmdata.UpdateRPTSettings(workdays, hours, out sResults);
        }
コード例 #5
0
 public void Initialize()
 {
     shimContext = ShimsContext.Create();
     SetupShims();
     spSite  = new ShimSPSite();
     epmData = new ShimEPMData();
 }
コード例 #6
0
        public void CreateEventMessageWithParams_ShouldFillAllMessageParameters_ReturnsString()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                FakesForSpSecurity();
                FakesForConstructor();

                var guid    = Guid.NewGuid();
                var epmData = new EPMData(guid);
                _privateObject = new PrivateObject(epmData);
                _exception     = new ArgumentNullException(nameof(epmData));

                var sqlParameters = new List <SqlParameter>
                {
                    new SqlParameter(DummyName, SqlDbType.Int),
                    new SqlParameter(DummyString, null)
                };
                var cmdDetails = $"Command: {DummyCommand}";
                var cmdParams  = CreateParametersResult(sqlParameters);

                // Act
                var message = _privateObject.Invoke(CreateEventMessageWithParamsMethod, _exception, DummyCommand, sqlParameters);

                // Assert
                var result = $"Name: {DummyName} Url: {DummyUrl}  ID: {guid} : {_exception.Message}{cmdDetails}{cmdParams}";
                Assert.AreEqual(result, message);
            };
        }
コード例 #7
0
        public void SAccountInfo_WhenConnectionIsSuccess_ReturnsNull()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                FakesForSpSecurity();
                FakesForConstructor();
                SetupParameters();

                var guid    = Guid.NewGuid();
                var epmData = new EPMData(guid);
                _privateObject = new PrivateObject(epmData);

                var siteId   = Guid.NewGuid();
                var webAppId = Guid.NewGuid();

                ShimCoreFunctions.getConnectionStringGuid     = guid1 => DummyString;
                ShimSqlConnection.ConstructorString           = (connection, s) => new ShimSqlConnection();
                ShimSqlConnection.AllInstances.Open           = connection => { };
                ShimSqlConnection.AllInstances.Close          = connection => { };
                ShimSqlCommand.ConstructorStringSqlConnection = (command, s, arg3) => new ShimSqlCommand();

                // Act
                var result = EPMData.SAccountInfo(siteId, webAppId);

                // Assert
                Assert.IsNull(result);
            }
        }
コード例 #8
0
        private bool AddField(SPListEventProperties properties)
        {
            bool   isSuccessful = true;
            string tableName    = string.Empty;
            string ssTableName  = string.Empty;
            var    rb           = new ReportBiz(properties.SiteId);

            try
            {
                var rd   = new ReportData(properties.SiteId);
                var cols = new ColumnDefCollection();
                tableName   = rd.GetTableName(properties.ListId);
                ssTableName = rd.GetTableNameSnapshot(properties.ListId);

                if (!rd.ColumnExists(tableName, properties.Field.InternalName))
                {
                    cols.AddColumn(properties.Field);
                    rd.AddColumns(tableName, cols);
                    rd.AddColumns(ssTableName, cols);
                    rd.InsertListColumns(properties.ListId, cols);
                }
                rd.Dispose();
            }
            catch (Exception ex)
            {
                var DAO = new EPMData(properties.SiteId);
                DAO.LogStatus(properties.ListId.ToString(), properties.FieldName,
                              "Database column add attempt: Unable to add column " + properties.FieldName + ". " + ex.Message,
                              ex.StackTrace, 2, 5, Guid.NewGuid().ToString()); //Logged in the RefreshAll event log.
                DAO.Dispose();
            }

            if (properties.Field is SPFieldLookup)
            {
                try
                {
                    //FOREIGN IMPLEMENTATION -- START
                    var DAO = new EPMData(properties.SiteId);
                    rb.UpdateForeignKeys(DAO);
                    DAO.Dispose();
                    // -- END
                }
                catch (Exception ex)
                {
                    isSuccessful = false;
                    SPSecurity.RunWithElevatedPrivileges(delegate
                    {
                        if (!EventLog.SourceExists("EPMLive Reporting - UpdateForeignKeys"))
                        {
                            EventLog.CreateEventSource("EPMLive Reporting - UpdateForeignKeys", "EPM Live");
                        }

                        LogEntry(ex, "EPMLive Reporting - UpdateForeignKeys");
                    });
                }
            }

            return(isSuccessful);
        }
コード例 #9
0
 /// <summary>
 /// This is a fake method. All the parameters are required, even though not all of them are used
 /// </summary>
 private bool RefreshTimesheetsException(
     EPMData empData,
     out string message,
     Guid jobUid,
     bool consolidationDone)
 {
     throw new Exception();
 }
コード例 #10
0
 /// <summary>
 /// This is a fake method. All the parameters are required, even though not all of them are used
 /// </summary>
 private bool CleanTablesSPSiteEPMDataGuidStringRefFalse(
     SPSite site,
     EPMData epmData,
     Guid jobId,
     ref string error)
 {
     return(false);
 }
コード例 #11
0
        private static void LogStatusLevel2Type3(string shortMsg, string longMsg, EPMData epmData)
        {
            Guard.ArgumentIsNotNull(shortMsg, nameof(shortMsg));
            Guard.ArgumentIsNotNull(longMsg, nameof(longMsg));
            Guard.ArgumentIsNotNull(epmData, nameof(epmData));

            epmData.LogStatus(string.Empty, string.Empty, shortMsg, longMsg, 2, 3, Convert.ToString(timerJobId));
        }
コード例 #12
0
        private static void LogStatusDataCleaning(string shortMsg, string longMsg, EPMData epmData)
        {
            Guard.ArgumentIsNotNull(shortMsg, nameof(shortMsg));
            Guard.ArgumentIsNotNull(longMsg, nameof(longMsg));
            Guard.ArgumentIsNotNull(epmData, nameof(epmData));

            epmData.LogStatus(string.Empty, DataCleaningRefresh, shortMsg, longMsg, 0, 1, string.Empty);
        }
コード例 #13
0
 /// <summary>
 /// This is a fake method. All the parameters are required, even though not all of them are used
 /// </summary>
 private bool UpdateRPTSettings(
     EPMData epmData,
     string nonWorkingDays,
     int workHours,
     out string results)
 {
     results = string.Empty;
     return(true);
 }
コード例 #14
0
        public bool UpdateForeignKeys(EPMData DAO)
        {
            DataTable AllForeignKeysByList = GetAllForeignKeys(DAO);

            //Loop thru list tables and ADD FOREIGN KEYS
            foreach (DataRow AllListForeignKeys in AllForeignKeysByList.Rows)
            {
                //DELETE EXISTING FK's from list table
                DAO.Command =
                    "BEGIN TRY " +
                    "WHILE EXISTS(select * from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where CONSTRAINT_NAME like 'FK_EPMLIVE_%' AND TABLE_NAME=@tableName) " +
                    "BEGIN " +
                    "DECLARE @cName nvarchar(Max) " +
                    "SELECT @cName = (SELECT TOP 1 [CONSTRAINT_NAME] FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE CONSTRAINT_NAME LIKE 'FK_EPMLIVE_%' AND TABLE_NAME=@tableName) " +
                    "DECLARE @sql nvarchar(Max) " +
                    "SELECT @sql = 'ALTER TABLE ' + @tableName + ' DROP CONSTRAINT ' + @cName " +
                    "EXEC sp_executesql @sql " +
                    "END " +
                    "END TRY " +
                    "BEGIN CATCH " +
                    "PRINT 'Error Detected' " +
                    "END CATCH";
                DAO.AddParam("@tableName", AllListForeignKeys["TABLE_NAME"].ToString());
                // - CAT.NET false-positive: All single quotes are escaped/removed.
                DAO.ExecuteNonQuery(DAO.GetClientReportingConnection);

                //DELETE EXISTING FK's from list snapshot table
                DAO.Command =
                    "BEGIN TRY " +
                    "WHILE EXISTS(select * from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where CONSTRAINT_NAME like 'FK_EPMLIVE_%' AND TABLE_NAME=@tableName) " +
                    "BEGIN " +
                    "DECLARE @cName nvarchar(Max) " +
                    "SELECT @cName = (SELECT TOP 1 [CONSTRAINT_NAME] FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE CONSTRAINT_NAME LIKE 'FK_EPMLIVE_%' AND TABLE_NAME=@tableName) " +
                    "DECLARE @sql nvarchar(Max) " +
                    "SELECT @sql = 'ALTER TABLE ' + @tableName + ' DROP CONSTRAINT ' + @cName " +
                    "EXEC sp_executesql @sql " +
                    "END " +
                    "END TRY " +
                    "BEGIN CATCH " +
                    "PRINT 'Error Detected' " +
                    "END CATCH";
                DAO.AddParam("@tableName", AllListForeignKeys["SNAPSHOT_TABLE_NAME"].ToString());
                // - CAT.NET false-positive: All single quotes are escaped/removed.
                DAO.ExecuteNonQuery(DAO.GetClientReportingConnection);

                //ADD FK's to list table
                DAO.Command = AllListForeignKeys["FK_TABLE_SCRIPT"].ToString();
                // - CAT.NET false-positive: All single quotes are escaped/removed.
                DAO.ExecuteNonQuery(DAO.GetClientReportingConnection);

                //ADD FK's to list snapshot table
                DAO.Command = AllListForeignKeys["FK_SNAPSHOT_TABLE_SCRIPT"].ToString();
                // - CAT.NET false-positive: All single quotes are escaped/removed.
                DAO.ExecuteNonQuery(DAO.GetClientReportingConnection);
            }
            return(true);
        }
コード例 #15
0
        private void UpgradeDatabase()
        {
            Guid siteId = SPContext.Current.Site.ID;

            using (var epmData = new EPMData(siteId))
            {
                SPSecurity.RunWithElevatedPrivileges(() => { ExecuteUpgradeScripts(epmData, siteId); });
            }
        }
コード例 #16
0
        public static bool CleanTables(SPSite site, EPMData epmData, Guid jobId, ref string error)
        {
            Guard.ArgumentIsNotNull(site, nameof(site));
            Guard.ArgumentIsNotNull(epmData, nameof(epmData));
            timerJobId = jobId;
            WipeData(DeleteReportListIds, WipeDataId, epmData);
            WipeData(DeleteRptWeb, WipeDataId, epmData);
            WipeData(DeleteRptWebGroups, WipeDataId, epmData);

            var listNames = new DataTable();
            var listIds   = new DataTable();

            listIds.Columns.Add(new DataColumn(Id, typeof(Guid)));
            listIds.Columns.Add(new DataColumn(ListIcon, typeof(string)));

            var  rptWeb      = GetRptWebDataTable();
            var  listIdsTest = new DataTable();
            var  rptWebTest  = new DataTable();
            var  errMsg      = new StringBuilder();
            bool hasError    = false;

            SPSecurity.RunWithElevatedPrivileges(
                delegate
            {
                using (var sqlCommand = new SqlCommand(SelectListTableRptList, epmData.GetClientReportingConnection))
                {
                    using (var adapter = new SqlDataAdapter(sqlCommand))
                    {
                        adapter.Fill(listNames);
                    }

                    LogStatusLevel2Type3(RepopulateId, SelectListTableRptList, epmData);
                }

                using (var spSite = new SPSite(site.ID))
                {
                    foreach (SPWeb spWeb in spSite.AllWebs)
                    {
                        GatherWebInfo(spWeb, rptWeb, spSite);
                        hasError = PopulateRptWebGroups(epmData, spWeb, spSite, errMsg);
                        hasError = GatherValidLists(listNames, spWeb, listIds, hasError, errMsg);
                        spWeb?.Dispose();
                    }

                    hasError = BulkInsertReportListIds(epmData, listIds, errMsg);
                    BulkInsertRptWeb(epmData, rptWeb, ref hasError, errMsg);
                }

                if (CleanLstTables(epmData, listIdsTest, listNames, hasError, errMsg))
                {
                    var finalRecent = GetValidFrfRecentItems(epmData, errMsg, listIdsTest, rptWebTest);
                    BulkInsertFrfRecentItems(epmData, finalRecent, rptWeb, errMsg);
                }
            });
            error = errMsg.ToString();
            return(hasError);
        }
コード例 #17
0
 /// <summary>
 /// This is a fake method. All the parameters are required, even though not all of them are used
 /// </summary>
 private bool RefreshTimesheets(
     EPMData empData,
     out string message,
     Guid jobUid,
     bool consolidationDone)
 {
     RefreshTimeSheetWasCalled = true;
     message = DummyString;
     return(ReturnValue);
 }
コード例 #18
0
 /// <summary>
 /// This is a fake method. All the parameters are required, even though not all of them are used
 /// </summary>
 private bool RefreshTimesheetsBatch(
     EPMData empData,
     out string message,
     Guid jobUid,
     int pageSize)
 {
     RefreshTimeSheetWasCalled = true;
     message = DummyString;
     return(ReturnValue);
 }
コード例 #19
0
        /// <summary>
        /// This is a fake method. All the parameters are required, even though not all of them are used
        /// </summary>
        private bool CleanTablesSPSiteEPMDataGuidStringRefException(
            SPSite site,
            EPMData epmData,
            Guid jobId,
            ref string error)
        {
            const string DummyError = "Dummy Error";

            throw new Exception(DummyError);
        }
コード例 #20
0
        public DataTable GetReferencingTables(EPMData DAO, string sTableName)
        {
            string sql = string.Format("EXEC sp_MSdependencies N'{0}', null, 1315327", sTableName.Replace("'", ""));

            // - CAT.NET false-positive: All single quotes are escaped/removed.
            //string sql = "EXEC sp_MSdependencies N'{0}', null, 1315327";
            DAO.Command = sql;
            //DAO.AddParam("@tableName", sTableName);
            return(DAO.GetTable(DAO.GetClientReportingConnection));
        }
コード例 #21
0
        public void execute(SPSite site, SPWeb web, string data)
        {
            EPMData       epmdata  = null;
            DataTable     dt       = null;
            StringBuilder sbErrors = null;

            try
            {
                sbErrors = new StringBuilder();
                epmdata  = new EPMData(site.ID);

                epmdata.SnapshotLists(base.JobUid, site.ID, data);

                dt = epmdata.GetSnapshotResults(base.JobUid);

                foreach (DataRow dr in dt.Rows)
                {
                    sbErrors.Append("Processing List (" + dr["ListName"] + ")");
                    if (dr["level"].ToString() == "2")
                    {
                        sbErrors.Append(" Failed: " + dr["ShortMessage"]);
                        bErrors = true;
                    }
                    else
                    {
                        sbErrors.Append(" Success");
                    }

                    sbErrors.Append("<br>");
                }
            }
            finally
            {
                sErrors  = sbErrors.ToString();
                sbErrors = null;
                if (dt != null)
                {
                    dt.Dispose();
                }
                if (epmdata != null)
                {
                    epmdata.Dispose();
                }
                if (web != null)
                {
                    web.Dispose();
                }
                if (site != null)
                {
                    site.Dispose();
                }
                data = null;
            }
        }
コード例 #22
0
        private static void WipeData(string deleteQuery, string logMsg, EPMData epmData)
        {
            Guard.ArgumentIsNotNull(deleteQuery, nameof(deleteQuery));
            Guard.ArgumentIsNotNull(logMsg, nameof(logMsg));
            Guard.ArgumentIsNotNull(epmData, nameof(epmData));

            using (var sqlCommand = new SqlCommand(deleteQuery, epmData.GetClientReportingConnection))
            {
                sqlCommand.ExecuteNonQuery();
                LogStatusLevel2Type3(logMsg, deleteQuery, epmData);
            }
        }
コード例 #23
0
        public void Encrypt_ShouldEncryptPlainText_ReturnsString()
        {
            // Arrange
            const string resultKey = "RbOehAehsS7MYbKpbCbvepBVjtlsFbNU";
            var          text      = "This is a test string";

            // Act
            var encryptedString = EPMData.Encrypt(text);

            // Assert
            Assert.AreEqual(resultKey, encryptedString);
        }
コード例 #24
0
        public void Decrypt_ShouldDecryptEncryptedString_ReturnsString()
        {
            // Arrange
            const string encryptedKey = "RbOehAehsS7MYbKpbCbvepBVjtlsFbNU";
            const string resultString = "This is a test string";

            // Act
            var decryptedString = EPMData.Decrypt(encryptedKey);

            // Assert
            Assert.AreEqual(resultString, decryptedString);
        }
コード例 #25
0
        /// <summary>
        ///     Refreshes all.
        /// </summary>
        /// <returns></returns>
        public string RefreshAll()
        {
            try
            {
                using (var epmData = new EPMData(Web.Site.ID))
                {
                    epmData.DeleteWork(Guid.Empty, -1);

                    epmData.Command =
                        "select timerjobuid from timerjobs where siteguid=@siteguid and listguid is null and jobtype=5";
                    epmData.AddParam("@siteguid", Web.Site.ID);

                    object result = epmData.ExecuteScalar(epmData.GetEPMLiveConnection);

                    Guid timerJobId = Guid.Empty;

                    if (result != null)
                    {
                        timerJobId = (Guid)result;
                    }
                    else
                    {
                        timerJobId = Guid.NewGuid();

                        epmData.Command =
                            "INSERT INTO TIMERJOBS (siteguid, jobtype, jobname, scheduletype, webguid, timerjobuid) VALUES (@siteguid, 5, 'Reporting Refresh All', 2, @webguid, @timerjobuid)";
                        epmData.AddParam("@siteguid", Web.Site.ID);
                        epmData.AddParam("@webguid", Web.ID);
                        epmData.AddParam("@timerjobuid", timerJobId);

                        epmData.ExecuteNonQuery(epmData.GetEPMLiveConnection);
                    }

                    if (timerJobId != Guid.Empty)
                    {
                        CoreFunctions.enqueue(timerJobId, 0, Web.Site);
                    }
                }

                return("<RefreshAll><Data/></RefreshAll>");
            }
            catch (APIException)
            {
                throw;
            }
            catch (Exception exception)
            {
                throw new APIException((int)Errors.RefreshAll, exception.GetBaseException().Message);
            }
        }
コード例 #26
0
        public void LogWindowsEvents_ShouldCreateEventLog_WriteEntry()
        {
            using (ShimsContext.Create())
            {
                // Arrange
                FakesForSpSecurity();
                FakesForConstructor();
                SetupParameters();

                var guid    = Guid.NewGuid();
                var epmData = new EPMData(guid);
                _privateObject = new PrivateObject(epmData);

                var fullSourceResult   = string.Empty;
                var eventMessageResult = string.Empty;
                var entryTypeResult    = EventLogEntryType.SuccessAudit;
                var eventIdResult      = 0;

                ShimEventLog.SourceExistsString = source =>
                {
                    fullSourceResult = source;
                    return(false);
                };

                ShimEventLog.CreateEventSourceStringString = (source, logName) => { };
                ShimEventLog.ConstructorString             = (_, logName) => new ShimEventLog();

                ShimEventLog.AllInstances.SourceSetString          = (_, source) => { };
                ShimEventLog.AllInstances.MaximumKilobytesSetInt64 = (_, maxValue) => { };
                ShimEventLog.AllInstances.MachineNameSetString     = (_, machineName) => { };
                ShimEventLog.AllInstances.ModifyOverflowPolicyOverflowActionInt32 = (_, action, days) => { };
                ShimEventLog.AllInstances.WriteEntryStringEventLogEntryTypeInt32  = (log, eventMessage, entryType, eventId) =>
                {
                    eventMessageResult = eventMessage;
                    entryTypeResult    = entryType;
                    eventIdResult      = eventId;
                };

                // Act
                _privateObject.Invoke(LogWindowsEventsMethod, _logName, _source, _eventMessage, true, _eventId);

                // Assert
                var fullSource = $"{EpmLiveReportingKey} - {_source}";
                Assert.AreEqual(fullSourceResult, fullSource);
                Assert.AreEqual(eventMessageResult, _eventMessage);
                Assert.AreEqual(entryTypeResult, EventLogEntryType.Error);
                Assert.AreEqual(eventIdResult, _eventId);
            };
        }
コード例 #27
0
        private void FillData()
        {
            string reportingListIDs = string.Empty;
            Guid   siteId           = SPContext.Current.Site.ID;
            SPWeb  spweb            = null;
            var    rd         = new ReportData(siteId);
            var    daoEPMData = new EPMData(siteId);

            LoadLists(rd.GetListMappings());
            using (var spSite = new SPSite(siteId))
            {
                if (reportingV2Enabled)
                {
                    spweb = SPContext.Current.Web;
                }
                else
                {
                    spweb = spSite.OpenWeb();
                }
            }

            string defaultLists  = daoEPMData.DefaultLists(spweb);
            string _DefaultLists = CoreFunctions.getConfigSetting(spweb, "EPMLiveFixLists").Replace("\r\n", ",");

            var dtReportData = new DataTable();

            using (var spSite = new SPSite(siteId))
            {
                SPListCollection lists = spweb.Lists;
                foreach (SPList list in lists)
                {
                    if ((!list.Hidden && IsReportingList(list.Title)) || defaultLists.Contains(list.Title) ||
                        _DefaultLists.Contains(list.Title))
                    {
                        reportingListIDs += "'" + list.ID + "',";
                    }
                }

                if (!string.IsNullOrEmpty(reportingListIDs))
                {
                    reportingListIDs = reportingListIDs.Substring(0, reportingListIDs.Length - 1);
                }

                DataView mappings = rd.GetListMappings(reportingListIDs).DefaultView;
                GridView1.DataSource = mappings;
                GridView1.DataBind();
                rd.Dispose();
            }
        }
コード例 #28
0
        private string GetRefLists(DataTable refTables, EPMData dao)
        {
            string sRefLists = string.Empty;

            foreach (DataRow table in refTables.Rows)
            {
                if (!table["oObjName"].ToString().ToLower().Contains("snapshot"))
                {
                    sRefLists = sRefLists + dao.GetListName(table["oObjName"].ToString()) + ",";
                }
            }

            sRefLists = sRefLists.Remove(sRefLists.LastIndexOf(","));
            return(sRefLists);
        }
コード例 #29
0
        public void BulkInsertTest()
        {
            using (SPEmulators.SPEmulationContext ctx = new SPEmulators.SPEmulationContext(SPEmulators.IsolationLevel.Fake))
            {
                ShimEPMData.ConstructorGuid = (instance, _guid) =>
                {
                };
                ShimEPMData.AllInstances.LogStatusStringStringStringStringInt32Int32String = (String1, String2, String3, String4, Int321, Int322, String5, _bool) => { return(true); };
                ShimSqlConnection.AllInstances.BeginTransaction = (instance) => { return(new ShimSqlTransaction()
                    {
                        Commit = () => { }, DisposeBoolean = (_bool) => { }, Rollback = () => { }
                    }); };
                ShimSqlBulkCopy.ConstructorSqlConnectionSqlBulkCopyOptionsSqlTransaction = (_a, _b, _c, _d) =>
                {
                };
                ShimSqlBulkCopy.AllInstances.Close                  = (instance) => { };
                ShimSqlBulkCopy.AllInstances.NotifyAfterGet         = (instance) => { return(0); };
                ShimSqlBulkCopy.AllInstances.WriteToServerDataTable = (instance, _dt) => { };
                ShimSqlBulkCopy.AllInstances.ColumnMappingsGet      = (instance) => { return(new ShimSqlBulkCopyColumnMappingCollection()
                    {
                        AddStringString = (_string, str) => { return new ShimSqlBulkCopyColumnMapping(); }
                    }); };
                DataSet   ds = new DataSet();
                DataTable dt = new DataTable();
                dt.Columns.Add("TestColumn");
                ds.Tables.Add(dt);
                EPMData epmdata = new EPMData(Guid.NewGuid());
                string  message = string.Empty;

                using (TestCheck.OpenCloseConnections)
                {
                    //Act
                    var result = epmdata.BulkInsert(ds, true, out message);
                    //Assert
                    Assert.AreEqual(true, result);
                }

                using (TestCheck.OpenCloseConnections)
                {
                    //Act
                    var result = epmdata.BulkInsert(ds, Guid.NewGuid());

                    //Assert
                    Assert.AreEqual(true, result);
                }
            }
        }
コード例 #30
0
        private static void BulkInsertFrfRecentItems(EPMData epmData, DataTable finalRecent, DataTable rptWeb, StringBuilder errMsg)
        {
            Guard.ArgumentIsNotNull(epmData, nameof(epmData));
            Guard.ArgumentIsNotNull(finalRecent, nameof(finalRecent));
            Guard.ArgumentIsNotNull(rptWeb, nameof(rptWeb));
            Guard.ArgumentIsNotNull(errMsg, nameof(errMsg));

            if (finalRecent.Rows.Count > 0)
            {
                LogStatusLevel2Type3(BulkInsertFrfRecentItemsId, StartBulkInsertFrfRecentItems, epmData);

                try
                {
                    using (var beginTransaction = epmData.GetEPMLiveConnection.BeginTransaction())
                    {
                        using (var sqlBulkCopy = new SqlBulkCopy(epmData.GetEPMLiveConnection, new SqlBulkCopyOptions(), beginTransaction))
                        {
                            sqlBulkCopy.DestinationTableName = FrfTableName;
                            Action <string> addColumnMappings = (columnName) => sqlBulkCopy.ColumnMappings.Add(columnName, columnName);

                            addColumnMappings(FrfId);
                            addColumnMappings(SiteId1);
                            addColumnMappings(WebId1);
                            addColumnMappings(ListId);
                            addColumnMappings(ItemId1);
                            addColumnMappings(UserId);
                            addColumnMappings(Title);
                            addColumnMappings(IconText);
                            addColumnMappings(TypeText);
                            addColumnMappings(FString);
                            addColumnMappings(FDate);
                            addColumnMappings(FInt);
                            sqlBulkCopy.WriteToServer(rptWeb);
                        }

                        beginTransaction.Commit();
                    }

                    LogStatusLevel2Type3(BulkInsertFrfRecentItemsId, CompleteBulkInsertFrfRecentItems, epmData);
                }
                catch (Exception exception)
                {
                    LogStatusDataCleaning($"Error cleaning lst tables. Error: {exception.Message}", errMsg.ToString(), epmData);
                    Trace.WriteLine(exception);
                }
            }
        }