public void PreloadAllRelatedEntries(AddOnDataToReProcess addOnDataToReProcess) { if (PreloadHasBeenDoneBefore) return; PreloadHasBeenDoneBefore = true; List<Guid> involvedBannerId = addOnDataToReProcess.EntriesToReProcess.Select(sel => sel.Id).ToList(); AllBannerToProcess = Data.DbServer3.WPMediaAddOnData .BannerDatas.Load_via_Ids(involvedBannerId); PreloadAllRelatedEntries(); }
public DateTime ReprocessAllPreloaded(ref int processedCounter) { AddOnDataToReProcess packageToProcess = new AddOnDataToReProcess(Parent, Data.DbServer3.MultiMedia.MMUnitTypen.Find_By_Name("BannerData")); packageToProcess.CsTableToProcess = Data.DbServer3.WPMediaAddOnData .BannerDatas; DateTime highestProcessedDateTime = DateTime.MinValue; foreach (BannerData bannerData in AllBannerToProcess.ToArray()) { if (highestProcessedDateTime < (DateTime) bannerData.ModifyTimeStamp) highestProcessedDateTime = (DateTime) bannerData.ModifyTimeStamp; CheckOrCreateMMUnitsAndTimings(bannerData); processedCounter++; } Data.DbServer3.WPMediaAddOnData.BannerDatas.AcceptChanges(); return highestProcessedDateTime; }
public void ConvertToMMUnits(AddOnDataToReProcess addOnDataToReProcess, bool CheckBeforeRefresh = true, Guid? TestStartId = null) { String[] columnNames = addOnDataToReProcess.CsTableToProcess.Columns.OfType<DataColumn>() .Select(x => x.ColumnName).ToArray(); PreloadAllRelatedEntries(addOnDataToReProcess); int processedCounter = -1; ReprocessAllPreloaded(ref processedCounter); }
public bool ConvertToMMUnits(AddOnDataToReProcess addOnDataToReProcess, bool CheckBeforeRefresh = true, Guid? TestStartId = null) { bool RestartRequested = false; //ClearAllForAllMMUnitLocally(); String[] columnNames = addOnDataToReProcess.CsTableToProcess.Columns.OfType<DataColumn>() .Select(x => x.ColumnName).ToArray(); List<Guid> mmUnitIdsToCheck = addOnDataToReProcess.EntriesToReProcess.Select(sel => sel.Id).ToList(); Data.DbServer3.MultiMedia.PreLoadAllForAllMMUnits(mmUnitIdsToCheck); DateTime highestCheckDate = DateTime.MinValue; bool ContinueBefore = true; foreach (ReProcessEntry reProcessEntry in addOnDataToReProcess.EntriesToReProcess) //new List<Guid>() { Guid.Parse("5CE883D6-36A2-45D3-8216-C8D2C35553D5") }) { if (reProcessEntry.LastModifiedTimeToUse == null) throw new Exception($"reProcessEntry.DBTimeStampToConfirm == null - {addOnDataToReProcess.CsTableToProcess.TableName} - {reProcessEntry.Id}"); addOnDataToReProcess.SetDBProcessDone(reProcessEntry); WMB.Basics.DoEvents(); if (TestStartId != null) { if (reProcessEntry.Id == TestStartId) ContinueBefore = false; if (ContinueBefore) continue; } reProcessEntry.InsertAsLastProcessed(); MMUnit mmUnit = null; mmUnit = Data.DbServer3.MultiMedia.MMUnits.Find(reProcessEntry.Id); if (!reProcessEntry.RecreationRequired) { if ((mmUnit != null) && ((addOnDataToReProcess.StatusEntry != null) && (mmUnit.Version >= addOnDataToReProcess.StatusEntry.Version))) { Information informationInstance = GetOrCreateInformationFromTabellenId (mmUnit.MMForeignUnitTyp.TypNameId, mmUnit.ForeignUnitId); bool? UpdateRequired = Parent.UpdateForMMUnitsForInformationenIsRequired(informationInstance, mmUnit); if ((UpdateRequired != null) && (UpdateRequired == false)) { //by sac - not knowing what to do //continue; } } } if (!DoDataBaseConversion(addOnDataToReProcess, reProcessEntry, columnNames)) continue; //List<String> SelectedStatementsForPreLoad = null; //if (!Data.DbServer3.MultiMedia.PreLoadAllForOneMMUnit(reProcessEntry.Id, out SelectedStatementsForPreLoad)) // { // WMB.Basics.ReportErrorToEventViewer($"Fehler bei PreLoadAllForOneMMUnit:\r\n" + // $"{String.Join("\r\n", SelectedStatementsForPreLoad)}"); // continue; // } mmUnit = Data.DbServer3.MultiMedia.MMUnits.Find(reProcessEntry.Id); if (mmUnit == null) continue; if (mmUnit.MMUnitTyp.TypNameId == "Beitraege") continue; Graphics.InstantiatePackageFromServerForRead(mmUnit.MMUnitTyp.TypNameId, $"{reProcessEntry.Id}"); if (Graphics == null) continue; // List<BitmapSource> PageBilder = Graphics.GetFinalPictures(); int NewCount = Data.DbServer3.MultiMedia.MMParts .Where(sel => sel.MMUnit == mmUnit && sel.SortOrder > 0).Count(); int OldCount = Graphics.GetNumberOfPages(); if (NewCount != OldCount) { WMB.Basics.ReportErrorToEventViewer($"Bei {Data.DbServer3.MultiMedia.MMUnits.Find(reProcessEntry.Id).MMUnitTyp.TypNameId}\r\n" + $"Id = {reProcessEntry.Id}\r\n" + $"NameID = {Data.DbServer3.MultiMedia.MMUnits.Find(reProcessEntry.Id).NameId}\r\n" + $"NewCount = {NewCount}, OldCount = {OldCount}"); Parent.ClearAllConnectedForAllMMUnitLocally(new List<Guid>() { reProcessEntry.Id }); continue; } // throw new Exception("Number Of Playable Pages Error"); int pageIndex = 0; foreach (MMPart mmPart in Data.DbServer3.MultiMedia.MMParts.Where(sel => sel.MMUnit == mmUnit && sel.SortOrder > 0) .OrderBy(sor => sor.SortOrder)) { mmPart.OldPageIDToPlay = Guid.Parse(Graphics.PageIDsToPlay[pageIndex]); mmPart.PlayingDuration = (float)Graphics.PageDurations[pageIndex++]; int processingOrder = 0; DataRow[] frameContentRows = Graphics.FrameDataDataSetReader.Tables["FrameContent"] .Select($"PageID = '{mmPart.OldPageIDToPlay}'", "FrameOrder"); foreach (DataRow frameContentRow in frameContentRows) { //if (mmPart.SortOrder.Value != -1) // if ((Convert.ToInt32(frameContentRow["MultiPageIndex"]) != -1) // && (Convert.ToInt32(frameContentRow["MultiPageIndex"]) != mmPart.SortOrder.Value)) // continue; if ((Convert.ToInt32(frameContentRow["MultiPageIndex"]) != -1) && (Convert.ToInt32(frameContentRow["MultiPageIndex"]) != pageIndex)) continue; String TableName = frameContentRow["TableName"].ToString(); String ItemName = frameContentRow["ItemName"].ToString(); String PictureName = frameContentRow["PictureName"].ToString(); String PictureFileName = frameContentRow["PictureFileName"].ToString(); String NameID = frameContentRow[nameof(NameID)].ToString(); String VideoBeitragsID = String.Empty; String VideoFileName = String.Empty; if ((frameContentRow.Table.Columns.Contains("VideoBeitragsID")) && (frameContentRow.Table.Columns.Contains("VideoFileName"))) { VideoBeitragsID = frameContentRow["VideoBeitragsID"].ToString(); VideoFileName = frameContentRow["VideoFileName"].ToString(); } String Command = String.Empty; if (frameContentRow.Table.Columns.Contains("Command")) Command = frameContentRow["Command"].ToString(); if ( (String.IsNullOrEmpty(TableName)) && (String.IsNullOrEmpty(ItemName)) && (String.IsNullOrEmpty(PictureName)) && (String.IsNullOrEmpty(PictureFileName)) && (String.IsNullOrEmpty(VideoBeitragsID)) && (String.IsNullOrEmpty(VideoFileName)) && (String.IsNullOrEmpty(NameID)) && (String.IsNullOrEmpty(Command)) ) continue; DataRow[] frameRows = Graphics.FrameDataDataSetReader.Tables["Frames"] .Select($"ID = '{frameContentRow["FrameID"]}'"); if (frameRows.Length != 1) continue; if (frameRows.Length > 1) throw new Exception("frameRows.Length > 1"); MMPartsElementeLayoutConnector connector = InsertOrSkipMMElement (mmPart, pageIndex, frameContentRow, frameRows[0]); if (connector == null) continue; connector.ProcessingOrder = processingOrder++; } } try { Data.DbServer3.MultiMedia.SaveAnabolic(new Object()); Data.DbServer3.MultiMedia.AcceptChanges(); CreatePartAndUnitThumbNails(reProcessEntry.Id); Data.DbServer3.MultiMedia.MMUnits.Find(reProcessEntry.Id).Version = DataConversion.ActiveSoftwareVersion; Data.DbServer3.MultiMedia.SaveAnabolic(new Object()); Data.DbServer3.MultiMedia.AcceptChanges(); reProcessEntry.SetPKGProcessDone(); } catch (Exception Excp) { WMB.Basics.ReportErrorToEventViewer($"DB Fehler bei {reProcessEntry.Id}\r\n" + $"in der Tabelle {reProcessEntry.Parent.MMUnitTypToProcess.TypNameId}\r\n" + $"iBeim Eintrag {reProcessEntry.NameId}\r\n" + $"Inner Exception is\r\n{Excp}"); } Parent.ClearAllConnectedForAllMMUnitLocally(new List<Guid>() { reProcessEntry.Id }); } if ((addOnDataToReProcess.EntriesToReProcess.Count > 0) && (Data.DbServer3.MultiMedia.GetChanges() != null)) // handle deleting MMUnits with no corresponding WPMediaAddOnDataEntry { Data.DbServer3.MultiMedia.SaveKatabolic(new Object()); Data.DbServer3.MultiMedia.AcceptChanges(); } return RestartRequested; }
private bool DoDataBaseConversionStandBildUndBanner(AddOnDataToReProcess addOnDataToReProcess, ReProcessEntry reProcessEntry, String[] columnNames) { DataRow[] standBildDataRow = addOnDataToReProcess .CsTableToProcess.Select($"{addOnDataToReProcess.IdColumnName} = '{reProcessEntry.Id}'", "ModifyTimeStamp"); if (standBildDataRow.Length == 0) { if (Data.DbServer3.MultiMedia.MMUnits.Find(reProcessEntry.Id) != null) Data.DbServer3.MultiMedia.MMUnits.Find(reProcessEntry.Id).Delete(); return false; } DataRow row = standBildDataRow[0]; Guid id = (Guid)row[addOnDataToReProcess.IdColumnName]; DateTime actuallCheckDate = Convert.ToDateTime(row["ModifyTimeStamp"]); if (actuallCheckDate > addOnDataToReProcess.StatusEntry.LastProcessedForeignLastChangedTimeStamp) addOnDataToReProcess.StatusEntry.LastProcessedForeignLastChangedTimeStamp = actuallCheckDate; MMUnit MMUnitEntry = Data.DbServer3.MultiMedia.MMUnits.Find(id); if (MMUnitEntry != null) { try { List<String> SelectedStatementsForPreLoad = null; //if (!Data.DbServer3.MultiMedia.PreLoadAllForOneMMUnit(reProcessEntry.Id, out SelectedStatementsForPreLoad)) // { // WMB.Basics.ReportErrorToEventViewer($"Fehler bei PreLoadAllForOneMMUnit:\r\n" + // $"{String.Join("\r\n", SelectedStatementsForPreLoad)}"); // return false; // } //Data.DbServer3.MultiMedia.AcceptChanges(); MMUnitEntry.Delete(); Data.DbServer3.MultiMedia.MMUnits.SaveChanges(new Object()); Data.DbServer3.MultiMedia.AcceptChanges(); } catch (Exception Excp) { WMB.Basics.ReportErrorToEventViewer($"Fehler bei Delete in PreLoadAllForOneMMUnit:\r\n" + $"{Excp}"); return false; } } MMUnitEntry = Data.DbServer3.MultiMedia.MMUnits.NewRow(); MMUnitEntry.Id = id; MMUnitEntry.TypId = addOnDataToReProcess.MMUnitTypToProcess.Id; MMUnitEntry.ForeignUnitId = id; MMUnitEntry.ForeignUnitTypId = addOnDataToReProcess.MMUnitTypToProcess.Id; //Data.DbServer3.MultiMedia.MMUnits.Rows.Add(MMUnitEntry); MMUnitEntry.NameId = row[addOnDataToReProcess.NameIdColumnName].ToString(); MMUnitEntry.Title = row[addOnDataToReProcess.TitelColumnName].ToString(); if (reProcessEntry.LastModifiedTimeToUse != null) MMUnitEntry.LastModified = reProcessEntry.LastModifiedTimeToUse; else if ((columnNames.Contains("ModifyTimeStamp")) && (row["ModifyTimeStamp"] != Convert.DBNull)) MMUnitEntry.LastModified = Convert.ToDateTime(row["ModifyTimeStamp"]); ProcessConnector[] connectors = Data.DbServer3.AltErlaaInfo.ProcessConnectoren .FindOrLoad_By_TableId(id); if ((connectors != null) && (connectors.Length > 0)) { connectors[0].ModifyTimeStampForConnectedMMUnit = MMUnitEntry.LastModified; if (Parent.CheckOrInsertMMInformation((Guid)connectors[0].InformationenId)) MMUnitEntry.MMInformationenId = connectors[0].InformationenId; } else { new InformationConversion().CreateWPMediaAddOnDataDummyInformation(MMUnitEntry, true); } //TODO by sac // Data.DbServer3.MultiMedia.SaveAnabolic(); //Data.DbServer3.MultiMedia.AcceptChanges(); MMUnitEntry.Table.Rows.Add(MMUnitEntry); ImportMMElemente(addOnDataToReProcess.MMUnitTypToProcess, id, row, columnNames); Data.DbServer3.MultiMedia.SaveAnabolic(new Object()); Data.DbServer3.MultiMedia.AcceptChanges(); reProcessEntry.SetDBProcessDone(); return true; }
private bool DoDataBaseConversion(AddOnDataToReProcess addOnDataToReProcess, ReProcessEntry reProcessEntry, String[] columnNames) { switch (addOnDataToReProcess.MMUnitTypToProcess.Redaktion) { case "Video": throw new Exception($"return DoDataBaseConversionBeitraege " + $"(addOnDataToReProcess, reProcessEntry, columnNames); "); break; case "StandBild": return DoDataBaseConversionStandBildUndBanner (addOnDataToReProcess, reProcessEntry, columnNames); break; case "Banner": return DoDataBaseConversionStandBildUndBanner (addOnDataToReProcess, reProcessEntry, columnNames); break; } throw new Exception($"unknown Redaktion {addOnDataToReProcess.MMUnitTypToProcess.Redaktion}"); }
private bool RunAsNewTechnicalVersion(AddOnDataToReProcess NewAddOnData) { int NumberOfOldFormattedRecords = Data.DbServer3.MultiMedia.MMUnits.Count(sel => sel.ForeignUnitTypId == NewAddOnData.MMUnitTypToProcess.Id && sel.Version < NewAddOnData.StatusEntry.Version && sel.Version != -1); if (NumberOfOldFormattedRecords == 0) { NewAddOnData.StatusEntry.RunAsVersionUpdate = false; return false; } DataTable RowsToProcessTable = Data.DbServer3.MultiMedia.DbProxy.ExecuteCommand ($"select top (200) Id, NameId, Version, LastModified from " + $"{MMUnitsTable.NativeName} where {MMUnitsTable.ForeignUnitTypIdCol} " + $"= '{NewAddOnData.MMUnitTypToProcess.Id}' and Version < {NewAddOnData.StatusEntry.Version} " + $"order by LastModified "); foreach (DataRow AddOnRow in RowsToProcessTable.Rows) { Guid Id = (Guid)AddOnRow["Id"]; String NameId = AddOnRow["NameId"].ToString(); CheckAndInsertOrSkipEntry(NewAddOnData.EntriesToReProcess, new ReProcessEntry(NewAddOnData, Id, NameId, Convert.ToDateTime(AddOnRow ["ModifyTimeStamp"]) , null)); } NewAddOnData.StatusEntry.RunAsVersionUpdate = true; return true; }