예제 #1
0
        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...");
        }
예제 #2
0
 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));
 }
예제 #3
0
 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));
 }
예제 #4
0
 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));
 }