Gabriele Contini
2020-02-01 3214977e7a902b15d86c43a917c1438fdee56f95
src/library/locate/LocatorFactory.cpp
@@ -5,44 +5,37 @@
 *      Author: Gabriele Contini
 */
#include "build_properties.h"
#include "LocatorStrategy.hpp"
#include "LocatorFactory.hpp"
#include "ApplicationFolder.hpp"
//#include "EnvironmentVarData.hpp"
#include "EnvironmentVarData.hpp"
#include "EnvironmentVarLocation.hpp"
#include "ExternalDefinition.hpp"
namespace license {
namespace locate {
static std::vector<std::unique_ptr<LocatorStrategy>> extra_strategies;
using namespace std;
FUNCTION_RETURN LocatorFactory::getActiveStrategies(
      vector<unique_ptr<LocatorStrategy>> &strategies,
      const char *locationHint) {
#if(FIND_LICENSE_NEAR_MODULE)
   strategies.push_back(
         unique_ptr<LocatorStrategy>(
               (LocatorStrategy*) new ApplicationFolder()));
#endif
#if(FIND_LICENSE_WITH_ENV_VAR)
   strategies.push_back(
         unique_ptr<LocatorStrategy>(
               (LocatorStrategy*) new EnvironmentVarLocation()));
//   strategies.push_back(
//         unique_ptr<LocatorStrategy>(
//               (LocatorStrategy*) new EnvironmentVarData()));
#endif
bool LocatorFactory::find_license_near_moduleb = FIND_LICENSE_NEAR_MODULE;
bool LocatorFactory::find_license_with_env_varb = FIND_LICENSE_WITH_ENV_VAR;
FUNCTION_RETURN LocatorFactory::get_active_strategies(std::vector<std::unique_ptr<LocatorStrategy>> &strategies,
                                         const LicenseLocation *locationHint) {
   if (find_license_near_moduleb) {
      strategies.push_back(
         std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new ApplicationFolder())));
   }
   if (find_license_with_env_varb) {
      strategies.push_back(
         std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new EnvironmentVarLocation())));
      strategies.push_back(
         std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new EnvironmentVarData())));
   }
   if (locationHint != nullptr) {
      strategies.push_back(
            unique_ptr<LocatorStrategy>(
                  (LocatorStrategy*) new ExternalDefinition(locationHint)));
         std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new ExternalDefinition(locationHint))));
   }
   return strategies.size() > 0 ? FUNC_RET_OK : FUNC_RET_NOT_AVAIL;
}
}
}
}  // namespace locate
}  // namespace license