[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