265 lines
11 KiB
C#
265 lines
11 KiB
C#
// Copyright (c) 2017 schick Informatik
|
|
// Description: Alle Lookup-Tabellen für das Display statisch aus der SQLite Datenbank initialisieren
|
|
//
|
|
|
|
using System.Data;
|
|
using System.Data.SQLite;
|
|
using System.Collections.Generic;
|
|
|
|
using bsmd.database;
|
|
using ENI2.Locode;
|
|
|
|
namespace ENI2
|
|
{
|
|
internal static class LocalizedLookup
|
|
{
|
|
private static readonly SQLiteConnection _con;
|
|
private const string _locode_DB_NAME = "db.sqlite";
|
|
private static Dictionary<string, string> _nationalities = null;
|
|
|
|
static LocalizedLookup()
|
|
{
|
|
_con = new SQLiteConnection(string.Format("data source={0}; Version=3;", _locode_DB_NAME));
|
|
_con.Open();
|
|
}
|
|
|
|
public static Dictionary<int, string> getLADGCargoHandlingStrings(string languageCode)
|
|
{
|
|
Dictionary<int, string> result = new Dictionary<int, string>();
|
|
string query = string.Format("SELECT key, text FROM LADG_CargoHandlingCodes WHERE langKey = '{0}'", languageCode);
|
|
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
int key;
|
|
string text;
|
|
while (reader.Read())
|
|
{
|
|
key = reader.GetInt32(0);
|
|
text = reader.GetString(1);
|
|
result[key] = text;
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static Dictionary<string, string> getPortAreasForLocode(string locode)
|
|
{
|
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
|
string query = string.Format("SELECT Code, PortArea FROM INFO_PortArea WHERE Locode = '{0}' ORDER BY PortArea", locode);
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while(reader.Read())
|
|
{
|
|
string code = null;
|
|
string portarea = null;
|
|
if (!reader.IsDBNull(0)) code = reader.GetString(0);
|
|
if (!reader.IsDBNull(1)) portarea = reader.GetString(1);
|
|
if((code != null) && (portarea != null))
|
|
{
|
|
result[code] = string.Format("{0}-{1}", code, portarea);
|
|
}
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static bool PortAreaExists(string locode, string portArea)
|
|
{
|
|
if (locode.IsNullOrEmpty() || portArea.IsNullOrEmpty()) return false;
|
|
string query = string.Format("SELECT COUNT(*) FROM INFO_PortArea WHERE Locode = '{0}' AND Code = '{1}'", locode, portArea);
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
long numResults = (long) cmd.ExecuteScalar();
|
|
return numResults > 0;
|
|
}
|
|
|
|
public static bool CheckNationality(string nationality)
|
|
{
|
|
if (nationality.IsNullOrEmpty()) return false;
|
|
if (_nationalities == null) _nationalities = getNationalities();
|
|
return _nationalities.ContainsKey(nationality);
|
|
}
|
|
|
|
public static Dictionary<string, string> getNationalities()
|
|
{
|
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
|
string query = string.Format("SELECT Code, Name FROM Nationality ORDER BY Code");
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while(reader.Read())
|
|
{
|
|
string code = null;
|
|
string name = null;
|
|
if (!reader.IsDBNull(0)) code = reader.GetString(0);
|
|
if (!reader.IsDBNull(1)) name = reader.GetString(1);
|
|
if ((code != null) && (name != null))
|
|
result[code] = string.Format("{0} {1}", code, name);
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static Dictionary<string, string> getVesselTypes()
|
|
{
|
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
|
string query = string.Format("SELECT Code, Name FROM VesselType ORDER BY Code");
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
string code = null;
|
|
string name = null;
|
|
if (!reader.IsDBNull(0)) code = reader.GetString(0);
|
|
if (!reader.IsDBNull(1)) name = reader.GetString(1);
|
|
if ((code != null) && (name != null))
|
|
result[code] = string.Format("{0} {1}", code, name);
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static Dictionary<string, string> getPackageTypes()
|
|
{
|
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
|
string query = string.Format("SELECT Code, Text FROM PackageTypes ORDER BY Code");
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
string code = null;
|
|
string name = null;
|
|
if (!reader.IsDBNull(0)) code = reader.GetString(0);
|
|
if (!reader.IsDBNull(1)) name = reader.GetString(1);
|
|
if ((code != null) && (name != null))
|
|
result[code] = string.Format("{0} {1}", code, name);
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static string GetPortAreaFromCode(string code)
|
|
{
|
|
string result = null;
|
|
string query = string.Format("SELECT PortArea from INFO_PortArea WHERE Code = '{0}'", code);
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
if(reader.Read())
|
|
{
|
|
if (!reader.IsDBNull(0)) result = reader.GetString(0);
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static Dictionary<string, string> getTransportModes()
|
|
{
|
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
|
string query = string.Format("SELECT Code, Name FROM TransportMode ORDER BY Code");
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
string code = null;
|
|
string name = null;
|
|
if (!reader.IsDBNull(0)) code = reader.GetString(0);
|
|
if (!reader.IsDBNull(1)) name = reader.GetString(1);
|
|
if ((code != null) && (name != null))
|
|
result[code] = string.Format("{0} {1}", code, name);
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static Dictionary<int, string> getLACodes()
|
|
{
|
|
Dictionary<int, string> result = new Dictionary<int, string>();
|
|
string query = string.Format("SELECT Code, Description FROM LATypes ORDER BY Code");
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
int? code = null;
|
|
string name = null;
|
|
if (!reader.IsDBNull(0)) code = reader.GetInt32(0);
|
|
if (!reader.IsDBNull(1)) name = reader.GetString(1);
|
|
if ((code != null) && (name != null))
|
|
result[(int) code] = string.Format("{0} {1}", code, name);
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static Dictionary<string, string> getCargoCodesNST()
|
|
{
|
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
|
string query = string.Format("SELECT Code, Description FROM CargoTypesNST ORDER BY Code");
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
string code = null;
|
|
string description = null;
|
|
if (!reader.IsDBNull(0)) code = reader.GetString(0);
|
|
if (!reader.IsDBNull(1)) description = reader.GetString(1);
|
|
|
|
if (code?.Length == 1)
|
|
code = string.Format("0{0}", code); // bei einstelligen Werten 0 voranstellen
|
|
|
|
if ((code != null) && (description != null))
|
|
result[code] = string.Format("{0} {1}", code, description);
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static List<KeyValuePair<string, string>> getCargoCodesNST3()
|
|
{
|
|
List<KeyValuePair<string, string>> result = new List<KeyValuePair<string, string>>();
|
|
|
|
string query = string.Format("SELECT Code, Description, codeGrp3 FROM CargoTypesNST3 ORDER BY Code");
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
string code = null;
|
|
string description = null;
|
|
string codeGrp3 = null;
|
|
|
|
if (!reader.IsDBNull(0)) code = reader.GetString(0);
|
|
if (!reader.IsDBNull(1)) description = reader.GetString(1);
|
|
if (!reader.IsDBNull(2)) codeGrp3 = reader.GetString(2);
|
|
|
|
if ((code != null) && (description != null) && (codeGrp3 != null))
|
|
{
|
|
KeyValuePair<string, string> kvp = new KeyValuePair<string, string>(codeGrp3, string.Format("{0} {1} {2}", code, description, codeGrp3));
|
|
result.Add(kvp);
|
|
}
|
|
}
|
|
reader.Close();
|
|
return result;
|
|
}
|
|
|
|
public static List<LocodeDB.LocodeEntry> SSNAllLocodesForCityNameAsEntries(string city)
|
|
{
|
|
List<LocodeDB.LocodeEntry> results = new List<LocodeDB.LocodeEntry>();
|
|
|
|
const string query = "SELECT LocationCode, LocationName FROM SSN_LOCODES WHERE LocationName like $PAR";
|
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
|
cmd.Parameters.AddWithValue("$PAR", city);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
if (!reader.IsDBNull(0) && !reader.IsDBNull(1))
|
|
{
|
|
LocodeDB.LocodeEntry entry = new LocodeDB.LocodeEntry();
|
|
entry.Locode = reader.GetString(0);
|
|
entry.Name = reader.GetString(1);
|
|
results.Add(entry);
|
|
}
|
|
}
|
|
reader.Close();
|
|
return results;
|
|
}
|
|
|
|
}
|
|
}
|