Commit 2f5d87653d4182acbff93443ac73890ea31cbc03

Authored by Schwirg László
1 parent fb6819fe

v1.3.0.0

FileCleaner és Backup package paraméterezésének jobbítása
Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs
@@ -79,6 +79,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS @@ -79,6 +79,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
79 var vars = new Dictionary<string, string>(); 79 var vars = new Dictionary<string, string>();
80 vars.Add("PACKAGENAME", bp.Xml_PackageName); 80 vars.Add("PACKAGENAME", bp.Xml_PackageName);
81 vars.Add("PACKAGETS", packagets); 81 vars.Add("PACKAGETS", packagets);
  82 + vars.Add("PACKAGEKEY", bp.Xml_Key);
82 83
83 var destinationfolder = Path.GetDirectoryName(bp.Xml_PackageFilePath); 84 var destinationfolder = Path.GetDirectoryName(bp.Xml_PackageFilePath);
84 if (!Path.IsPathRooted(destinationfolder)) { destinationfolder = Path.Combine(Directory.GetCurrentDirectory(), destinationfolder); } 85 if (!Path.IsPathRooted(destinationfolder)) { destinationfolder = Path.Combine(Directory.GetCurrentDirectory(), destinationfolder); }
@@ -87,8 +88,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS @@ -87,8 +88,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
87 var destinationfilename = Path.GetFileNameWithoutExtension(bp.Xml_PackageFilePath); 88 var destinationfilename = Path.GetFileNameWithoutExtension(bp.Xml_PackageFilePath);
88 //string tempfolderpath = Tools.GetTemporaryFoldername(destinationfolder); 89 //string tempfolderpath = Tools.GetTemporaryFoldername(destinationfolder);
89 90
90 - destinationfilename = StringConstructor.ResolveConstructor(vars, destinationfilename, "{}@@");  
91 - destinationfolder = StringConstructor.ResolveConstructor(vars, destinationfolder, "{}@@"); 91 + destinationfilename = StringConstructor.ResolveConstructorR(vars, destinationfilename, "{}@@");
  92 + destinationfolder = StringConstructor.ResolveConstructorR(vars, destinationfolder, "{}@@");
92 var temprootfolder=string.IsNullOrEmpty(bp.Xml_TempDirectoryPath) ? destinationfolder : bp.Xml_TempDirectoryPath; 93 var temprootfolder=string.IsNullOrEmpty(bp.Xml_TempDirectoryPath) ? destinationfolder : bp.Xml_TempDirectoryPath;
93 94
94 string tempfolderpath = Path.Combine(temprootfolder, destinationfilename); 95 string tempfolderpath = Path.Combine(temprootfolder, destinationfilename);
@@ -197,7 +198,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS @@ -197,7 +198,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
197 var destinationext = Path.GetExtension(destinationbackupfile); if (string.IsNullOrWhiteSpace(destinationext)) { destinationext = ".zip"; } 198 var destinationext = Path.GetExtension(destinationbackupfile); if (string.IsNullOrWhiteSpace(destinationext)) { destinationext = ".zip"; }
198 destinationbackupfile = Path.Combine(destinationfolderpath, destinationfile+destinationext); 199 destinationbackupfile = Path.Combine(destinationfolderpath, destinationfile+destinationext);
199 200
200 - destinationbackupfile = VRH.Common.StringConstructor.ResolveConstructor(vars, destinationbackupfile, "{}@@"); 201 + destinationbackupfile = VRH.Common.StringConstructor.ResolveConstructorR(vars, destinationbackupfile, "{}@@");
201 202
202 if (File.Exists(destinationbackupfile)) { File.Delete(destinationbackupfile); } 203 if (File.Exists(destinationbackupfile)) { File.Delete(destinationbackupfile); }
203 204
@@ -227,7 +228,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS @@ -227,7 +228,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
227 destinationfilename = destinationfilename??Path.GetFileNameWithoutExtension(sourcedirectorypath); 228 destinationfilename = destinationfilename??Path.GetFileNameWithoutExtension(sourcedirectorypath);
228 229
229 string package___filepath = Path.Combine(destinationfolder, destinationfilename); 230 string package___filepath = Path.Combine(destinationfolder, destinationfilename);
230 - package___filepath=VRH.Common.StringConstructor.ResolveConstructor(vars, package___filepath, "{}@@"); 231 + package___filepath=VRH.Common.StringConstructor.ResolveConstructorR(vars, package___filepath, "{}@@");
231 232
232 string packageEXEfilepath = package___filepath + ".exe"; 233 string packageEXEfilepath = package___filepath + ".exe";
233 string packageZIPfilepath = package___filepath + ".zip"; 234 string packageZIPfilepath = package___filepath + ".zip";
@@ -331,16 +332,24 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS @@ -331,16 +332,24 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
331 #region BackupPackageManagerXmlProcessor class 332 #region BackupPackageManagerXmlProcessor class
332 public class BackupPackageManagerXmlProcessor : XmlParser 333 public class BackupPackageManagerXmlProcessor : XmlParser
333 { 334 {
334 - private List<BackupPackage> _backuppackagelist; 335 + private List<BackupPackage> _backuppackagelist= new List<BackupPackage>();
335 #region constructor 336 #region constructor
336 public BackupPackageManagerXmlProcessor(string xmlcs, string basefolder, string lcid) : base(xmlcs, basefolder, lcid, null) 337 public BackupPackageManagerXmlProcessor(string xmlcs, string basefolder, string lcid) : base(xmlcs, basefolder, lcid, null)
337 { 338 {
338 - _backuppackagelist = new List<BackupPackage>();  
339 - var tmpdirpath = GetValue(nameof(BackupPackage.XmlStructure.Attributes.TempDirectoryPath), GetRootElement(),""); 339 + string tmpdirpath="", packagefilepath="", packagename="", createexe="";
  340 + var ca = GetXElement(nameof(BackupPackage.XmlStructure.CommonAttributes));
  341 + if (ca != null)
  342 + {
  343 + tmpdirpath = GetValue(nameof(BackupPackage.XmlStructure.CommonAttributes.Attributes.TempDirectoryPath), ca, "");
  344 + packagefilepath = GetValue(nameof(BackupPackage.XmlStructure.CommonAttributes.Attributes.PackageFilePath), ca, "");
  345 + packagename = GetValue(nameof(BackupPackage.XmlStructure.CommonAttributes.Attributes.PackageName), ca, "");
  346 + createexe = GetValue(nameof(BackupPackage.XmlStructure.CommonAttributes.Attributes.CreateExe), ca, "");
  347 + }
  348 +
340 var bpxmllist = GetAllXElements(nameof(BackupPackage.XmlStructure.BackupPackage)); 349 var bpxmllist = GetAllXElements(nameof(BackupPackage.XmlStructure.BackupPackage));
341 if (bpxmllist != null && bpxmllist.Any()) 350 if (bpxmllist != null && bpxmllist.Any())
342 { 351 {
343 - foreach (var bpxml in bpxmllist) { var bp = new BackupPackage(bpxml, tmpdirpath); if (bp.Valid) { _backuppackagelist.Add(bp); } } 352 + foreach (var bpxml in bpxmllist) { var bp = new BackupPackage(bpxml, tmpdirpath, packagefilepath, packagename, createexe); if (bp.Valid) { _backuppackagelist.Add(bp); } }
344 } 353 }
345 } 354 }
346 #endregion constructor 355 #endregion constructor
@@ -373,24 +382,31 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS @@ -373,24 +382,31 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
373 #endregion basic constructor 382 #endregion basic constructor
374 383
375 #region xml constructor 384 #region xml constructor
376 - public BackupPackage(XElement backupackagexml,string tmpdirectorypath) 385 + public BackupPackage(XElement backupackagexml,string commontmpdirectorypath,string commonpackagefilepath=null,string commonpackagename=null,string commoncreateexe=null)
377 { 386 {
378 Valid = true; 387 Valid = true;
379 string ATTRIBUTEMANDATORY = nameof(XmlStructure.BackupPackage) + " attribute is mandatory! Name: {0}"; 388 string ATTRIBUTEMANDATORY = nameof(XmlStructure.BackupPackage) + " attribute is mandatory! Name: {0}";
380 - Xml_Key = GetValue(nameof(XmlStructure.BackupPackage.Attributes.Key), backupackagexml, XmlStructure.BackupPackage.Attributes.Key.Values.DEFAULT); 389 +
381 Xml_PackageName = backupackagexml.Attribute(XName.Get(nameof(XmlStructure.BackupPackage.Attributes.Name)))?.Value; 390 Xml_PackageName = backupackagexml.Attribute(XName.Get(nameof(XmlStructure.BackupPackage.Attributes.Name)))?.Value;
  391 + if (string.IsNullOrWhiteSpace(Xml_PackageName)) { Xml_PackageName=commonpackagename; }
382 if (string.IsNullOrWhiteSpace(Xml_PackageName)) { throw new ApplicationException(string.Format(ATTRIBUTEMANDATORY, nameof(XmlStructure.BackupPackage.Attributes.Name))); } 392 if (string.IsNullOrWhiteSpace(Xml_PackageName)) { throw new ApplicationException(string.Format(ATTRIBUTEMANDATORY, nameof(XmlStructure.BackupPackage.Attributes.Name))); }
383 - Xml_Description = GetValue(nameof(XmlStructure.BackupPackage.Attributes.Description), backupackagexml, Xml_PackageName); 393 +
384 Xml_PackageFilePath = GetValue(nameof(XmlStructure.BackupPackage.Attributes.PackageFilePath), backupackagexml, ""); 394 Xml_PackageFilePath = GetValue(nameof(XmlStructure.BackupPackage.Attributes.PackageFilePath), backupackagexml, "");
  395 + if (string.IsNullOrWhiteSpace(Xml_PackageFilePath)) { Xml_PackageFilePath= commonpackagefilepath; }
385 if (string.IsNullOrWhiteSpace(Xml_PackageFilePath)) { throw new ApplicationException(string.Format(ATTRIBUTEMANDATORY, XmlStructure.BackupPackage.Attributes.PackageFilePath.Values.DEFAULT)); } 396 if (string.IsNullOrWhiteSpace(Xml_PackageFilePath)) { throw new ApplicationException(string.Format(ATTRIBUTEMANDATORY, XmlStructure.BackupPackage.Attributes.PackageFilePath.Values.DEFAULT)); }
386 - Xml_TempDirectoryPath = tmpdirectorypath;  
387 397
388 - Xml_SourceIncludeFilenameMaskList = GetValue(nameof(XmlStructure.BackupPackage.Attributes.IncludeFilenameMaskList), backupackagexml, XmlStructure.BackupPackage.Attributes.IncludeFilenameMaskList.Values.DEFAULT); 398 + Xml_TempDirectoryPath =GetValue(nameof(XmlStructure.BackupPackage.Attributes.TempDirectoryPath), backupackagexml, "");
  399 + if (string.IsNullOrWhiteSpace(Xml_TempDirectoryPath)) { Xml_TempDirectoryPath= commontmpdirectorypath; }
389 400
390 string XmlCreateExestring = GetValue(nameof(XmlStructure.BackupPackage.Attributes.CreateExe), backupackagexml, XmlStructure.BackupPackage.Attributes.CreateExe.Values.DEFAULT.ToString()); 401 string XmlCreateExestring = GetValue(nameof(XmlStructure.BackupPackage.Attributes.CreateExe), backupackagexml, XmlStructure.BackupPackage.Attributes.CreateExe.Values.DEFAULT.ToString());
  402 + if (string.IsNullOrWhiteSpace(XmlCreateExestring)) { XmlCreateExestring = commoncreateexe; }
391 if (string.IsNullOrWhiteSpace(XmlCreateExestring)) { XmlCreateExestring = XmlStructure.BackupPackage.Attributes.CreateExe.Values.DEFAULT.ToString(); } 403 if (string.IsNullOrWhiteSpace(XmlCreateExestring)) { XmlCreateExestring = XmlStructure.BackupPackage.Attributes.CreateExe.Values.DEFAULT.ToString(); }
392 Xml_CreateExe = bool.Parse(XmlCreateExestring); 404 Xml_CreateExe = bool.Parse(XmlCreateExestring);
393 405
  406 + Xml_Key = GetValue(nameof(XmlStructure.BackupPackage.Attributes.Key), backupackagexml, XmlStructure.BackupPackage.Attributes.Key.Values.DEFAULT);
  407 + Xml_Description = GetValue(nameof(XmlStructure.BackupPackage.Attributes.Description), backupackagexml, Xml_PackageName);
  408 + Xml_SourceIncludeFilenameMaskList = GetValue(nameof(XmlStructure.BackupPackage.Attributes.IncludeFilenameMaskList), backupackagexml, XmlStructure.BackupPackage.Attributes.IncludeFilenameMaskList.Values.DEFAULT);
  409 +
394 Xml_BackupFolderList = new List<BackupFolder>(); 410 Xml_BackupFolderList = new List<BackupFolder>();
395 //var conditionxmlList = GetAllXElements(foldertocleanxml, nameof(XmlStructure.FolderToClean.Conditions), nameof(XmlStructure.FolderToClean.Conditions.Condition)); 411 //var conditionxmlList = GetAllXElements(foldertocleanxml, nameof(XmlStructure.FolderToClean.Conditions), nameof(XmlStructure.FolderToClean.Conditions.Condition));
396 var backupfolderxmlList = backupackagexml.Elements(XName.Get(nameof(XmlStructure.BackupPackage.BackupFolder))); 412 var backupfolderxmlList = backupackagexml.Elements(XName.Get(nameof(XmlStructure.BackupPackage.BackupFolder)));
@@ -426,9 +442,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS @@ -426,9 +442,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
426 #region XmlStructure 442 #region XmlStructure
427 public static class XmlStructure 443 public static class XmlStructure
428 { 444 {
429 - public static class Attributes 445 +
  446 + public static class CommonAttributes
430 { 447 {
431 - public static class TempDirectoryPath { public static class Values { public const string DEFAULT = ""; } } 448 + public static class Attributes
  449 + {
  450 + public static class TempDirectoryPath { public static class Values { public const string DEFAULT = ""; } }
  451 + public static class PackageFilePath { public static class Values { public const string DEFAULT = ""; } }
  452 + public static class PackageName { public static class Values { public const string DEFAULT = ""; } }
  453 + public static class CreateExe { public static class Values { public const string DEFAULT = ""; } }
  454 + }
432 } 455 }
433 public static class BackupPackage 456 public static class BackupPackage
434 { 457 {
@@ -440,6 +463,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS @@ -440,6 +463,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
440 public static class CreateExe { public static class Values { public const bool DEFAULT = true; } } 463 public static class CreateExe { public static class Values { public const bool DEFAULT = true; } }
441 public static class IncludeFilenameMaskList { public static class Values { public const string DEFAULT = "*"; } } 464 public static class IncludeFilenameMaskList { public static class Values { public const string DEFAULT = "*"; } }
442 public static class PackageFilePath{ public static class Values { public const string DEFAULT = "BackupPackage_{TIMESTAMP}_{PACKAGENAME}"; } } 465 public static class PackageFilePath{ public static class Values { public const string DEFAULT = "BackupPackage_{TIMESTAMP}_{PACKAGENAME}"; } }
  466 + public static class TempDirectoryPath { public static class Values { public const string DEFAULT = ""; } }
443 } 467 }
444 public static class BackupFolder 468 public static class BackupFolder
445 { 469 {
Vrh.Log4Pro.MaintenanceConsole/Manager - FileCleanerManager.cs
@@ -124,9 +124,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -124,9 +124,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
124 } 124 }
125 else if (lineix == 2) 125 else if (lineix == 2)
126 { 126 {
127 - ColorConsole.Write($"{ws.Xml_CleanupDays}", ConsoleColor.Yellow, prefix: "Cleanup days:", bracket: "[]");  
128 var fc2 = ws.Xml_Recurse ? ConsoleColor.Green : ConsoleColor.Yellow; 127 var fc2 = ws.Xml_Recurse ? ConsoleColor.Green : ConsoleColor.Yellow;
129 - ColorConsole.Write($"{ws.Xml_Recurse}", fc2, prefix: ", Recurse:", bracket: "[]"); 128 + ColorConsole.Write($"{ws.Xml_Recurse}", fc2, prefix: "Recurse:", bracket: "[]");
130 var fc0 = ws.Xml_RemoveEmptyFolder ? ConsoleColor.Green : ConsoleColor.Yellow; 129 var fc0 = ws.Xml_RemoveEmptyFolder ? ConsoleColor.Green : ConsoleColor.Yellow;
131 ColorConsole.Write($"{ws.Xml_RemoveEmptyFolder}", fc0, prefix: ", Remove empty folder:", bracket: "[]"); 130 ColorConsole.Write($"{ws.Xml_RemoveEmptyFolder}", fc0, prefix: ", Remove empty folder:", bracket: "[]");
132 ColorConsole.WriteLine(ws.Xml_IncludeMask, ConsoleColor.Yellow, prefix: ", Include mask:"); 131 ColorConsole.WriteLine(ws.Xml_IncludeMask, ConsoleColor.Yellow, prefix: ", Include mask:");
@@ -142,8 +141,18 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -142,8 +141,18 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
142 if (lineix != INDEXBASE) { ColorConsole.Write(ws.Xml_OrConditionList ? "OR" : "AND", ConsoleColor.Yellow,suffix:" "); } 141 if (lineix != INDEXBASE) { ColorConsole.Write(ws.Xml_OrConditionList ? "OR" : "AND", ConsoleColor.Yellow,suffix:" "); }
143 ColorConsole.Write("Condition:"); 142 ColorConsole.Write("Condition:");
144 ColorConsole.Write(c.Type.ToString(),ConsoleColor.Yellow, prefix: " Type:"); 143 ColorConsole.Write(c.Type.ToString(),ConsoleColor.Yellow, prefix: " Type:");
145 - if (c.Type==FolderToClean.ConditionType.TimeStampInName) { ColorConsole.Write(c.TimestampConstructor, ConsoleColor.Yellow, prefix: ", TS constructor:"); }  
146 - ColorConsole.Write(c.Limit.ToString(), ConsoleColor.Yellow, prefix: ", Limit:",suffix: c.Type == FolderToClean.ConditionType.Length ? "bytes" : "days"); 144 + if (c.Type==FolderToClean.ConditionType.Length) //hossz alapján
  145 + {
  146 + int climit = c.Limit.HasValue ? c.Limit.Value : ws.common_limitbytes.HasValue ? ws.common_limitbytes.Value: FolderToClean.XmlStructure.CommonAttributes.Attributes.LimitBytes.Values.DEFAULT;
  147 + ColorConsole.Write(climit.ToString(), ConsoleColor.Yellow, prefix: ", Limit:", suffix: "bytes");
  148 + }
  149 + else // időbélyeg alapján
  150 + {
  151 + var ctsc = !string.IsNullOrWhiteSpace(c.TimestampConstructor) ? c.TimestampConstructor : !string.IsNullOrWhiteSpace(ws.common_timestampconstructor) ? ws.common_timestampconstructor : FolderToClean.XmlStructure.CommonAttributes.Attributes.TimestampConstructor.Values.DEFAULT;
  152 + ColorConsole.Write(ctsc, ConsoleColor.Yellow, prefix: ", TS constructor:");
  153 + int climit = c.Limit.HasValue ? c.Limit.Value : ws.common_limitdays.HasValue ? ws.common_limitdays.Value : FolderToClean.XmlStructure.CommonAttributes.Attributes.LimitDays.Values.DEFAULT;
  154 + ColorConsole.Write(climit.ToString(), ConsoleColor.Yellow, prefix: ", Limit:", suffix: "days");
  155 + }
147 ColorConsole.WriteLine(); 156 ColorConsole.WriteLine();
148 return " "; 157 return " ";
149 } 158 }
@@ -198,7 +207,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -198,7 +207,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
198 var rgxmatch = rgx.Match(fi.FullName); 207 var rgxmatch = rgx.Match(fi.FullName);
199 if (rgxmatch.Success) 208 if (rgxmatch.Success)
200 { 209 {
201 - var daystodelete = ftc.Xml_CleanupDays;  
202 var conditionlist = ftc.Xml_ConditionList; 210 var conditionlist = ftc.Xml_ConditionList;
203 if (conditionlist == null || !conditionlist.Any()) { return true; } 211 if (conditionlist == null || !conditionlist.Any()) { return true; }
204 212
@@ -213,18 +221,22 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -213,18 +221,22 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
213 bool conditionresult = false; 221 bool conditionresult = false;
214 if (c.Type == FolderToClean.ConditionType.TimeStampInName) 222 if (c.Type == FolderToClean.ConditionType.TimeStampInName)
215 { 223 {
216 - var fileTSstr = VRH.Common.StringConstructor.ResolveConstructor(groupnamevalues, c.TimestampConstructor, "{}@@"); 224 + var fileTSstr = VRH.Common.StringConstructor.ResolveConstructorR(groupnamevalues, c.TimestampConstructor, "{}@@");
217 225
218 try { var fileTS = DateTime.Parse(fileTSstr); conditionresult = DateTime.Now.Subtract(fileTS).TotalDays > c.Limit; } 226 try { var fileTS = DateTime.Parse(fileTSstr); conditionresult = DateTime.Now.Subtract(fileTS).TotalDays > c.Limit; }
219 catch 227 catch
220 { 228 {
221 var tscn = nameof(FolderToClean.XmlStructure.FolderToClean.Conditions.Condition.Attributes.TimestampConstructor); 229 var tscn = nameof(FolderToClean.XmlStructure.FolderToClean.Conditions.Condition.Attributes.TimestampConstructor);
222 var fprn = nameof(FolderToClean.XmlStructure.FolderToClean.IncludeFullpathRegexp); 230 var fprn = nameof(FolderToClean.XmlStructure.FolderToClean.IncludeFullpathRegexp);
223 - throw new Exception(  
224 - $"Error in condition, type {FolderToClean.ConditionType.TimeStampInName}. {tscn} or {fprn} value incorrect!" 231 + string exmsg = $"Error in condition, type {FolderToClean.ConditionType.TimeStampInName}. {tscn} or {fprn} value incorrect!"
225 + $"\n Folder: {ftc.Xml_DirectoryPath}" 232 + $"\n Folder: {ftc.Xml_DirectoryPath}"
  233 + + $"\n File: {fi.Name}"
226 + $"\n {tscn} : {c.TimestampConstructor}" 234 + $"\n {tscn} : {c.TimestampConstructor}"
227 - + $"\n {tscn} after substitution: {fileTSstr}"); 235 + + $"\n {tscn} after substitution: {fileTSstr}"
  236 + + $"\n CONDITION RESULT FALSE IS USED!";
  237 + //throw new Exception(exmsg);
  238 + ColorConsole.WriteLine(exmsg, ConsoleColor.Yellow);
  239 + conditionresult = false; // ha nincs benne timestamp, akkor nem teljesül
228 } 240 }
229 } 241 }
230 else if (c.Type == FolderToClean.ConditionType.CreationTime) 242 else if (c.Type == FolderToClean.ConditionType.CreationTime)
@@ -255,7 +267,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -255,7 +267,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
255 #region public CleanFiles 267 #region public CleanFiles
256 public static long CleanFolderFiles(DirectoryInfo d,FolderToClean ftc, bool delete) 268 public static long CleanFolderFiles(DirectoryInfo d,FolderToClean ftc, bool delete)
257 { 269 {
258 - int daystodelete = ftc.Xml_CleanupDays;  
259 long cleanedsize = 0; 270 long cleanedsize = 0;
260 // Add file sizes. 271 // Add file sizes.
261 FileInfo[] fis = d.GetFiles(ftc.Xml_IncludeMask, SearchOption.TopDirectoryOnly); 272 FileInfo[] fis = d.GetFiles(ftc.Xml_IncludeMask, SearchOption.TopDirectoryOnly);
@@ -291,16 +302,28 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -291,16 +302,28 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
291 public class FileCleanerManagerXmlProcessor : XmlParser 302 public class FileCleanerManagerXmlProcessor : XmlParser
292 { 303 {
293 private List<FolderToClean> _foldertocleanlist; 304 private List<FolderToClean> _foldertocleanlist;
294 - private int commoncleanupdays;  
295 #region constructor 305 #region constructor
296 public FileCleanerManagerXmlProcessor(string xmlcs, string basefolder, string lcid) : base(xmlcs, basefolder, lcid, null) 306 public FileCleanerManagerXmlProcessor(string xmlcs, string basefolder, string lcid) : base(xmlcs, basefolder, lcid, null)
297 { 307 {
298 _foldertocleanlist = new List<FolderToClean>(); 308 _foldertocleanlist = new List<FolderToClean>();
299 - commoncleanupdays = GetValue(nameof(FolderToClean.XmlStructure.Attributes.CleanupDays),this.RootElement, FolderToClean.XmlStructure.Attributes.CleanupDays.Values.DEFAULT); 309 + var commonattributeselement = GetXElement(nameof(FolderToClean.XmlStructure.CommonAttributes));
  310 + string commonlimitdaysstring = GetValue(nameof(FolderToClean.XmlStructure.CommonAttributes.Attributes.LimitDays), commonattributeselement, (string)null);
  311 + int? commonlimitdays =
  312 + string.IsNullOrWhiteSpace(commonlimitdaysstring) ? (int?)null
  313 + : int.TryParse(commonlimitdaysstring, out int _commonlimitdays) ? _commonlimitdays
  314 + : (int?)null; // ha hibás a megadott érték, akkor olyan, mintha nem is lenne megadva
  315 +
  316 + string commonlimitbytessstring = GetValue(nameof(FolderToClean.XmlStructure.CommonAttributes.Attributes.LimitBytes), commonattributeselement, (string)null);
  317 + int? commonlimitbytes =
  318 + string.IsNullOrWhiteSpace(commonlimitbytessstring) ? (int?)null
  319 + : int.TryParse(commonlimitbytessstring, out int _commonlimitbytes) ? _commonlimitbytes
  320 + : (int?)null; // ha hibás a megadott érték, akkor olyan, mintha nem is lenne megadva
  321 +
  322 + string commontimestampconstructor = GetValue(nameof(FolderToClean.XmlStructure.CommonAttributes.Attributes.TimestampConstructor), commonattributeselement, (string)null);
300 var ftcxmllist = GetAllXElements(nameof(FolderToClean.XmlStructure.FolderToClean)); 323 var ftcxmllist = GetAllXElements(nameof(FolderToClean.XmlStructure.FolderToClean));
301 if (ftcxmllist != null && ftcxmllist.Any()) 324 if (ftcxmllist != null && ftcxmllist.Any())
302 { 325 {
303 - foreach (var ftcxml in ftcxmllist) { var ws = new FolderToClean(ftcxml, commoncleanupdays); if (ws.Valid) { _foldertocleanlist.Add(ws); } } 326 + foreach (var ftcxml in ftcxmllist) { var ws = new FolderToClean(ftcxml, commonlimitdays, commonlimitbytes,commontimestampconstructor); if (ws.Valid) { _foldertocleanlist.Add(ws); } }
304 } 327 }
305 } 328 }
306 #endregion constructor 329 #endregion constructor
@@ -323,21 +346,28 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -323,21 +346,28 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
323 public string Xml_IncludeFullpathRegexp; 346 public string Xml_IncludeFullpathRegexp;
324 public bool Xml_OrConditionList = true; 347 public bool Xml_OrConditionList = true;
325 public List<Condition> Xml_ConditionList; 348 public List<Condition> Xml_ConditionList;
326 - public int Xml_CleanupDays;  
327 349
328 public bool FolderExists; 350 public bool FolderExists;
329 public long SizeFolderTotal; 351 public long SizeFolderTotal;
330 public long SizeSelectedBeforeClean; 352 public long SizeSelectedBeforeClean;
331 public long SizeSelectedAfterClean { get { return SizeSelectedBeforeClean - SizeSelectedCleaned; } } 353 public long SizeSelectedAfterClean { get { return SizeSelectedBeforeClean - SizeSelectedCleaned; } }
332 public long SizeSelectedCleaned; 354 public long SizeSelectedCleaned;
  355 +
  356 + public int? common_limitdays;
  357 + public int? common_limitbytes;
  358 + public string common_timestampconstructor;
  359 +
333 #endregion fields 360 #endregion fields
334 361
335 #region basic constructor 362 #region basic constructor
336 public FolderToClean() { } 363 public FolderToClean() { }
337 #endregion basic constructor 364 #endregion basic constructor
338 #region xml constructor 365 #region xml constructor
339 - public FolderToClean(XElement foldertocleanxml,int commoncleanupdays) 366 + public FolderToClean(XElement foldertocleanxml,int? commonlimitdays,int? commonlimitbytes,string commontimestampconstructor)
340 { 367 {
  368 + common_limitdays = commonlimitdays;
  369 + common_limitbytes = commonlimitbytes;
  370 + common_timestampconstructor = commontimestampconstructor;
341 Valid = true; 371 Valid = true;
342 string ATTRIBUTEMANDATORY = nameof(XmlStructure.FolderToClean) + " attribute is mandatory! Name: {0}"; 372 string ATTRIBUTEMANDATORY = nameof(XmlStructure.FolderToClean) + " attribute is mandatory! Name: {0}";
343 Xml_Key = GetValue(nameof(XmlStructure.FolderToClean.Attributes.Key), foldertocleanxml, XmlStructure.FolderToClean.Attributes.Key.Values.DEFAULT); 373 Xml_Key = GetValue(nameof(XmlStructure.FolderToClean.Attributes.Key), foldertocleanxml, XmlStructure.FolderToClean.Attributes.Key.Values.DEFAULT);
@@ -347,7 +377,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -347,7 +377,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
347 Xml_RemoveEmptyFolder = GetValue(nameof(XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder), foldertocleanxml, XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder.Values.DEFAULT); 377 Xml_RemoveEmptyFolder = GetValue(nameof(XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder), foldertocleanxml, XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder.Values.DEFAULT);
348 Xml_IncludeMask = GetValue(nameof(XmlStructure.FolderToClean.Attributes.IncludeMask), foldertocleanxml, XmlStructure.FolderToClean.Attributes.IncludeMask.Values.DEFAULT); 378 Xml_IncludeMask = GetValue(nameof(XmlStructure.FolderToClean.Attributes.IncludeMask), foldertocleanxml, XmlStructure.FolderToClean.Attributes.IncludeMask.Values.DEFAULT);
349 Xml_IncludeFullpathRegexp = GetValue(GetXElement(foldertocleanxml,nameof(XmlStructure.FolderToClean.IncludeFullpathRegexp)), XmlStructure.FolderToClean.IncludeFullpathRegexp.Values.DEFAULT); 379 Xml_IncludeFullpathRegexp = GetValue(GetXElement(foldertocleanxml,nameof(XmlStructure.FolderToClean.IncludeFullpathRegexp)), XmlStructure.FolderToClean.IncludeFullpathRegexp.Values.DEFAULT);
350 - Xml_CleanupDays = GetValue(GetXElement(foldertocleanxml,nameof(XmlStructure.FolderToClean.Attributes.CleanupDays)), commoncleanupdays);  
351 Xml_ConditionList = new List<Condition>(); 380 Xml_ConditionList = new List<Condition>();
352 //var conditionxmlList = GetAllXElements(foldertocleanxml, nameof(XmlStructure.FolderToClean.Conditions), nameof(XmlStructure.FolderToClean.Conditions.Condition)); 381 //var conditionxmlList = GetAllXElements(foldertocleanxml, nameof(XmlStructure.FolderToClean.Conditions), nameof(XmlStructure.FolderToClean.Conditions.Condition));
353 var conditionsxml = foldertocleanxml.Element(XName.Get(nameof(XmlStructure.FolderToClean.Conditions))); 382 var conditionsxml = foldertocleanxml.Element(XName.Get(nameof(XmlStructure.FolderToClean.Conditions)));
@@ -355,7 +384,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -355,7 +384,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
355 if (conditionxmlList!=null && conditionxmlList.Any()) 384 if (conditionxmlList!=null && conditionxmlList.Any())
356 { 385 {
357 Xml_OrConditionList = GetValue(nameof(XmlStructure.FolderToClean.Conditions.Attributes.OrConditionList), conditionsxml, XmlStructure.FolderToClean.Conditions.Attributes.OrConditionList.Values.DEFAULT); 386 Xml_OrConditionList = GetValue(nameof(XmlStructure.FolderToClean.Conditions.Attributes.OrConditionList), conditionsxml, XmlStructure.FolderToClean.Conditions.Attributes.OrConditionList.Values.DEFAULT);
358 - foreach (var conditionxml in conditionxmlList) { Xml_ConditionList.Add(new Condition(conditionxml)); } 387 + foreach (var conditionxml in conditionxmlList) { Xml_ConditionList.Add(new Condition(conditionxml, commontimestampconstructor, commonlimitdays, commonlimitbytes)); }
359 } 388 }
360 } 389 }
361 #endregion xml constructor 390 #endregion xml constructor
@@ -370,7 +399,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -370,7 +399,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
370 Xml_IncludeMask = ftc.Xml_IncludeMask; 399 Xml_IncludeMask = ftc.Xml_IncludeMask;
371 Xml_IncludeFullpathRegexp = ftc.Xml_IncludeFullpathRegexp; 400 Xml_IncludeFullpathRegexp = ftc.Xml_IncludeFullpathRegexp;
372 Xml_OrConditionList = ftc.Xml_OrConditionList; 401 Xml_OrConditionList = ftc.Xml_OrConditionList;
373 - Xml_CleanupDays = ftc.Xml_CleanupDays;  
374 Xml_ConditionList = ftc.Xml_ConditionList.Select(c=>new Condition(c)).ToList(); ; 402 Xml_ConditionList = ftc.Xml_ConditionList.Select(c=>new Condition(c)).ToList(); ;
375 } 403 }
376 #endregion cloner constructor 404 #endregion cloner constructor
@@ -387,30 +415,36 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -387,30 +415,36 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
387 } 415 }
388 #endregion cloner constructor 416 #endregion cloner constructor
389 #region constructor 417 #region constructor
390 - public Condition(XElement cxml) 418 + public Condition(XElement cxml, string commontimestampconstructor,int? commonlimitdays,int? commonlimitbytes)
391 { 419 {
392 var typestr = GetValue(nameof(XmlStructure.FolderToClean.Conditions.Condition.Attributes.Type), cxml, XmlStructure.FolderToClean.Conditions.Condition.Attributes.Type.Values.DEFAULT); 420 var typestr = GetValue(nameof(XmlStructure.FolderToClean.Conditions.Condition.Attributes.Type), cxml, XmlStructure.FolderToClean.Conditions.Condition.Attributes.Type.Values.DEFAULT);
393 this.Type = (ConditionType)Enum.Parse(typeof(ConditionType),typestr); 421 this.Type = (ConditionType)Enum.Parse(typeof(ConditionType),typestr);
394 - TimestampConstructor = GetValue(nameof(XmlStructure.FolderToClean.Conditions.Condition.Attributes.TimestampConstructor), cxml, XmlStructure.FolderToClean.Conditions.Condition.Attributes.TimestampConstructor.Values.DEFAULT);  
395 - Limit = GetValue(nameof(XmlStructure.FolderToClean.Conditions.Condition.Attributes.Limit), cxml, XmlStructure.FolderToClean.Conditions.Condition.Attributes.Limit.Values.DEFAULT); 422 +
  423 + TimestampConstructor = GetValue(nameof(XmlStructure.FolderToClean.Conditions.Condition.Attributes.TimestampConstructor), cxml, commontimestampconstructor);
  424 + if (string.IsNullOrWhiteSpace(TimestampConstructor)) { TimestampConstructor = XmlStructure.CommonAttributes.Attributes.TimestampConstructor.Values.DEFAULT; }
  425 +
  426 + string limitstring = GetValue<string>(nameof(XmlStructure.FolderToClean.Conditions.Condition.Attributes.Limit), cxml, null);
  427 + if (string.IsNullOrWhiteSpace(limitstring)) { Limit = this.Type == ConditionType.Length ? commonlimitbytes: commonlimitdays; }
  428 + else if (!string.IsNullOrWhiteSpace(limitstring) && int.TryParse(limitstring, out int _limit)) { Limit = _limit; }
  429 +
  430 + if (!Limit.HasValue) { Limit = this.Type == ConditionType.Length ? XmlStructure.CommonAttributes.Attributes.LimitBytes.Values.DEFAULT : XmlStructure.CommonAttributes.Attributes.LimitDays.Values.DEFAULT; }
396 } 431 }
397 #endregion constructor 432 #endregion constructor
398 public ConditionType Type; 433 public ConditionType Type;
399 public string TimestampConstructor; 434 public string TimestampConstructor;
400 - public int Limit; 435 + public int? Limit;
401 } 436 }
402 #endregion Condition 437 #endregion Condition
403 #region XmlStructure 438 #region XmlStructure
404 public static class XmlStructure 439 public static class XmlStructure
405 { 440 {
406 - public static class Attributes 441 + public static class CommonAttributes
407 { 442 {
408 - public static class CleanupDays 443 + public static class Attributes
409 { 444 {
410 - public static class Values  
411 - {  
412 - public const int DEFAULT = 7;  
413 - } 445 + public static class LimitDays { public static class Values { public const int DEFAULT = 7; } }
  446 + public static class LimitBytes { public static class Values { public const int DEFAULT = 500000; } }
  447 + public static class TimestampConstructor { public static class Values { public const string DEFAULT = "{YEAR}.{MONTH}.{DAY} {HOUR}:{MINUTE}:{SECOND}"; } }
414 } 448 }
415 } 449 }
416 public static class FolderToClean 450 public static class FolderToClean
@@ -419,13 +453,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -419,13 +453,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
419 { 453 {
420 public static class Key { public static class Values { public const string DEFAULT = ""; } } 454 public static class Key { public static class Values { public const string DEFAULT = ""; } }
421 public static class Directory { } 455 public static class Directory { }
422 - public static class CleanupDays  
423 - {  
424 - public static class Values  
425 - {  
426 - public const int DEFAULT = XmlStructure.Attributes.CleanupDays.Values.DEFAULT;  
427 - }  
428 - } 456 + public static class LimitDays { public static class Values { public const int DEFAULT = XmlStructure.CommonAttributes.Attributes.LimitDays.Values.DEFAULT; } }
429 public static class Recurse 457 public static class Recurse
430 { 458 {
431 public static class Values 459 public static class Values
@@ -483,20 +511,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS @@ -483,20 +511,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS
483 public static class CreationTime { } 511 public static class CreationTime { }
484 } 512 }
485 } 513 }
486 - public static class TimestampConstructor  
487 - {  
488 - public static class Values  
489 - {  
490 - public const string DEFAULT = "{YEAR}.{MONTH}.{DAY} {HOUR}:{MINUTE}:{SECOND}";  
491 - }  
492 - }  
493 - public static class Limit  
494 - {  
495 - public static class Values  
496 - {  
497 - public const int DEFAULT = XmlStructure.Attributes.CleanupDays.Values.DEFAULT;  
498 - }  
499 - } 514 + public static class TimestampConstructor { }
  515 + public static class Limit { }
500 } 516 }
501 } 517 }
502 } 518 }
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
@@ -403,7 +403,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS @@ -403,7 +403,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
403 vars.Add(nameof(DBSubstitutionName.DBDATAGROUP), ""); 403 vars.Add(nameof(DBSubstitutionName.DBDATAGROUP), "");
404 vars.Add(nameof(DBSubstitutionName.BACKUPTS), backupts); 404 vars.Add(nameof(DBSubstitutionName.BACKUPTS), backupts);
405 405
406 - backupfileNameOnly = VRH.Common.StringConstructor.ResolveConstructor(vars, backupfileNameOnly, "{}@@"); 406 + backupfileNameOnly = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfileNameOnly, "{}@@");
407 407
408 string backupfilename = backupfileNameOnly + ".bak"; 408 string backupfilename = backupfileNameOnly + ".bak";
409 string backupFullName = Path.Combine(backupdirectorypath, backupfilename); 409 string backupFullName = Path.Combine(backupdirectorypath, backupfilename);
@@ -443,7 +443,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS @@ -443,7 +443,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
443 vars.Add(nameof(DBSubstitutionName.DBONAME), ""); 443 vars.Add(nameof(DBSubstitutionName.DBONAME), "");
444 vars.Add(nameof(DBSubstitutionName.DBDATAGROUP), ""); 444 vars.Add(nameof(DBSubstitutionName.DBDATAGROUP), "");
445 vars.Add(nameof(DBSubstitutionName.BACKUPTS), "*"); 445 vars.Add(nameof(DBSubstitutionName.BACKUPTS), "*");
446 - filenamemask = VRH.Common.StringConstructor.ResolveConstructor(vars, filenamemask, "{}@@"); 446 + filenamemask = VRH.Common.StringConstructor.ResolveConstructorR(vars, filenamemask, "{}@@");
447 var filelist = new DirectoryInfo(sqld.Xml_BackupTargetDirectoryPath)?.GetFiles(filenamemask)?.ToList(); 447 var filelist = new DirectoryInfo(sqld.Xml_BackupTargetDirectoryPath)?.GetFiles(filenamemask)?.ToList();
448 var filelistordered = filelist?.OrderByDescending(x => x.CreationTime).ToList(); 448 var filelistordered = filelist?.OrderByDescending(x => x.CreationTime).ToList();
449 return filelistordered; 449 return filelistordered;
@@ -590,7 +590,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS @@ -590,7 +590,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
590 { 590 {
591 var sqlc = new Microsoft.Data.SqlClient.SqlConnection(sqlconnectionstring); 591 var sqlc = new Microsoft.Data.SqlClient.SqlConnection(sqlconnectionstring);
592 592
593 - sqltxt = VRH.Common.StringConstructor.ResolveConstructor(vars, sqltxt, "{}@@"); 593 + sqltxt = VRH.Common.StringConstructor.ResolveConstructorR(vars, sqltxt, "{}@@");
594 594
595 sqlc.Open(); 595 sqlc.Open();
596 string SQLBatchTxt = ""; // ebben lesznek az sql script-en belüli batch-ek összerakva 596 string SQLBatchTxt = ""; // ebben lesznek az sql script-en belüli batch-ek összerakva
@@ -731,7 +731,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS @@ -731,7 +731,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
731 { 731 {
732 vars[nameof(DBSubstitutionName.DBONAME)] = ""; 732 vars[nameof(DBSubstitutionName.DBONAME)] = "";
733 vars[nameof(DBSubstitutionName.DBDATAGROUP)] = ""; 733 vars[nameof(DBSubstitutionName.DBDATAGROUP)] = "";
734 - string zipfilename = VRH.Common.StringConstructor.ResolveConstructor(vars, backupfilenamemask, "{}@@") + ".zip"; 734 + string zipfilename = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfilenamemask, "{}@@") + ".zip";
735 zipfilefullpath = Path.Combine(backupdirectorypath, zipfilename); 735 zipfilefullpath = Path.Combine(backupdirectorypath, zipfilename);
736 tempbackupdirectorypath = Path.Combine(backupdirectorypath, "TEMP_" + Path.GetFileNameWithoutExtension(zipfilename)); 736 tempbackupdirectorypath = Path.Combine(backupdirectorypath, "TEMP_" + Path.GetFileNameWithoutExtension(zipfilename));
737 if (Directory.Exists(tempbackupdirectorypath)) { Directory.Delete(tempbackupdirectorypath, recursive: true); } 737 if (Directory.Exists(tempbackupdirectorypath)) { Directory.Delete(tempbackupdirectorypath, recursive: true); }
@@ -776,7 +776,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS @@ -776,7 +776,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
776 vars[nameof(DBSubstitutionName.DBONAME)]=namevalue; 776 vars[nameof(DBSubstitutionName.DBONAME)]=namevalue;
777 vars[nameof(DBSubstitutionName.DBDATAGROUP)]=sqldbobj.GetType().Name; 777 vars[nameof(DBSubstitutionName.DBDATAGROUP)]=sqldbobj.GetType().Name;
778 778
779 - string filename = VRH.Common.StringConstructor.ResolveConstructor(vars, backupfilenamemask, "{}@@"); 779 + string filename = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfilenamemask, "{}@@");
780 if (lastfilename!=filename) 780 if (lastfilename!=filename)
781 { 781 {
782 var i = 2; 782 var i = 2;
@@ -849,7 +849,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS @@ -849,7 +849,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
849 { 849 {
850 vars[nameof(DBSubstitutionName.DBONAME)] = ""; 850 vars[nameof(DBSubstitutionName.DBONAME)] = "";
851 vars[nameof(DBSubstitutionName.DBDATAGROUP)] = ""; 851 vars[nameof(DBSubstitutionName.DBDATAGROUP)] = "";
852 - string zipfilename = VRH.Common.StringConstructor.ResolveConstructor(vars, backupfilenamemask, "{}@@") + ".zip"; 852 + string zipfilename = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfilenamemask, "{}@@") + ".zip";
853 tempbackupdirectorypath = Path.Combine(backupdirectorypath, "TEMP_"+Path.GetFileNameWithoutExtension(zipfilename)); 853 tempbackupdirectorypath = Path.Combine(backupdirectorypath, "TEMP_"+Path.GetFileNameWithoutExtension(zipfilename));
854 zipfilefullpath = Path.Combine(backupdirectorypath, zipfilename); 854 zipfilefullpath = Path.Combine(backupdirectorypath, zipfilename);
855 if (Directory.Exists(tempbackupdirectorypath)) { Directory.Delete(tempbackupdirectorypath, recursive: true); } 855 if (Directory.Exists(tempbackupdirectorypath)) { Directory.Delete(tempbackupdirectorypath, recursive: true); }
@@ -911,7 +911,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS @@ -911,7 +911,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
911 string tn_schemaname = tn.Split('.')[1]; 911 string tn_schemaname = tn.Split('.')[1];
912 string tn_name = tn.Split('.')[2]; 912 string tn_name = tn.Split('.')[2];
913 vars[nameof(DBSubstitutionName.DBONAME)] = $"{tn_schemaname}.{tn_name}"; 913 vars[nameof(DBSubstitutionName.DBONAME)] = $"{tn_schemaname}.{tn_name}";
914 - filename = VRH.Common.StringConstructor.ResolveConstructor(vars, backupfilenamemask, "{}@@"); 914 + filename = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfilenamemask, "{}@@");
915 filefullname = Path.Combine(backupdirectorypath, filename); 915 filefullname = Path.Combine(backupdirectorypath, filename);
916 if (lastfilefullname!=filefullname && lastfilefullname!=null) 916 if (lastfilefullname!=filefullname && lastfilefullname!=null)
917 { 917 {
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices; @@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
32 // You can specify all the values or you can default the Build and Revision Numbers 32 // You can specify all the values or you can default the Build and Revision Numbers
33 // by using the '*' as shown below: 33 // by using the '*' as shown below:
34 // [assembly: AssemblyVersion("1.0.*")] 34 // [assembly: AssemblyVersion("1.0.*")]
35 -[assembly: AssemblyVersion("1.2.4.0")]  
36 -[assembly: AssemblyFileVersion("1.2.4.0")] 35 +[assembly: AssemblyVersion("1.3.0.0")]
  36 +[assembly: AssemblyFileVersion("1.3.0.0")]
Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj
@@ -336,14 +336,14 @@ @@ -336,14 +336,14 @@
336 <Reference Include="Microsoft.CSharp" /> 336 <Reference Include="Microsoft.CSharp" />
337 <Reference Include="System.Data" /> 337 <Reference Include="System.Data" />
338 <Reference Include="System.Xml" /> 338 <Reference Include="System.Xml" />
339 - <Reference Include="VRH.Common, Version=2.20.1.0, Culture=neutral, processorArchitecture=MSIL">  
340 - <HintPath>..\packages\VRH.Common.2.20.1\lib\net45\VRH.Common.dll</HintPath> 339 + <Reference Include="VRH.Common, Version=2.21.2.0, Culture=neutral, processorArchitecture=MSIL">
  340 + <HintPath>..\packages\VRH.Common.2.21.2\lib\net45\VRH.Common.dll</HintPath>
341 </Reference> 341 </Reference>
342 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL"> 342 <Reference Include="Vrh.Web.Providers, Version=2.0.2.0, Culture=neutral, processorArchitecture=MSIL">
343 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net452\Vrh.Web.Providers.dll</HintPath> 343 <HintPath>..\packages\VRH.Web.Providers.2.0.2\lib\net452\Vrh.Web.Providers.dll</HintPath>
344 </Reference> 344 </Reference>
345 - <Reference Include="Vrh.XmlProcessing, Version=1.26.1.0, Culture=neutral, processorArchitecture=MSIL">  
346 - <HintPath>..\packages\Vrh.XmlProcessing.1.26.1\lib\net45\Vrh.XmlProcessing.dll</HintPath> 345 + <Reference Include="Vrh.XmlProcessing, Version=1.27.0.0, Culture=neutral, processorArchitecture=MSIL">
  346 + <HintPath>..\packages\Vrh.XmlProcessing.1.27.0\lib\net45\Vrh.XmlProcessing.dll</HintPath>
347 </Reference> 347 </Reference>
348 </ItemGroup> 348 </ItemGroup>
349 <ItemGroup> 349 <ItemGroup>
Vrh.Log4Pro.MaintenanceConsole/packages.config
@@ -71,7 +71,7 @@ @@ -71,7 +71,7 @@
71 <package id="System.Threading.Timer" version="4.0.1" targetFramework="net472" /> 71 <package id="System.Threading.Timer" version="4.0.1" targetFramework="net472" />
72 <package id="System.Xml.ReaderWriter" version="4.0.11" targetFramework="net472" /> 72 <package id="System.Xml.ReaderWriter" version="4.0.11" targetFramework="net472" />
73 <package id="System.Xml.XDocument" version="4.0.11" targetFramework="net472" /> 73 <package id="System.Xml.XDocument" version="4.0.11" targetFramework="net472" />
74 - <package id="VRH.Common" version="2.20.1" targetFramework="net472" /> 74 + <package id="VRH.Common" version="2.21.2" targetFramework="net472" />
75 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net472" /> 75 <package id="VRH.Web.Providers" version="2.0.2" targetFramework="net472" />
76 - <package id="Vrh.XmlProcessing" version="1.26.1" targetFramework="net472" /> 76 + <package id="Vrh.XmlProcessing" version="1.27.0" targetFramework="net472" />
77 </packages> 77 </packages>
78 \ No newline at end of file 78 \ No newline at end of file