Skip to content

Commit

Permalink
WIP: import and display well/wellbores.
Browse files Browse the repository at this point in the history
  • Loading branch information
kriben committed Apr 29, 2024
1 parent 9953b46 commit e2d9dc2
Show file tree
Hide file tree
Showing 5 changed files with 332 additions and 605 deletions.
126 changes: 110 additions & 16 deletions ApplicationLibCode/Commands/OsduImportCommands/RiaOsduConnector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,15 @@
#include "RiaOsduOAuthHttpServerReplyHandler.h"

#include <QAbstractOAuth>
#include <QDesktopServices>
#include <QJsonDocument>
#include <QJsonObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QOAuth2AuthorizationCodeFlow>
#include <QObject>

#include <QDesktopServices>
#include <QOAuthHttpServerReplyHandler>
#include <QObject>
#include <QString>
#include <QTimer>
#include <QUrl>
Expand Down Expand Up @@ -125,9 +124,17 @@ void RiaOsduConnector::requestFieldsByName( const QString& server, const QString
params["kind"] = FIELD_KIND;
params["limit"] = "10000";
params["query"] = "data.FieldName:IVAR*";
makeRequest( params, server, dataPartitionId, token );

connect( m_networkAccessManager, SIGNAL( finished( QNetworkReply* ) ), this, SLOT( parseFields( QNetworkReply* ) ) );
auto reply = makeRequest( params, server, dataPartitionId, token );
connect( reply,
&QNetworkReply::finished,
[this, reply]()
{
if ( reply->error() == QNetworkReply::NoError )
{
parseFields( reply );
}
} );
}

//--------------------------------------------------------------------------------------------------
Expand All @@ -147,9 +154,25 @@ void RiaOsduConnector::requestWellsByFieldId( const QString& server, const QStri
params["kind"] = WELL_KIND;
params["limit"] = "10000";
params["query"] = QString( "nested(data.GeoContexts, (FieldID:\"%1\"))" ).arg( fieldId );
makeRequest( params, server, dataPartitionId, token );

connect( m_networkAccessManager, SIGNAL( finished( QNetworkReply* ) ), this, SLOT( parseWells( QNetworkReply* ) ) );
auto reply = makeRequest( params, server, dataPartitionId, token );
connect( reply,
&QNetworkReply::finished,
[this, reply, fieldId]()
{
if ( reply->error() == QNetworkReply::NoError )
{
parseWells( reply );
}
} );
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaOsduConnector::requestWellboresByWellId( const QString& wellId )
{
requestWellboresByWellId( m_server, m_dataPartitionId, m_token, wellId );
}

//--------------------------------------------------------------------------------------------------
Expand All @@ -161,9 +184,17 @@ void RiaOsduConnector::requestWellboresByWellId( const QString& server, const QS
params["kind"] = WELLBORE_KIND;
params["limit"] = "10000";
params["query"] = "data.WellID: \"" + wellId + "\"";
makeRequest( params, server, dataPartitionId, token );

connect( m_networkAccessManager, SIGNAL( finished( QNetworkReply* ) ), this, SLOT( parseWells( QNetworkReply* ) ) );
auto reply = makeRequest( params, server, dataPartitionId, token );
connect( reply,
&QNetworkReply::finished,
[this, reply, wellId]()
{
if ( reply->error() == QNetworkReply::NoError )
{
parseWellbores( reply, wellId );
}
} );
}

//--------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -271,7 +302,7 @@ void RiaOsduConnector::parseFields( QNetworkReply* reply )
QJsonArray resultsArray = jsonObj["results"].toArray();

// Iterate through each element in the "results" array
qDebug() << "Found " << resultsArray.size() << " items.";
// qDebug() << "Found " << resultsArray.size() << " items.";

m_fields.clear();

Expand All @@ -289,7 +320,7 @@ void RiaOsduConnector::parseFields( QNetworkReply* reply )
m_fields.push_back( OsduField{ id, kind, fieldName } );
}

emit wellsFinished();
emit fieldsFinished();
}

//--------------------------------------------------------------------------------------------------
Expand All @@ -310,22 +341,65 @@ void RiaOsduConnector::parseWells( QNetworkReply* reply )
// Access "results" array from the JSON object
QJsonArray resultsArray = jsonObj["results"].toArray();

// Iterate through each element in the "results" array
qDebug() << "Found " << resultsArray.size() << " wells.";

m_wells.clear();
foreach ( const QJsonValue& value, resultsArray )
{
QJsonObject resultObj = value.toObject();

// Accessing specific fields from the result object
QString id = resultObj["id"].toString();
QString kind = resultObj["kind"].toString();
QString name = resultObj["data"].toObject()["FacilityName"].toString();

qDebug() << "Id:" << id << " kind: " << kind << " name: " << name;
qDebug() << resultObj;
m_wells.push_back( OsduWell{ id, kind, name } );
}

emit wellsFinished();
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaOsduConnector::parseWellbores( QNetworkReply* reply, const QString& wellId )
{
qDebug() << "REQUEST FINISHED. Error? " << ( reply->error() != QNetworkReply::NoError );

QByteArray result = reply->readAll();

reply->deleteLater();

QJsonDocument doc = QJsonDocument::fromJson( result );
// Extract the JSON object from the QJsonDocument
QJsonObject jsonObj = doc.object();

// Access "results" array from the JSON object
QJsonArray resultsArray = jsonObj["results"].toArray();

// Iterate through each element in the "results" array
qDebug() << "Found " << resultsArray.size() << " items.";

m_wellbores[wellId].clear();
foreach ( const QJsonValue& value, resultsArray )
{
QJsonObject resultObj = value.toObject();

// Accessing specific fields from the result object
QString id = resultObj["id"].toString();
QString kind = resultObj["kind"].toString();
QString fieldName = resultObj["data"].toObject()["FieldName"].toString();
QString id = resultObj["id"].toString();
QString kind = resultObj["kind"].toString();
QString name = resultObj["data"].toObject()["FacilityName"].toString();

qDebug() << "Id:" << id << " kind: " << kind << " name: " << fieldName;
qDebug() << "Id:" << id << " kind: " << kind << " name: " << name;
qDebug() << resultObj;

m_wellbores[wellId].push_back( OsduWellbore{ id, kind, name, wellId } );
}

emit finished();
emit wellboresFinished( wellId );
}

//--------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -473,3 +547,23 @@ std::vector<OsduField> RiaOsduConnector::fields() const
{
return m_fields;
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<OsduWell> RiaOsduConnector::wells() const
{
return m_wells;
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<OsduWellbore> RiaOsduConnector::wellbores( const QString& wellId ) const
{
auto it = m_wellbores.find( wellId );
if ( it != m_wellbores.end() )
return it->second;
else
return {};
}
30 changes: 26 additions & 4 deletions ApplicationLibCode/Commands/OsduImportCommands/RiaOsduConnector.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,21 @@ struct OsduField
QString name;
};

struct OsduWell
{
QString id;
QString kind;
QString name;
};

struct OsduWellbore
{
QString id;
QString kind;
QString name;
QString wellId;
};

//==================================================================================================
///
//==================================================================================================
Expand All @@ -31,25 +46,30 @@ class RiaOsduConnector : public QObject

void requestFieldsByName( const QString& token, const QString& fieldName );
void requestFieldsByName( const QString& fieldName );

void requestWellsByFieldId( const QString& fieldId );
void requestWellboresByWellId( const QString& wellId );

QString server() const;
QString dataPartition() const;

std::vector<OsduField> fields() const;
std::vector<OsduField> fields() const;
std::vector<OsduWell> wells() const;
std::vector<OsduWellbore> wellbores( const QString& wellId ) const;

public slots:
void requestToken();
void parseFields( QNetworkReply* reply );
void parseWells( QNetworkReply* reply );
void parseWellbores( QNetworkReply* reply, const QString& wellId );
void parseWellTrajectory( QNetworkReply* reply );
void saveFile( QNetworkReply* reply );
void accessGranted();

signals:
void finished();
void fieldsFinished();
void wellsFinished();
void wellboresFinished( const QString& wellId );
void tokenReady( const QString& token );

private:
Expand Down Expand Up @@ -84,6 +104,8 @@ public slots:
const QString m_scopes;
const QString m_clientId;

QString m_token;
std::vector<OsduField> m_fields;
QString m_token;
std::vector<OsduField> m_fields;
std::vector<OsduWell> m_wells;
std::map<QString, std::vector<OsduWellbore>> m_wellbores;
};
Original file line number Diff line number Diff line change
Expand Up @@ -103,15 +103,15 @@ void RicWellPathsImportSsihubFeature::onActionTriggered( bool isChecked )

if ( QDialog::Accepted == wellImportwizard.exec() )
{
QStringList wellPaths = wellImportwizard.absoluteFilePathsToWellPaths();
if ( !wellPaths.empty() )
{
QStringList errorMessages;
app->addWellPathsToModel( wellPaths, &errorMessages );
app->project()->scheduleCreateDisplayModelAndRedrawAllViews();
}

app->setCacheDataObject( "ssihub_username", wellImportwizard.field( "username" ) );
// QStringList wellPaths = wellImportwizard.absoluteFilePathsToWellPaths();
// if ( !wellPaths.empty() )
// {
// QStringList errorMessages;
// app->addWellPathsToModel( wellPaths, &errorMessages );
// app->project()->scheduleCreateDisplayModelAndRedrawAllViews();
// }

// app->setCacheDataObject( "ssihub_username", wellImportwizard.field( "username" ) );
}
else
{
Expand Down

0 comments on commit e2d9dc2

Please sign in to comment.