ProcessTimeShifted.cc 2.02 KB
/*
 * ProcessTimeShifted.cc
 *
 *  Created on: Dec 12, 2012
 *      Author: f.casimir
 */
#include <stdlib.h>
#include <string>

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

#include "Operation.hh"
#include "ParameterManager.hh"
#include "ProcessTimeShifted.hh"
#include "TimeShiftedCreator.hh"

#include "TimeInterval.hh"

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

namespace AMDA {
	namespace Parameters {

		ProcessTimeShifted::ProcessTimeShifted(Parameter &parameter)
		: SingleParamProcess_CRTP(parameter) {
		}

		ProcessTimeShifted::ProcessTimeShifted(const ProcessTimeShifted& pProcess, Parameter &parameter)
		: SingleParamProcess_CRTP(pProcess,parameter) {
		}

		ProcessTimeShifted::~ProcessTimeShifted() {
		}

		TimeStamp ProcessTimeShifted::init() {
			double shiftTime = atof(_attributList[0].c_str());
			TimeIntervalListSPtr lTimeIntervalList(new TimeIntervalList());

			// Add shift time for each time interval
			for (TimeIntervalList::iterator it = _timeIntervalList->begin(); it != _timeIntervalList->end(); ++it) {
				lTimeIntervalList->push_back(TimeInterval( (*it)._startTime + shiftTime, (*it)._stopTime + shiftTime));
			}


			TimeStamp timeStamp = _parameterInput->init( this, lTimeIntervalList);
			Parameter::InfoList lInfoList = _parameterInput->getInfoList();
			_parameter.getInfoList().insert(lInfoList.begin(), lInfoList.end());
			_paramInput = _parameterInput->getParamData(this).get();

			//GET Sampling
			if (_attributList.size() != 1) {
				BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_PROCESS_ERR) << AMDA::ex_msg("Only the time in second to shift needed in argument of ProcessTimeShifted"));
			}

			TimeShiftedCreator lTimeShiftedCreator(*this,*_paramInput,shiftTime);
			_operation = lTimeShiftedCreator.getOperation();
			_paramData = ParamDataSPtr(_operation->getParamOutput());
			_paramData->setMinSampling(_paramInput->getMinSampling());
			return timeStamp;
		}

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