Blame view

src/ExternLib/StatisticFunctions/ProcessStatisticFunctions.cc 4.09 KB
74a11471   Benjamin Renard   Add min, max, var...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
 * ProcessStatisticFunctions.cc
 *
 *  Created on: Jun 21, 2018
 *      Author: benjamin
 */
#include <stdlib.h>
#include <string>

#include <boost/lexical_cast.hpp>

#include "DicError.hh"
#include "AMDA_exception.hh"

#include "Operation.hh"
#include "ParameterManager.hh"
#include "ProcessStatisticFunctions.hh"
#include "ParamMgr.hh"

using namespace std;
using namespace boost;
using namespace log4cxx;

namespace AMDA {
namespace Parameters {

ProcessStatisticFunctions::ProcessStatisticFunctions(Parameter &parameter, StatisticFunctionsCreator::StatisticFunctionsType type) : SingleParamProcess_CRTP(parameter), _type(type), _windowtime(0.) {
}

ProcessStatisticFunctions::ProcessStatisticFunctions(const ProcessStatisticFunctions& pProcess, Parameter &parameter)
    : SingleParamProcess_CRTP(pProcess,parameter), _type(pProcess._type) {
}

ProcessStatisticFunctions::~ProcessStatisticFunctions() {
}

TimeStamp ProcessStatisticFunctions::init() {
	//Get window time
	if (_attributList.size() != 1) {
		BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_PROCESS_ERR) << AMDA::ex_msg(std::string("ProcessStatisticFunctions required at least one attribute: Window Time")));
	}
c76233b2   Benjamin Renard   Check window time...
42
43
44
45
46

	if (!isValid<double>(_attributList[0])) {
		BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_PROCESS_ERR) << AMDA::ex_msg(std::string("Window Time must be a double.")));
	}

74a11471   Benjamin Renard   Add min, max, var...
47
48
	_windowtime = atof(_attributList[0].c_str());

c76233b2   Benjamin Renard   Check window time...
49
50
51
52
	if (_windowtime <= 0) {
		BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_PROCESS_ERR) << AMDA::ex_msg(std::string("Window Time must be greater than 0.")));
	}

74a11471   Benjamin Renard   Add min, max, var...
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
	TimeStamp time = _parameterInput->init( this, _timeIntervalList);

	_paramInput = _parameterInput->getParamData(this).get();

	StatisticFunctionsCreator lCreator(*this, _timeIntervalList, *_paramInput, _type, _windowtime);
	_operation = lCreator.getOperation();	
	_paramData = ParamDataSPtr(_operation->getParamOutput());
	int minSampling = static_cast<StatisticFunctions::AbstractFuncBase*>(_operation)->getSampling();
	_paramData->setMinSampling(static_cast<StatisticFunctions::AbstractFuncBase*>(_operation)->getSampling());
	int gapThreshold = minSampling / _paramInput->getMinSampling() * _parameterInput->getGapThreshold();
	if (gapThreshold < 1) {
		gapThreshold = 1;
	}
	_parameter.setGapThreshold(gapThreshold);
	return time;
}

ProcessMinFunc::ProcessMinFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_MIN) {
}

ProcessMinSmFunc::ProcessMinSmFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_MIN_SM) {
}

ProcessMaxFunc::ProcessMaxFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_MAX) {
}

ProcessMaxSmFunc::ProcessMaxSmFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_MAX_SM) {
}

ProcessVarFunc::ProcessVarFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_VAR) {
}

ProcessVarSmFunc::ProcessVarSmFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_VAR_SM) {
}

ProcessRmsFunc::ProcessRmsFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_RMS) {
}

ProcessRmsSmFunc::ProcessRmsSmFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_RMS_SM) {
}

ProcessSkewFunc::ProcessSkewFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_SKEW) {
}

ProcessSkewSmFunc::ProcessSkewSmFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_SKEW_SM) {
}

ProcessMedianFunc::ProcessMedianFunc(Parameter &parameter) : ProcessStatisticFunctions(parameter,StatisticFunctionsCreator::StatisticFunctionsType::SFT_MEDIAN) {
}

} /* namespace Parameters */
} /* namespace AMDA */