From 085e5457a9f4513557117a8dc805df51b03a1bac Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Wed, 18 Sep 2019 18:27:02 +0000 Subject: [PATCH] Zwischenstand Version 5.5 --- ENI-2/ENI2/ENI2/App.config | 6 ++- ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs | 11 +++++ .../ENI2/EditControls/NewWithIdDialog.xaml.cs | 3 ++ .../ENI2/EditControls/VisitIdDialog.xaml.cs | 3 ++ ENI-2/ENI2/ENI2/LocalizedLookup.cs | 1 + Stundensheet.xlsx | Bin 42050 -> 42109 bytes nsw/Source/bsmd.database/DBManager.cs | 1 + nsw/Source/bsmd.database/MDH.cs | 3 ++ nsw/Source/bsmd.database/SEC.cs | 3 ++ nsw/Source/bsmd.database/STAT.cs | 6 +++ nsw/Source/bsmd.database/TOWA.cs | 2 +- nsw/Source/bsmd.database/TOWD.cs | 1 + nsw/Source/bsmd.database/Util.cs | 4 +- .../IResponseService.cs | 9 ++-- .../ResponseService.svc.cs | 7 ++- nsw/dbh/readme.md | 45 ++++++++++++++++++ 16 files changed, 93 insertions(+), 12 deletions(-) create mode 100644 nsw/dbh/readme.md diff --git a/ENI-2/ENI2/ENI2/App.config b/ENI-2/ENI2/ENI2/App.config index cd87bc18..860d073a 100644 --- a/ENI-2/ENI2/ENI2/App.config +++ b/ENI-2/ENI2/ENI2/App.config @@ -26,10 +26,12 @@ 1000 - http://192.168.2.24/LockingService/LockingService.svc + + http://heupferd/bsmd.LockingService/LockingService.svc - Initial Catalog=nsw;Data Source=192.168.2.24\SQLEXPRESS;Uid=dfuser;pwd=dfpasswd;Persist Security Info=False;Connection Reset=false + + Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=E:\DATA\DB\NSW.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False diff --git a/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs b/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs index 82e49694..cdb7db96 100644 --- a/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs +++ b/ENI-2/ENI2/ENI2/DetailRootControl.xaml.cs @@ -717,6 +717,17 @@ namespace ENI2 #endregion + #region IMO plausibility + + if (!this.Core.IMO.IsNullOrEmpty() && !bsmd.database.Util.IsIMOValid(this.Core.IMO)) + { + MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "IMO number does not follow the rules", null, "GLOBAL"); + mv.MessageGroupName = Properties.Resources.textOverview; + vViolations.Add(mv); + } + + #endregion + #endregion foreach (MessageError me in vErrors) diff --git a/ENI-2/ENI2/ENI2/EditControls/NewWithIdDialog.xaml.cs b/ENI-2/ENI2/ENI2/EditControls/NewWithIdDialog.xaml.cs index fcb92408..3a49b7e0 100644 --- a/ENI-2/ENI2/ENI2/EditControls/NewWithIdDialog.xaml.cs +++ b/ENI-2/ENI2/ENI2/EditControls/NewWithIdDialog.xaml.cs @@ -95,6 +95,9 @@ namespace ENI2.EditControls private void doubleUpDownIMO_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { this.CheckComplete(); + + if ((this.doubleUpDownIMO.Value > 1000000) && (!bsmd.database.Util.IsIMOValid(this.doubleUpDownIMO.Value.ToString()))) + MessageBox.Show("IMO has invalid format!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); } private void comboBoxInitialHIS_SelectionChanged(object sender, SelectionChangedEventArgs e) diff --git a/ENI-2/ENI2/ENI2/EditControls/VisitIdDialog.xaml.cs b/ENI-2/ENI2/ENI2/EditControls/VisitIdDialog.xaml.cs index 48dc00f7..6bb819e0 100644 --- a/ENI-2/ENI2/ENI2/EditControls/VisitIdDialog.xaml.cs +++ b/ENI-2/ENI2/ENI2/EditControls/VisitIdDialog.xaml.cs @@ -82,6 +82,9 @@ namespace ENI2.EditControls bool hasValue = (doubleUpDownIMO.Value.HasValue && doubleUpDownIMO.Value > 0); doubleUpDownENI.IsReadOnly = hasValue; this.CheckComplete(); + + if ((this.doubleUpDownIMO.Value > 1000000) && (!bsmd.database.Util.IsIMOValid(this.doubleUpDownIMO.Value.ToString()))) + MessageBox.Show("IMO has invalid format!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); } private void doubleUpDownENI_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) diff --git a/ENI-2/ENI2/ENI2/LocalizedLookup.cs b/ENI-2/ENI2/ENI2/LocalizedLookup.cs index 0a7d07fc..ca8c46a1 100644 --- a/ENI-2/ENI2/ENI2/LocalizedLookup.cs +++ b/ENI-2/ENI2/ENI2/LocalizedLookup.cs @@ -74,6 +74,7 @@ namespace ENI2 public static bool CheckNationality(string nationality) { + if (nationality.IsNullOrEmpty()) return false; if (_nationalities == null) _nationalities = getNationalities(); return _nationalities.ContainsKey(nationality); } diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index fa1f6d052984f6cce657e1de7286e6e5ffa09398..856fce24017e86fa3465c81516b4471fee2e6bd7 100644 GIT binary patch delta 30187 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 G=l=p3@~6K5 delta 30123 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 diff --git a/nsw/Source/bsmd.database/DBManager.cs b/nsw/Source/bsmd.database/DBManager.cs index aa8c5c2d..0211f6f4 100644 --- a/nsw/Source/bsmd.database/DBManager.cs +++ b/nsw/Source/bsmd.database/DBManager.cs @@ -787,6 +787,7 @@ namespace bsmd.database if (entity is ISublistElement sublistElement) { string stringIdentifier = (sublistElement).Identifier; + if (stringIdentifier == null) return; Regex re = new Regex(@"\d+"); Match m = re.Match(stringIdentifier); if (m.Success) diff --git a/nsw/Source/bsmd.database/MDH.cs b/nsw/Source/bsmd.database/MDH.cs index af94aecc..af9e2df0 100644 --- a/nsw/Source/bsmd.database/MDH.cs +++ b/nsw/Source/bsmd.database/MDH.cs @@ -617,6 +617,9 @@ namespace bsmd.database if ((this.DateOfIssue.HasValue) && (this.DateOfIssue.Value < DateTime.Today.AddMonths(-6))) violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Date of issue might be too old", null, this.Title, null, this.Tablename)); + if ((this.DateOfIssue.HasValue) && (this.DateOfIssue.Value > DateTime.Today)) + violations.Add(RuleEngine.CreateViolation(ValidationCode.TIME_IMPLAUSIBLE, "Date of issue is in the future", null, this.Title, null, this.Tablename)); + if (this.PortOfCallLast30Days.Count == 0) { errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "Port of Call last 30 day list is EMPTY", null, this.Title, null, this.Tablename)); diff --git a/nsw/Source/bsmd.database/SEC.cs b/nsw/Source/bsmd.database/SEC.cs index 878f232a..78621a0a 100644 --- a/nsw/Source/bsmd.database/SEC.cs +++ b/nsw/Source/bsmd.database/SEC.cs @@ -409,6 +409,9 @@ namespace bsmd.database if ((this.LastTenPortFacilitesCalled.Count == 0) || (this.LastTenPortFacilitesCalled.Count > 10)) errors.Add(RuleEngine.CreateError(ValidationCode.IMPLAUSIBLE, "LastTenPortFacilitiesCalled", null, this.Title, null, this.Tablename)); + if (!(this.ValidISSCOnBoard ?? false)) + violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "No valid security plan on board?", null, this.Title, null, this.Tablename)); + if(this.KielCanalPassagePlanned ?? false) { if(!KielCanalPassagePlannedIncomming.HasValue && !KielCanalPassagePlannedOutgoing.HasValue) diff --git a/nsw/Source/bsmd.database/STAT.cs b/nsw/Source/bsmd.database/STAT.cs index 4b352d2d..a77c82d3 100644 --- a/nsw/Source/bsmd.database/STAT.cs +++ b/nsw/Source/bsmd.database/STAT.cs @@ -319,6 +319,12 @@ namespace bsmd.database violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "Beam valid?", null, this.Title, null, this.Tablename)); if (this.GrossTonnage.HasValue && ((this.GrossTonnage.Value < 50) || (this.GrossTonnage > 500000))) violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "Gross tonnage valid?", null, this.Title, null, this.Tablename)); + + if((this.PortOfRegistry.Length > 1) && (this.Flag.Length == 2)) + { + if (!this.PortOfRegistry.Substring(0, 2).Equals(this.Flag)) + violations.Add(RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "Port of registration and flag do not match!", null, this.Title, null, this.Tablename)); + } } #endregion diff --git a/nsw/Source/bsmd.database/TOWA.cs b/nsw/Source/bsmd.database/TOWA.cs index 4cb74e38..c8d52d79 100644 --- a/nsw/Source/bsmd.database/TOWA.cs +++ b/nsw/Source/bsmd.database/TOWA.cs @@ -31,7 +31,7 @@ namespace bsmd.database public string TowageOnArrivalName { get; set; } [ShowReport] - [Validation(ValidationCode.FLAG_CODE)] + [Validation(ValidationCode.FLAG_CODE)] [MaxLength(2)] [ENI2Validation] public string TowageOnArrivalFlag { get; set; } diff --git a/nsw/Source/bsmd.database/TOWD.cs b/nsw/Source/bsmd.database/TOWD.cs index bdd91fca..05ce8206 100644 --- a/nsw/Source/bsmd.database/TOWD.cs +++ b/nsw/Source/bsmd.database/TOWD.cs @@ -32,6 +32,7 @@ namespace bsmd.database [ShowReport] [MaxLength(2)] + [Validation(ValidationCode.FLAG_CODE)] [ENI2Validation] public string TowageOnDepartureFlag { get; set; } diff --git a/nsw/Source/bsmd.database/Util.cs b/nsw/Source/bsmd.database/Util.cs index 434c4fbf..260f3167 100644 --- a/nsw/Source/bsmd.database/Util.cs +++ b/nsw/Source/bsmd.database/Util.cs @@ -250,12 +250,12 @@ namespace bsmd.database int sum = 0; for (int i = 0, multiplier = 7; i < 6; i++, multiplier--) { - sum += (Convert.ToInt32(actualIMO[i]) * multiplier); + sum += (Convert.ToInt32(actualIMO.Substring(i,1)) * multiplier); } int lastdigit = sum % 10; // letzte Stelle - if (Convert.ToInt32(actualIMO[6]) == lastdigit) + if (Convert.ToInt32(actualIMO.Substring(6,1)) == lastdigit) return true; } diff --git a/nsw/Source/bsmd.dbh.ResponseService/IResponseService.cs b/nsw/Source/bsmd.dbh.ResponseService/IResponseService.cs index 8ef2c266..2c3801a7 100644 --- a/nsw/Source/bsmd.dbh.ResponseService/IResponseService.cs +++ b/nsw/Source/bsmd.dbh.ResponseService/IResponseService.cs @@ -3,9 +3,8 @@ using System.Collections.Generic; using System.ServiceModel; namespace bsmd.dbh.ResponseService -{ - // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together. - [ServiceContract] +{ + [ServiceContract] public interface IResponseService { @@ -14,8 +13,8 @@ namespace bsmd.dbh.ResponseService /// Sicher ist Void, weniger sicher der Namen und der Name des Parameters. Dessen Type allerdings schon. /// [OperationContract(Action = "http://tempuri.org/IResponseService/NSWResponse")] - [XmlSerializerFormatAttribute()] - void Root(string Version, string MessageId, string VisitId, string TransitId, DateTime Timestamp, + [XmlSerializerFormatAttribute()] + void root(string Version, string MessageId, string VisitId, string TransitId, DateTime Timestamp, string SenderReference, bsmd.dbh.response.RootType Type, bsmd.dbh.response.RootReportingClassesFull ReportingClassesFull, bsmd.dbh.response.RootReportingClassesPartial ReportingClassesPartial, diff --git a/nsw/Source/bsmd.dbh.ResponseService/ResponseService.svc.cs b/nsw/Source/bsmd.dbh.ResponseService/ResponseService.svc.cs index 2dd81400..81036dd4 100644 --- a/nsw/Source/bsmd.dbh.ResponseService/ResponseService.svc.cs +++ b/nsw/Source/bsmd.dbh.ResponseService/ResponseService.svc.cs @@ -1,15 +1,18 @@ using System; +using System.ServiceModel; using log4net; using bsmd.database; namespace bsmd.dbh.ResponseService -{ +{ + + [ServiceBehavior(AddressFilterMode = AddressFilterMode.Any, ValidateMustUnderstand = false)] public class ResponseService : IResponseService { private readonly ILog _log = LogManager.GetLogger("dbh ResponseService"); - public void Root(string Version, string MessageId, string VisitId, string TransitId, DateTime Timestamp, + public void root(string Version, string MessageId, string VisitId, string TransitId, DateTime Timestamp, string SenderReference, bsmd.dbh.response.RootType Type, bsmd.dbh.response.RootReportingClassesFull ReportingClassesFull, bsmd.dbh.response.RootReportingClassesPartial ReportingClassesPartial, diff --git a/nsw/dbh/readme.md b/nsw/dbh/readme.md new file mode 100644 index 00000000..ef61be5d --- /dev/null +++ b/nsw/dbh/readme.md @@ -0,0 +1,45 @@ +# Erkenntnisse DBH Response + +Nach dem Server Umzug Aug/Sep. funktionierte der DBH Rückkanal nicht mehr. Mit NSW 3.0 gab es ohnehin schwere Probleme, so dass man den +Weg verlassen hat. In einem Termin in Bremen wurde nun die Reaktivierung besprochen. Ich habe es leider auf Anhieb nicht geschafft, den +Rückkanal wiederzubeleben, da alle Werte leer waren und offensichtlich das Parsing kaputt war. +Dabei habe ich festgestellt, dass DBH im Header die SOAP Header Attribute To: und Action: (von SOAP 1.1) verwendet in der Form: + +``` + + http://srv-04.bsmd.local/nswservice/dbh/ResponseService.svc + http://tempuri.org/IResponseService/NSWResponse + + +``` + +Es hat nur funktioniert, als ich diese beiden Attribute gelöscht habe. Nach langer Suche (kann ja nur serverseitig was ändern, wie dbh angeblich auf die "lowlevel" Themen keinen Einfluss hat) folgendes in der web.config eingetragen: + +``` + + + + + + + + + + + + + + + +``` +Der interessante Punkt ist dass man die messageVersion (entscheidet darüber, ob To/Action angenommen wird oder nicht, das ist das Addressing) nur angeben kann wenn man customBinding verwendet. + +Außerdem habe ich im Service die Klasse ResponseService mit folgenden Attributen dekoriert: + +``` +[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any, ValidateMustUnderstand = false)] +``` + +Beim nächsten Versuch kamen die Attribute auf einmal nicht mehr mit (konnte man da doch was drehen, Herr Stöver?) und ich habe das Adressing wieder auskommentiert. + +Dieser ganze *Bullshit* ist nur eine Gedankenstütze \ No newline at end of file