Removed IFileRead.Callback
This commit is contained in:
		
							
								
								
									
										2
									
								
								Adaptation/.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								Adaptation/.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							| @ -4,7 +4,7 @@ | |||||||
|       "name": ".NET Core Attach", |       "name": ".NET Core Attach", | ||||||
|       "type": "coreclr", |       "type": "coreclr", | ||||||
|       "request": "attach", |       "request": "attach", | ||||||
|       "processId": 16816 |       "processId": 13700 | ||||||
|     } |     } | ||||||
|   ] |   ] | ||||||
| } | } | ||||||
|  | |||||||
| @ -100,8 +100,6 @@ public class FileRead : Shared.FileRead, IFileRead | |||||||
|             throw new Exception(); |             throw new Exception(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     void IFileRead.Callback(object state) => throw new Exception(string.Concat("Not ", nameof(_IsDuplicator))); |  | ||||||
|  |  | ||||||
|     private void MoveArchive(DateTime dateTime) |     private void MoveArchive(DateTime dateTime) | ||||||
|     { |     { | ||||||
|         if (dateTime == DateTime.MinValue) |         if (dateTime == DateTime.MinValue) | ||||||
|  | |||||||
| @ -101,8 +101,6 @@ public class FileRead : Shared.FileRead, IFileRead | |||||||
|             throw new Exception(); |             throw new Exception(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     void IFileRead.Callback(object state) => Callback(state); |  | ||||||
|  |  | ||||||
|     private void CallbackInProcessCleared(string sourceArchiveFile, string traceDummyFile, string targetFileLocation, string monARessource, string inProcessDirectory, long sequence, bool warning) |     private void CallbackInProcessCleared(string sourceArchiveFile, string traceDummyFile, string targetFileLocation, string monARessource, string inProcessDirectory, long sequence, bool warning) | ||||||
|     { |     { | ||||||
|         const string site = "sjc"; |         const string site = "sjc"; | ||||||
| @ -226,7 +224,7 @@ public class FileRead : Shared.FileRead, IFileRead | |||||||
|             string monARessource; |             string monARessource; | ||||||
|             DateTime dateTime = DateTime.Now; |             DateTime dateTime = DateTime.Now; | ||||||
|             if (!_FileConnectorConfiguration.TargetFileLocation.Contains(_FileConnectorConfiguration.SourceFileLocation)) |             if (!_FileConnectorConfiguration.TargetFileLocation.Contains(_FileConnectorConfiguration.SourceFileLocation)) | ||||||
|                 throw new Exception("Target must start with source"); |                 throw new Exception("Target must start with source!"); | ||||||
|             bool check = dateTime.Hour > 7 && dateTime.Hour < 18 && dateTime.DayOfWeek != DayOfWeek.Sunday && dateTime.DayOfWeek != DayOfWeek.Saturday; |             bool check = dateTime.Hour > 7 && dateTime.Hour < 18 && dateTime.DayOfWeek != DayOfWeek.Sunday && dateTime.DayOfWeek != DayOfWeek.Saturday; | ||||||
|             if (!_IsEAFHosted || check) |             if (!_IsEAFHosted || check) | ||||||
|             { |             { | ||||||
|  | |||||||
| @ -109,31 +109,14 @@ public class FileRead : Shared.FileRead, IFileRead | |||||||
|             throw new Exception(); |             throw new Exception(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     void IFileRead.Callback(object state) => throw new Exception(string.Concat("Not ", nameof(_IsDuplicator))); |  | ||||||
|  |  | ||||||
|     private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime) |     private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime) | ||||||
|     { |     { | ||||||
|         if (dateTime == DateTime.MinValue) |         if (dateTime == DateTime.MinValue) | ||||||
|         { } |         { } | ||||||
|         Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, null, null, new List<FileInfo>());         |         Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, null, null, new List<FileInfo>());         | ||||||
|         _Logistics = new Logistics(this, reportFullPath, useSplitForMID: true); |         Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath); | ||||||
|  |         _Logistics = new Logistics(reportFullPath, pdsf.Item1);         | ||||||
|         SetFileParameterLotIDToLogisticsMID(); |         SetFileParameterLotIDToLogisticsMID(); | ||||||
|  |  | ||||||
|         string[] segments = Path.GetFileNameWithoutExtension(reportFullPath).Split('_'); |  | ||||||
|         string duplicateDirectory = string.Concat(_FileConnectorConfiguration.TargetFileLocation, @"\", segments[0]); |  | ||||||
|         if (segments.Length > 2) |  | ||||||
|             duplicateDirectory = string.Concat(duplicateDirectory, @"-", segments[2]); |  | ||||||
|         if (!Directory.Exists(duplicateDirectory)) |  | ||||||
|             _ = Directory.CreateDirectory(duplicateDirectory); |  | ||||||
|  |  | ||||||
|         string logisticsSequence = _Logistics.Sequence.ToString(); |  | ||||||
|         bool isDummyRun = _DummyRuns.Any() && _DummyRuns.ContainsKey(_Logistics.JobID) && _DummyRuns[_Logistics.JobID].Any() && (from l in _DummyRuns[_Logistics.JobID] where l == _Logistics.Sequence select 1).Any(); |  | ||||||
|  |  | ||||||
|         List<Tuple<Shared.Properties.IScopeInfo, string>> tuples = new(); |  | ||||||
|  |  | ||||||
|         string destinationDirectory = WriteScopeInfo(_ProgressPath, _Logistics, dateTime, duplicateDirectory, tuples); |  | ||||||
|         if (isDummyRun) |  | ||||||
|             Shared0607(reportFullPath, duplicateDirectory, logisticsSequence, destinationDirectory); |  | ||||||
|         return results; |         return results; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -13,6 +13,8 @@ namespace Adaptation.FileHandlers.jpeg; | |||||||
| public class FileRead : Shared.FileRead, IFileRead | public class FileRead : Shared.FileRead, IFileRead | ||||||
| { | { | ||||||
|  |  | ||||||
|  |     protected string _LastText; | ||||||
|  |     protected long _LastChange; | ||||||
|     protected readonly Dictionary<string, string> _Reactors; |     protected readonly Dictionary<string, string> _Reactors; | ||||||
|  |  | ||||||
|     public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted) : |     public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted) : | ||||||
| @ -20,6 +22,7 @@ public class FileRead : Shared.FileRead, IFileRead | |||||||
|     { |     { | ||||||
|         _MinFileLength = 10; |         _MinFileLength = 10; | ||||||
|         _NullData = string.Empty; |         _NullData = string.Empty; | ||||||
|  |         _LastText = string.Empty; | ||||||
|         _Logistics = new Logistics(this); |         _Logistics = new Logistics(this); | ||||||
|         if (_FileParameter is null) |         if (_FileParameter is null) | ||||||
|             throw new Exception(cellInstanceConnectionName); |             throw new Exception(cellInstanceConnectionName); | ||||||
| @ -27,6 +30,7 @@ public class FileRead : Shared.FileRead, IFileRead | |||||||
|             throw new Exception(cellInstanceConnectionName); |             throw new Exception(cellInstanceConnectionName); | ||||||
|         if (_IsDuplicator) |         if (_IsDuplicator) | ||||||
|             throw new Exception(cellInstanceConnectionName); |             throw new Exception(cellInstanceConnectionName); | ||||||
|  |         _LastChange = DateTime.Now.AddDays(-1).Ticks; | ||||||
|         _Reactors = new Dictionary<string, string>(); |         _Reactors = new Dictionary<string, string>(); | ||||||
|         string reactor = string.Concat("Reactor.", cellInstanceName); |         string reactor = string.Concat("Reactor.", cellInstanceName); | ||||||
|         ModelObjectParameterDefinition[] reactors = GetProperties(cellInstanceConnectionName, modelObjectParameters, "Reactor."); |         ModelObjectParameterDefinition[] reactors = GetProperties(cellInstanceConnectionName, modelObjectParameters, "Reactor."); | ||||||
| @ -104,8 +108,6 @@ public class FileRead : Shared.FileRead, IFileRead | |||||||
|  |  | ||||||
|     void IFileRead.CheckTests(Test[] tests, bool extra) => throw new Exception(string.Concat("Not ", nameof(_IsDuplicator))); |     void IFileRead.CheckTests(Test[] tests, bool extra) => throw new Exception(string.Concat("Not ", nameof(_IsDuplicator))); | ||||||
|  |  | ||||||
|     void IFileRead.Callback(object state) => throw new Exception(string.Concat("Not ", nameof(_IsDuplicator))); |  | ||||||
|  |  | ||||||
|     private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime) |     private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime) | ||||||
|     { |     { | ||||||
|         Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, null, null, new List<FileInfo>()); |         Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, null, null, new List<FileInfo>()); | ||||||
| @ -120,16 +122,20 @@ public class FileRead : Shared.FileRead, IFileRead | |||||||
|             { |             { | ||||||
|                 if (!iProcessData.Details.Any()) |                 if (!iProcessData.Details.Any()) | ||||||
|                     throw new Exception(string.Concat("A) No Data - ", dateTime.Ticks)); |                     throw new Exception(string.Concat("A) No Data - ", dateTime.Ticks)); | ||||||
|                 if (iProcessData.Details[0] is not string detail) |                 if (iProcessData.Details[0] is not string mid || string.IsNullOrEmpty(mid)) | ||||||
|                     throw new Exception(string.Concat("B) No Data - ", dateTime.Ticks)); |                     throw new Exception(string.Concat("B) No Data - ", dateTime.Ticks)); | ||||||
|                 string mid = detail; |  | ||||||
|                 _Logistics.MID = mid; |                 _Logistics.MID = mid; | ||||||
|                 SetFileParameterLotID(mid); |                 SetFileParameterLotID(mid); | ||||||
|                 _Logistics.ProcessJobID = iProcessData.GetCurrentReactor(this, _Logistics, _Reactors); |                 _Logistics.ProcessJobID = iProcessData.GetCurrentReactor(this, _Logistics, _Reactors); | ||||||
|             } |             } | ||||||
|             if (!iProcessData.Details.Any()) |             if (!iProcessData.Details.Any()) | ||||||
|                 throw new Exception(string.Concat("C) No Data - ", dateTime.Ticks)); |                 throw new Exception(string.Concat("C) No Data - ", dateTime.Ticks)); | ||||||
|             results = iProcessData.GetResults(this, _Logistics, results.Item4); |             if (_LastText != _Logistics.MID || _LastChange < DateTime.Now.AddMinutes(-30).Ticks) | ||||||
|  |             { | ||||||
|  |                 _LastText = _Logistics.MesEntity; | ||||||
|  |                 _LastChange = DateTime.Now.Ticks; | ||||||
|  |                 results = iProcessData.GetResults(this, _Logistics, results.Item4); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|         return results; |         return results; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -40,7 +40,7 @@ public class ProcessData : IProcessData | |||||||
|         _Details = new List<object>(); |         _Details = new List<object>(); | ||||||
|         MesEntity = logistics.MesEntity; |         MesEntity = logistics.MesEntity; | ||||||
|         _Log = LogManager.GetLogger(typeof(ProcessData)); |         _Log = LogManager.GetLogger(typeof(ProcessData)); | ||||||
|         Parse(fileRead); |         Parse(fileRead, fileInfoCollection); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private static string Get(string value, bool useSplitForMID) |     private static string Get(string value, bool useSplitForMID) | ||||||
| @ -105,9 +105,10 @@ public class ProcessData : IProcessData | |||||||
|  |  | ||||||
| #pragma warning disable CA1416 | #pragma warning disable CA1416 | ||||||
|  |  | ||||||
|     private static byte[] GetBytes(IFileRead fileRead, int endY, int endX, int startY, int startX, int outputQuality) |     private static (byte[], Color[]) Get(IFileRead fileRead, int endY, int endX, int startY, int startX, int outputQuality, string saveFileName) | ||||||
|     { |     { | ||||||
|         byte[] results; |         byte[] bytes; | ||||||
|  |         List<Color> colors = new(); | ||||||
|         Point startPoint = new(startX, startY); |         Point startPoint = new(startX, startY); | ||||||
|         using MemoryStream memoryStream = new(); |         using MemoryStream memoryStream = new(); | ||||||
|         EncoderParameters encoderParameters = new(1); |         EncoderParameters encoderParameters = new(1); | ||||||
| @ -117,27 +118,53 @@ public class ProcessData : IProcessData | |||||||
|         Rectangle rectangle = new(startPoint, new Size(endX - startX, endY - startY)); |         Rectangle rectangle = new(startPoint, new Size(endX - startX, endY - startY)); | ||||||
|         using Bitmap bitmap = Image.FromFile(fileRead.ReportFullPath) as Bitmap; |         using Bitmap bitmap = Image.FromFile(fileRead.ReportFullPath) as Bitmap; | ||||||
|         using Bitmap clonedBitmap = bitmap.Clone(rectangle, bitmap.PixelFormat); |         using Bitmap clonedBitmap = bitmap.Clone(rectangle, bitmap.PixelFormat); | ||||||
|         //clonedBitmap.Save(Path.ChangeExtension(fileRead.ReportFullPath, ".png"), System.Drawing.Imaging.ImageFormat.Png); |         if (!string.IsNullOrEmpty(saveFileName)) | ||||||
|  |         { | ||||||
|  |             if (!saveFileName.EndsWith(".png")) | ||||||
|  |                 throw new NotImplementedException("Configured to save as *.png"); | ||||||
|  |             clonedBitmap.Save(saveFileName, System.Drawing.Imaging.ImageFormat.Png); | ||||||
|  |             for (int i = 0; i < rectangle.Width; i++) | ||||||
|  |                 colors.Add(clonedBitmap.GetPixel(i, (int)(rectangle.Height * .5))); | ||||||
|  |         } | ||||||
|         clonedBitmap.Save(memoryStream, imageCodecInfo, encoderParameters); |         clonedBitmap.Save(memoryStream, imageCodecInfo, encoderParameters); | ||||||
|         results = memoryStream.GetBuffer(); |         bytes = memoryStream.GetBuffer(); | ||||||
|         return results; |         return new(bytes, colors.ToArray()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| #pragma warning restore CA1416 | #pragma warning restore CA1416 | ||||||
|  |  | ||||||
|     private static byte[] GetBytes(IFileRead fileRead) => GetBytes(fileRead, 68, 1687, 32, 1094, 95); |     private static (byte[], Color[]) Get(IFileRead fileRead, string saveFileName) => Get(fileRead, 68, 1559, 32, 1094, 95, saveFileName); | ||||||
|  |  | ||||||
|     private void Parse(IFileRead fileRead) |     private void Parse(IFileRead fileRead, List<FileInfo> fileInfoCollection) | ||||||
|     { |     { | ||||||
|         string text; |  | ||||||
|         using TesseractEngine engine = new(string.Empty, "eng", EngineMode.Default); |         using TesseractEngine engine = new(string.Empty, "eng", EngineMode.Default); | ||||||
|         //using Pix img = Pix.LoadFromFile(fileRead.ReportFullPath); |         //using Pix img = Pix.LoadFromFile(fileRead.ReportFullPath); | ||||||
|         byte[] bytes = GetBytes(fileRead); |         (byte[] bytes, Color[] colors) = Get(fileRead, saveFileName: string.Empty); | ||||||
|         using Pix img = Pix.LoadFromMemory(bytes); |         using Pix img = Pix.LoadFromMemory(bytes); | ||||||
|         using Page page = engine.Process(img); |         using Page page = engine.Process(img); | ||||||
|         text = page.GetText(); |         string text = page.GetText().Trim(); | ||||||
|         if (string.IsNullOrEmpty(text)) |         if (!string.IsNullOrEmpty(text)) | ||||||
|             throw new Exception("OCR Failure!"); |             _Log.Debug(text); | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             int red = 0; | ||||||
|  |             int green = 0; | ||||||
|  |             _Log.Debug("Looking by color"); | ||||||
|  |             string saveFileName = Path.ChangeExtension(fileRead.ReportFullPath, ".png"); | ||||||
|  |             (bytes, colors) = Get(fileRead, saveFileName); | ||||||
|  |             foreach (Color color in colors) | ||||||
|  |             { | ||||||
|  |                 if (color.R > 127) | ||||||
|  |                     red += 1; | ||||||
|  |                 if (color.G > 127) | ||||||
|  |                     green += 1; | ||||||
|  |             } | ||||||
|  |             if (red > green) | ||||||
|  |                 text = "Red*"; | ||||||
|  |             else | ||||||
|  |                 text = "Green*"; | ||||||
|  |             fileInfoCollection.Add(new FileInfo(saveFileName)); | ||||||
|  |         } | ||||||
|         _Details.Add(text); |         _Details.Add(text); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -10,7 +10,6 @@ public interface IFileRead : Properties.IFileRead | |||||||
|  |  | ||||||
|     void WaitForThread(); |     void WaitForThread(); | ||||||
|     JsonProperty[] GetDefault(); |     JsonProperty[] GetDefault(); | ||||||
|     void Callback(object state); |  | ||||||
|     string GetEventDescription(); |     string GetEventDescription(); | ||||||
|     List<string> GetHeaderNames(); |     List<string> GetHeaderNames(); | ||||||
|     void CheckTests(Test[] tests, bool extra); |     void CheckTests(Test[] tests, bool extra); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user