Isis 3 Programmer Reference
Strategy.h
1#ifndef Strategy_h
2#define Strategy_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10// Qt library
11#include <QList>
12#include <QPair>
13#include <QScopedPointer>
14#include <QSharedPointer>
15#include <QString>
16
17// SharedResource and ResourceList typedefs
18#include "Resource.h"
19#include "PvlObject.h"
20
21class QStringList;
22
23namespace Isis {
24
25 class GisGeometry;
26 class Progress;
27
28
85 class Strategy {
86
87 public:
88 Strategy();
89 Strategy(const PvlObject &definition, const ResourceList &globals);
90 virtual ~Strategy();
91
92 QString name() const;
93 QString type() const;
94 QString description() const;
95
96 // Not intended to be reimplemented but available for direct calls
97 int apply(ResourceList &resources);
98 int apply(SharedResource &resource);
99
100 // Inheriting strategies must reimplement either one or both of these
101 virtual int apply(ResourceList &resources, const ResourceList &globals);
102 virtual int apply(SharedResource &resource, const ResourceList &globals);
103
104 unsigned int totalProcessed() const;
105
106 protected:
108 typedef QSharedPointer<PvlObject> SharedPvlObject;
109
110 // For default constructions
111 Strategy(const QString &name, const QString &type);
112
113 void setName(const QString &name);
114 void setType(const QString &type);
115
118 const ResourceList &globals) const;
119 const PvlObject &getDefinition() const;
121
122
123 void setApplyToDiscarded();
124 bool isApplyToDiscarded() const;
125 void setDoNotApplyToDiscarded(); // default
126
127 int applyToResources(ResourceList &resources, const ResourceList &globals);
128 unsigned int processed();
129 void resetProcessed();
130
131 int countActive(const ResourceList &resources) const;
132 int countDiscarded(const ResourceList &resources) const;
134 const QString &name) const;
135
136 QString findReplacement(const QString &target, const ResourceList &globals,
137 const int &index = 0,
138 const QString &defValue = "") const;
139 QStringList qualifiers(const QString &keyspec,
140 const QString &delimiter = "::") const;
141 QString scanAndReplace(const QString &input, const QString &target,
142 const QString &replacement) const;
143 QString translateKeywordArgs(const QString &value,
144 const ResourceList &globals,
145 const QString &defValue = "") const;
146 QString processArgs(const QString &value, const QStringList &argKeys,
147 const ResourceList &globals,
148 const QString &defValue = "") const;
149
150 void propagateKeys(SharedResource &source, SharedResource &target) const;
152 const QPair<QString, QString> &keySuffix = qMakePair(QString("A"),QString("B"))) const;
153 bool importGeometry(SharedResource &resource,
154 const ResourceList &globals) const;
155
156 ResourceList activeList(ResourceList &resources) const;
157 void activateList(ResourceList &resources) const;
158 void deactivateList(ResourceList &resources) const;
159 ResourceList copyList(const ResourceList &resources) const;
160 ResourceList cloneList(const ResourceList &resources,
161 const bool &withAssets = false) const;
162
164 const ResourceList &globals);
165 bool isDebug() const;
166
167 bool doShowProgress() const;
168 bool initProgress(const int &nsteps = 0, const QString &text = "");
169
170 static void queryCallback(void *item, void *userdata);
171
172 QStringList getObjectList(const PvlObject &object) const;
173
174 template <class STRATEGYLIST, class STRATEGYFACTORY>
175 STRATEGYLIST LoadMinerStrategies(const QString &minerName,
176 const ResourceList &globals) const {
177 STRATEGYFACTORY *factory = STRATEGYFACTORY::instance();
178
179 STRATEGYLIST miner;
180 QString config = translateKeywordArgs(minerName+"ConfigFile", globals);
181 if ( !config.isEmpty() ) {
182 miner = factory->buildRun(config, globals);
183 }
184 else if ( getDefinition().hasObject(minerName+"Miner") ) {
185 miner = factory->buildRun(getDefinition().findObject(minerName+"Miner"),
186 globals);
187 }
188
189 return (miner);
190 }
191
192 private:
204 QString m_name;
208 QString m_type;
212 unsigned int m_total;
219 bool m_debug;
222 QScopedPointer<Progress> m_progress;
223
224 };
225
227 typedef QSharedPointer<Strategy> SharedStrategy;
228
230 typedef QList<SharedStrategy> StrategyList;
231
232} // Namespace Isis
233
234Q_DECLARE_METATYPE(Isis::SharedStrategy);
235
236#endif
237
Encapsulation class provides support for GEOS-C API.
Definition GisGeometry.h:50
Provides a flat map of PvlKeywords.
Definition PvlFlatMap.h:218
Contains Pvl Groups and Pvl Objects.
Definition PvlObject.h:61
Strategy - Supports algorithm development.
Definition Strategy.h:85
static void queryCallback(void *item, void *userdata)
Important GEOS query callback for class and overlap geometry.
QString type() const
Accessor method to get the type of strategy.
Definition Strategy.cpp:111
int apply(ResourceList &resources)
Apply algorithm to resource list.
Definition Strategy.cpp:225
QScopedPointer< Progress > m_progress
Progress percentage monitor.
Definition Strategy.h:222
unsigned int totalProcessed() const
Accessor for the total number of resources processed.
Definition Strategy.cpp:294
QString scanAndReplace(const QString &input, const QString &target, const QString &replacement) const
Performs a case insensitive scan of the input string for a substring matching the target string and r...
Definition Strategy.cpp:496
void propagateKeys(SharedResource &source, SharedResource &target) const
Adds the PVL definition keywords from the source to the target.
Definition Strategy.cpp:593
QString processArgs(const QString &value, const QStringList &argKeys, const ResourceList &globals, const QString &defValue="") const
Processes the given string value using the given argument list, resource and default resource.
Definition Strategy.cpp:570
int countActive(const ResourceList &resources) const
Counts the number of active (i.e.
Definition Strategy.cpp:392
virtual ~Strategy()
Destroys the Strategy object.
Definition Strategy.cpp:92
Strategy()
Constructs default Strategy object of name "Strategy" and type "Counter".
Definition Strategy.cpp:33
void setApplyToDiscarded()
Sets Resource as discarded.
Definition Strategy.cpp:303
SharedResource composite(SharedResource &resourceA, SharedResource &resourceB, const QPair< QString, QString > &keySuffix=qMakePair(QString("A"), QString("B"))) const
Create a composite Resource from a pair by merging keywords.
Definition Strategy.cpp:633
int applyToIntersectedGeometry(ResourceList &resources, GisGeometry &geom, const ResourceList &globals)
Identify and apply Strategy to Resources that intersect a geometry.
Definition Strategy.cpp:929
void deactivateList(ResourceList &resources) const
Deactivate all resources contained in the resource list.
Definition Strategy.cpp:827
PvlFlatMap getDefinitionMap() const
Returns the keyword definitions found in the Strategy object.
Definition Strategy.cpp:185
int countDiscarded(const ResourceList &resources) const
Counts the number of non-active (i.e.
Definition Strategy.cpp:406
QString name() const
Accessor method to get the name of the strategy.
Definition Strategy.cpp:101
bool importGeometry(SharedResource &resource, const ResourceList &globals) const
Imports a geometry from the given resource.
Definition Strategy.cpp:704
QSharedPointer< PvlObject > SharedPvlObject
Definition for a SharedPvlObject, a shared pointer to a PvlObject.
Definition Strategy.h:108
ResourceList m_globals
A shared pointer to the global Resource of keywords.
Definition Strategy.h:193
ResourceList getGlobalDefaults() const
Accessor method to get the global defaults.
Definition Strategy.cpp:144
QString m_name
A string containing the name of the strategy.
Definition Strategy.h:204
QString findReplacement(const QString &target, const ResourceList &globals, const int &index=0, const QString &defValue="") const
Find keyword replacement value in globals list.
Definition Strategy.cpp:450
QString description() const
Return description for the strategy.
Definition Strategy.cpp:201
ResourceList assetResourceList(const SharedResource &resource, const QString &name) const
Searches the given resource for an asset with the given name and converts it to a ResourceList,...
Definition Strategy.cpp:424
unsigned int processed()
Increments the total number of resources processed and returns the incremented value.
Definition Strategy.cpp:364
QString m_type
A string containing the type of strategy.
Definition Strategy.h:208
ResourceList copyList(const ResourceList &resources) const
Make a copy of the resource list that is independently managed.
Definition Strategy.cpp:854
int applyToResources(ResourceList &resources, const ResourceList &globals)
Applies the strategy algorithms to the resources in the given list.
Definition Strategy.cpp:337
QString translateKeywordArgs(const QString &value, const ResourceList &globals, const QString &defValue="") const
Translates the arguments of the PVL keyword in the PVL definition object.
Definition Strategy.cpp:522
void setName(const QString &name)
Allow derived strategies to reset name (mostly for default constructors)
Definition Strategy.cpp:121
ResourceList getGlobals(SharedResource &myGlobals, const ResourceList &globals) const
Definition Strategy.cpp:158
ResourceList activeList(ResourceList &resources) const
Get list of all active Resources only - no discarded Resources.
Definition Strategy.cpp:800
QStringList qualifiers(const QString &keyspec, const QString &delimiter="::") const
Splits the given keyspec string into a list using the given delimiter string.
Definition Strategy.cpp:477
void activateList(ResourceList &resources) const
Activate all resources contained in the resource list.
Definition Strategy.cpp:815
void setDoNotApplyToDiscarded()
Disables the general application of Strategy algorithm for all Resources regardless of state.
Definition Strategy.cpp:324
bool doShowProgress() const
ResourceList cloneList(const ResourceList &resources, const bool &withAssets=false) const
Create a clone of a Resource list.
Definition Strategy.cpp:882
bool isApplyToDiscarded() const
Accessor for the apply discarded variable.
Definition Strategy.cpp:315
bool isDebug() const
An accessor method so that inherited classes can determine whether to print debug messages for this o...
void setType(const QString &type)
Allow derived strategies to reset type (mostly for default constructors)
Definition Strategy.cpp:133
bool initProgress(const int &nsteps=0, const QString &text="")
Initializes strategy progress monitor if requested by user.
unsigned int m_total
The total number of resources processed.
Definition Strategy.h:212
SharedPvlObject m_definition
A shared pointer to the PvlObject that defines the strategy.
Definition Strategy.h:199
bool m_applyDiscarded
Indicates whether to apply strategy to discarded resources.
Definition Strategy.h:216
bool m_debug
Indicates whether to print debug messages.
Definition Strategy.h:219
void resetProcessed()
Resets the total number of processed resources to zero.
Definition Strategy.cpp:377
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
QSharedPointer< Strategy > SharedStrategy
Definition for a SharedStrategy, a shared pointer to a Strategy.
Definition Strategy.h:227
QList< SharedStrategy > StrategyList
Definition for a StrategyList, a list of SharedStrategy types.
Definition Strategy.h:230