You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/nmNum/nmData/nmDataForecast.h

207 lines
6.0 KiB
C++

#ifndef NMDATAFORECAST_H
#define NMDATAFORECAST_H
#include <QObject>
#include "nmData_global.h"
#include "nmDataBase.h"
#include "nmDataAttribute.h"
struct NM_DATA_EXPORT PressureRow {
nmDataAttribute duration;
nmDataAttribute pressure;
PressureRow();
};
struct NM_DATA_EXPORT FlowRow {
nmDataAttribute duration;
nmDataAttribute q0;
FlowRow();
};
struct NM_DATA_EXPORT ConstantPressure {
nmDataAttribute initialPressure;
nmDataAttribute abandonmentRate;
bool isAbandonmentRate;
nmDataAttribute maximumRate;
bool isMaximumRate;
nmDataAttribute forecastDuration;
nmDataAttribute producingPressure;
ConstantPressure();
// Getter and Setter for initialPressure
nmDataAttribute& getInitialPressure();
void setInitialPressure(const nmDataAttribute& value);
// Getter and Setter for abandonmentRate
nmDataAttribute& getAbandonmentRate();
void setAbandonmentRate(const nmDataAttribute& value);
// Getter and Setter for isAbandonmentRate
bool getIsAbandonmentRate() const;
void setIsAbandonmentRate(bool value);
// Getter and Setter for maximumRate
nmDataAttribute& getMaximumRate();
void setMaximumRate(const nmDataAttribute& value);
// Getter and Setter for isMaximumRate
bool getIsMaximumRate() const;
void setIsMaximumRate(bool value);
// Getter and Setter for forecastDuration
nmDataAttribute& getForecastDuration();
void setForecastDuration(const nmDataAttribute& value);
// Getter and Setter for producingPressure
nmDataAttribute& getProducingPressure();
void setProducingPressure(const nmDataAttribute& value);
};
struct NM_DATA_EXPORT DecliningPressure {
nmDataAttribute initialPressure;
nmDataAttribute abandonmentRate;
bool isAbandonmentRate;
nmDataAttribute maximumRate;
bool isMaximumRate;
nmDataAttribute forecastDuration;
nmDataAttribute producingPressureStart;
nmDataAttribute producingPressureEnd;
nmDataAttribute pressureChangePeriod;
DecliningPressure();
// Getter and Setter for initialPressure
nmDataAttribute& getInitialPressure();
void setInitialPressure(const nmDataAttribute& value);
// Getter and Setter for abandonmentRate
nmDataAttribute& getAbandonmentRate();
void setAbandonmentRate(const nmDataAttribute& value);
// Getter and Setter for isAbandonmentRate
bool getIsAbandonmentRate() const;
void setIsAbandonmentRate(bool value);
// Getter and Setter for maximumRate
nmDataAttribute& getMaximumRate();
void setMaximumRate(const nmDataAttribute& value);
// Getter and Setter for isMaximumRate
bool getIsMaximumRate() const;
void setIsMaximumRate(bool value);
// Getter and Setter for forecastDuration
nmDataAttribute& getForecastDuration();
void setForecastDuration(const nmDataAttribute& value);
// Getter and Setter for producingPressureStart
nmDataAttribute& getProducingPressureStart();
void setProducingPressureStart(const nmDataAttribute& value);
// Getter and Setter for producingPressureEnd
nmDataAttribute& getProducingPressureEnd();
void setProducingPressureEnd(const nmDataAttribute& value);
// Getter and Setter for pressureChangePeriod
nmDataAttribute& getPressureChangePeriod();
void setPressureChangePeriod(const nmDataAttribute& value);
};
struct NM_DATA_EXPORT MultiplePressures {
nmDataAttribute initialPressure;
nmDataAttribute abandonmentRate;
bool isAbandonmentRate;
nmDataAttribute maximumRate;
bool isMaximumRate;
MultiplePressures();
QVector<PressureRow> pressureTable;
// Getter and Setter for initialPressure
nmDataAttribute& getInitialPressure();
void setInitialPressure(const nmDataAttribute& value);
// Getter and Setter for abandonmentRate
nmDataAttribute& getAbandonmentRate();
void setAbandonmentRate(const nmDataAttribute& value);
// Getter and Setter for isAbandonmentRate
bool getIsAbandonmentRate() const;
void setIsAbandonmentRate(bool value);
// Getter and Setter for maximumRate
nmDataAttribute& getMaximumRate();
void setMaximumRate(const nmDataAttribute& value);
// Getter and Setter for isMaximumRate
bool getIsMaximumRate() const;
void setIsMaximumRate(bool value);
QVector<PressureRow>& getPressureTable();
void setPressureTable(const QVector<PressureRow>& table);
};
struct NM_DATA_EXPORT MultipleRates {
nmDataAttribute initialPressure;
MultipleRates();
QVector<FlowRow> flowTable;
// Getter and Setter for initialPressure
nmDataAttribute& getInitialPressure();
void setInitialPressure(const nmDataAttribute& value);
QVector<FlowRow>& getFlowTable();
void setFlowTable(const QVector<FlowRow>& table);
};
class NM_DATA_EXPORT nmDataForecast : public nmDataBase
{
public:
nmDataForecast();
~nmDataForecast();
nmDataForecast(const nmDataForecast& other);
nmDataForecast& operator=(const nmDataForecast& other);
enum ForecastOption {
ConstantPressureOption = 0,
DecliningPressureOption = 1,
MultiplePressuresOption = 2,
MultipleRatesOption = 3,
};
void setForecastOption(ForecastOption option);
ForecastOption getForecastOption() const;
void setConstantPressureData(const ConstantPressure& cp);
ConstantPressure& getConstantPressureData();
void setDecliningPressureData(const DecliningPressure& dp);
DecliningPressure& getDecliningPressureData();
void setMultiplePressuresData(const MultiplePressures& mp);
MultiplePressures& getMultiplePressuresData();
void setMultipleRatesData(const MultipleRates& mr);
MultipleRates& getMultipleRatesData();
virtual rapidjson::Value ToJsonValue(rapidjson::Document::AllocatorType& allocator) const override;
virtual void FromJsonValue(const rapidjson::Value& jsonValue) override;
private:
ForecastOption currentOption;
ConstantPressure constantPressureData;
DecliningPressure decliningPressureData;
MultiplePressures multiplePressuresData;
MultipleRates multipleRatesData;
};
#endif // NMDATAFORECAST_H