示例#1
0
		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();
			}
示例#2
0
		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;
			}
示例#3
0
		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);

			}
示例#4
0
		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;
			}
示例#5
0
		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;
			}
示例#6
0
		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}");
			}
示例#7
0
		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;
			}