2017-09-14 07:34:12 -05:00
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2017- Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
2017-09-15 06:18:06 -05:00
2017-09-14 07:34:12 -05:00
# include "RimObservedDataCollection.h"
2017-09-25 07:37:41 -05:00
2017-10-04 00:36:30 -05:00
# include "RiaApplication.h"
2017-09-27 08:12:55 -05:00
# include "RiaLogging.h"
2017-11-22 13:34:18 -06:00
# include "SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeatureUi.h"
2017-09-27 08:12:55 -05:00
# include "RifKeywordVectorParser.h"
# include "RimObservedData.h"
2017-11-22 13:34:18 -06:00
# include "RimCsvUserData.h"
2017-10-04 00:36:30 -05:00
# include "RimObservedEclipseUserData.h"
2017-09-18 03:44:28 -05:00
# include "RimSummaryObservedDataFile.h"
2017-09-14 08:44:01 -05:00
2017-10-04 00:36:30 -05:00
# include "RiuMainPlotWindow.h"
2017-09-27 08:12:55 -05:00
# include "cafUtils.h"
2017-11-22 13:34:18 -06:00
# include "cafPdmSettings.h"
# include "cafPdmUiPropertyViewDialog.h"
2017-09-27 08:12:55 -05:00
# include <QFile>
2017-09-14 08:44:01 -05:00
CAF_PDM_SOURCE_INIT ( RimObservedDataCollection , " ObservedDataCollection " ) ;
2017-09-14 07:34:12 -05:00
2017-09-14 08:59:33 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-09-14 07:34:12 -05:00
RimObservedDataCollection : : RimObservedDataCollection ( )
{
2017-09-29 04:39:07 -05:00
CAF_PDM_InitObject ( " Observed Time History Data " , " :/Folder.png " , " " , " " ) ;
2017-09-14 08:44:01 -05:00
2017-09-15 06:18:06 -05:00
CAF_PDM_InitFieldNoDefault ( & m_observedDataArray , " ObservedDataArray " , " " , " " , " " , " " ) ;
2017-09-14 08:44:01 -05:00
2017-09-15 06:18:06 -05:00
m_observedDataArray . uiCapability ( ) - > setUiHidden ( true ) ;
2017-09-14 07:34:12 -05:00
}
2017-09-14 08:59:33 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-09-14 07:34:12 -05:00
RimObservedDataCollection : : ~ RimObservedDataCollection ( )
{
2017-09-15 06:18:06 -05:00
m_observedDataArray . deleteAllChildObjects ( ) ;
2017-09-18 03:44:28 -05:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimObservedDataCollection : : removeObservedData ( RimObservedData * observedData )
{
m_observedDataArray . removeChildObject ( observedData ) ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimObservedDataCollection : : addObservedData ( RimObservedData * observedData )
{
m_observedDataArray . push_back ( observedData ) ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-11-03 02:11:27 -05:00
RimObservedData * RimObservedDataCollection : : createAndAddObservedDataFromFileName ( const QString & fileName , QString * errorText )
2017-09-18 03:44:28 -05:00
{
2017-09-25 07:37:41 -05:00
RimObservedData * observedData = nullptr ;
{
2017-09-27 08:12:55 -05:00
QFile file ( fileName ) ;
2017-11-23 04:09:44 -06:00
if ( ! file . exists ( ) )
2017-09-27 08:12:55 -05:00
{
2017-11-23 04:09:44 -06:00
QString s = QString ( " File does not exist, %1 " ) . arg ( fileName ) ;
2017-11-03 02:11:27 -05:00
RiaLogging : : error ( s ) ;
if ( errorText ) errorText - > append ( s ) ;
2017-09-27 08:12:55 -05:00
return nullptr ;
}
2017-11-23 04:09:44 -06:00
}
2017-09-27 08:12:55 -05:00
2017-11-23 04:09:44 -06:00
if ( fileName . endsWith ( " .rsm " , Qt : : CaseInsensitive ) )
{
return createAndAddRsmObservedDataFromFile ( fileName , errorText ) ;
}
else if ( fileName . endsWith ( " .txt " , Qt : : CaseInsensitive ) | | fileName . endsWith ( " .csv " , Qt : : CaseInsensitive ) )
{
return createAndAddCvsObservedDataFromFile ( fileName , errorText ) ;
}
else
{
if ( errorText )
2017-11-07 03:25:05 -06:00
{
2017-11-23 04:09:44 -06:00
errorText - > append ( " Not able to import file. Make sure '*.rsm' is used as extension if data is in RMS format or '*.txt' or '*.csv' if data is in CSV format. " ) ;
2017-11-07 03:25:05 -06:00
}
2017-09-25 07:37:41 -05:00
}
2017-11-22 13:34:18 -06:00
return nullptr ;
2017-09-18 03:44:28 -05:00
}
2017-09-18 13:27:20 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-09-22 07:26:54 -05:00
std : : vector < RimSummaryCase * > RimObservedDataCollection : : allObservedData ( )
2017-09-18 13:27:20 -05:00
{
2017-09-22 07:26:54 -05:00
std : : vector < RimSummaryCase * > allObservedData ;
2017-09-18 13:27:20 -05:00
allObservedData . insert ( allObservedData . begin ( ) , m_observedDataArray . begin ( ) , m_observedDataArray . end ( ) ) ;
return allObservedData ;
}
2017-11-22 13:34:18 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-11-23 04:09:44 -06:00
RimObservedData * RimObservedDataCollection : : createAndAddRsmObservedDataFromFile ( const QString & fileName , QString * errorText /*= nullptr*/ )
2017-11-22 13:34:18 -06:00
{
RimObservedData * observedData = nullptr ;
RimObservedEclipseUserData * columnBasedUserData = new RimObservedEclipseUserData ( ) ;
observedData = columnBasedUserData ;
this - > m_observedDataArray . push_back ( observedData ) ;
2017-11-23 04:09:44 -06:00
observedData - > setSummaryHeaderFileName ( fileName ) ;
2017-11-22 13:34:18 -06:00
observedData - > createSummaryReaderInterface ( ) ;
observedData - > updateMetaData ( ) ;
observedData - > updateOptionSensitivity ( ) ;
if ( errorText & & ! observedData - > errorMessagesFromReader ( ) . isEmpty ( ) )
{
errorText - > append ( observedData - > errorMessagesFromReader ( ) ) ;
}
RiuMainPlotWindow * mainPlotWindow = RiaApplication : : instance ( ) - > getOrCreateAndShowMainPlotWindow ( ) ;
if ( mainPlotWindow )
{
mainPlotWindow - > selectAsCurrentItem ( observedData ) ;
mainPlotWindow - > setExpanded ( observedData ) ;
}
this - > updateConnectedEditors ( ) ;
2017-11-23 04:09:44 -06:00
2017-11-22 13:34:18 -06:00
return observedData ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-11-23 04:09:44 -06:00
RimObservedData * RimObservedDataCollection : : createAndAddCvsObservedDataFromFile ( const QString & fileName , QString * errorText /*= nullptr*/ )
2017-11-22 13:34:18 -06:00
{
RimObservedData * observedData = nullptr ;
RicPasteAsciiDataToSummaryPlotFeatureUi parseOptionsUi ;
2017-11-24 01:17:43 -06:00
parseOptionsUi . setUiModeImport ( fileName ) ;
2017-11-22 13:34:18 -06:00
caf : : PdmUiPropertyViewDialog propertyDialog ( NULL , & parseOptionsUi , " CSV Import Options " , " " ) ;
if ( propertyDialog . exec ( ) ! = QDialog : : Accepted )
{
return nullptr ;
}
RimCsvUserData * columnBasedUserData = new RimCsvUserData ( ) ;
columnBasedUserData - > setParseOptions ( parseOptionsUi . parseOptions ( ) ) ;
observedData = columnBasedUserData ;
this - > m_observedDataArray . push_back ( observedData ) ;
2017-11-23 04:09:44 -06:00
observedData - > setSummaryHeaderFileName ( fileName ) ;
2017-11-22 13:34:18 -06:00
observedData - > createSummaryReaderInterface ( ) ;
observedData - > updateMetaData ( ) ;
observedData - > updateOptionSensitivity ( ) ;
if ( errorText & & ! observedData - > errorMessagesFromReader ( ) . isEmpty ( ) )
{
errorText - > append ( observedData - > errorMessagesFromReader ( ) ) ;
}
RiuMainPlotWindow * mainPlotWindow = RiaApplication : : instance ( ) - > getOrCreateAndShowMainPlotWindow ( ) ;
if ( mainPlotWindow )
{
mainPlotWindow - > selectAsCurrentItem ( observedData ) ;
mainPlotWindow - > setExpanded ( observedData ) ;
}
this - > updateConnectedEditors ( ) ;
return observedData ;
}