1#ifndef PipelineApplication_h
2#define PipelineApplication_h
18 class PipelineParameter;
78 const QString &
Name()
const {
117 void SetInputParameter(
const QString &inputParamName,
bool supportsVirtualBands);
118 void SetInputParameter(
const QString &inputParamName, CustomParameterValue value,
bool supportsVirtualBands);
120 void SetOutputParameter(
const QString &outputParamName,
const QString &outNameModifier,
const QString &outFileExtension =
"cub");
122 const QString &outNameModifier,
const QString &outFileExtension);
126 void AddParameter(
const QString &inputParamName,
const QString &appParamName);
127 void AddParameter(
const QString &branch,
const QString &inputParamName,
const QString &appParamName);
129 void AddConstParameter(
const QString &appParamName,
const QString &appParamValue);
130 void AddConstParameter(
const QString &branch,
const QString &appParamName,
const QString &appParamValue);
132 void AddParameter(
const QString &appParamName, CustomParameterValue value);
133 void AddParameter(
const QString &branch,
const QString &appParamName, CustomParameterValue value);
171 if(p_next == NULL)
return p_next;
178 if(p_previous == NULL)
return p_previous;
185 if(p_previous == NULL)
return p_previous;
187 if(p_previous->p_output.empty())
return p_previous->
Previous();
203 for(
int i=0; i<(int)p_inBranches.size(); i++) {
204 if (p_inBranches[i].contains(branch))
205 p_enableBranch[i] = flag;
219 if (branch >= 0 && branch >= (
int)p_enableBranch.size())
221 return p_enableBranch[branch] ;
247 bool FutureOutputFileCreated();
248 bool LastApplicationWithOutput();
256 if(p_inBranches.size() >= p_outBranches.size())
return false;
262 if(p_inBranches.size() == 1)
return false;
263 if(p_outBranches.size() == 1)
return true;
273 bool StringStartsWith(QString from, QString compare) {
274 if(compare.size() > from.size())
return false;
276 for(
int index = 0; index < compare.size(); index++)
277 if(from[index] != compare[index])
return false;
282 QString CalculateInputFile(
int branch);
283 QString CalculateOutputFile(
int branch);
284 QString GetRealLastOutput(
bool skipOne =
false);
285 PipelineParameter &GetInputParameter(
int branch);
287 int FindBranch(QString name,
bool input =
true);
291 bool p_supportsVirtualBands;
293 std::vector<QString> p_outputs;
294 std::vector<QString> p_tempFiles;
295 std::vector<QString> p_paramString;
296 std::vector<QString> p_inBranches;
297 std::vector<QString> p_outBranches;
298 std::vector<bool> p_enableBranch;
300 std::vector<PipelineParameter> p_output;
302 QString p_outputExtension;
303 std::vector<QString> p_virtualBands;
305 std::vector<PipelineParameter> p_input;
306 std::vector<PipelineParameter> p_params;
310 Pipeline *p_pipeline;
332 p_paramName = paramName;
346 p_paramName = paramName;
347 p_paramValue = value;
362 p_paramName = paramName;
377 p_paramValue = paramValue;
378 p_paramName = paramName;
391 p_paramName = paramName;
406 p_paramName = paramName;
420 return (p_branch == -1 || p_branch == branch);
441 return p_branch == -1;
447 QString p_paramValue;
This class represents one application in the pipeline.
Definition PipelineApplication.h:46
void SetVirtualBands(std::vector< QString > bands)
Set the virtual bands that this application is to apply.
Definition PipelineApplication.cpp:856
const QString & Name() const
Get the name of this pipeline application.
Definition PipelineApplication.h:78
NameModifierType
This is used for branches.
Definition PipelineApplication.h:58
@ ConstantStrings
Known strings.
Definition PipelineApplication.h:60
PipelineApplication * Previous() const
This returns the last enabled pipeline application or null.
Definition PipelineApplication.h:177
bool SupportsVirtualBands()
Returns true if virtual bands are supported.
Definition PipelineApplication.cpp:844
~PipelineApplication()
This is the destructor.
Definition PipelineApplication.h:52
const std::vector< QString > & ParamString() const
Get the parameters for running this program; one element in the vector per run.
Definition PipelineApplication.h:82
bool Continue(void)
Get the continue flag status.
Definition PipelineApplication.h:242
bool BranchEnabled(int branch)
Check whether a branch is enabled given branch index.
Definition PipelineApplication.h:218
PipelineApplication * Next() const
This returns the next enabled pipeline application or null.
Definition PipelineApplication.h:170
const std::vector< QString > & InputBranches() const
Get the branches this program expects as input.
Definition PipelineApplication.h:86
void EnableBranch(QString branch, bool flag)
Enable/Disable Branch given the branch name.
Definition PipelineApplication.h:202
void AddParameter(const QString &inputParamName, const QString &appParamName)
This method adds knowledge of a parameter to the application.
Definition PipelineApplication.cpp:210
void BuildParamString()
This method calculates the inputs, outputs and necessary calls to this program for the pipeline.
Definition PipelineApplication.cpp:308
CustomParameterValue
This is used to set custom values that must be calculated on the fly.
Definition PipelineApplication.h:66
@ LastAppOutputListNoMerge
A list of files from the last run application's output.
Definition PipelineApplication.h:74
@ LastOutput
The very last output file. Do not use this for input parameters if it's not necessary,...
Definition PipelineApplication.h:68
@ LastAppOutputList
A list of files from the last run application's output.
Definition PipelineApplication.h:71
PipelineApplication(QString appName, Pipeline *pipe)
Constructs the first pipeline application.
Definition PipelineApplication.cpp:25
QString OutputExtension()
This returns this application's output file name's extension.
Definition PipelineApplication.h:140
const bool & Enabled() const
Returns true if this program will be run.
Definition PipelineApplication.h:113
void AddBranch(const QString &modString, NameModifierType type)
This method adds branch to this program.
Definition PipelineApplication.cpp:163
std::vector< QString > & GetOutputs()
This returns this application's output files. Only valid after BuildParamString is called.
Definition PipelineApplication.cpp:861
void Enable()
This method enables this program to be run.
Definition PipelineApplication.h:103
PipelineApplication * PreviousOutputer() const
This returns the previous enabled pipeline application that makes output or null.
Definition PipelineApplication.h:184
void Disable()
This method disables this program, causing it to be ignored.
Definition PipelineApplication.h:108
void SetContinue(bool pbFlag)
Set the continue flag status.
Definition PipelineApplication.h:231
void AddConstParameter(const QString &appParamName, const QString &appParamValue)
This method adds a parameter to this application with a known value (does not get it from the user in...
Definition PipelineApplication.cpp:244
QString OutputNameModifier()
This returns this application's output name modifier.
Definition PipelineApplication.h:136
void SetOutputParameter(const QString &outputParamName, const QString &outNameModifier, const QString &outFileExtension="cub")
Set the output parameter for this application and it's naming convention.
Definition PipelineApplication.cpp:137
std::vector< QString > TemporaryFiles()
This method returns a list of the temporary files generated by this program.
Definition PipelineApplication.cpp:799
void SetPrevious(PipelineApplication *prev)
Link to the previous application in the pipeline.
Definition PipelineApplication.h:163
void SetNext(PipelineApplication *next)
Link to the next application in the pipeline.
Definition PipelineApplication.h:153
void SetInputParameter(const QString &inputParamName, bool supportsVirtualBands)
Set the input parameter for this application and whether or not this application supports the virtual...
Definition PipelineApplication.cpp:79
const std::vector< QString > & OutputBranches() const
Get the branches this program has as output.
Definition PipelineApplication.h:90
This class helps to call other Isis Applications in a Pipeline.
Definition Pipeline.h:151
This class represents a parameter of some type for the PipelineApplication.
Definition PipelineApplication.h:323
PipelineParameter(int branch, QString paramName, PipelineApplication::CustomParameterValue special)
Construct the parameter with a parameter name and special value; affects only the specified branch.
Definition PipelineApplication.h:405
PipelineParameter(QString paramName)
Construct the parameter with only a parameter name; affects all branches and is not a special value.
Definition PipelineApplication.h:331
PipelineParameter(int branch, QString paramName)
Construct the parameter with only a parameter name; affects only the specified branch and is not a sp...
Definition PipelineApplication.h:360
PipelineParameter(int branch, QString paramName, QString paramValue)
Construct the parameter with a parameter name and value; affects only the specified branch and is not...
Definition PipelineApplication.h:375
QString Value()
Non-special value of the parameter.
Definition PipelineApplication.h:428
PipelineParameter(QString paramName, QString value)
Construct the parameter with a parameter name and value; affects all branches and is not special.
Definition PipelineApplication.h:345
PipelineParameter(QString paramName, PipelineApplication::CustomParameterValue special)
Construct the parameter with a parameter name and special value; affects all branches.
Definition PipelineApplication.h:390
PipelineApplication::CustomParameterValue Special()
Special value of the parameter.
Definition PipelineApplication.h:436
bool IsSpecial()
True if the parameter value is special.
Definition PipelineApplication.h:432
bool AppliesToBranch(int branch)
Returns whether or not the specified branch is affected.
Definition PipelineApplication.h:419
QString Name()
Name of the parameter.
Definition PipelineApplication.h:424
bool AffectsAllBranches()
True if branch-independant.
Definition PipelineApplication.h:440
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16