26#ifndef __TERRALIB_VP_INTERNAL_ABSCTRACTOPERATION_H 
   27#define __TERRALIB_VP_INTERNAL_ABSCTRACTOPERATION_H 
   31#include "../common/AbstractFactory.h" 
   32#include "../geometry/Enums.h" 
   49    struct AbstractOperationImpl;
 
   52    class OperationReport;
 
   83      virtual bool isValid(std::string& errorMessage);
 
  163      AbstractOperationCapabilities(
const std::string& operationName, std::size_t numberOfInputs, std::size_t numberOfOutputs, 
const std::string& dataHandlerName, 
bool snapGeometries, 
bool allowCoordinateSubdivision);
 
  232      virtual std::vector<te::vp::FeatureSet> 
execute(
const std::vector<te::vp::FeatureSet>& vecInput);
 
  282      virtual std::unique_ptr<te::vp::AbstractOperationCapabilities> 
getCapabilities() 
const;
 
  305      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()
 
std::recursive_mutex m_mutex
 
void abort()
Aborts the execution of the operation.
 
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
Returns TRUE if the operation has been aborted. FALSE otherwise.
 
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).