[us-commits] r2785 - in trunk/programs: us_com_project us_convert

svn at svn.aucsolutions.com svn at svn.aucsolutions.com
Thu Jun 13 18:42:33 MDT 2019


Author: alexey
Date: 2019-06-14 00:42:33 +0000 (Fri, 14 Jun 2019)
New Revision: 2785

Modified:
   trunk/programs/us_com_project/us_com_project_gui.cpp
   trunk/programs/us_convert/us_convert_gui.cpp
   trunk/programs/us_convert/us_convertio.cpp
   trunk/programs/us_convert/us_convertio.h
Log:
AUtoflow:

saving experiment under correct (passed from the very beginning) investigator. finally..




Modified: trunk/programs/us_com_project/us_com_project_gui.cpp
===================================================================
--- trunk/programs/us_com_project/us_com_project_gui.cpp	2019-06-13 17:07:20 UTC (rev 2784)
+++ trunk/programs/us_com_project/us_com_project_gui.cpp	2019-06-14 00:42:33 UTC (rev 2785)
@@ -353,6 +353,7 @@
   // protocol_details[ "OptimaName" ]     = QString("Optima 1");    // <-- Optima 1
   // protocol_details[ "duration" ]       = QString("27000");
   // protocol_details[ "invID_passed" ]   = QString("34"); //Ling's ID
+  // QDir directory( currDir );
   
   // -------------------------------------------------------------------------------------------  
 
@@ -373,8 +374,8 @@
   // QString currDir                      = protocol_details[ "dataPath" ];
   // QString ProtName                     = protocol_details[ "protocolName" ];
   // QString invID_passed                 = protocol_details[ "invID_passed" ];
+  // QDir directory( currDir );
 
-
   // // --------------------------------------------------------------------------------------------
   
   // // Amy's exp. Optima 2 !!!
@@ -393,10 +394,35 @@
   // QString currDir                      = protocol_details[ "dataPath" ];
   // QString ProtName                     = protocol_details[ "protocolName" ];
   // QString invID_passed                 = protocol_details[ "invID_passed" ];
+  // QDir directory( currDir );
 
   // --------------------------------------------------------------------------------------------
+
+  // // --------------------------------------------------------------------------------------------
   
+  // // D Souza exp. Optima 1 !!!
+  // QMap < QString, QString > protocol_details;
+  // protocol_details["experimentId"] = QString("577");   
+  // protocol_details["protocolName"] = QString("DsouzaS_RVFV1-DDX17-MWL1_060819");
+  // protocol_details[ "experimentName" ] = QString("some_name");
+  // protocol_details[ "CellChNumber" ] = QString("4");
+  // protocol_details[ "TripleNumber" ] = QString("80");
+  // protocol_details[ "OptimaName" ]   = QString("Optima 1");     // <-- Optima 1
+  // protocol_details[ "duration" ]     = QString("61320");
+  // protocol_details[ "dataPath" ]     = QString("/home/alexey/ultrascan/imports/DsouzaS_RVFV1-DDX17-MWL1_060819-run865");
+  // protocol_details[ "invID_passed" ] = QString("20");  //D'Souza ID
+  // protocol_details[ "label" ]        = QString("DsouzaS_RVFV1-DDX17-MWL1_060819");
   
+  // QString stage                        = "EDITING";
+  // QString currDir                      = protocol_details[ "dataPath" ];
+  // QString ProtName                     = protocol_details[ "protocolName" ];
+  // QString invID_passed                 = protocol_details[ "invID_passed" ];
+  // QDir directory( currDir );
+
+  // // --------------------------------------------------------------------------------------------
+  
+  
+  
   // Query 'autoflow': get count of records
   int autoflow_records = get_autoflow_records();
 
@@ -409,15 +435,7 @@
   if ( autoflow_records < 1 )
     return;
 
-  //ALEXEY:
-  /*
-      -- Read (and count) Optima Instruments;
-      -- If the number of 'autoflow' records with the status LIVE_UPDATE && RUNNING is the same as # instruments, disable 'Def. New Exp.' buttion
-      -- Identify free Optima(s) & pass the list to the us_experiment (Lab/Rotors tab -> instruments)
-      -- 
-   */
-
-
+  
   // Dialog of existing autoflow records
   US_Passwd  pw;
   US_DB2* dbP  = new US_DB2( pw.getPasswd() );
@@ -519,13 +537,8 @@
 
   qDebug() << "Exp. Label: "    << protocol_details[ "label" ];
   qDebug() << "GMP Run ? "      << protocol_details[ "gmpRun" ];
+
   
-  //ALEXEY: if stage=="EDITING" && curDir.isEmpty() (NULL)
-  /*
-        -- that means that Run Completed but Directory was created on different computer
-	-- possible solution: return (set) to stage == "LIVE_UPDATE" & re-save to local directory on current computer
-    
-  */
   
   if ( stage == "LIVE_UPDATE" )
     {

Modified: trunk/programs/us_convert/us_convert_gui.cpp
===================================================================
--- trunk/programs/us_convert/us_convert_gui.cpp	2019-06-13 17:07:20 UTC (rev 2784)
+++ trunk/programs/us_convert/us_convert_gui.cpp	2019-06-14 00:42:33 UTC (rev 2785)
@@ -1301,6 +1301,8 @@
 
   Exp_label         = details_at_live_update[ "label" ];
 
+  qDebug() << "Exp_label: " << Exp_label;
+  
   gmpRun_bool = false;
   
   if ( details_at_live_update[ "gmpRun" ] == "YES" )
@@ -1796,7 +1798,7 @@
 
 
    // //TEMP
-   // runID += QString("-test");
+   //runID += QString("-test");
      
    qDebug() << "RUNID from files[0]: files[0]" << fname << ", runID: " << runID;
      
@@ -4896,8 +4898,8 @@
 
   // qDebug() << "ExpData: ";
 
-  // qDebug() << "ExpData.invID " << ExpData.invID;             
-  // qDebug() << "ExpData.invGUI" << ExpData.invGUID;           
+  qDebug() << "ExpData.invID " << ExpData.invID;             
+  qDebug() << "ExpData.invGUI" << ExpData.invGUID;           
   
   // qDebug() << "ExpData.name" <<    ExpData.name;              
   // qDebug() << "ExpData.expID" <<   ExpData.expID;             
@@ -4921,7 +4923,7 @@
   // qDebug() << "ExpData.opticalSystem" <<      ExpData.opticalSystem;        
   // //qDebug() << ExpData.rpms;              
   // qDebug() << "ExpData.runTemp" <<            ExpData.runTemp;           
-  // qDebug() << "ExpData.label" <<              ExpData.label;             
+   qDebug() << "ExpData.label" <<              ExpData.label;             
   // qDebug() << "ExpData.comments" <<           ExpData.comments;          
   // qDebug() << "ExpData.centrifugeProtocol" << ExpData.centrifugeProtocol;
   // qDebug() << "ExpData.date" <<               ExpData.date;              
@@ -4939,7 +4941,8 @@
       qDebug() << "Save: Comments: " << this->te_comment ->toPlainText();
       ExpData.comments = this->te_comment ->toPlainText();
     }
-  
+  qDebug() << "ExpData.comments" <<           ExpData.comments;      
+
   qDebug() << "Save INIT 2:";
   
   // Test to see if this is multi-speed data
@@ -4959,6 +4962,7 @@
       //  and also save single run if Buoyancy or Calibration experiment type
       if ( disk_controls->db() )
       {
+	qDebug() << "SINGLE_SPEED DATA SAVE: ExpData.invID = " << ExpData.invID; 
          saveUS3DB();          // Save AUCs to disk then DB
          writeTimeStateDisk(); // Get TimeState in results
          writeTimeStateDB();   // Save TimeState to database
@@ -5036,6 +5040,7 @@
          // Save the triples of the current speed-run
          if ( disk_controls->db() )
          {
+	   qDebug() << "MULTI_SPEED DATA SAVE: ExpData.invID = " << ExpData.invID; 
             saveUS3DB();          // Save AUCs to disk then DB
             writeTimeStateDisk(); // Get TimeState in results
             writeTimeStateDB();   // Save TimeState to database
@@ -5070,6 +5075,8 @@
 
 	   if ( !gmpRun_bool )    // us_comproject BUT the run is NOT GMP, so complete here 
 	     {
+	       qDebug() << " Saving COMPLETE: NO GMP RUN !!!";
+
 	       QMessageBox::information( this,
 					 tr( "Save is Complete" ),
 					 tr( "The save of all data and reports is complete." ) );
@@ -5093,6 +5100,12 @@
 	     }
 	 }
      }
+   else
+     {
+       QMessageBox::information( this,
+				 tr( "Save is Complete" ),
+				 tr( "The save of all data and reports is complete." ) );
+     }
 }
 
 //Delete autoflow record upon Run abortion
@@ -5427,7 +5440,17 @@
    le_status->setText( tr( "Preparing Save with DB check ..." ) );
    qApp->processEvents();
 
-   int status = US_ConvertIO::checkDiskData( ExpData, out_tripinfo, &db );
+   qDebug() << "BEFORE checkDiskData(): ExpData.invID = " << ExpData.invID;
+
+   int status;
+
+   if ( us_convert_auto_mode )
+     status = US_ConvertIO::checkDiskData_auto( ExpData, out_tripinfo, &db );
+   else
+     status = US_ConvertIO::checkDiskData( ExpData, out_tripinfo, &db );
+   
+   qDebug() << "AFTER checkDiskData(): ExpData.invID = " << ExpData.invID;
+   
 DbgLv(1) << "Status from SaveUs3DB" << status;
    // Save a flag for need to repeat the disk write later
    bool repeat_disk = ( status == US_DB2::NO_RAWDATA );
@@ -5491,9 +5514,14 @@
    qApp->processEvents();
 DbgLv(1) << "DBSv:  (2)dset tripleID    " << out_tripinfo[0].tripleID;
 
+
+ qDebug() << "BEFORE saveUS3Disk(): ExpData.invID = " << ExpData.invID;
+ 
    status = saveUS3Disk();
 DbgLv(1) << "DBSv: Status after saveUS3Disk()" << status;
 
+ qDebug() << "AFTER saveUS3Disk(): ExpData.invID = " << ExpData.invID;
+ 
    if ( status != US_Convert::OK )
       return;
 DbgLv(1) << "DBSv:  local files saved";
@@ -5546,11 +5574,17 @@
    le_status->setText( tr( "Saving Experiment to DB ..." ) );
    qApp->processEvents();
 
+   qDebug() << "SAVE to DB - Initiation!!  us_convert_auto_mode = " << us_convert_auto_mode;
    if ( us_convert_auto_mode ) //ALEXEY: copy of the method with the ExpData.invID set as the owner (not US_Settings::us_inv_ID() )...
-     status = ExpData.saveToDB_auto( ( saveStatus == BOTH ), &db, speedsteps, ExpData.invID );
+     {
+       qDebug() << "SAVE to DB - CALLING AUTO method!!! ExpData.invID = " << ExpData.invID;
+       status = ExpData.saveToDB_auto( ( saveStatus == BOTH ), &db, speedsteps, ExpData.invID );
+     }
    else
-     status = ExpData.saveToDB( ( saveStatus == BOTH ), &db, speedsteps );
-
+     {
+       qDebug() << "SAVE to DB - CALLING DEFAULT method!!!";;
+       status = ExpData.saveToDB( ( saveStatus == BOTH ), &db, speedsteps );
+     }
    QApplication::restoreOverrideCursor();
 
    if ( status == US_DB2::NO_PROJECT )

Modified: trunk/programs/us_convert/us_convertio.cpp
===================================================================
--- trunk/programs/us_convert/us_convertio.cpp	2019-06-13 17:07:20 UTC (rev 2784)
+++ trunk/programs/us_convert/us_convertio.cpp	2019-06-14 00:42:33 UTC (rev 2785)
@@ -723,3 +723,179 @@
 
    return US_DB2::OK ;
 }
+
+//Copy for use in Autoflow
+int US_ConvertIO::checkDiskData_auto( US_Experiment& ExpData,
+                                 QList< US_Convert::TripleInfo >& triples,
+                                 US_DB2* db )
+{
+   if ( US_Settings::us_inv_ID() == -1 )
+      return US_DB2::NO_PERSON;
+
+   //ExpData.invID = US_Settings::us_inv_ID();
+
+   // Get investigator GUID
+   QStringList q( "get_person_info" );
+   q << QString::number( ExpData.invID );
+   db->query( q );
+
+   if ( db->lastErrno() != US_DB2::OK )
+   {
+      ExpData.invID   = 0;
+      ExpData.invGUID = QString( "" );
+      ExpData.name    = QString( "" );
+      return US_DB2::NO_PERSON;
+   }
+
+   // Save updated investigator GUID
+   if ( db->next() )
+   {
+      ExpData.invGUID = db->value( 9 ).toString();
+      ExpData.name    = db->value( 1 ).toString() + ", " + db->value( 0 ).toString();
+   }
+
+   // Check all the other GUID's for format
+   QRegExp rx( "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" );
+
+   // operator GUID
+   if ( ! rx.exactMatch( ExpData.operatorGUID ) )
+      return US_DB2::BADGUID;
+
+   // triple GUID's
+   for ( int trx = 0; trx < triples.size(); trx++ )
+   {
+      if ( triples[ trx ].excluded ) continue;
+
+      QString uuidc = US_Util::uuid_unparse(
+         (unsigned char*) triples[ trx ].tripleGUID );
+      if ( ! rx.exactMatch( uuidc ) )
+         return US_DB2::BADGUID;
+   }
+
+   // rotor GUID
+   if ( ! rx.exactMatch( ExpData.rotorGUID ) )
+      return US_DB2::BADGUID;
+
+   // Ok, GUID's are ok
+
+   // Check if operator exists
+   q.clear();
+   q << QString( "get_personID_from_GUID" )
+     << QString( ExpData.operatorGUID );
+   db->query( q );
+
+   if ( db->lastErrno() != US_DB2::OK )
+   {
+      ExpData.operatorID   = 0;
+      ExpData.operatorGUID = QString( "" );
+      return US_DB2::NO_PERSON;
+   }
+
+   // Save updated investigator ID
+   if ( db->next() )
+      ExpData.operatorID = db->value( 0 ).toInt();
+
+   // Check rotor
+   q.clear();
+   q << QString( "get_rotorID_from_GUID" )
+     << QString( ExpData.rotorGUID );
+   db->query( q );
+
+   if ( db->lastErrno() != US_DB2::OK )
+   {
+      ExpData.rotorID       = 0;
+      ExpData.calibrationID = 0;
+      ExpData.rotorCoeff1   = 0.0;
+      ExpData.rotorCoeff2   = 0.0;
+      ExpData.rotorGUID     = QString( "" );
+      ExpData.rotorSerial   = QString( "" );
+      ExpData.rotorName     = QString( "" );
+      return US_DB2::NO_ROTOR;
+   }
+
+   // Save updated rotor info 
+   if ( db->next() )
+      ExpData.rotorID = db->value( 0 ).toInt();
+   q.clear();
+   q << QString( "get_rotor_info" )
+     << QString::number( ExpData.rotorID );
+   db->query( q );
+   if ( db->next() )
+   {
+      ExpData.rotorGUID   = db->value( 0 ).toString();
+      ExpData.rotorName   = db->value( 1 ).toString();
+      ExpData.rotorSerial = db->value( 2 ).toString();
+   }
+
+   // Save calibration info
+   if ( ExpData.calibrationID == 0 )     // In this case, get the first one
+   {
+      q.clear();
+      q << QString( "get_rotor_calibration_profiles" )
+        << QString::number( ExpData.rotorID );
+      db->query( q );
+      if ( db->next() )
+         ExpData.calibrationID = db->value( 0 ).toInt();
+   }
+
+   // Now get more calibration info
+   ExpData.rotorCoeff1  = 0.0;
+   ExpData.rotorCoeff2  = 0.0;
+   ExpData.rotorUpdated = QDate::currentDate();
+   q.clear();
+   q << QString( "get_rotor_calibration_info" )
+     << QString::number( ExpData.calibrationID );
+   db->query( q );
+   if ( db->next() )
+   {
+      ExpData.rotorCoeff1  = db->value( 4 ).toString().toFloat();
+      ExpData.rotorCoeff2  = db->value( 5 ).toString().toFloat();
+      QStringList dateParts = db->value( 7 ).toString().split( " " );
+      ExpData.rotorUpdated = QDate::fromString( dateParts[ 0 ], "yyyy-MM-dd" );
+   }
+
+   // Initialize triple GUID's
+   int found = true;     // Let's assume we'll find them all
+   for ( int i = 0; i < triples.size(); i++ )
+   {
+      if ( triples[ i ].excluded ) continue;
+
+      QString uuidc = US_Util::uuid_unparse(
+            (unsigned char*) triples[ i ].tripleGUID );
+      q.clear();
+      q << QString( "get_rawDataID_from_GUID" )
+        << uuidc;
+      db->query( q );
+
+      int status = db->lastErrno();
+qDebug() << "iSv: trip" << i << "tGUID" << uuidc
+ << "stat,ok,norow" << status << US_DB2::OK << US_DB2::NOROWS;
+      if ( status == US_DB2::OK )
+      {
+         // Save updated triple ID
+         if ( db->next() )
+            triples[ i ].tripleID = db->value( 0 ).toString().toInt();
+qDebug() << "iSv:    tID" << triples[i].tripleID;
+      }
+
+      else if ( status == US_DB2::NOROWS )
+      {
+         triples[ i ].tripleID = 0;
+         memset( triples[ i ].tripleGUID, 0, 16 );
+         found = false;     // At least one wasn't found in the DB
+      }
+
+      else     // more unlikely errors
+      {
+         qDebug() << "get_rawDataID_from_GUID error: " << db->lastErrno();
+         qDebug() << "triple GUID = " << uuidc;
+         return status;
+      }
+
+   }
+
+   if ( ! found )       // Probably we just haven't saved it yet
+      return US_DB2::NO_RAWDATA;
+
+   return US_DB2::OK ;
+}

Modified: trunk/programs/us_convert/us_convertio.h
===================================================================
--- trunk/programs/us_convert/us_convertio.h	2019-06-13 17:07:20 UTC (rev 2784)
+++ trunk/programs/us_convert/us_convertio.h	2019-06-14 00:42:33 UTC (rev 2785)
@@ -69,6 +69,10 @@
                  US_Experiment&,
                  QList< US_Convert::TripleInfo >& ,
                  US_DB2* = 0 );
+      static int checkDiskData_auto( 
+                 US_Experiment&,
+                 QList< US_Convert::TripleInfo >& ,
+                 US_DB2* = 0 );
 
    private:
       static QString readRawDataFromDB( 



More information about the us-commits mailing list