private void PushDataToRemoteInstances(AdoDataConnection connection, int fileGroupId, int meterId) { // If file group has already been pushed to a remote instance, return TableOperations <FileGroupLocalToRemote> fileGroupLocalToRemoteTable = new TableOperations <FileGroupLocalToRemote>(connection); FileGroupLocalToRemote fileGroup = fileGroupLocalToRemoteTable.QueryRecordWhere("LocalFileGroupID = {0}", fileGroupId); if (fileGroup != null) { Log.Info("File has already been pushed previously."); return; } TableOperations <RemoteXDAInstance> instanceTable = new TableOperations <RemoteXDAInstance>(connection); TableOperations <MetersToDataPush> meterTable = new TableOperations <MetersToDataPush>(connection); IEnumerable <RemoteXDAInstance> instances = instanceTable.QueryRecordsWhere("Frequency ='*'"); DataPusherEngine engine = new DataPusherEngine(); foreach (RemoteXDAInstance instance in instances) { IEnumerable <MetersToDataPush> meters = meterTable.QueryRecordsWhere("LocalXDAMeterID = {0} AND ID IN (SELECT MetersToDataPushID From RemoteXDAInstanceMeter WHERE RemoteXDAInstanceID = {1})", meterId, instance.ID); foreach (MetersToDataPush meter in meters) { Log.Info($"Sending data to intance: {instance.Name} for FileGroup: {fileGroupId}..."); engine.SyncMeterFileForInstance(instance, meter, fileGroupId); } } Log.Info("Sync complete..."); }
public Task SyncInstanceConfiguration(string connectionId, int instanceId, CancellationToken cancellationToken) { return(Task.Run(() => { // for now, create new instance of DataPusherEngine. Later have one running in XDA ServiceHost and tie to it to ensure multiple updates arent happening simultaneously DataPusherEngine engine = new DataPusherEngine(); engine.SyncInstanceConfiguration(connectionId, instanceId, cancellationToken); }, cancellationToken)); }
public Task SyncFilesForInstance(string connectionId, int instanceId, CancellationToken cancellationToken) { return(Task.Run(() => { using (AdoDataConnection connection = new AdoDataConnection("systemSettings")) { // for now, create new instance of DataPusherEngine. Later have one running in XDA ServiceHost and tie to it to ensure multiple updates arent happening simultaneously DataPusherEngine engine = new DataPusherEngine(); RemoteXDAInstance instance = new TableOperations <RemoteXDAInstance>(connection).QueryRecordWhere("ID = {0}", instanceId); engine.SyncInstanceFiles(connectionId, instance, cancellationToken); } }, cancellationToken)); }
public Task SyncMeterConfigurationForInstance(string connectionId, int instanceId, int meterId, CancellationToken cancellationToken) { return(Task.Run(() => { using (AdoDataConnection connection = new AdoDataConnection("systemSettings")) { try { // for now, create new instance of DataPusherEngine. Later have one running in XDA ServiceHost and tie to it to ensure multiple updates arent happening simultaneously DataPusherEngine engine = new DataPusherEngine(); RemoteXDAInstance instance = new TableOperations <RemoteXDAInstance>(connection).QueryRecordWhere("ID = {0}", instanceId); MetersToDataPush meter = new TableOperations <MetersToDataPush>(connection).QueryRecordWhere("ID = {0}", meterId); UserAccount userAccount = new TableOperations <UserAccount>(connection).QueryRecordWhere("ID = {0}", instance.UserAccountID); engine.SyncMeterConfigurationForInstance(connectionId, instance, meter, userAccount, cancellationToken); } catch (Exception ex) { Program.Host.HandleException(ex); } } }, cancellationToken)); }