1000 lines
47 KiB
C#
1000 lines
47 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Diagnostics.Metrics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using MySqlConnector;
|
|
using skyscraper5.Dvb.Descriptors;
|
|
using skyscraper5.Dvb.Descriptors.Extension;
|
|
using skyscraper5.Dvb.Psi.Model;
|
|
using skyscraper5.Skyscraper.Scraper.Storage.Split;
|
|
|
|
namespace skyscraper5.Data.MySql
|
|
{
|
|
public partial class MySqlDataStorage : DataStorage
|
|
{
|
|
private void InsertNitCells(MySqlConnection connection, NitNetwork nitNetwork)
|
|
{
|
|
if (nitNetwork.Cells == null)
|
|
return;
|
|
if (nitNetwork.Cells.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_cells" +
|
|
" (nid_id, cell_id, cell_longitude, cell_latitude, extend_of_latitude, extend_of_longitude) " +
|
|
"VALUES" +
|
|
" (@nid_id,@cell_id,@cell_longitude,@cell_laitutde,@extend_of_latitude,@extend_of_longitude)";
|
|
mySqlCommand.Parameters.Add("@nid_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_longitude", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_laitutde", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@extend_of_latitude", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@extend_of_longitude", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@nid_id"].Value = nitNetwork.NetworkId;
|
|
foreach (CellListDescriptor.Cell cell in nitNetwork.Cells)
|
|
{
|
|
mySqlCommand.Parameters["@cell_id"].Value = cell.CellId;
|
|
mySqlCommand.Parameters["@cell_longitude"].Value = cell.CellLongitude;
|
|
mySqlCommand.Parameters["@cell_laitutde"].Value = cell.CellLatitude;
|
|
mySqlCommand.Parameters["@extend_of_latitude"].Value = cell.ExtentOfLatitude;
|
|
mySqlCommand.Parameters["@extend_of_longitude"].Value = cell.ExtentOfLongitude;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
InsertNitCellSubcells(connection, nitNetwork.NetworkId, cell);
|
|
}
|
|
}
|
|
|
|
private void InsertNitCellSubcells(MySqlConnection connection, ushort nitNetworkNetworkId, CellListDescriptor.Cell cell)
|
|
{
|
|
if (cell.Subcells == null)
|
|
return;
|
|
if (cell.Subcells.Length == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_cells_subcells " +
|
|
" (nid, cell_id, cell_id_extension, subcell_latitude, subcell_longitude, subcell_extent_of_latitude, subcell_extent_of_longitude) " +
|
|
"VALUES " +
|
|
" (@nid,@cell_id,@cell_id_extension,@subcell_latitude,@subcell_longitude,@subcell_extend_of_latitude,@subcell_extend_of_longitude";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id_extension", MySqlDbType.Int16);
|
|
mySqlCommand.Parameters.Add("@subcell_latitude", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@subcell_longitude", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@subcell_extend_of_latitude", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@subcell_extend_of_longitude", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@nid"].Value = nitNetworkNetworkId;
|
|
mySqlCommand.Parameters["@cell_id"].Value = cell.CellId;
|
|
foreach (CellListDescriptor.Subcell subcell in cell.Subcells)
|
|
{
|
|
mySqlCommand.Parameters["@cell_id_extension"].Value = subcell.CellIdExtension;
|
|
mySqlCommand.Parameters["@subcell_latitude"].Value = subcell.SubcellLatitude;
|
|
mySqlCommand.Parameters["@subcell_longitude"].Value = subcell.SubcellLongitude;
|
|
mySqlCommand.Parameters["@subcell_extend_of_latitude"].Value = subcell.SubcellExtentOfLatitude;
|
|
mySqlCommand.Parameters["@subcell_extend_of_longitude"].Value = subcell.SubcellExtentOfLongitude;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitMessages(MySqlConnection connection, NitNetwork nitNetwork)
|
|
{
|
|
if (nitNetwork.Messages == null)
|
|
return;
|
|
if (nitNetwork.Messages.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_messages (network_id, message_id, language_code, message) VALUES (@network_id,@message_id,@language_code,@message)";
|
|
mySqlCommand.Parameters.Add("@network_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@message_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@language_code", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@message", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters["@network_id"].Value = nitNetwork.NetworkId;
|
|
foreach (MessageDescriptor message in nitNetwork.Messages)
|
|
{
|
|
mySqlCommand.Parameters["@message_id"].Value = message.MessageId;
|
|
mySqlCommand.Parameters["@language_code"].Value = message.Iso639LanguageCode;
|
|
mySqlCommand.Parameters["@message"].Value = message.Message;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitMultilingualName(MySqlConnection connection, NitNetwork nitNetwork)
|
|
{
|
|
if (nitNetwork.MultilingualNetworkName == null)
|
|
return;
|
|
if (nitNetwork.MultilingualNetworkName.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_multilingual_name (id, language, name) VALUES (@id,@language,@name)";
|
|
mySqlCommand.Parameters.Add("@id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@language", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@name", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters["@id"].Value = nitNetwork.NetworkId;
|
|
foreach (KeyValuePair<string, string> pair in nitNetwork.MultilingualNetworkName)
|
|
{
|
|
mySqlCommand.Parameters["@language"].Value = pair.Key;
|
|
mySqlCommand.Parameters["@name"].Value = pair.Value;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitRegionNames(MySqlConnection connection, NitNetwork nitNetwork)
|
|
{
|
|
if (nitNetwork.RegionNames == null)
|
|
return;
|
|
if (nitNetwork.RegionNames.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_region_names (id, name, primary_code, secondary_code, teritary_code) VALUES (@id,@name,@primary,@secondary,@teritary)";
|
|
mySqlCommand.Parameters.Add("@id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@name", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@primary", MySqlDbType.Int16);
|
|
mySqlCommand.Parameters.Add("@secondary", MySqlDbType.Int16);
|
|
mySqlCommand.Parameters.Add("@teritary", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@id"].Value = nitNetwork.NetworkId;
|
|
foreach (TargetRegionNameDescriptor.TargetRegionName regionName in nitNetwork.RegionNames)
|
|
{
|
|
mySqlCommand.Parameters["@name"].Value = regionName.RegionName;
|
|
mySqlCommand.Parameters["@primary"].Value = regionName.PrimaryRegionCode;
|
|
mySqlCommand.Parameters["@secondary"].Value = regionName.SecondaryRegionCode;
|
|
mySqlCommand.Parameters["@teritary"].Value = regionName.TertiaryRegionCode;
|
|
SetNulls(mySqlCommand);
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitRegions(MySqlConnection connection, NitNetwork nitNetwork)
|
|
{
|
|
if (nitNetwork.Regions == null)
|
|
return;
|
|
if (nitNetwork.RegionNames.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_regions " +
|
|
"(id, country_code, primary_region_code, secondary_region_code, teritary_region_code) " +
|
|
"VALUES " +
|
|
"(@id,@country,@primary,@secondary,@teritary)";
|
|
mySqlCommand.Parameters.Add("@id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@country", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@primary", MySqlDbType.Int16);
|
|
mySqlCommand.Parameters.Add("@secondary", MySqlDbType.Int16);
|
|
mySqlCommand.Parameters.Add("@teritary", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@id"].Value = nitNetwork.NetworkId;
|
|
foreach (TargetRegionDescriptor.TargetRegion region in nitNetwork.Regions)
|
|
{
|
|
mySqlCommand.Parameters["@country"].Value = region.CountryCode;
|
|
mySqlCommand.Parameters["@primary"].Value = region.PrimaryRegionCode;
|
|
mySqlCommand.Parameters["@secondary"].Value = region.SecondaryRegionCode;
|
|
mySqlCommand.Parameters["@teritary"].Value = region.TertiaryRegionCode;
|
|
SetNulls(mySqlCommand);
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitServices(MySqlConnection connection, NitNetwork nitNetwork)
|
|
{
|
|
if (nitNetwork.ServiceList == null)
|
|
return;
|
|
if (nitNetwork.ServiceList.Length == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_services (network_id, service_id, service_type) VALUES (@network_id,@service_id,@service_type)";
|
|
mySqlCommand.Parameters.Add("@network_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@service_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@service_type", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@network_id"].Value = nitNetwork.NetworkId;
|
|
foreach (ServiceListDescriptor.Service service in nitNetwork.ServiceList)
|
|
{
|
|
mySqlCommand.Parameters["@service_id"].Value = service.ServiceId;
|
|
mySqlCommand.Parameters["@service_type"].Value = (int)service.ServiceType;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private NitNetwork GetNitNetwork(ushort newerNetworkId)
|
|
{
|
|
using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString()))
|
|
{
|
|
connection.Open();
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText = "SELECT * FROM dvb_nit WHERE id = @id";
|
|
mySqlCommand.Parameters.Add("@id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@id"].Value = newerNetworkId;
|
|
MySqlDataReader dataReader = mySqlCommand.ExecuteReader();
|
|
NitNetwork result = null;
|
|
if (dataReader.Read())
|
|
{
|
|
ushort id = dataReader.GetUInt16(0);
|
|
result = new NitNetwork(id);
|
|
if (!dataReader.IsDBNull(1))
|
|
result.Name = dataReader.GetString(1);
|
|
if (!dataReader.IsDBNull(2))
|
|
;
|
|
if (!dataReader.IsDBNull(3))
|
|
result.PrivateDataSpecifierId = dataReader.GetUInt32(3);
|
|
if (!dataReader.IsDBNull(4))
|
|
result.XaitPid = dataReader.GetUInt16(4);
|
|
if (!dataReader.IsDBNull(5))
|
|
result.RegionNameCountryCode = dataReader.GetString(5);
|
|
if (!dataReader.IsDBNull(6))
|
|
result.RegionNameLanguageCode = dataReader.GetString(6);
|
|
if (!dataReader.IsDBNull(7))
|
|
result.RegionCountryCode = dataReader.GetString(7);
|
|
if (!dataReader.IsDBNull(8))
|
|
result.MinPollingInterval = dataReader.GetUInt16(8);
|
|
if (!dataReader.IsDBNull(9))
|
|
result.Uri = dataReader.GetString(9);
|
|
if (!dataReader.IsDBNull(10))
|
|
result.UriLinkageType = dataReader.GetByte(10);
|
|
dataReader.Close();
|
|
}
|
|
connection.Close();
|
|
return result;
|
|
}
|
|
}
|
|
|
|
private void InsertNitTransportStreamCellFrequencies(MySqlConnection connection, ushort networkId, NitTransportStream transportStream)
|
|
{
|
|
if (transportStream.CellFrequencies == null)
|
|
return;
|
|
|
|
if (transportStream.CellFrequencies.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_cell_frequencies (nid, tsid, cell_id, frequency) VALUES (@nid,@tsid,@cell_id, @frequency)";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@frequency", MySqlDbType.Int64);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = transportStream.TransportStreamId;
|
|
foreach (CellFrequencyLinkDescriptor.Cell cell in transportStream.CellFrequencies)
|
|
{
|
|
mySqlCommand.Parameters["@cell_id"].Value = cell.CellId;
|
|
mySqlCommand.Parameters["@frequency"].Value = cell.Frequency;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitTransportStreamCellInfos(MySqlConnection connection, ushort networkId, NitTransportStream transportStream)
|
|
{
|
|
if (transportStream.CellInfos == null)
|
|
return;
|
|
|
|
if (transportStream.CellInfos.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_cell_infos (nid, tsid, cell_id) VALUES (@nid,@tsid,@cell_id)";
|
|
mySqlCommand.Parameters.Add("@nid", DbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", DbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id", DbType.Int32);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = transportStream.TransportStreamId;
|
|
foreach (T2DeliverySystemDescriptor.CellInfo cellInfo in transportStream.CellInfos)
|
|
{
|
|
mySqlCommand.Parameters["@cell_id"].Value = cellInfo.CellId;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
|
|
InsertNitTransportStreamCellInfosCenterFrequencies(connection, networkId, transportStream.TransportStreamId, cellInfo);
|
|
InsertNitTransportStreamCellInfosSubcellInfos(connection, networkId, transportStream.TransportStreamId, cellInfo);
|
|
}
|
|
}
|
|
|
|
private void InsertNitTransportStreamCellInfosSubcellInfos(MySqlConnection connection, ushort networkId, ushort transportStreamTransportStreamId, T2DeliverySystemDescriptor.CellInfo cellInfo)
|
|
{
|
|
if (cellInfo.CentreFrequencies == null)
|
|
return;
|
|
|
|
if (cellInfo.CentreFrequencies.Length == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_cell_infos_subcell_infos (nid, tsid, cell_id, ordinal, cell_id_extension, transposer_frequency) " +
|
|
"VALUES (@nid,@tsid,@cell_id,@ordinal,@cell_id_extension,@transposeer_frequency)";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@ordinal", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id_extension", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@transposer_frequency", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = transportStreamTransportStreamId;
|
|
mySqlCommand.Parameters["@cell_id"].Value = cellInfo.CellId;
|
|
for (int i = 0; i < cellInfo.SubcellInfos.Length; i++)
|
|
{
|
|
mySqlCommand.Parameters["@ordinal"].Value = i;
|
|
mySqlCommand.Parameters["@cell_id_extension"].Value = cellInfo.SubcellInfos[i].CellIdExtension;
|
|
mySqlCommand.Parameters["@transposer_frequency"].Value = cellInfo.SubcellInfos[i].TransposerFrequency;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
|
|
}
|
|
|
|
private void InsertNitTransportStreamCellInfosCenterFrequencies(MySqlConnection connection, ushort networkId, ushort transportStreamTransportStreamId, T2DeliverySystemDescriptor.CellInfo cellInfo)
|
|
{
|
|
if (cellInfo.CentreFrequencies == null)
|
|
return;
|
|
|
|
if (cellInfo.CentreFrequencies.Length == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_cell_infos_center_frequencies (nid, tsid, cell_id, ordinal, frequency) " +
|
|
"VALUES (@nid, @tsid, @cell_id, @ordinal, @frequency)";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@ordinal", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@frequency", MySqlDbType.Int64);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = transportStreamTransportStreamId;
|
|
mySqlCommand.Parameters["@cell_id"].Value = cellInfo.CellId;
|
|
for (int i = 0; i < cellInfo.CentreFrequencies.Length; i++)
|
|
{
|
|
mySqlCommand.Parameters["@ordinal"].Value = i;
|
|
mySqlCommand.Parameters["@frequency"].Value = cellInfo.CentreFrequencies[i];
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitTransportStreamCells(MySqlConnection connection, ushort networkId, NitTransportStream transportStream)
|
|
{
|
|
if (transportStream.Cells == null)
|
|
return;
|
|
|
|
if (transportStream.Cells.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_cells (nid, tsid, cell_id, cell_lat, cell_lon, extent_lat, extent_lon) " +
|
|
"VALUES (@nid, @tsid, @cell_id, @cell_lat, @cell_lon, @extent_lat, @extent_lon)";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_lat", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_lon", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@extent_lat", MySqlDbType.Int64);
|
|
mySqlCommand.Parameters.Add("@extent_lon", MySqlDbType.Int64);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = transportStream.TransportStreamId;
|
|
foreach (CellListDescriptor.Cell cell in transportStream.Cells)
|
|
{
|
|
mySqlCommand.Parameters["@cell_id"].Value = cell.CellId;
|
|
mySqlCommand.Parameters["@cell_lat"].Value = cell.CellLatitude;
|
|
mySqlCommand.Parameters["@cell_lon"].Value = cell.CellLongitude;
|
|
mySqlCommand.Parameters["@extent_lat"].Value = cell.ExtentOfLatitude;
|
|
mySqlCommand.Parameters["@extent_lon"].Value = cell.ExtentOfLongitude;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
|
|
InsertDvbNitTransportStreamCellSubcells(connection, networkId, transportStream.TransportStreamId, cell);
|
|
}
|
|
}
|
|
|
|
private void InsertDvbNitTransportStreamCellSubcells(MySqlConnection connection, ushort networkId, ushort transportStreamTransportStreamId, CellListDescriptor.Cell cell)
|
|
{
|
|
if (cell.Subcells == null)
|
|
return;
|
|
|
|
if (cell.Subcells.Length == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_cells_subcells (nid, tsid, cell_id, cell_id_extension, subcell_lat, subcell_lon, subcell_extent_lat, subcell_extent_lon) " +
|
|
"VALUES (@nid, @tsid, @cell_id, @cell_id_extension, @subcell_lat, @subcell_lon, @subcell_extent_lat, @subcell_extent_lon)";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@cell_id_extension", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@subcell_lat", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@subcell_lon", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@subcell_extent_lat", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@subcell_extent_lon", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = transportStreamTransportStreamId;
|
|
mySqlCommand.Parameters["@cell_id"].Value = cell.CellId;
|
|
foreach (CellListDescriptor.Subcell subcell in cell.Subcells)
|
|
{
|
|
mySqlCommand.Parameters["@cell_id_extension"].Value = subcell.CellIdExtension;
|
|
mySqlCommand.Parameters["@subcell_lat"].Value = subcell.SubcellLatitude;
|
|
mySqlCommand.Parameters["@subcell_lon"].Value = subcell.SubcellLongitude;
|
|
mySqlCommand.Parameters["@subcell_extent_lat"].Value = subcell.SubcellExtentOfLatitude;
|
|
mySqlCommand.Parameters["@subcell_extent_lon"].Value = subcell.SubcellExtentOfLongitude;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
|
|
private void InsertNitTransportStreamCentreFrequencies(MySqlConnection connection, ushort networkId, NitTransportStream transportStream)
|
|
{
|
|
if (transportStream.CentreFrequencies == null)
|
|
return;
|
|
|
|
if (transportStream.CentreFrequencies.Length == 0)
|
|
return;
|
|
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_centre_frequencies (nid, tsid, ordinal, frequency) " +
|
|
"VALUES (@nid,@tsid,@ordinal,@frequency)";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@ordinal", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@frequency", MySqlDbType.Int64);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = transportStream.TransportStreamId;
|
|
for (int i = 0; i < transportStream.CentreFrequencies.Length; i++)
|
|
{
|
|
mySqlCommand.Parameters["@ordinal"].Value = i;
|
|
mySqlCommand.Parameters["@frequency"].Value = transportStream.CentreFrequencies[i];
|
|
mySqlCommand.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitTransportStreamServices(MySqlConnection connection, ushort networkId, NitTransportStream transportStream, MySqlTransaction transaction)
|
|
{
|
|
if (transportStream.Services == null)
|
|
return;
|
|
|
|
if (transportStream.Services.Services == null)
|
|
return;
|
|
|
|
if (transportStream.Services.Services.Length == 0)
|
|
return;
|
|
|
|
MySqlCommand command = connection.CreateCommand();
|
|
command.Transaction = transaction;
|
|
command.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_services (nid, tsid, service_id, service_type) " +
|
|
"VALUES (@nid, @tsid, @service_id, @service_type)";
|
|
command.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
command.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
command.Parameters.Add("@service_id", MySqlDbType.Int32);
|
|
command.Parameters.Add("@service_type", MySqlDbType.Int32);
|
|
command.Parameters["@nid"].Value = networkId;
|
|
command.Parameters["@tsid"].Value = transportStream.TransportStreamId;
|
|
foreach (ServiceListDescriptor.Service service in transportStream.Services.Services)
|
|
{
|
|
command.Parameters["@service_id"].Value = service.ServiceId;
|
|
command.Parameters["@service_type"].Value = (int)service.ServiceType;
|
|
command.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private void InsertNitTransportStreamTargetRegions(MySqlConnection connection, ushort networkId, NitTransportStream transportStream)
|
|
{
|
|
if (transportStream.TargetRegions == null)
|
|
return;
|
|
|
|
if (transportStream.TargetRegions.Count == 0)
|
|
return;
|
|
|
|
MySqlCommand command = connection.CreateCommand();
|
|
command.CommandText =
|
|
"INSERT INTO dvb_nit_transport_stream_target_regions (nid, tsid, country_code, primary_rc, secondary_rc, teritary_rc) " +
|
|
"VALUES (@nid,@tsid,@country_code,@primary_rc,@secondary_rc,@teritary_rc)";
|
|
command.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
command.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
command.Parameters.Add("@country_code", MySqlDbType.VarChar);
|
|
command.Parameters.Add("@primary_rc", MySqlDbType.Int16);
|
|
command.Parameters.Add("@secondary_rc", MySqlDbType.Int16);
|
|
command.Parameters.Add("@teritary_rc", MySqlDbType.Int32);
|
|
command.Parameters["@nid"].Value = networkId;
|
|
command.Parameters["@tsid"].Value = transportStream.TransportStreamId;
|
|
foreach (TargetRegionDescriptor.TargetRegion targetRegion in transportStream.TargetRegions)
|
|
{
|
|
command.Parameters["@country_code"].Value = targetRegion.CountryCode;
|
|
command.Parameters["@primary_rc"].Value = targetRegion.PrimaryRegionCode;
|
|
command.Parameters["@secondary_rc"].Value = targetRegion.SecondaryRegionCode;
|
|
command.Parameters["@teritary_rc"].Value = targetRegion.TertiaryRegionCode;
|
|
SetNulls(command);
|
|
command.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
private NitTransportStream GetNitTransportStream(MySqlConnection connection, ushort networkId, ushort olderTransportStreamId)
|
|
{
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText = "SELECT * FROM dvb_nit_transport_stream WHERE nid = @nid AND tsid = @tsid";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = olderTransportStreamId;
|
|
MySqlDataReader dataReader = mySqlCommand.ExecuteReader();
|
|
if (!dataReader.Read())
|
|
{
|
|
dataReader.Close();
|
|
return null;
|
|
}
|
|
|
|
ushort transportStreamId = dataReader.GetUInt16(1);
|
|
ushort originalNetworkId = dataReader.GetUInt16(3);
|
|
NitTransportStream.TransportMedium deliveryMethod = (NitTransportStream.TransportMedium)dataReader.GetInt32(4);
|
|
|
|
NitTransportStream result = new NitTransportStream(originalNetworkId, transportStreamId);
|
|
result.DeliveryMethod = deliveryMethod;
|
|
|
|
if (!dataReader.IsDBNull(5))
|
|
result.East = dataReader.GetBoolean(5);
|
|
|
|
if (!dataReader.IsDBNull(6))
|
|
result.FecInner = (SatelliteDeliverySystemDescriptor.InnerFecScheme)dataReader.GetInt32(6);
|
|
|
|
if (!dataReader.IsDBNull(7))
|
|
result.Frequency = dataReader.GetInt64(7);
|
|
|
|
if (!dataReader.IsDBNull(8))
|
|
result.OrbitalPosition = dataReader.GetFloat(8);
|
|
|
|
if (!dataReader.IsDBNull(9))
|
|
result.Polarization = (SatelliteDeliverySystemDescriptor.PolarizationEnum)dataReader.GetInt32(9);
|
|
|
|
if (!dataReader.IsDBNull(10))
|
|
result.RollOff = dataReader.GetFloat(10);
|
|
|
|
if (!dataReader.IsDBNull(11))
|
|
result.S2 = dataReader.GetBoolean(11);
|
|
|
|
if (!dataReader.IsDBNull(12))
|
|
result.SymbolRate = dataReader.GetInt64(12);
|
|
|
|
if (!dataReader.IsDBNull(13))
|
|
result.ScramblingSequenceIndex = dataReader.GetInt32(13);
|
|
|
|
if (!dataReader.IsDBNull(14))
|
|
result.InputStreamIdentifier = dataReader.GetByte(14);
|
|
|
|
if (!dataReader.IsDBNull(15))
|
|
result.TimesliceNumber = dataReader.GetByte(15);
|
|
|
|
if (!dataReader.IsDBNull(16))
|
|
result.TsGsMode = (S2SatelliteDeliverySystemDescriptor.TsGsModeCoding)dataReader.GetInt32(16);
|
|
|
|
if (!dataReader.IsDBNull(17))
|
|
result.PrivateDataSpecifierId = dataReader.GetUInt32(17);
|
|
|
|
if (!dataReader.IsDBNull(18))
|
|
result.TfsFlag = dataReader.GetBoolean(18);
|
|
|
|
if (!dataReader.IsDBNull(19))
|
|
result.Bandwidth = dataReader.GetInt32(19);
|
|
|
|
if (!dataReader.IsDBNull(20))
|
|
result.GuardInterval = dataReader.GetInt32(20);
|
|
|
|
if (!dataReader.IsDBNull(21))
|
|
result.OtherFrequencyFlag = dataReader.GetBoolean(21);
|
|
|
|
if (!dataReader.IsDBNull(22))
|
|
result.PlpId = dataReader.GetByte(22);
|
|
|
|
if (!dataReader.IsDBNull(23))
|
|
result.SisoMiso = dataReader.GetInt32(23);
|
|
|
|
if (!dataReader.IsDBNull(24))
|
|
result.T2SystemId = dataReader.GetUInt16(24);
|
|
|
|
if (!dataReader.IsDBNull(25))
|
|
result.TransmissionMode = dataReader.GetInt32(25);
|
|
|
|
if (!dataReader.IsDBNull(26))
|
|
result.CodingType = (FrequencyListDescriptor.CodingTypeValue)dataReader.GetInt32(26);
|
|
|
|
if (!dataReader.IsDBNull(27))
|
|
result.ModulationType = dataReader.GetInt32(27);
|
|
|
|
if (!dataReader.IsDBNull(28))
|
|
result.FecOuter = (CableDeliverySystemDescriptor.OuterFecScheme)dataReader.GetInt32(28);
|
|
|
|
if (!dataReader.IsDBNull(29))
|
|
result.CodeRateHpStream = (TerristialDeliverySystemDescriptor.CodeRate)dataReader.GetInt32(29);
|
|
|
|
if (!dataReader.IsDBNull(30))
|
|
result.CodeRateLpStream = (TerristialDeliverySystemDescriptor.CodeRate)dataReader.GetInt32(30);
|
|
|
|
if (!dataReader.IsDBNull(31))
|
|
result.HierarchyInformation = (TerristialDeliverySystemDescriptor.HierarchySignallingFormat)dataReader.GetInt32(31);
|
|
|
|
if (!dataReader.IsDBNull(32))
|
|
result.MpeFecIndicator = dataReader.GetBoolean(32);
|
|
|
|
if (!dataReader.IsDBNull(33))
|
|
result.Priority = dataReader.GetBoolean(33);
|
|
|
|
if (!dataReader.IsDBNull(34))
|
|
result.TimeSlicingIndicator = dataReader.GetInt32(34);
|
|
|
|
if (!dataReader.IsDBNull(35))
|
|
result.NetworkName = dataReader.GetString(35);
|
|
|
|
if (!dataReader.IsDBNull(36))
|
|
result.TargetRegionCountryCode = dataReader.GetString(36);
|
|
|
|
dataReader.Close();
|
|
return result;
|
|
}
|
|
|
|
struct NitTransportStreamCoordinate
|
|
{
|
|
private readonly ushort _networkId;
|
|
private readonly ushort _transportStreamTransportStreamId;
|
|
|
|
public NitTransportStreamCoordinate(ushort networkId, ushort transportStreamTransportStreamId)
|
|
{
|
|
_networkId = networkId;
|
|
_transportStreamTransportStreamId = transportStreamTransportStreamId;
|
|
}
|
|
|
|
public bool Equals(NitTransportStreamCoordinate other)
|
|
{
|
|
return _networkId == other._networkId && _transportStreamTransportStreamId == other._transportStreamTransportStreamId;
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
return obj is NitTransportStreamCoordinate other && Equals(other);
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return HashCode.Combine(_networkId, _transportStreamTransportStreamId);
|
|
}
|
|
}
|
|
|
|
private HashSet<NitTransportStreamCoordinate> _nitTransportStreamCoordinates;
|
|
private HashSet<NitTransportStreamCoordinate> _nitTransportStreamUpdateCoordinates;
|
|
|
|
public bool TestForNitNetwork(NitNetwork nitNetwork)
|
|
{
|
|
using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString()))
|
|
{
|
|
connection.Open();
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText = "SELECT dateadded FROM dvb_nit WHERE id = @id";
|
|
mySqlCommand.Parameters.Add("@id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@id"].Value = nitNetwork.NetworkId;
|
|
MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
|
|
bool result = mySqlDataReader.Read();
|
|
mySqlDataReader.Close();
|
|
connection.Close();
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public void StoreNitNetwork(NitNetwork nitNetwork)
|
|
{
|
|
bool hasLinkages = HasLinkages(nitNetwork.Linkages);
|
|
Guid linkageGuid = default(Guid);
|
|
if (hasLinkages)
|
|
linkageGuid = Guid.NewGuid();
|
|
|
|
using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString()))
|
|
{
|
|
connection.Open();
|
|
MySqlTransaction transaction = connection.BeginTransaction();
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.Transaction = transaction;
|
|
mySqlCommand.CommandText =
|
|
"INSERT INTO dvb_nit" +
|
|
" (id, name, uuid, private_data_specifier_id, xait_pid, region_name_country_code, region_name_language_code, region_country_code, min_polling_interval, uri, uri_linkage_type) " +
|
|
"VALUES" +
|
|
" (@id,@name,@uuid,@private_data_specifier,@xait_pid,@region_name_country_code,@region_name_language_code,@region_country_code,@min_polling_interval,@uri,@uri_linkage_type)";
|
|
mySqlCommand.Parameters.Add("@id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@name", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@uuid", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@private_data_specifier", MySqlDbType.Int64);
|
|
mySqlCommand.Parameters.Add("@xait_pid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@region_name_country_code", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@region_name_language_code", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@region_country_code", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@min_polling_interval", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@uri", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@uri_linkage_type", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@id"].Value = nitNetwork.NetworkId;
|
|
mySqlCommand.Parameters["@name"].Value = nitNetwork.Name;
|
|
if (hasLinkages)
|
|
mySqlCommand.Parameters["@uuid"].Value = linkageGuid.ToString();
|
|
mySqlCommand.Parameters["@private_data_specifier"].Value = nitNetwork.PrivateDataSpecifierId;
|
|
mySqlCommand.Parameters["@xait_pid"].Value = nitNetwork.XaitPid;
|
|
mySqlCommand.Parameters["@region_name_country_code"].Value = nitNetwork.RegionNameCountryCode;
|
|
mySqlCommand.Parameters["@region_name_language_code"].Value = nitNetwork.RegionNameLanguageCode;
|
|
mySqlCommand.Parameters["@region_country_code"].Value = nitNetwork.RegionCountryCode;
|
|
mySqlCommand.Parameters["@min_polling_interval"].Value = nitNetwork.MinPollingInterval;
|
|
mySqlCommand.Parameters["@uri"].Value = nitNetwork.Uri;
|
|
mySqlCommand.Parameters["@uri_linkage_type"].Value = nitNetwork.UriLinkageType;
|
|
SetNulls(mySqlCommand);
|
|
mySqlCommand.ExecuteNonQuery();
|
|
|
|
if (hasLinkages)
|
|
InsertSdtLinkages(connection, linkageGuid, nitNetwork.Linkages, transaction);
|
|
|
|
InsertNitCells(connection, nitNetwork);
|
|
InsertNitMessages(connection, nitNetwork);
|
|
InsertNitMultilingualName(connection, nitNetwork);
|
|
InsertNitRegionNames(connection, nitNetwork);
|
|
InsertNitRegions(connection, nitNetwork);
|
|
InsertNitServices(connection, nitNetwork);
|
|
transaction.Commit();
|
|
connection.Close();
|
|
}
|
|
}
|
|
|
|
public bool UpdateNitNetwork(NitNetwork newer)
|
|
{
|
|
NitNetwork older = GetNitNetwork(newer.NetworkId);
|
|
if (older.NeedsUpdate(newer))
|
|
{
|
|
using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString()))
|
|
{
|
|
connection.Open();
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"UPDATE dvb_nit " +
|
|
"SET name = @name, private_data_specifier_id = @private_data_specifier, xait_pid = @xait_pid, region_name_country_code = @region_name_country_code, region_name_language_code = @region_name_language_code, region_country_code = @region_country_code, min_polling_interval = @min_polling_interval, uri = @uri, uri_linkage_type = @uri_linkage_type, numupdates = numupdates + 1, dateupdated = CURRENT_TIMESTAMP " +
|
|
"WHERE id = @id";
|
|
mySqlCommand.Parameters.Add("@id", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@name", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@private_data_specifier", MySqlDbType.Int64);
|
|
mySqlCommand.Parameters.Add("@xait_pid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@region_name_country_code", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@region_name_language_code", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@region_country_code", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@min_polling_interval", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@uri", MySqlDbType.VarChar);
|
|
mySqlCommand.Parameters.Add("@uri_linkage_type", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@id"].Value = newer.NetworkId;
|
|
mySqlCommand.Parameters["@name"].Value = newer.Name;
|
|
mySqlCommand.Parameters["@private_data_specifier"].Value = newer.PrivateDataSpecifierId;
|
|
mySqlCommand.Parameters["@xait_pid"].Value = newer.XaitPid;
|
|
mySqlCommand.Parameters["@region_name_country_code"].Value = newer.RegionNameCountryCode;
|
|
mySqlCommand.Parameters["@region_name_language_code"].Value = newer.RegionNameLanguageCode;
|
|
mySqlCommand.Parameters["@region_country_code"].Value = newer.RegionCountryCode;
|
|
mySqlCommand.Parameters["@min_polling_interval"].Value = newer.MinPollingInterval;
|
|
mySqlCommand.Parameters["@uri"].Value = newer.Uri;
|
|
mySqlCommand.Parameters["@uri_linkage_type"].Value = newer.UriLinkageType;
|
|
mySqlCommand.ExecuteNonQuery();
|
|
connection.Close();
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool TestForNitTransportStream(ushort networkId, NitTransportStream transportStream)
|
|
{
|
|
if (_nitTransportStreamCoordinates == null)
|
|
_nitTransportStreamCoordinates = new HashSet<NitTransportStreamCoordinate>();
|
|
NitTransportStreamCoordinate coordinate = new NitTransportStreamCoordinate(networkId, transportStream.TransportStreamId);
|
|
if (_nitTransportStreamCoordinates.Contains(coordinate))
|
|
return true;
|
|
|
|
using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString()))
|
|
{
|
|
connection.Open();
|
|
MySqlCommand mySqlCommand = connection.CreateCommand();
|
|
mySqlCommand.CommandText =
|
|
"SELECT dateadded FROM dvb_nit_transport_stream WHERE nid=@nid AND tsid=@tsid";
|
|
mySqlCommand.Parameters.Add("@nid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters.Add("@tsid", MySqlDbType.Int32);
|
|
mySqlCommand.Parameters["@nid"].Value = networkId;
|
|
mySqlCommand.Parameters["@tsid"].Value = transportStream.TransportStreamId;
|
|
MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
|
|
bool result = mySqlDataReader.Read();
|
|
if (result)
|
|
_nitTransportStreamCoordinates.Add(coordinate);
|
|
mySqlDataReader.Close();
|
|
connection.Close();
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public void StoreNitTransportStream(ushort networkId, NitTransportStream transportStream)
|
|
{
|
|
EnqueueSpeedhack(SpeedhackType.InsertNitTransportStream, networkId, transportStream);
|
|
NitTransportStreamCoordinate coordinate = new NitTransportStreamCoordinate(networkId, transportStream.TransportStreamId);
|
|
_nitTransportStreamCoordinates.Add(coordinate);
|
|
|
|
}
|
|
|
|
public bool UpdateNitTransportStream(ushort networkId, NitTransportStream newer)
|
|
{
|
|
if (_nitTransportStreamUpdateCoordinates == null)
|
|
_nitTransportStreamUpdateCoordinates = new HashSet<NitTransportStreamCoordinate>();
|
|
|
|
NitTransportStreamCoordinate coordinate = new NitTransportStreamCoordinate(networkId, newer.TransportStreamId);
|
|
if (_nitTransportStreamUpdateCoordinates.Contains(coordinate))
|
|
return false;
|
|
|
|
using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString()))
|
|
{
|
|
connection.Open();
|
|
NitTransportStream older = GetNitTransportStream(connection, networkId, newer.TransportStreamId);
|
|
connection.Close();
|
|
if (older == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
_nitTransportStreamUpdateCoordinates.Add(coordinate);
|
|
if (older.NeedUpdate(newer))
|
|
{
|
|
EnqueueSpeedhack(SpeedhackType.UpdateNitTransportStream, networkId, newer);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public int CountNitEntries()
|
|
{
|
|
using (MySqlConnection connectino = new MySqlConnection(_mcsb.ToString()))
|
|
{
|
|
connectino.Open();
|
|
using (MySqlCommand command = connectino.CreateCommand())
|
|
{
|
|
command.CommandText = "SELECT COUNT(*) FROM dvb_nit_transport_stream";
|
|
MySqlDataReader dataReader = command.ExecuteReader();
|
|
dataReader.Read();
|
|
int result = dataReader.GetInt32(0);
|
|
dataReader.Close();
|
|
connectino.Close();
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
|
|
public IEnumerable<NitTransportStream> EnumerateNitTransportStreams()
|
|
{
|
|
using (MySqlConnection connection = new MySqlConnection(_mcsb.ToString()))
|
|
{
|
|
connection.Open();
|
|
using (MySqlCommand command = connection.CreateCommand())
|
|
{
|
|
command.CommandText = "SELECT * FROM dvb_nit_transport_stream";
|
|
MySqlDataReader dataReader = command.ExecuteReader();
|
|
while (dataReader.Read())
|
|
{
|
|
ushort nid = dataReader.GetUInt16(0);
|
|
ushort tsid = dataReader.GetUInt16(1);
|
|
DateTime dateAdded = dataReader.GetDateTime(2);
|
|
int onid = dataReader.GetUInt16(3);
|
|
NitTransportStream child = new NitTransportStream(nid, tsid);
|
|
child.DeliveryMethod = (NitTransportStream.TransportMedium)dataReader.GetInt32(4);
|
|
if (!dataReader.IsDBNull(5))
|
|
child.East = dataReader.GetBoolean(5);
|
|
|
|
if (!dataReader.IsDBNull(6))
|
|
child.FecInner = (SatelliteDeliverySystemDescriptor.InnerFecScheme)dataReader.GetInt32(6);
|
|
|
|
if (!dataReader.IsDBNull(7))
|
|
child.Frequency = dataReader.GetInt64(7);
|
|
|
|
if (!dataReader.IsDBNull(8))
|
|
child.OrbitalPosition = dataReader.GetFloat(8);
|
|
|
|
if (!dataReader.IsDBNull(9))
|
|
child.Polarization = (SatelliteDeliverySystemDescriptor.PolarizationEnum)dataReader.GetInt32(9);
|
|
|
|
if (!dataReader.IsDBNull(10))
|
|
child.RollOff = dataReader.GetFloat(10);
|
|
|
|
if (!dataReader.IsDBNull(11))
|
|
child.S2 = dataReader.GetBoolean(11);
|
|
|
|
if (!dataReader.IsDBNull(12))
|
|
child.SymbolRate = dataReader.GetInt64(12);
|
|
|
|
if (!dataReader.IsDBNull(13))
|
|
child.ScramblingSequenceIndex = dataReader.GetInt32(13);
|
|
|
|
if (!dataReader.IsDBNull(14))
|
|
child.InputStreamIdentifier = dataReader.GetByte(14);
|
|
|
|
if (!dataReader.IsDBNull(15))
|
|
child.TimesliceNumber = dataReader.GetByte(15);
|
|
|
|
if (!dataReader.IsDBNull(16))
|
|
child.TsGsMode = (S2SatelliteDeliverySystemDescriptor.TsGsModeCoding)dataReader.GetInt32(16);
|
|
|
|
if (!dataReader.IsDBNull(17))
|
|
child.PrivateDataSpecifierId = (uint)dataReader.GetUInt32(17);
|
|
|
|
if (!dataReader.IsDBNull(18))
|
|
child.TfsFlag = dataReader.GetBoolean(18);
|
|
|
|
if (!dataReader.IsDBNull(19))
|
|
child.Bandwidth = dataReader.GetInt32(19);
|
|
|
|
if (!dataReader.IsDBNull(20))
|
|
child.GuardInterval = dataReader.GetInt32(20);
|
|
|
|
if (!dataReader.IsDBNull(21))
|
|
child.OtherFrequencyFlag = dataReader.GetBoolean(21);
|
|
|
|
if (!dataReader.IsDBNull(22))
|
|
child.PlpId = dataReader.GetByte(22);
|
|
|
|
if (!dataReader.IsDBNull(23))
|
|
child.SisoMiso = dataReader.GetInt32(23);
|
|
|
|
if (!dataReader.IsDBNull(24))
|
|
child.T2SystemId = dataReader.GetUInt16(24);
|
|
|
|
if (!dataReader.IsDBNull(25))
|
|
child.TransmissionMode = dataReader.GetInt32(25);
|
|
|
|
if (!dataReader.IsDBNull(26))
|
|
child.CodingType = (FrequencyListDescriptor.CodingTypeValue)dataReader.GetInt32(26);
|
|
|
|
if (!dataReader.IsDBNull(27))
|
|
child.ModulationType = dataReader.GetInt32(27);
|
|
|
|
if (!dataReader.IsDBNull(28))
|
|
child.FecOuter = (CableDeliverySystemDescriptor.OuterFecScheme)dataReader.GetInt32(28);
|
|
|
|
if (!dataReader.IsDBNull(29))
|
|
child.CodeRateHpStream = (TerristialDeliverySystemDescriptor.CodeRate)dataReader.GetInt32(29);
|
|
|
|
if (!dataReader.IsDBNull(30))
|
|
child.CodeRateLpStream = (TerristialDeliverySystemDescriptor.CodeRate)dataReader.GetInt32(30);
|
|
|
|
if (!dataReader.IsDBNull(31))
|
|
child.HierarchyInformation = (TerristialDeliverySystemDescriptor.HierarchySignallingFormat)dataReader.GetInt32(31);
|
|
|
|
if (!dataReader.IsDBNull(32))
|
|
child.MpeFecIndicator = dataReader.GetBoolean(32);
|
|
|
|
if (!dataReader.IsDBNull(33))
|
|
child.Priority = dataReader.GetBoolean(33);
|
|
|
|
if (!dataReader.IsDBNull(34))
|
|
child.TimeSlicingIndicator = dataReader.GetInt32(34);
|
|
|
|
if (!dataReader.IsDBNull(35))
|
|
child.NetworkName = dataReader.GetString(35);
|
|
|
|
if (!dataReader.IsDBNull(36))
|
|
child.TargetRegionCountryCode = dataReader.GetString(36);
|
|
|
|
if (!dataReader.IsDBNull(37))
|
|
Guid.Parse(dataReader.GetString(37));
|
|
|
|
if (!dataReader.IsDBNull(38))
|
|
dataReader.GetInt32(38);
|
|
|
|
if (!dataReader.IsDBNull(39))
|
|
dataReader.GetDateTime(39);
|
|
|
|
yield return child;
|
|
}
|
|
dataReader.Close();
|
|
}
|
|
connection.Close();
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|