File failed to load: https://isis.astrogeology.usgs.gov/6.0.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Programmer Reference
PipelineApplication.h
1 #ifndef PipelineApplication_h
2 #define PipelineApplication_h
3 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 
10 #include <vector>
11 
12 #include <QString>
13 
14 #include "IException.h"
15 
16 namespace Isis {
17  class Pipeline;
18  class PipelineParameter;
19 
47  public:
48  PipelineApplication(QString appName, Pipeline *pipe);
49  PipelineApplication(QString appName, PipelineApplication *previous);
50 
53 
61  };
62 
70  // Implies branches will be merged if this is set as an input parameter.
73  // Implies branches will NOT be merged if this is set as an input parameter.
75  };
76 
78  const QString &Name() const {
79  return p_name;
80  }
82  const std::vector<QString> &ParamString() const {
83  return p_paramString;
84  }
86  const std::vector<QString> &InputBranches() const {
87  return p_inBranches;
88  }
90  const std::vector<QString> &OutputBranches() const {
91  if(!Enabled() && Previous()) {
92  return Previous()->OutputBranches();
93  }
94  else if(Enabled()) {
95  return p_outBranches;
96  }
97  else {
98  return p_inBranches;
99  }
100  }
101 
103  void Enable() {
104  p_enabled = true;
105  };
106 
108  void Disable() {
109  p_enabled = false;
110  };
111 
113  const bool &Enabled() const {
114  return p_enabled;
115  }
116 
117  void SetInputParameter(const QString &inputParamName, bool supportsVirtualBands);
118  void SetInputParameter(const QString &inputParamName, CustomParameterValue value, bool supportsVirtualBands);
119 
120  void SetOutputParameter(const QString &outputParamName, const QString &outNameModifier, const QString &outFileExtension = "cub");
121  void SetOutputParameter(const QString &branch, const QString &outputParamName,
122  const QString &outNameModifier, const QString &outFileExtension);
123 
124  void AddBranch(const QString &modString, NameModifierType type);
125 
126  void AddParameter(const QString &inputParamName, const QString &appParamName);
127  void AddParameter(const QString &branch, const QString &inputParamName, const QString &appParamName);
128 
129  void AddConstParameter(const QString &appParamName, const QString &appParamValue);
130  void AddConstParameter(const QString &branch, const QString &appParamName, const QString &appParamValue);
131 
132  void AddParameter(const QString &appParamName, CustomParameterValue value);
133  void AddParameter(const QString &branch, const QString &appParamName, CustomParameterValue value);
134 
136  QString OutputNameModifier() {
137  return (!p_outputMod.isEmpty() || !Previous()) ? p_outputMod : Previous()->OutputNameModifier();
138  }
140  QString OutputExtension() {
141  return (!p_outputExtension.isEmpty() || !Previous()) ? p_outputExtension : Previous()->OutputExtension();
142  }
144  std::vector<QString> &GetOutputs();
145 
146  std::vector<QString> TemporaryFiles();
147 
154  p_next = next;
155  }
156 
157 
164  p_previous = prev;
165  }
166 
167  void BuildParamString();
168 
171  if(p_next == NULL) return p_next;
172  if(!p_next->Enabled()) return p_next->Next();
173  return p_next;
174  }
175 
178  if(p_previous == NULL) return p_previous;
179  if(!p_previous->Enabled()) return p_previous->Previous();
180  return p_previous;
181  }
182 
185  if(p_previous == NULL) return p_previous;
186  if(!p_previous->Enabled()) return p_previous->Previous();
187  if(p_previous->p_output.empty()) return p_previous->Previous();
188  return p_previous;
189  }
190 
191  bool SupportsVirtualBands();
192  void SetVirtualBands(std::vector<QString> bands);
193 
202  void EnableBranch(QString branch, bool flag) {
203  for(int i=0; i<(int)p_inBranches.size(); i++) {
204  if (p_inBranches[i].contains(branch))
205  p_enableBranch[i] = flag;
206  }
207  }
208 
218  bool BranchEnabled(int branch){
219  if (branch >= 0 && branch >= (int)p_enableBranch.size())
220  return false;
221  return p_enableBranch[branch] ;
222  }
223 
231  void SetContinue(bool pbFlag){
232  p_continue = pbFlag;
233  };
234 
242  bool Continue(void) {
243  return p_continue;
244  };
245 
246  private:
251  return p_pipeline;
252  }
253 
255  bool Branches() {
256  if(p_inBranches.size() >= p_outBranches.size()) return false;
257  return true;
258  }
259 
261  bool Merges() {
262  if(p_inBranches.size() == 1) return false;
263  if(p_outBranches.size() == 1) return true;
264  return false;
265  }
266 
273  bool StringStartsWith(QString from, QString compare) {
274  if(compare.size() > from.size()) return false;
275 
276  for(int index = 0; index < compare.size(); index++)
277  if(from[index] != compare[index]) return false;
278 
279  return true;
280  }
281 
282  QString CalculateInputFile(int branch);
283  QString CalculateOutputFile(int branch);
284  QString GetRealLastOutput(bool skipOne = false);
286 
287  int FindBranch(QString name, bool input = true);
288 
290  bool p_enabled;
292  QString p_name;
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;
299 
300  std::vector<PipelineParameter> p_output;
301  QString p_outputMod;
303  std::vector<QString> p_virtualBands;
304 
305  std::vector<PipelineParameter> p_input;
306  std::vector<PipelineParameter> p_params;
307 
311  };
312 
324  public:
331  PipelineParameter(QString paramName) {
332  p_paramName = paramName;
334  p_branch = -1;
335  }
336 
337 
345  PipelineParameter(QString paramName, QString value) {
346  p_paramName = paramName;
347  p_paramValue = value;
349  p_branch = -1;
350  }
351 
352 
360  PipelineParameter(int branch, QString paramName) {
361  p_branch = branch;
362  p_paramName = paramName;
364  }
365 
366 
375  PipelineParameter(int branch, QString paramName, QString paramValue) {
376  p_branch = branch;
377  p_paramValue = paramValue;
378  p_paramName = paramName;
380  }
381 
382 
391  p_paramName = paramName;
392  p_special = special;
393  p_branch = -1;
394  }
395 
396 
405  PipelineParameter(int branch, QString paramName, PipelineApplication::CustomParameterValue special) {
406  p_paramName = paramName;
407  p_special = special;
408  p_branch = branch;
409  }
410 
411 
419  bool AppliesToBranch(int branch) {
420  return (p_branch == -1 || p_branch == branch);
421  }
422 
424  QString Name() {
425  return p_paramName;
426  }
428  QString Value() {
429  return p_paramValue;
430  }
432  bool IsSpecial() {
434  };
437  return p_special;
438  }
441  return p_branch == -1;
442  }
443 
444  private:
445  int p_branch;
446  QString p_paramName;
447  QString p_paramValue;
449  };
450 };
451 #endif
Isis::PipelineApplication::p_params
std::vector< PipelineParameter > p_params
Regular parameters.
Definition: PipelineApplication.h:306
Isis::PipelineApplication::FindBranch
int FindBranch(QString name, bool input=true)
The method, given a string, finds the index of a branch.
Definition: PipelineApplication.cpp:759
Isis::PipelineApplication::SetNext
void SetNext(PipelineApplication *next)
Link to the next application in the pipeline.
Definition: PipelineApplication.h:153
Isis::PipelineApplication::p_virtualBands
std::vector< QString > p_virtualBands
Virtual bands string to add (empty if none)
Definition: PipelineApplication.h:303
Isis::PipelineApplication
This class represents one application in the pipeline.
Definition: PipelineApplication.h:46
Isis::PipelineParameter::AffectsAllBranches
bool AffectsAllBranches()
True if branch-independant.
Definition: PipelineApplication.h:440
Isis::PipelineApplication::ConstantStrings
@ ConstantStrings
Known strings.
Definition: PipelineApplication.h:60
Isis::PipelineApplication::p_pipeline
Pipeline * p_pipeline
The pipeline.
Definition: PipelineApplication.h:310
Isis::PipelineApplication::Branches
bool Branches()
Return true is this application does branch (one input branch, multiple output)
Definition: PipelineApplication.h:255
Isis::PipelineApplication::Merges
bool Merges()
Returns true if this application does merge branches (multiple input branches, one output)
Definition: PipelineApplication.h:261
Isis::PipelineParameter::AppliesToBranch
bool AppliesToBranch(int branch)
Returns whether or not the specified branch is affected.
Definition: PipelineApplication.h:419
Isis::PipelineApplication::Continue
bool Continue(void)
Get the continue flag status.
Definition: PipelineApplication.h:242
Isis::PipelineParameter::Name
QString Name()
Name of the parameter.
Definition: PipelineApplication.h:424
Isis::PipelineApplication::p_outBranches
std::vector< QString > p_outBranches
Output branches.
Definition: PipelineApplication.h:297
Isis::PipelineApplication::CustomParameterValue
CustomParameterValue
This is used to set custom values that must be calculated on the fly.
Definition: PipelineApplication.h:66
Isis::PipelineApplication::LastApplicationWithOutput
bool LastApplicationWithOutput()
Returns true if this is the last application with output.
Definition: PipelineApplication.cpp:694
Isis::PipelineApplication::CalculateOutputFile
QString CalculateOutputFile(int branch)
This method calculates the output file for the specified branch.
Definition: PipelineApplication.cpp:590
Isis::PipelineApplication::SetContinue
void SetContinue(bool pbFlag)
Set the continue flag status.
Definition: PipelineApplication.h:231
Isis::PipelineApplication::Previous
PipelineApplication * Previous() const
This returns the last enabled pipeline application or null.
Definition: PipelineApplication.h:177
Isis::PipelineApplication::p_outputMod
QString p_outputMod
Output file name modifier.
Definition: PipelineApplication.h:301
Isis::PipelineApplication::GetPipeline
Pipeline * GetPipeline()
Returns the pipeline.
Definition: PipelineApplication.h:250
Isis::PipelineApplication::AddConstParameter
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
Isis::PipelineApplication::PreviousOutputer
PipelineApplication * PreviousOutputer() const
This returns the previous enabled pipeline application that makes output or null.
Definition: PipelineApplication.h:184
Isis::PipelineApplication::p_next
PipelineApplication * p_next
Next pipeline application.
Definition: PipelineApplication.h:309
Isis::PipelineParameter::p_paramName
QString p_paramName
Parameter name.
Definition: PipelineApplication.h:446
Isis::PipelineApplication::LastAppOutputList
@ LastAppOutputList
A list of files from the last run application's output.
Definition: PipelineApplication.h:71
Isis::PipelineApplication::GetRealLastOutput
QString GetRealLastOutput(bool skipOne=false)
This method is used to calculate the value for CustomParameterValue::LastOutput.
Definition: PipelineApplication.cpp:825
Isis::PipelineApplication::TemporaryFiles
std::vector< QString > TemporaryFiles()
This method returns a list of the temporary files generated by this program.
Definition: PipelineApplication.cpp:799
Isis::PipelineApplication::LastAppOutputListNoMerge
@ LastAppOutputListNoMerge
A list of files from the last run application's output.
Definition: PipelineApplication.h:74
Isis::PipelineApplication::OutputExtension
QString OutputExtension()
This returns this application's output file name's extension.
Definition: PipelineApplication.h:140
Isis::PipelineParameter::Value
QString Value()
Non-special value of the parameter.
Definition: PipelineApplication.h:428
Isis::PipelineParameter::PipelineParameter
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
Isis::PipelineApplication::p_supportsVirtualBands
bool p_supportsVirtualBands
This application supports virtual bands?
Definition: PipelineApplication.h:291
Isis::PipelineParameter::PipelineParameter
PipelineParameter(QString paramName, PipelineApplication::CustomParameterValue special)
Construct the parameter with a parameter name and special value; affects all branches.
Definition: PipelineApplication.h:390
Isis::PipelineApplication::SetOutputParameter
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
Isis::PipelineApplication::BuildParamString
void BuildParamString()
This method calculates the inputs, outputs and necessary calls to this program for the pipeline.
Definition: PipelineApplication.cpp:308
Isis::PipelineParameter
This class represents a parameter of some type for the PipelineApplication.
Definition: PipelineApplication.h:323
Isis::PipelineApplication::SetPrevious
void SetPrevious(PipelineApplication *prev)
Link to the previous application in the pipeline.
Definition: PipelineApplication.h:163
Isis::PipelineParameter::IsSpecial
bool IsSpecial()
True if the parameter value is special.
Definition: PipelineApplication.h:432
Isis::PipelineApplication::PipelineApplication
PipelineApplication(QString appName, Pipeline *pipe)
Constructs the first pipeline application.
Definition: PipelineApplication.cpp:25
Isis::PipelineApplication::p_output
std::vector< PipelineParameter > p_output
Output parameters.
Definition: PipelineApplication.h:300
Isis::PipelineApplication::AddBranch
void AddBranch(const QString &modString, NameModifierType type)
This method adds branch to this program.
Definition: PipelineApplication.cpp:163
Isis::PipelineApplication::BranchEnabled
bool BranchEnabled(int branch)
Check whether a branch is enabled given branch index.
Definition: PipelineApplication.h:218
Isis::PipelineApplication::p_continue
bool p_continue
Continue the pipeline execution even if an error is encountered by this app.
Definition: PipelineApplication.h:289
Isis::PipelineApplication::Name
const QString & Name() const
Get the name of this pipeline application.
Definition: PipelineApplication.h:78
Isis::PipelineApplication::OutputBranches
const std::vector< QString > & OutputBranches() const
Get the branches this program has as output.
Definition: PipelineApplication.h:90
Isis::PipelineApplication::p_enabled
bool p_enabled
This application enabled?
Definition: PipelineApplication.h:290
Isis::PipelineApplication::p_input
std::vector< PipelineParameter > p_input
Input parameters.
Definition: PipelineApplication.h:305
Isis::PipelineApplication::p_paramString
std::vector< QString > p_paramString
Built parameter strings.
Definition: PipelineApplication.h:295
Isis::PipelineApplication::InputBranches
const std::vector< QString > & InputBranches() const
Get the branches this program expects as input.
Definition: PipelineApplication.h:86
Isis::PipelineApplication::SupportsVirtualBands
bool SupportsVirtualBands()
Returns true if virtual bands are supported.
Definition: PipelineApplication.cpp:844
Isis::PipelineApplication::p_outputExtension
QString p_outputExtension
Output file name extension.
Definition: PipelineApplication.h:302
Isis::PipelineApplication::p_tempFiles
std::vector< QString > p_tempFiles
Actial temporary files.
Definition: PipelineApplication.h:294
Isis::PipelineApplication::p_name
QString p_name
Name of this application.
Definition: PipelineApplication.h:292
Isis::PipelineApplication::GetInputParameter
PipelineParameter & GetInputParameter(int branch)
This gets the input parameter for the specified branch.
Definition: PipelineApplication.cpp:733
Isis::PipelineApplication::p_previous
PipelineApplication * p_previous
Previous pipeline application.
Definition: PipelineApplication.h:308
Isis::PipelineApplication::~PipelineApplication
~PipelineApplication()
This is the destructor.
Definition: PipelineApplication.h:52
Isis::PipelineApplication::Next
PipelineApplication * Next() const
This returns the next enabled pipeline application or null.
Definition: PipelineApplication.h:170
Isis::PipelineApplication::p_enableBranch
std::vector< bool > p_enableBranch
Branch enabled/disabled.
Definition: PipelineApplication.h:298
Isis::PipelineParameter::PipelineParameter
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
Isis::PipelineApplication::OutputNameModifier
QString OutputNameModifier()
This returns this application's output name modifier.
Definition: PipelineApplication.h:136
Isis::PipelineApplication::Disable
void Disable()
This method disables this program, causing it to be ignored.
Definition: PipelineApplication.h:108
Isis::PipelineApplication::Enabled
const bool & Enabled() const
Returns true if this program will be run.
Definition: PipelineApplication.h:113
Isis::PipelineApplication::SetVirtualBands
void SetVirtualBands(std::vector< QString > bands)
Set the virtual bands that this application is to apply.
Definition: PipelineApplication.cpp:856
Isis::PipelineParameter::PipelineParameter
PipelineParameter(QString paramName)
Construct the parameter with only a parameter name; affects all branches and is not a special value.
Definition: PipelineApplication.h:331
Isis::PipelineApplication::AddParameter
void AddParameter(const QString &inputParamName, const QString &appParamName)
This method adds knowledge of a parameter to the application.
Definition: PipelineApplication.cpp:210
Isis::Pipeline
This class helps to call other Isis Applications in a Pipeline.
Definition: Pipeline.h:151
Isis::PipelineParameter::PipelineParameter
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
Isis::PipelineApplication::FutureOutputFileCreated
bool FutureOutputFileCreated()
Returns true if a future application creates output.
Definition: PipelineApplication.cpp:713
Isis::PipelineApplication::EnableBranch
void EnableBranch(QString branch, bool flag)
Enable/Disable Branch given the branch name.
Definition: PipelineApplication.h:202
Isis::PipelineApplication::p_outputs
std::vector< QString > p_outputs
Actual output files.
Definition: PipelineApplication.h:293
Isis::PipelineApplication::ParamString
const std::vector< QString > & ParamString() const
Get the parameters for running this program; one element in the vector per run.
Definition: PipelineApplication.h:82
Isis::PipelineParameter::p_special
PipelineApplication::CustomParameterValue p_special
Parameter special value.
Definition: PipelineApplication.h:448
Isis::PipelineParameter::Special
PipelineApplication::CustomParameterValue Special()
Special value of the parameter.
Definition: PipelineApplication.h:436
Isis::PipelineParameter::PipelineParameter
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
Isis::PipelineParameter::p_branch
int p_branch
Branch this affects.
Definition: PipelineApplication.h:445
Isis::PipelineApplication::SetInputParameter
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
Isis::PipelineApplication::p_inBranches
std::vector< QString > p_inBranches
Input branches.
Definition: PipelineApplication.h:296
Isis::PipelineApplication::LastOutput
@ LastOutput
The very last output file. Do not use this for input parameters if it's not necessary,...
Definition: PipelineApplication.h:68
Isis::PipelineParameter::p_paramValue
QString p_paramValue
Parameter non-special value.
Definition: PipelineApplication.h:447
Isis::PipelineApplication::NameModifierType
NameModifierType
This is used for branches.
Definition: PipelineApplication.h:58
Isis::PipelineApplication::GetOutputs
std::vector< QString > & GetOutputs()
This returns this application's output files. Only valid after BuildParamString is called.
Definition: PipelineApplication.cpp:861
Isis::PipelineApplication::StringStartsWith
bool StringStartsWith(QString from, QString compare)
String comparison helper, returns true if from starts with compare bool.
Definition: PipelineApplication.h:273
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::PipelineApplication::CalculateInputFile
QString CalculateInputFile(int branch)
This method calculates the input file for the specified branch.
Definition: PipelineApplication.cpp:519
Isis::PipelineApplication::Enable
void Enable()
This method enables this program to be run.
Definition: PipelineApplication.h:103

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/13/2023 15:16:59