26#ifndef __TERRALIB_VP_INTERNAL_ABSCTRACTOPERATION_H
27#define __TERRALIB_VP_INTERNAL_ABSCTRACTOPERATION_H
31#include "../common/AbstractFactory.h"
32#include "../geometry/Enums.h"
48 struct AbstractOperationImpl;
51 class OperationReport;
82 virtual bool isValid(std::string& errorMessage);
162 AbstractOperationCapabilities(
const std::string& operationName, std::size_t numberOfInputs, std::size_t numberOfOutputs,
const std::string& dataHandlerName,
bool snapGeometries,
bool allowCoordinateSubdivision);
231 virtual std::vector<te::vp::FeatureSet>
execute(
const std::vector<te::vp::FeatureSet>& vecInput);
275 virtual std::unique_ptr<te::vp::AbstractOperationCapabilities>
getCapabilities()
const;
298 virtual std::vector<te::vp::FeatureSet>
executeImpl(
const std::vector<te::vp::FeatureSet>& vecInput) = 0;
This class defines the interface of abstract factories without initializing parameters.
Class used to centralize and control access to data in terralib. It aims to create a high-level inter...
A class that models the description of a dataset.
Abstract class used to define the capabilities of the operation, inclusing number of inputs and outpu...
std::string m_operationName
The name of the operation.
bool getSnapGeometries() const
Checks if the operation has the capability to handle geometry coordinate subdivision.
bool m_snapGeometries
TRUE if the geometries must be snapped to each other before the operation is executed....
std::string m_dataHandlerName
TRUE if the operation supports the subdivision of the geometries. FALSE otherwise.
AbstractOperationCapabilities(const std::string &operationName, std::size_t numberOfInputs, std::size_t numberOfOutputs, const std::string &dataHandlerName, bool snapGeometries, bool allowCoordinateSubdivision)
Destructor.
std::size_t getNumberOfOutputs() const
Returns the name of the operation.
bool m_allowCoordinateSubdivision
TRUE if the operation has the capability to handle geometry coordinate subdivision.
std::size_t m_numberOfOutputs
The number of outputs of the operation.
std::size_t getNumberOfInputs() const
Returns the number of outputs of the operation.
bool getAllowCoordinateSubdivision() const
Creates the parameters for this operation. If the concrete operation has specific parameters,...
const std::string & getName() const
Returns TRUE if the operation supports the subdivision of the geometries. FALSE otherwise.
const std::string & getDataHandlerName() const
Checks if the geometries must be snapped to each other before the operation is executed.
virtual ~AbstractOperationCapabilities()
Returns the number of inputs of the operation.
std::size_t m_numberOfInputs
The number of inputs of the operation.
virtual std::unique_ptr< AbstractParameters > createParameters() const
Abstract class used to define an operation.
AbstractOperationImpl * m_impl
Holds all the attributes of the class.
const std::string & getName() const
Gets the output geometry type.
virtual void initialize()
void abort()
Returns TRUE if the operation has been aborted. FALSE otherwise.
virtual bool initializeInput()
Initializes the operation output.
virtual te::vp::Feature * createOutputFeature(std::size_t outputIndex)
It creates the output feature based on the given output dataaccess index.
virtual const te::da::DataSetType * getDataSetType(std::size_t outputIndex)
Gets the dataSetType of the 'outputIndex-th' output.
virtual std::vector< te::vp::FeatureSet > execute(const std::vector< te::vp::FeatureSet > &vecInput)
It executes the operation.
bool isAborted() const
Get the capabilities of the operation. Basically, operation will have 2 inputs, 1 output,...
virtual std::vector< te::vp::FeatureSet > executeImpl(const std::vector< te::vp::FeatureSet > &vecInput)=0
virtual void addOutputColumns(te::da::DataSetType *outputDataSetType)
Initializes the operation input.
virtual te::da::DataSetType * createBasicOutputDataSetType(const std::string &dataSetName, int srid, te::gm::GeomType geometryType, const std::string &geometryColumnName) const
< Creates the basic dataSetType for the output containing all the columns that are required
void setParameters(AbstractParameters *params)
Gets the operation current parameters.
virtual std::unique_ptr< te::vp::AbstractOperationCapabilities > getCapabilities() const
Makes all the necessaries adaptations to the input dataAccess to avoid duplicate column names.
bool m_aborted
Becames true if the abort function is called. Concrete classes must check for this value from time to...
OperationReport * getReport() const
Gets the operation name.
virtual bool initializeOutput()
Function that effectivelly executes the operation. It must be implemented by the concrete classes.
virtual ~AbstractOperation()
Virtual destructor.
AbstractParameters * getParameters() const
Gets the operation report.
bool handleOutputPropertyNamesChanges(const te::da::DataSetType *baseOutputDataSetType, const te::da::DataSetType *actualOutputDataSetType)
AbstractOperation(const std::string &operationName)
Default constructor.
void setOutputGeometryType(const te::gm::GeomType newType)
Set the output geometry type.
te::gm::GeomType getOutputGeometryType() const
Abstract class used to define the input/ ouptut parameters for TerraAmazon Operations.
bool m_swapInput
This is very usefull for operations between 2 dataSets. If TRUE, the input will be swapped....
virtual void reportSpecificParams(OperationReport *report)
It reports each specific parameter used in the operation.
OperationResult getOperationResult() const
Sets the result of the operation.
const std::vector< te::da::DataAccess * > & getInputDataAccessVector() const
Returns the output dataAccess vector.
void reportParams(OperationReport *report)
It reports each parameter used in the operation.
OperationResult m_operationResult
Stores the result of the operation.
virtual bool isValid(std::string &errorMessage)
It checks the parameters for the operation.
bool getSwapInput() const
Gets the result of the operation.
AbstractParameters()
Default constructor.
std::size_t getMaxCoordinates() const
Sets the input to be swapped. This is very usefull for operations between 2 dataSets....
void setSwapInput(bool swap)
Returns TRUE if the input must be swaped. FALSE otherwise.
void setInputDataAccessVector(const std::vector< te::da::DataAccess * > &vecDataAccess)
Sets the output dataAccess vector.
bool m_snapGeometries
If TRUE, the geometries will be snapped before the operation is executed. Default is TRUE.
const std::vector< te::da::DataAccess * > & getOutputDataAccessVector() const
Sets the input dataAccess vector.
std::size_t m_maxCoordinates
If higher than 0, geometries will be subdivided until all the parts have less vertexes that this valu...
std::vector< te::da::DataAccess * > m_outputDataVector
Vector with output dataAccess.
std::vector< te::da::DataAccess * > m_inputDataVector
Vector with input dataAccess.
void addInputDataAccess(te::da::DataAccess *dataAccess)
Adds an input data access to the params.
void setMaxCoordinates(std::size_t maxCoordinates)
Returns the current state of the geometry subdivision.
virtual ~AbstractParameters()=default
Virtual destructor.
void addOutputDataAccess(te::da::DataAccess *dataAccess)
Adds an output data access to the params. Note that if the dataSet does not exist,...
void setOutputDataAccessVector(const std::vector< te::da::DataAccess * > &vecDataAccess)
Enables or disables geometry subdivision.
void setOperationResult(OperationResult result)
A feature is a composition of a geometry and its attributes.
Abstract factory used to create Operations.
virtual ~OperationFactory()
OperationFactory(const std::string &factoryKey)
Constructor.
Class used as a report logger for Operations.
GeomType
Each enumerated type is compatible with a Well-known Binary (WKB) type code.
#define TEVPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Proxy configuration file for TerraView (see terraview_config.h).