[us-commits] r2742 - in trunk: programs/us_xpn_viewer sql

svn at svn.aucsolutions.com svn at svn.aucsolutions.com
Sun Apr 28 11:43:17 MDT 2019


Author: alexey
Date: 2019-04-28 17:43:16 +0000 (Sun, 28 Apr 2019)
New Revision: 2742

Modified:
   trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp
   trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.h
   trunk/sql/us3_autoflow_procs.sql
Log:
Updates on job reattachement in autoflow...



Modified: trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp
===================================================================
--- trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp	2019-04-27 09:50:16 UTC (rev 2741)
+++ trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.cpp	2019-04-28 17:43:16 UTC (rev 2742)
@@ -242,6 +242,8 @@
    in_reload_data_init = false;
    in_reload_check_sysdata  = false;
 
+   ElapsedTimeOffset = 0;
+
    //ALEXEY: new way
    US_Passwd pw;
    US_DB2*   dbP = new US_DB2( pw.getPasswd() );
@@ -1436,6 +1438,11 @@
       RunID_to_retrieve = QString::number(xpn_data->get_runid( ExpID_to_use ));
 
       qDebug() << "RunID_to_retrieve 1: " << RunID_to_retrieve;
+
+      // ElapsedTimeOffset = read_timeElapsed_offset();
+      // qDebug() << "Elapsed Time Offset: " << ElapsedTimeOffset;
+      
+
       // runInfo.clear();
       
       //xpn_data->scan_runs( runInfo );                          // ALEXEY initial query (for us_comproject needs to be based on ExpId ) 
@@ -1473,8 +1480,13 @@
       disconnect(timer_data_init, SIGNAL(timeout()), 0, 0);   //Disconnect timer from anything
       msg_data_avail->close();
       
-      //ALEXEY: need to update 'autoflow' table with the unique  RunID_to_retrieve && Start Run Time fields !!!
-      
+      //ALEXEY: need to update 'autoflow' table with the unique RunID_to_retrieve && Start Run Time fields !!!
+      //Conditional:  Do it ONLY once !!! 
+      update_autoflow_runId_timeStarted();
+
+      //ALEXEY: retrieve startTime from autoflow table:
+      ElapsedTimeOffset = read_timeElapsed_offset();
+       
       //ALEXEY: elapsed timer start
       elapsed_timer = new QElapsedTimer;
       elapsed_timer->start();
@@ -1529,6 +1541,129 @@
 }
 
 
+// When Optima run started & runID aqcuried, update 'autoflow' table
+void US_XpnDataViewer::update_autoflow_runId_timeStarted( void )
+{
+   // Check DB connection
+   US_Passwd pw;
+   QString masterpw = pw.getPasswd();
+   US_DB2* db = new US_DB2( masterpw );
+
+   if ( db->lastErrno() != US_DB2::OK )
+     {
+       QMessageBox::warning( this, tr( "Connection Problem" ),
+			     tr( "Read protocol: Could not connect to database \n" ) + db->lastError() );
+       return;
+     }
+
+   QStringList qry;
+   qry << "update_autoflow_runid_starttime"
+       << ExpID_to_use
+       << RunID_to_retrieve;
+
+   db->query( qry );
+   //ALEXEY: Updates with runID && timeStarted only once, when runID && runStarttime IS NULL
+}
+
+// Read diffference btw started tiem and NOW() as an offset for Elapsed time
+int US_XpnDataViewer::read_timeElapsed_offset( void )
+{
+   // Check DB connection
+   US_Passwd pw;
+   QString masterpw = pw.getPasswd();
+   US_DB2* db = new US_DB2( masterpw );
+
+   int time_offset = 0;
+   
+   if ( db->lastErrno() != US_DB2::OK )
+     {
+       QMessageBox::warning( this, tr( "Connection Problem" ),
+			     tr( "Read protocol: Could not connect to database \n" ) + db->lastError() );
+       return time_offset;
+     }
+
+   QStringList qry;
+   qry << "read_autoflow_times"
+       << RunID_to_retrieve;
+   
+   time_offset = db->functionQuery( qry );
+
+   return time_offset;
+}
+
+//Delete autoflow record upon Run abortion
+void US_XpnDataViewer::delete_autoflow_record( void )
+{
+   // Check DB connection
+   US_Passwd pw;
+   QString masterpw = pw.getPasswd();
+   US_DB2* db = new US_DB2( masterpw );
+
+   if ( db->lastErrno() != US_DB2::OK )
+     {
+       QMessageBox::warning( this, tr( "Connection Problem" ),
+			     tr( "Read protocol: Could not connect to database \n" ) + db->lastError() );
+       return;
+     }
+
+   QStringList qry;
+   qry << "delete_autoflow_record"
+       << RunID_to_retrieve;
+
+   //db->query( qry );
+
+   // OR
+   
+   int status = db->statusQuery( qry );
+   
+   if ( status == US_DB2::NO_AUTOFLOW_RECORD )
+     {
+       QMessageBox::warning( this,
+			     tr( "Autoflow Record Not Deleted" ),
+			     tr( "No autoflow record\n"
+				 "associated with this experiment." ) );
+       return;
+     }
+}
+   
+
+//Delete autoflow record upon Run abortion
+void US_XpnDataViewer::updateautoflow_record_atLiveUpdate( void )
+{
+   // Check DB connection
+   US_Passwd pw;
+   QString masterpw = pw.getPasswd();
+   US_DB2* db = new US_DB2( masterpw );
+
+   if ( db->lastErrno() != US_DB2::OK )
+     {
+       QMessageBox::warning( this, tr( "Connection Problem" ),
+			     tr( "Read protocol: Could not connect to database \n" ) + db->lastError() );
+       return;
+     }
+
+   QStringList qry;
+   qry << "update_autoflow_at_live_update"
+       << RunID_to_retrieve
+       << currentDir;
+
+   //db->query( qry );
+
+   // OR
+   
+   int status = db->statusQuery( qry );
+   
+   if ( status == US_DB2::NO_AUTOFLOW_RECORD )
+     {
+       QMessageBox::warning( this,
+			     tr( "Autoflow Record Not Updated" ),
+			     tr( "No autoflow record\n"
+				 "associated with this experiment." ) );
+       return;
+     }
+}
+   
+
 // Check periodically for SysData
 void US_XpnDataViewer::check_for_sysdata( void )
 {
@@ -1581,10 +1716,9 @@
   le_running->setText( running_time_text );
   qApp->processEvents();
 
-  
   //Elapsed Time
   QList< int > dhms_e;
-  int elapsed_time = int( elapsed_timer->elapsed() / 1000 );
+  int elapsed_time = int( elapsed_timer->elapsed() / 1000 ) + ElapsedTimeOffset;
   int elapsed_time_1 = elapsed_time;
   timeToList( elapsed_time, dhms_e );
   QString elapsed_time_text;
@@ -1705,6 +1839,7 @@
 	  QString message_done     = tr( "Experiment was completed. Optima data saved..." );
 	  QMessageBox::information( this, mtitle_complete, message_done );
 	  
+	  updateautoflow_record_atLiveUpdate();
 	  emit experiment_complete_auto( currentDir, ProtocolName, invID_passed  );  // Updtade later: what should be passed with signal ??
 	  
 	  return;
@@ -1746,6 +1881,8 @@
 	      QString mtitle_complete  = tr( "Complete!" );
 	      QString message_done     = tr( "Experiment was completed. Optima data saved..." );
 	      QMessageBox::information( this, mtitle_complete, message_done );
+
+	      updateautoflow_record_atLiveUpdate();
 	      emit experiment_complete_auto( currentDir, ProtocolName, invID_passed  );  // Updtade later: what should be passed with signal ??
 	      return;
 	    }
@@ -1753,6 +1890,7 @@
 	  else if (msgBox.clickedButton() == Ignore)
 	    {
 	      reset();
+	      delete_autoflow_record();
 	      emit return_to_experiment( ProtocolName  ); 
 	      return;
 	    }
@@ -1790,6 +1928,7 @@
   xpn_data->setEtimOffZero(); //ALEXEY: intialize etimoff to zero for the first time
 
   counter_mins = 0;
+  ElapsedTimeOffset = 0;
   
   ExpID_to_use = protocol_details["experimentId"];   
   ProtocolName = protocol_details["protocolName"];
@@ -3430,6 +3569,8 @@
 	      QString mtitle_complete  = tr( "Complete!" );
 	      QString message_done     = tr( "Experiment was completed. Optima data saved..." );
 	      QMessageBox::information( this, mtitle_complete, message_done );
+
+	      updateautoflow_record_atLiveUpdate();
 	      
 	      emit experiment_complete_auto( currentDir, ProtocolName, invID_passed  );  // Updtade later: what should be passed with signal ??
 	      //QString temp_protname("DemchukA_exosomes40K_111418");
@@ -3462,10 +3603,12 @@
 	      if (msgBox.clickedButton() == Save)
 		{
 		  export_auc_auto();
-		  
+
 		  QString mtitle_complete  = tr( "Complete!" );
 		  QString message_done     = tr( "Experiment was completed. Optima data saved..." );
 		  QMessageBox::information( this, mtitle_complete, message_done );
+
+		  updateautoflow_record_atLiveUpdate();
 		  emit experiment_complete_auto( currentDir, ProtocolName, invID_passed  );  // Updtade later: what should be passed with signal ??
 		  return;
 		}
@@ -3473,6 +3616,7 @@
 	      else if (msgBox.clickedButton() == Ignore)
 		{
 		  reset();
+		  delete_autoflow_record();
 		  emit return_to_experiment( ProtocolName  ); 
 		  return;
 		}

Modified: trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.h
===================================================================
--- trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.h	2019-04-27 09:50:16 UTC (rev 2741)
+++ trunk/programs/us_xpn_viewer/us_xpn_viewer_gui.h	2019-04-28 17:43:16 UTC (rev 2742)
@@ -279,7 +279,8 @@
      QString        TripleNumber;
      QString        OptimaName;          //New
      QString        TotalDuration;       //New
-     QString        invID_passed;  
+     QString        invID_passed;
+     int            ElapsedTimeOffset;
 
      void           timeToList( int&, QList< int >& );
 	 
@@ -296,6 +297,10 @@
      void   retrieve_xpn_raw_auto ( void );
      void   reloadData_auto     ( void );
      int    CheckExpComplete_auto( QString & );
+     void   update_autoflow_runId_timeStarted( void );
+     int    read_timeElapsed_offset( void );
+     void   delete_autoflow_record( void );
+     void   updateautoflow_record_atLiveUpdate( void );
 
      void   expStatFive( void );
      void   expStatTwo( void );

Modified: trunk/sql/us3_autoflow_procs.sql
===================================================================
--- trunk/sql/us3_autoflow_procs.sql	2019-04-27 09:50:16 UTC (rev 2741)
+++ trunk/sql/us3_autoflow_procs.sql	2019-04-28 17:43:16 UTC (rev 2742)
@@ -217,23 +217,20 @@
   MODIFIES SQL DATA  
 
 BEGIN
-  DECLARE count_records INT;
+  DECLARE curr_runid INT;
 
   CALL config();
   SET @US3_LAST_ERRNO = @OK;
   SET @US3_LAST_ERROR = '';
 
-SELECT     COUNT(*)
-  INTO       count_records
+  SELECT     runID
+  INTO       curr_runid
   FROM       autoflow
   WHERE      expID = p_expID;
 
+
   IF ( verify_user( p_personGUID, p_password ) = @OK ) THEN
-    IF ( count_records = 0 ) THEN
-      SET @US3_LAST_ERRNO = @NO_AUTOFLOW_RECORD;
-      SET @US3_LAST_ERROR = 'MySQL: no rows returned';
-
-    ELSE
+    IF ( curr_runid IS NULL ) THEN
       UPDATE   autoflow
       SET      runID = p_runid, runStarted = NOW()
       WHERE    expID = p_expID;
@@ -242,7 +239,7 @@
 
   END IF;
 
-  SELECT @US3_LAST_ERRNO AS status;
+ -- SELECT @US3_LAST_ERRNO AS status;
 
 END$$
 
@@ -262,7 +259,7 @@
   SET @US3_LAST_ERRNO = @OK;
   SET @US3_LAST_ERROR = '';
 
-SELECT     COUNT(*)
+  SELECT     COUNT(*)
   INTO       count_records
   FROM       autoflow
   WHERE      runID = p_runID AND status = 'LIVE_UPDATE';



More information about the us-commits mailing list