From fc923034390aceb198fc124739d60545b4062515 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Fri, 10 Nov 2017 18:23:42 +0000 Subject: [PATCH] =?UTF-8?q?H=C3=A4rten=20der=20Anwendung=20;-)=20"H=C3=A4n?= =?UTF-8?q?ger"=20der=20Transmitter-Situation=20gekl=C3=A4rt=20(umgeleitet?= =?UTF-8?q?e=20Streams=20und=20vollgelaufene=20Buffer=20f=C3=BChren=20hier?= =?UTF-8?q?=20zu=20einem=20(obskuren!)=20Deadlock.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ENI2/ENI2/Controls/LocodeControl.xaml.cs | 50 ++++++-- ...aritimeHealthDeclarationDetailControl.xaml | 2 +- .../OverViewDetailControl.xaml | 13 +- .../OverViewDetailControl.xaml.cs | 23 +++- .../PortCallDetailControl.xaml | 2 +- .../SecurityDetailControl.xaml | 4 +- .../ShipDataDetailControl.xaml | 2 +- ENI-2/ENI2/ENI2/ENI2.csproj | 4 +- .../EditControls/CoreStatusInfoDialog.xaml | 8 +- ENI-2/ENI2/ENI2/SucheControl.xaml | 13 +- .../SendNSWMessageService/NSWSendService.cs | 8 +- nsw/Source/bsmd.ExcelReadService/LocodeDB.cs | 33 ++++- nsw/Source/bsmd.ExcelReadService/Util.cs | 3 +- nsw/Source/bsmd.database/Message.cs | 4 +- nsw/Source/bsmd.database/MessageCore.cs | 22 +++- .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.dbh/Request.cs | 98 +++++++++++++- nsw/Source/bsmd.dbh/Response.cs | 28 ++-- nsw/Source/bsmd.hisnord/NSWResponse.cs | 45 +++++-- nsw/Source/bsmd.hisnord/Request.cs | 32 +++-- nsw/Source/bsmd.hisnord/Response.cs | 34 ++++- nsw/Source/bsmd.hisnord/transmitter.cs | 121 ++++++++++++------ 23 files changed, 424 insertions(+), 129 deletions(-) diff --git a/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs b/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs index 076605c8..7bdec8b1 100644 --- a/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/Controls/LocodeControl.xaml.cs @@ -28,13 +28,20 @@ namespace ENI2.Controls InitializeComponent(); } + public enum LocodeMode + { + STANDARD, + NO_PORT_FLAG, + SSN + }; + protected enum LocodeState { UNKNOWN, INVALID, OK, AMBIGUOUS - } + }; /// /// used internally to load up drop down @@ -50,8 +57,16 @@ namespace ENI2.Controls get { return this.comboBoxLocode.SelectedItem as string; } set { this._locodeList.Clear(); - - string portName = this.UseSSNCodes ? LocalizedLookup.SSNPortNameFromLocode(value) : LocodeDB.PortNameFromLocode(value); + string portName = null; + switch (this.LocodeSource) + { + case LocodeMode.NO_PORT_FLAG: + portName = LocodeDB.LocationNameFromLocode(value); break; + case LocodeMode.STANDARD: + portName = LocodeDB.PortNameFromLocode(value); break; + case LocodeMode.SSN: + portName = LocalizedLookup.SSNPortNameFromLocode(value); break; + } LocodeState locodeState = portName.IsNullOrEmpty() ? LocodeState.INVALID : LocodeState.OK; this.SetLocodeStateImage(this.imageLocodeState, locodeState); @@ -74,10 +89,7 @@ namespace ENI2.Controls set { SetValue(LocodeValueProperty, value); } } - /// - /// Use alternate Locode Source (for NOA_NOD NextPort if unspecif. (888)) - /// - public bool UseSSNCodes { get; set; } + public LocodeMode LocodeSource { get; set; } #region static methods @@ -122,7 +134,17 @@ namespace ENI2.Controls if (this.comboBoxLocode.Text.Length == 5) { string directLocode = this.comboBoxLocode.Text.Trim().ToUpper(); - string portname = this.UseSSNCodes ? LocalizedLookup.SSNPortNameFromLocode(directLocode) : LocodeDB.PortNameFromLocode(directLocode); + string portname = null; + switch(this.LocodeSource) + { + case LocodeMode.NO_PORT_FLAG: + portname = LocodeDB.LocationNameFromLocode(directLocode); break; + case LocodeMode.STANDARD: + portname = LocodeDB.PortNameFromLocode(directLocode); break; + case LocodeMode.SSN: + portname = LocalizedLookup.SSNPortNameFromLocode(directLocode); break; + } + bool isLocode = !portname.IsNullOrEmpty(); if (isLocode) { @@ -138,7 +160,17 @@ namespace ENI2.Controls { // assume this is a harbour name typed out.. string lookupString = string.Format("%{0}%", this.comboBoxLocode.Text.Trim()); - List locodeEntries = this.UseSSNCodes ? LocalizedLookup.SSNAllLocodesForCityNameAsEntries(lookupString) : LocodeDB.AllLocodesForCityNameAsEntries(lookupString); + List locodeEntries = null; + + switch(this.LocodeSource) + { + case LocodeMode.NO_PORT_FLAG: + locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString, false); break; + case LocodeMode.STANDARD: + locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString); break; + case LocodeMode.SSN: + locodeEntries = LocalizedLookup.SSNAllLocodesForCityNameAsEntries(lookupString); break; + } locodeEntries.Sort(); foreach (LocodeDB.LocodeEntry entry in locodeEntries) diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/MaritimeHealthDeclarationDetailControl.xaml b/ENI-2/ENI2/ENI2/DetailViewControls/MaritimeHealthDeclarationDetailControl.xaml index 73e594be..10766ade 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/MaritimeHealthDeclarationDetailControl.xaml +++ b/ENI-2/ENI2/ENI2/DetailViewControls/MaritimeHealthDeclarationDetailControl.xaml @@ -65,7 +65,7 @@ - + diff --git a/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml b/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml index b1e81ee3..23895d3f 100644 --- a/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml +++ b/ENI-2/ENI2/ENI2/DetailViewControls/OverViewDetailControl.xaml @@ -48,7 +48,7 @@