private bool RefreshInternetPictures (PkgFileEntryData Entry) { DataSet TimingsDataSet = DataBaseFromName ["WPMediaAddOnData"].GetCommonDataSet (String.Format ("Select * from Timings where ConnectedID = '{0}' and TimingTypID = 'VonBis'", Entry.ID)); List<String> TimingPraefixes = new List<string> (); foreach (DataRow TimingRow in TimingsDataSet.Tables ["Timings"].Rows) { String Praefix = String.Empty; if (Convert.ToDateTime (TimingRow ["TimeA"]) > DateTime.Now.AddDays (1).Date) Praefix = Convert.ToDateTime (TimingRow ["TimeB"]).ToString ("yyyy_MM_dd_"); // to indicate Future Picture else Praefix = Convert.ToDateTime (TimingRow ["TimeB"]).ToString ("yyyy_MM_dd_"); // to indicate actuall picture TimingPraefixes.Add (Praefix); } if (TimingPraefixes.Count == 0) TimingPraefixes.Add ("1990_01_01_"); String RootDirectory = Path.Combine (FilePathToInternetPicturesForPkgs, Entry.TableName); if (!Directory.Exists (RootDirectory)) Directory.CreateDirectory (RootDirectory); if ((Entry.ActuallTablePkgFileInfo == null) && (Entry.OldTablePkgFileInfo == null)) return false; List<System.Windows.Media.Imaging.BitmapSource> PictureList = GetPicturesFromPackage (((Entry.ActuallTablePkgFileInfo != null) ? Entry.ActuallTablePkgFileInfo.FullName : Entry.OldTablePkgFileInfo.FullName), new System.Windows.Size (200, 100), true); if ((PictureList == null) || (PictureList.Count == 0)) return false; List<String> WrittenFilrNames = new List<string> (); foreach (String TimingPraefix in TimingPraefixes) { int PictureIndex = 0; while (PictureIndex < PictureList.Count / 2) { BitmapSource ThumbPicture = PictureList [PictureIndex * 2]; BitmapSource FullPicture = PictureList [(PictureIndex * 2) + 1]; List<String> Names = GetNamesForInternetStandBildTV (RootDirectory, Entry.ID, TimingPraefix, PictureIndex); Basics.StoreOrModifyJpgPicture (FullPicture, Names [0]); FileInfo HelperInfo = new FileInfo (Names [0]); HelperInfo.CreationTime = HelperInfo.LastWriteTime = HelperInfo.LastAccessTime = DateTime.Now; //JpegBitmapEncoder JpgDiskEncoder = new JpegBitmapEncoder (); //JpgDiskEncoder.Frames.Add (BitmapFrame.Create (Picture)); PictureIndex++; } } PictureList.Clear (); List<String> AllFilesForThisID = Basics.GetFilesFromDirectory (RootDirectory, new String [] { "*_" + Entry.ID + "*.*" }, -1); foreach (String FileNameToCheck in AllFilesForThisID) { String TimingPart = Path.GetFileNameWithoutExtension (FileNameToCheck).Substring (0, 11); if (TimingPart == "1990_01_01_") continue; if (TimingPraefixes.Contains (TimingPart)) continue; String FileNameToDelete = FileNameToCheck; //Basics.ReportInformationToEventViewer ("WPMediaCentralServices.WriteOrRewritePicturesFor", // "Wegen fehlendem Timing zu löschen:\r\n\"" + FileNameToDelete + "\""); Basics.SecureFileDelete (FileNameToDelete); } return true; }
public Dictionary<String, PkgFileEntryData> GetNotActuallPkgFileEntryData (DataTable ActiveKarteiEntries, String TableName, DateTime ThreshHoldUseModifiedLaterThan) { Dictionary<String, PkgFileEntryData> Result = new Dictionary<string, PkgFileEntryData> (); List<FileInfo> ActuallTablePkgFileNames = null; List<FileInfo> OldTablePkgFileNames = null; List<FileInfo> InternetFileNames = null; try { ActuallTablePkgFileNames = Basics.GetFileInfoEntriesFromDirectory (Path.Combine (FilePathToActuallPkgs, TableName), new String [] { "*.pkg" }, -1, ThreshHoldUseModifiedLaterThan, false); OldTablePkgFileNames = Basics.GetFileInfoEntriesFromDirectory (Path.Combine (FilePathToOldPkgs, TableName), new String [] { "*.pkg" }, -1, ThreshHoldUseModifiedLaterThan, false); InternetFileNames = Basics.GetFileInfoEntriesFromDirectory (Path.Combine (FilePathToInternetPicturesForPkgs, TableName), new String [] { "*.jpg" }, -1, ThreshHoldUseModifiedLaterThan, false); } catch (Exception Excp) { Basics.ReportErrorToEventViewer ("DataWrapper.GetNotActuallPkgFileEntryData", "Fehler beim heraussuchen der Files aus \r\n" + Path.Combine (FilePathToActuallPkgs, TableName) + "\r\n" + Path.Combine (FilePathToOldPkgs, TableName) + "\r\n" + Path.Combine (FilePathToInternetPicturesForPkgs, TableName) + "Fehler:\r\n" + Excp.ToString ()); return null; } try { foreach (DataRow KarteiRow in ActiveKarteiEntries.Rows) { String KerteiID = KarteiRow ["ID"].ToString ().ToLower (); if (!Result.ContainsKey (KerteiID)) Result [KerteiID] = new PkgFileEntryData () { TableName = TableName, ID = KerteiID, LastModifyTimeStampInTable = ((KarteiRow ["ModifyTimeStamp"] == Convert.DBNull) ? DateTime.Parse ("2000-01-01") : Convert.ToDateTime (KarteiRow ["ModifyTimeStamp"])) }; } foreach (FileInfo Info in OldTablePkgFileNames) { String ID = Path.GetFileNameWithoutExtension (Info.FullName).ToLower (); if (Result.ContainsKey (ID)) Result [ID].OldTablePkgFileInfo = Info; else Result [ID] = new PkgFileEntryData () { OldTablePkgFileInfo = Info }; } foreach (FileInfo Info in ActuallTablePkgFileNames) { String ID = Path.GetFileNameWithoutExtension (Info.FullName).ToLower (); if (Result.ContainsKey (ID)) Result [ID].ActuallTablePkgFileInfo = Info; else Result [ID] = new PkgFileEntryData () { ActuallTablePkgFileInfo = Info }; } foreach (FileInfo Info in InternetFileNames) { String FileName = Path.GetFileNameWithoutExtension (Info.FullName).ToLower (); String ID = FileName.Substring (11, 36).ToLower( ); bool IsThumb = (FileName.IndexOf ("_thumb", StringComparison.InvariantCultureIgnoreCase) != -1); if (Result.ContainsKey (ID)) { if (IsThumb) Result [ID].InternetThumbFileInfo = Info; else Result [ID].InternetFileInfo = Info; } else { if (IsThumb) Result [ID] = new PkgFileEntryData () { InternetThumbFileInfo = Info }; else Result [ID] = new PkgFileEntryData () { InternetFileInfo = Info }; } } } catch (Exception Excp) { Basics.ReportErrorToEventViewer ("DataWrapper.GetNotActuallPkgFileEntryData", "Fehler beim befüllen der FileEntryData \r\n" + Path.Combine (FilePathToActuallPkgs, TableName) + "\r\n" + Path.Combine (FilePathToOldPkgs, TableName) + "\r\n" + Path.Combine (FilePathToInternetPicturesForPkgs, TableName) + "Fehler:\r\n" + Excp.ToString ()); return null; } Dictionary<String,Int32> ErrorCounter = new Dictionary<String, Int32> (); List<String> EntriesToDelete = new List<string> (); try { foreach (String Key in Result.Keys) { PkgFileEntryData Entry = Result [Key]; try { Entry.ID = Key; Entry.TableName = TableName; if (Entry.IsActuall ()) EntriesToDelete.Add (Key); else { if (ErrorCounter.ContainsKey (Enum.GetName (typeof (PkgFileEntryData.ErrorReasons), Entry.Reason))) ErrorCounter [Enum.GetName (typeof (PkgFileEntryData.ErrorReasons), Entry.Reason)]++; else ErrorCounter [Enum.GetName (typeof (PkgFileEntryData.ErrorReasons), Entry.Reason)] = 1; } } catch (Exception Excp) { Basics.ReportErrorToEventViewer ("DataWrapper.GetNotActuallPkgFileEntryData", "Fehler beim Delete von Key \r\n\"" + Key + "\"\r\nFehler:\r\n" + Excp.ToString ()); return null; } } foreach (String KeyToDelete in EntriesToDelete) Result.Remove (KeyToDelete); } catch (Exception OuterExcp) { Basics.ReportErrorToEventViewer ("DataWrapper.GetNotActuallPkgFileEntryData", "Fehler bei Loop\r\nFehler:\r\n" + OuterExcp.ToString ()); return null; } return Result; }
public bool CheckPackageAgainstInternetPictures (PkgFileEntryData Entry) { switch (Entry.Reason) { case PkgFileEntryData.ErrorReasons.MissingInternetFiles: case PkgFileEntryData.ErrorReasons.ThumbsAndPicturesMismatch: case PkgFileEntryData.ErrorReasons.PackageYoungerThanPictures: return RefreshInternetPictures (Entry); break; case PkgFileEntryData.ErrorReasons.MissingPackages: case PkgFileEntryData.ErrorReasons.PackageOlderThanTableOrNoTableEntry: return false; default: return false; } }
public Dictionary<String, PkgFileEntryData> GetPkgFileEntryData (Dictionary<String, List<FileInfo>> ExistingInternetJPGFileInfos, DataTable ActiveKarteiEntries, String TableName, DateTime ThreshHoldUseModifiedLaterThan) { Dictionary<String, PkgFileEntryData> CumulativeEntriesForTable = new Dictionary<string, PkgFileEntryData> (); List<FileInfo> ActuallTablePkgFileNames = null; List<FileInfo> OldTablePkgFileNames = null; List<FileInfo> InternetFileNames = null; try { ActuallTablePkgFileNames = Basics.GetFileInfoEntriesFromDirectory (Path.Combine (FilePathToActuallPkgs, TableName), new String [] { "*.pkg" }, -1, ThreshHoldUseModifiedLaterThan, false); OldTablePkgFileNames = Basics.GetFileInfoEntriesFromDirectory (Path.Combine (FilePathToOldPkgs, TableName), new String [] { "*.pkg" }, -1, ThreshHoldUseModifiedLaterThan, false); } catch (Exception Excp) { Basics.ReportErrorToEventViewer ("DataWrapper.GetNotActuallPkgFileEntryData", "Fehler beim heraussuchen der Files aus \r\n" + Path.Combine (FilePathToActuallPkgs, TableName) + "\r\n" + Path.Combine (FilePathToOldPkgs, TableName) + "\r\n" + Path.Combine (FilePathToInternetPicturesForPkgs, TableName) + "Fehler:\r\n" + Excp.ToString ()); return null; } try { foreach (DataRow KarteiRow in ActiveKarteiEntries.Rows) // fill all from DataBase Table { String KarteiID = KarteiRow ["ID"].ToString ().ToLower (); int NumberOfPages = 0; if (KarteiRow ["NumberOfPages"] != Convert.DBNull) NumberOfPages = Convert.ToInt32 (KarteiRow ["NumberOfPages"]); //if (NumberOfPages == -1) // continue; String KarteiNameID = KarteiRow ["NameID"].ToString (); if (!CumulativeEntriesForTable.ContainsKey (KarteiID)) CumulativeEntriesForTable [KarteiID] = new PkgFileEntryData () { TableName = TableName, ID = KarteiID, NameID = KarteiNameID, LastModifyTimeStampInTable = ((KarteiRow ["ModifyTimeStamp"] == Convert.DBNull) ? DateTime.Parse ("2000-01-01") : Convert.ToDateTime (KarteiRow ["ModifyTimeStamp"])) }; } foreach (FileInfo Info in ActuallTablePkgFileNames) // insert Entries from actuall Packages { String ID = Path.GetFileNameWithoutExtension (Info.FullName).ToLower (); if (CumulativeEntriesForTable.ContainsKey (ID)) CumulativeEntriesForTable [ID].ActuallTablePkgFileInfo = Info; else CumulativeEntriesForTable[ID] = new PkgFileEntryData() { ActuallTablePkgFileInfo = Info, TableName = TableName, ID = ID, Reason = PkgFileEntryData.ErrorReasons.OldPackageFileButNoTable, LastModifyTimeStampInTable = DateTime.Parse("2000-01-01") }; } foreach (FileInfo Info in OldTablePkgFileNames) // insert Entries from old Packages { String ID = Path.GetFileNameWithoutExtension(Info.FullName).ToLower(); if (CumulativeEntriesForTable.ContainsKey(ID)) CumulativeEntriesForTable[ID].OldTablePkgFileInfo = Info; else CumulativeEntriesForTable[ID] = new PkgFileEntryData() { OldTablePkgFileInfo = Info, TableName = TableName, ID = ID, Reason = PkgFileEntryData.ErrorReasons.OldPackageFileButNoTable, LastModifyTimeStampInTable = DateTime.Parse("2000-01-01") }; } foreach (PkgFileEntryData Entry in CumulativeEntriesForTable.Values) { if (String.IsNullOrEmpty (Entry.ID)) continue; String SubDirectoryName = Basics.GetSegmentedDirFileNameFromGuid (Entry.ID).Substring (0, 2); if (!ExistingInternetJPGFileInfos.ContainsKey (SubDirectoryName)) continue; List<FileInfo> FileInfos = ExistingInternetJPGFileInfos [SubDirectoryName]; foreach (FileInfo EntryInternetFileInfo in FileInfos) { if (EntryInternetFileInfo.Name.IndexOf (Entry.ID, StringComparison.InvariantCultureIgnoreCase) != -1) { if (EntryInternetFileInfo.Name.IndexOf ("_thumb", StringComparison.InvariantCultureIgnoreCase) == -1) Entry.InternetFileInfo = EntryInternetFileInfo; else Entry.InternetThumbFileInfo = EntryInternetFileInfo; } } foreach (FileInfo EntryToDelete in Entry.InternetFileInfos.Values) // remove found entries for performance usage { ExistingInternetJPGFileInfos [SubDirectoryName].Remove (EntryToDelete); } foreach (FileInfo EntryToDelete in Entry.InternetThumbFileInfos.Values) // remove found entries for performance usage { ExistingInternetJPGFileInfos [SubDirectoryName].Remove (EntryToDelete); } } } catch (Exception Excp) { Basics.ReportErrorToEventViewer ("DataWrapper.GetNotActuallPkgFileEntryData", "Fehler beim befüllen der FileEntryData \r\n" + Path.Combine (FilePathToActuallPkgs, TableName) + "\r\n" + Path.Combine (FilePathToOldPkgs, TableName) + "\r\n" + Path.Combine (FilePathToInternetPicturesForPkgs, TableName) + "Fehler:\r\n" + Excp.ToString ()); return null; } Dictionary<String, Int32> ErrorCounter = new Dictionary<String, Int32> (); List<String> EntriesToDelete = new List<string> (); try { foreach (String Key in CumulativeEntriesForTable.Keys) { PkgFileEntryData Entry = CumulativeEntriesForTable [Key]; try { Entry.ID = Key; Entry.TableName = TableName; if (Entry.IsActuall ()) EntriesToDelete.Add (Key); else { if (ErrorCounter.ContainsKey (Enum.GetName (typeof (PkgFileEntryData.ErrorReasons), Entry.Reason))) ErrorCounter [Enum.GetName (typeof (PkgFileEntryData.ErrorReasons), Entry.Reason)]++; else ErrorCounter [Enum.GetName (typeof (PkgFileEntryData.ErrorReasons), Entry.Reason)] = 1; } } catch (Exception Excp) { Basics.ReportErrorToEventViewer ("DataWrapper.GetNotActuallPkgFileEntryData", "Fehler beim Delete von Key \r\n\"" + Key + "\"\r\nFehler:\r\n" + Excp.ToString ()); continue; } } foreach (String KeyToDelete in EntriesToDelete) CumulativeEntriesForTable.Remove (KeyToDelete); } catch (Exception OuterExcp) { Basics.ReportErrorToEventViewer ("DataWrapper.GetNotActuallPkgFileEntryData", "Fehler bei Loop\r\nFehler:\r\n" + OuterExcp.ToString ()); return null; } return CumulativeEntriesForTable; }