5.1.4 kleinere KOrrekturen

This commit is contained in:
Daniel Schick 2019-02-05 17:21:58 +00:00
parent 4bb7f7e14c
commit d9e071b806
9 changed files with 88 additions and 101 deletions

View File

@ -252,7 +252,7 @@ namespace ENI2.DetailViewControls
int cnt = 0; int cnt = 0;
object o = null; object o = null;
while (reader.Read() && (cnt < 14)) while (reader.Read() && (cnt < 15))
{ {
if (((IExcelDataReader)reader).FieldCount < 10) if (((IExcelDataReader)reader).FieldCount < 10)
{ {

Binary file not shown.

View File

@ -12,6 +12,7 @@ using System.Collections.Generic;
using System.Data; using System.Data;
using System.Data.SQLite; using System.Data.SQLite;
using bsmd.database; using bsmd.database;
using log4net;
namespace bsmd.ExcelReadService namespace bsmd.ExcelReadService
{ {
@ -21,8 +22,10 @@ namespace bsmd.ExcelReadService
/// </summary> /// </summary>
public static class LocodeDB public static class LocodeDB
{ {
private static SQLiteConnection _con; private static readonly SQLiteConnection _con;
private const string _locode_DB_NAME = "db.sqlite"; private const string _locode_DB_NAME = "db.sqlite";
private static readonly ILog _log = LogManager.GetLogger(typeof(LocodeDB));
static LocodeDB() static LocodeDB()
{ {
_con = new SQLiteConnection(string.Format("data source={0}; Version=3;", _locode_DB_NAME)); _con = new SQLiteConnection(string.Format("data source={0}; Version=3;", _locode_DB_NAME));
@ -148,17 +151,24 @@ namespace bsmd.ExcelReadService
if (locode.Length != 5) return null; if (locode.Length != 5) return null;
string result = null; string result = null;
string query = string.Format("SELECT locodes.name_wo_diacritics FROM locodes JOIN countries ON locodes.country_id = countries.ID WHERE locodes.port='t' AND locodes.city_code = '{0}' AND countries.code = '{1}'", try
locode.Substring(2), locode.Substring(0,2));
SQLiteCommand cmd = new SQLiteCommand(query, _con);
IDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{ {
if(!reader.IsDBNull(0)) string query = string.Format("SELECT locodes.name_wo_diacritics FROM locodes JOIN countries ON locodes.country_id = countries.ID WHERE locodes.port='t' AND locodes.city_code = '{0}' AND countries.code = '{1}'",
result = reader.GetString(0); locode.Substring(2), locode.Substring(0, 2));
break; SQLiteCommand cmd = new SQLiteCommand(query, _con);
IDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
if (!reader.IsDBNull(0))
result = reader.GetString(0);
break;
}
reader.Close();
}
catch(Exception ex)
{
_log.WarnFormat("Error on locode lookup: {0}", ex.Message);
} }
reader.Close();
return result; return result;
} }
@ -228,8 +238,8 @@ namespace bsmd.ExcelReadService
public int CompareTo(object obj) public int CompareTo(object obj)
{ {
if (obj is LocodeEntry) if (obj is LocodeEntry locodeEntry)
return Locode.CompareTo(((LocodeEntry)obj).Locode); return Locode.CompareTo((locodeEntry).Locode);
else else
return 0; return 0;
} }

View File

@ -7,12 +7,12 @@ using System.ServiceProcess;
namespace bsmd.ExcelReadService namespace bsmd.ExcelReadService
{ {
static class Program internal static class Program
{ {
/// <summary> /// <summary>
/// The main entry point for the application. /// The main entry point for the application.
/// </summary> /// </summary>
static void Main() private static void Main()
{ {
ServiceBase[] ServicesToRun; ServiceBase[] ServicesToRun;

View File

@ -219,7 +219,7 @@ namespace bsmd.ExcelReadService
#region TIEFD #region TIEFD
static void ScanTIEFD(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanTIEFD(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message tiefdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TIEFD); Message tiefdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TIEFD);
if(tiefdMessage.Elements.Count == 0) if(tiefdMessage.Elements.Count == 0)
@ -241,7 +241,7 @@ namespace bsmd.ExcelReadService
#region NAME #region NAME
static void ScanNAME(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanNAME(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message nameMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.NAME); Message nameMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.NAME);
if (nameMessage.Elements.Count == 0) if (nameMessage.Elements.Count == 0)
@ -260,7 +260,7 @@ namespace bsmd.ExcelReadService
#region BPOL #region BPOL
static void ScanBPOL(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanBPOL(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
// Die Verarbeitung dieser Nachricht aktuell nur für // Die Verarbeitung dieser Nachricht aktuell nur für
Message bpolMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BPOL); Message bpolMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BPOL);
@ -323,7 +323,7 @@ namespace bsmd.ExcelReadService
#region POBA #region POBA
static void ScanPOBA(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanPOBA(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message pobaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBA); Message pobaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBA);
if(pobaMessage.Elements.Count == 0) if(pobaMessage.Elements.Count == 0)
@ -350,7 +350,7 @@ namespace bsmd.ExcelReadService
#region POBD #region POBD
static void ScanPOBD(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanPOBD(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message pobdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBD); Message pobdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.POBD);
if(pobdMessage.Elements.Count == 0) if(pobdMessage.Elements.Count == 0)
@ -378,7 +378,7 @@ namespace bsmd.ExcelReadService
#region HAZA #region HAZA
static void ScanHAZA(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanHAZA(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message hazaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZA); Message hazaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZA);
if(hazaMessage.Elements.Count == 0) if(hazaMessage.Elements.Count == 0)
@ -715,7 +715,7 @@ namespace bsmd.ExcelReadService
#region HAZD #region HAZD
static void ScanHAZD(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanHAZD(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message hazdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZD); Message hazdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.HAZD);
if (hazdMessage.Elements.Count == 0) if (hazdMessage.Elements.Count == 0)
@ -1055,7 +1055,7 @@ namespace bsmd.ExcelReadService
#region INFO #region INFO
static void ScanINFO(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanINFO(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message infoMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.INFO); Message infoMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.INFO);
if(infoMessage.Elements.Count == 0) if(infoMessage.Elements.Count == 0)
@ -1078,7 +1078,7 @@ namespace bsmd.ExcelReadService
#region STAT #region STAT
static void ScanSTAT(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanSTAT(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message statMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.STAT); Message statMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.STAT);
if(statMessage.Elements.Count == 0) if(statMessage.Elements.Count == 0)
@ -1135,7 +1135,7 @@ namespace bsmd.ExcelReadService
#region NOA_NOD #region NOA_NOD
static void ScanNOA_NOD(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanNOA_NOD(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message noa_nodMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.NOA_NOD); Message noa_nodMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.NOA_NOD);
if (noa_nodMessage.Elements.Count == 0) if (noa_nodMessage.Elements.Count == 0)
@ -1177,8 +1177,7 @@ namespace bsmd.ExcelReadService
if (!callPurposeCode.IsNullOrEmpty()) if (!callPurposeCode.IsNullOrEmpty())
{ {
CallPurpose callPurpose = noa_nod.GetSublistElementWithIdentifier(i.ToString()) as CallPurpose; if (!(noa_nod.GetSublistElementWithIdentifier(i.ToString()) is CallPurpose callPurpose))
if (callPurpose == null)
{ {
callPurpose = new CallPurpose(); callPurpose = new CallPurpose();
callPurpose.NOA_NOD = noa_nod; callPurpose.NOA_NOD = noa_nod;
@ -1219,18 +1218,21 @@ namespace bsmd.ExcelReadService
reader.Conf.ConfirmText("NOA_NOD.LastPort", lastPort, noa_nod.LastPort.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); reader.Conf.ConfirmText("NOA_NOD.LastPort", lastPort, noa_nod.LastPort.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
string nextPort = reader.ReadText("NOA_NOD.NextPort")?.Trim().ToUpper(); string nextPort = reader.ReadText("NOA_NOD.NextPort")?.Trim().ToUpper();
bool? isValidSSNPort = false; bool isValidSSNPort = false;
if (!nextPort.IsNullOrEmpty()) if (!nextPort.IsNullOrEmpty())
{ {
if (noa_nod.NextPort.Length > 5) if (nextPort.Length > 5)
noa_nod.NextPort = noa_nod.NextPort.Substring(0, 5); //trunc nextPort = noa_nod.NextPort.Substring(0, 5); //trunc
isValidSSNPort = !LocodeDB.SSNPortNameFromLocode(noa_nod.NextPort).IsNullOrEmpty(); else
isValidSSNPort = !LocodeDB.SSNPortNameFromLocode(nextPort).IsNullOrEmpty();
} }
if(!isValidSSNPort.HasValue) if(string.IsNullOrEmpty(nextPort))
reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, ExcelReader.ReadState.WARN); reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, ExcelReader.ReadState.WARN);
else else
reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, isValidSSNPort.Value ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); reader.Conf.ConfirmText("NOA_NOD.NextPort", nextPort, isValidSSNPort ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL);
noa_nod.NextPort = nextPort;
if(messageCore.IsTransit) if(messageCore.IsTransit)
{ {
@ -1259,7 +1261,7 @@ namespace bsmd.ExcelReadService
#region AGNT #region AGNT
static void ScanAGNT(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanAGNT(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message agntMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.AGNT); Message agntMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.AGNT);
if(agntMessage.Elements.Count == 0) if(agntMessage.Elements.Count == 0)
@ -1280,7 +1282,7 @@ namespace bsmd.ExcelReadService
#region WAS #region WAS
static void ScanWAS(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanWAS(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message wasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.WAS); Message wasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.WAS);
if (wasMessage.Elements.Count == 0) if (wasMessage.Elements.Count == 0)
@ -1336,8 +1338,7 @@ namespace bsmd.ExcelReadService
string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i); string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i);
string wasteDis = string.Format("WAS.WasteDisposedAtLastPort_MTQ_{0}", i); string wasteDis = string.Format("WAS.WasteDisposedAtLastPort_MTQ_{0}", i);
Waste waste = was.GetSublistElementWithIdentifier(i.ToString()) as Waste; if (!(was.GetSublistElementWithIdentifier(i.ToString()) is Waste waste))
if(waste == null)
{ {
waste = new Waste(); waste = new Waste();
waste.Identifier = i.ToString(); waste.Identifier = i.ToString();
@ -1473,7 +1474,7 @@ namespace bsmd.ExcelReadService
#region MDH #region MDH
static void ScanMDH(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanMDH(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message mdhMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.MDH); Message mdhMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.MDH);
if(mdhMessage.Elements.Count == 0) if(mdhMessage.Elements.Count == 0)
@ -1509,8 +1510,7 @@ namespace bsmd.ExcelReadService
int i = 1; int i = 1;
foreach (LastTenPortFacilitiesCalled ltpfc in sec.LastTenPortFacilitesCalled) foreach (LastTenPortFacilitiesCalled ltpfc in sec.LastTenPortFacilitesCalled)
{ {
PortOfCallLast30Days poc30d = mdh.GetSublistElementWithIdentifier((i + 1).ToString()) as PortOfCallLast30Days; if (!(mdh.GetSublistElementWithIdentifier((i + 1).ToString()) is PortOfCallLast30Days poc30d))
if (poc30d == null)
{ {
poc30d = new PortOfCallLast30Days(); poc30d = new PortOfCallLast30Days();
poc30d.Identifier = (i + 1).ToString(); poc30d.Identifier = (i + 1).ToString();
@ -1537,8 +1537,7 @@ namespace bsmd.ExcelReadService
string crewName = string.Format("MDH.PortOfCallLast30DaysCrewJoinedShipName_{0}", i + 1); string crewName = string.Format("MDH.PortOfCallLast30DaysCrewJoinedShipName_{0}", i + 1);
string depDate = string.Format("MDH.PortOfCallLast30DaysDateOfDeparture_{0}", i + 1); string depDate = string.Format("MDH.PortOfCallLast30DaysDateOfDeparture_{0}", i + 1);
PortOfCallLast30Days poc30d = mdh.GetSublistElementWithIdentifier((i + 1).ToString()) as PortOfCallLast30Days; if (!(mdh.GetSublistElementWithIdentifier((i + 1).ToString()) is PortOfCallLast30Days poc30d))
if (poc30d == null)
{ {
poc30d = new PortOfCallLast30Days(); poc30d = new PortOfCallLast30Days();
poc30d.Identifier = (i + 1).ToString(); poc30d.Identifier = (i + 1).ToString();
@ -1567,8 +1566,7 @@ namespace bsmd.ExcelReadService
ExcelReader.ReadState readState = ExcelReader.ReadState.OK; ExcelReader.ReadState readState = ExcelReader.ReadState.OK;
for (int j = 0; j < crew.Length; j++) for (int j = 0; j < crew.Length; j++)
{ {
PortOfCallLast30DaysCrewJoinedShip poc30dCrew = poc30d.GetSublistElementWithIdentifier((j + 1).ToString()) as PortOfCallLast30DaysCrewJoinedShip; if (!(poc30d.GetSublistElementWithIdentifier((j + 1).ToString()) is PortOfCallLast30DaysCrewJoinedShip poc30dCrew))
if (poc30dCrew == null)
{ {
poc30dCrew = new PortOfCallLast30DaysCrewJoinedShip(); poc30dCrew = new PortOfCallLast30DaysCrewJoinedShip();
poc30dCrew.Identifier = (j + 1).ToString(); poc30dCrew.Identifier = (j + 1).ToString();
@ -1714,7 +1712,7 @@ namespace bsmd.ExcelReadService
#region SEC #region SEC
static void ScanSEC(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanSEC(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message secMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SEC); Message secMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SEC);
if (secMessage.Elements.Count == 0) if (secMessage.Elements.Count == 0)
@ -1786,8 +1784,7 @@ namespace bsmd.ExcelReadService
string portGISISCode = string.Format("SEC.PortFacilityGISISCode_{0}", i); string portGISISCode = string.Format("SEC.PortFacilityGISISCode_{0}", i);
string portSecMatters = string.Format("SEC.PortFacilitySecurityMattersToReport_{0}", i); string portSecMatters = string.Format("SEC.PortFacilitySecurityMattersToReport_{0}", i);
LastTenPortFacilitiesCalled l10fc = sec.GetPortFacilityWithIdentifier(i.ToString()) as LastTenPortFacilitiesCalled; if (!(sec.GetPortFacilityWithIdentifier(i.ToString()) is LastTenPortFacilitiesCalled l10fc))
if (l10fc == null)
{ {
l10fc = new LastTenPortFacilitiesCalled(); l10fc = new LastTenPortFacilitiesCalled();
l10fc.Identifier = i.ToString(); l10fc.Identifier = i.ToString();
@ -1853,10 +1850,9 @@ namespace bsmd.ExcelReadService
string s2sToDate = string.Format("SEC.ShipToShipActivityDateTo_{0}", i); string s2sToDate = string.Format("SEC.ShipToShipActivityDateTo_{0}", i);
string s2sSec = string.Format("SEC.ShipToShipActivitySecurityMattersToReport_{0}", i); string s2sSec = string.Format("SEC.ShipToShipActivitySecurityMattersToReport_{0}", i);
string s2sActivityString = string.Format("SEC.ShipToShipActivityType_{0}", i); string s2sActivityString = string.Format("SEC.ShipToShipActivityType_{0}", i);
ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2sActivity = sec.GetShipToShipWithIdentifier(i.ToString()) as ShipToShipActivitiesDuringLastTenPortFacilitiesCalled;
if (s2sActivity == null) if (!(sec.GetShipToShipWithIdentifier(i.ToString()) is ShipToShipActivitiesDuringLastTenPortFacilitiesCalled s2sActivity))
{ {
s2sActivity = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled(); s2sActivity = new ShipToShipActivitiesDuringLastTenPortFacilitiesCalled();
s2sActivity.Identifier = i.ToString(); s2sActivity.Identifier = i.ToString();
@ -1894,17 +1890,16 @@ namespace bsmd.ExcelReadService
#region BKRA #region BKRA
static void ScanBKRA(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanBKRA(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message bkraMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRA); Message bkraMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRA);
bkraMessage.DeleteElements(); bkraMessage.DeleteElements();
for (int i = 1; i <= bkraMessage.NumberOfExcelRows; i++) for (int i = 1; i <= bkraMessage.NumberOfExcelRows; i++)
{ {
string lnQuantity = string.Format("BKRA.BunkerFuelQuantity_TNE_{0}", i); string lnQuantity = string.Format("BKRA.BunkerFuelQuantity_TNE_{0}", i);
string lnType = string.Format("BKRA.BunkerFuelType_{0}", i); string lnType = string.Format("BKRA.BunkerFuelType_{0}", i);
BRKA bkra = bkraMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKA; if (!(bkraMessage.GetSublistElementWithIdentifier((i).ToString()) is BRKA bkra))
if (bkra == null)
{ {
bkra = new BRKA(); bkra = new BRKA();
bkra.Identifier = (i).ToString(); bkra.Identifier = (i).ToString();
@ -1936,7 +1931,7 @@ namespace bsmd.ExcelReadService
#region BKRD #region BKRD
static void ScanBKRD(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanBKRD(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message bkrdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRD); Message bkrdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.BKRD);
bkrdMessage.DeleteElements(); bkrdMessage.DeleteElements();
@ -1944,8 +1939,7 @@ namespace bsmd.ExcelReadService
{ {
string lnQuantity = string.Format("BKRD.BunkerFuelQuantity_TNE_{0}", i); string lnQuantity = string.Format("BKRD.BunkerFuelQuantity_TNE_{0}", i);
string lnType = string.Format("BKRD.BunkerFuelType_{0}", i); string lnType = string.Format("BKRD.BunkerFuelType_{0}", i);
BRKD bkrd = bkrdMessage.GetSublistElementWithIdentifier((i).ToString()) as BRKD; if (!(bkrdMessage.GetSublistElementWithIdentifier((i).ToString()) is BRKD bkrd))
if (bkrd == null)
{ {
bkrd = new BRKD(); bkrd = new BRKD();
bkrd.Identifier = (i).ToString(); bkrd.Identifier = (i).ToString();
@ -1977,7 +1971,7 @@ namespace bsmd.ExcelReadService
#region TOWA #region TOWA
static void ScanTOWA(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanTOWA(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message towaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWA); Message towaMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWA);
towaMessage.DeleteElements(); towaMessage.DeleteElements();
@ -1995,8 +1989,7 @@ namespace bsmd.ExcelReadService
string towageName = reader.ReadText(tName); string towageName = reader.ReadText(tName);
if (towageName.IsNullOrEmpty()) continue; if (towageName.IsNullOrEmpty()) continue;
TOWA towa = towaMessage.GetSublistElementWithIdentifier((i).ToString()) as TOWA; if (!(towaMessage.GetSublistElementWithIdentifier((i).ToString()) is TOWA towa))
if (towa == null)
{ {
towa = new TOWA(); towa = new TOWA();
towa.Identifier = (i).ToString(); towa.Identifier = (i).ToString();
@ -2023,7 +2016,7 @@ namespace bsmd.ExcelReadService
#region TOWD #region TOWD
static void ScanTOWD(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanTOWD(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD); Message towdMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.TOWD);
towdMessage.DeleteElements(); towdMessage.DeleteElements();
@ -2040,8 +2033,7 @@ namespace bsmd.ExcelReadService
string towageName = reader.ReadText(tName); string towageName = reader.ReadText(tName);
if (towageName.IsNullOrEmpty()) continue; if (towageName.IsNullOrEmpty()) continue;
TOWD towd = towdMessage.GetSublistElementWithIdentifier((i).ToString()) as TOWD; if (!(towdMessage.GetSublistElementWithIdentifier((i).ToString()) is TOWD towd))
if (towd == null)
{ {
towd = new TOWD(); towd = new TOWD();
towd.Identifier = (i).ToString(); towd.Identifier = (i).ToString();
@ -2066,7 +2058,7 @@ namespace bsmd.ExcelReadService
#region PRE72H #region PRE72H
static void ScanPRE72H(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanPRE72H(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message pre72hMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PRE72H); Message pre72hMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PRE72H);
if (pre72hMessage.Elements.Count == 0) if (pre72hMessage.Elements.Count == 0)
@ -2088,7 +2080,7 @@ namespace bsmd.ExcelReadService
#region SERV #region SERV
static void ScanSERV(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanSERV(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message servMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SERV); Message servMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.SERV);
if(servMessage.Elements.Count == 0) if(servMessage.Elements.Count == 0)
@ -2112,7 +2104,7 @@ namespace bsmd.ExcelReadService
#region STO #region STO
static void ScanSTO(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanSTO(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message stoMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.STO); Message stoMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.STO);
stoMessage.DeleteElements(); stoMessage.DeleteElements();
@ -2124,8 +2116,8 @@ namespace bsmd.ExcelReadService
string stoQuantityUnit = string.Format("STO.QuantityUnit_{0}", i + 1); string stoQuantityUnit = string.Format("STO.QuantityUnit_{0}", i + 1);
string stoLocationOnBoard = string.Format("STO.LocationOnBoard_{0}", i + 1); string stoLocationOnBoard = string.Format("STO.LocationOnBoard_{0}", i + 1);
string stoOfficialUse = string.Format("STO.OfficialUse_{0}", i + 1); string stoOfficialUse = string.Format("STO.OfficialUse_{0}", i + 1);
STO sto = stoMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as STO;
if(sto == null) if (!(stoMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is STO sto))
{ {
sto = new STO(); sto = new STO();
sto.Identifier = (i + 1).ToString(); sto.Identifier = (i + 1).ToString();
@ -2153,7 +2145,7 @@ namespace bsmd.ExcelReadService
#region LADG #region LADG
static void ScanLADG(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanLADG(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message ladgMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.LADG); Message ladgMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.LADG);
ladgMessage.DeleteElements(); ladgMessage.DeleteElements();
@ -2169,8 +2161,7 @@ namespace bsmd.ExcelReadService
string lnLACode = string.Format("LADG.CargoLACode_{0}", i + 1); string lnLACode = string.Format("LADG.CargoLACode_{0}", i + 1);
string lnZusatz = string.Format("LADG.CargoTypeZusatz_{0}", i + 1); string lnZusatz = string.Format("LADG.CargoTypeZusatz_{0}", i + 1);
LADG ladg = ladgMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as LADG; if (!(ladgMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is LADG ladg))
if (ladg == null)
{ {
ladg = new LADG(); ladg = new LADG();
ladg.Identifier = (i + 1).ToString(); ladg.Identifier = (i + 1).ToString();
@ -2187,8 +2178,9 @@ namespace bsmd.ExcelReadService
continue; continue;
} }
ladg.CargoCodeNST = reader.ReadText(lnType); ladg.CargoCodeNST = reader.ReadText(lnType);
// Cargo Type Freitext in DK // Cargo Type Freitext in DK
if(reader.Mode == ExcelReader.CountryMode.DK) if(reader.Mode == ExcelReader.CountryMode.DK)
{ {
reader.Conf.ConfirmText(lnType, ladg.CargoCodeNST, ladg.CargoCodeNST.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK); reader.Conf.ConfirmText(lnType, ladg.CargoCodeNST, ladg.CargoCodeNST.IsNullOrEmpty() ? ExcelReader.ReadState.WARN : ExcelReader.ReadState.OK);
@ -2235,18 +2227,8 @@ namespace bsmd.ExcelReadService
ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI); ladg.CargoNumberOfItems = (int?) reader.ReadNumber(lnCNOI);
ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ); ladg.CargoGrossQuantity_TNE = reader.ReadNumber(lnCGQ);
ladg.PortOfLoading = reader.ReadLoCode(lnLoad);
ladg.PortOfLoading = reader.ReadText(lnLoad); ladg.PortOfDischarge = reader.ReadLoCode(lnDis);
if (ladg.PortOfLoading.IsNullOrEmpty())
reader.Conf.ConfirmText(lnLoad, null, ExcelReader.ReadState.FAIL);
else
reader.Conf.ConfirmText(lnLoad, ladg.PortOfLoading, (ladg.PortOfLoading.Length == 5) ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN);
ladg.PortOfDischarge = reader.ReadText(lnDis);
if (ladg.PortOfDischarge.IsNullOrEmpty())
reader.Conf.ConfirmText(lnDis, null, ExcelReader.ReadState.FAIL);
else
reader.Conf.ConfirmText(lnDis, ladg.PortOfDischarge, (ladg.PortOfDischarge.Length == 5) ? ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN);
// dont save empty element // dont save empty element
if (ladg.IsNew && !ladg.CargoHandlingType.HasValue) if (ladg.IsNew && !ladg.CargoHandlingType.HasValue)
@ -2258,7 +2240,7 @@ namespace bsmd.ExcelReadService
#region CREW #region CREW
static void ScanCREW(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanCREW(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message crewMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.CREW); Message crewMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.CREW);
crewMessage.DeleteElements(); crewMessage.DeleteElements();
@ -2281,8 +2263,7 @@ namespace bsmd.ExcelReadService
if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty()) if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty())
{ {
CREW crew = crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as CREW; if (!(crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREW crew))
if (crew == null)
{ {
crew = new CREW(); crew = new CREW();
crew.Identifier = (i + 1).ToString(); crew.Identifier = (i + 1).ToString();
@ -2332,8 +2313,7 @@ namespace bsmd.ExcelReadService
string lastName = reader.ReadText(crewLastName); string lastName = reader.ReadText(crewLastName);
if (!lastName.IsNullOrEmpty()) if (!lastName.IsNullOrEmpty())
{ {
CREWD crew = crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as CREWD; if (!(crewMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is CREWD crew))
if (crew == null)
{ {
crew = new CREWD(); crew = new CREWD();
crew.Identifier = (i + 1).ToString(); crew.Identifier = (i + 1).ToString();
@ -2371,7 +2351,7 @@ namespace bsmd.ExcelReadService
#region PAS #region PAS
static void ScanPAS(List<Message> messages, MessageCore messageCore, ExcelReader reader) private static void ScanPAS(List<Message> messages, MessageCore messageCore, ExcelReader reader)
{ {
Message pasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PAS); Message pasMessage = Util.GetMessageWithType(messages, messageCore, Message.NotificationClass.PAS);
pasMessage.DeleteElements(); pasMessage.DeleteElements();
@ -2396,9 +2376,8 @@ namespace bsmd.ExcelReadService
if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty()) if (!lastName.IsNullOrEmpty() || !firstName.IsNullOrEmpty())
{ {
PAS pas = pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as PAS; if (!(pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is PAS pas))
if (pas == null) {
{
pas = new PAS(); pas = new PAS();
pas.Identifier = (i + 1).ToString(); pas.Identifier = (i + 1).ToString();
pas.MessageHeader = pasMessage; pas.MessageHeader = pasMessage;
@ -2448,8 +2427,7 @@ namespace bsmd.ExcelReadService
string lastName = reader.ReadText(pasLastName); string lastName = reader.ReadText(pasLastName);
if (!lastName.IsNullOrEmpty()) if (!lastName.IsNullOrEmpty())
{ {
PASD pas = pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) as PASD; if (!(pasMessage.GetSublistElementWithIdentifier((i + 1).ToString()) is PASD pas))
if (pas == null)
{ {
pas = new PASD(); pas = new PASD();
pas.Identifier = (i + 1).ToString(); pas.Identifier = (i + 1).ToString();

View File

@ -95,7 +95,7 @@ namespace bsmd.database
public bool IsConnected public bool IsConnected
{ {
get { return (this._con?.State == ConnectionState.Open); } get { return this._con?.State == ConnectionState.Open; }
} }
@ -346,8 +346,7 @@ namespace bsmd.database
if (statMessage?.Elements.Count > 0) if (statMessage?.Elements.Count > 0)
{ {
STAT stat = statMessage.Elements[0] as STAT; if (statMessage.Elements[0] is STAT stat)
if (stat != null)
return stat.ShipName; return stat.ShipName;
} }
return null; return null;

View File

@ -2,6 +2,6 @@
[assembly: AssemblyCompany("schick Informatik")] [assembly: AssemblyCompany("schick Informatik")]
[assembly: AssemblyProduct("BSMD NSW interface")] [assembly: AssemblyProduct("BSMD NSW interface")]
[assembly: AssemblyInformationalVersion("5.1.3")] [assembly: AssemblyInformationalVersion("5.1.4")]
[assembly: AssemblyCopyright("Copyright © 2014-2018 schick Informatik")] [assembly: AssemblyCopyright("Copyright © 2014-2019 schick Informatik")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]

View File

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("5.1.3.*")] [assembly: AssemblyVersion("5.1.4.*")]

Binary file not shown.