// Path: planner/core/src/main/java/eu/seaclouds/platform/planner/core/application/decorators/SeaCloudsMonitoringInitializerPolicyDecorator.java
// public class SeaCloudsMonitoringInitializerPolicyDecorator implements ApplicationFacadeDecorator {
// 
//     static Logger log = LoggerFactory.getLogger(SeaCloudsMonitoringInitializerPolicyDecorator.class);
// 
//     public static final String SEACLOUDS_APPLICATION_CONFIGURATION_POLICY =
//             "configuration";
//     public static final String SEACLOUDS_MONITORING_POLICY =
//             "eu.seaclouds.policy.SeaCloudsMonitoringInitializationPolicies";
//     public static final String SEACLOUDS_DC_ENDPOINT = "seacloudsdc.endpoint";
//     public static final String TARGET_NODES = "targetEntities";
// 
//     private static final String TARGET_PROPERTY =  "language";
// 
//     private ApplicationFacade applicationFacade;
//     private DamGeneratorConfigBag configBag;
// 
//     @Override
//     public void apply(ApplicationFacade applicationFacade) {
//         this.applicationFacade = applicationFacade;
//         configBag = applicationFacade.getConfigBag();
// 
//         addSeaCloudsMonitoringGroup();
//     }
// 
//     private void addSeaCloudsMonitoringGroup() {
//         Map<String, Object> policyGroupValue = getPolicyGroupValues();
// 
//         applicationFacade.addGroup(
//                 DamGenerator.SEACLOUDS_MONITORING_INITIALIZATION,
//                 policyGroupValue);
//     }
// 
//     public Map<String, Object> getPolicyGroupValues() {
// 
//         Map<String, Object> seaCloudsPolicyConfiguration = MutableMap.of();
//         seaCloudsPolicyConfiguration.put(DamGenerator.TYPE, SEACLOUDS_MONITORING_POLICY);
//         seaCloudsPolicyConfiguration.put(SEACLOUDS_DC_ENDPOINT, configBag.getSeacloudsDcEndPoint());
//         seaCloudsPolicyConfiguration.put(TARGET_NODES,
//                 applicationFacade.filterNodeTemplatesByPropertyAndValues(TARGET_PROPERTY, getAllowedTargetValues()));
// 
//         Map<String, Object> seaCloudsPolicy = MutableMap.of();
//         seaCloudsPolicy.put(SEACLOUDS_APPLICATION_CONFIGURATION_POLICY, seaCloudsPolicyConfiguration);
// 
//         Map<String, Object> seaCloudsApplicationGroup = MutableMap.of();
//         seaCloudsApplicationGroup.put(DamGenerator.MEMBERS, ImmutableList.of());
//         seaCloudsApplicationGroup.put(DamGenerator.POLICIES, ImmutableList.of(seaCloudsPolicy));
// 
//         return seaCloudsApplicationGroup;
//     }
// 
//     private List<Object> getAllowedTargetValues(){
//         return ImmutableList.<Object>of("JAVA", "PHP");
//     }
// 
// 
// 
// 
// }


import eu.seaclouds.platform.planner.core.application.decorators.MissingPolicyTypesDecorator;
import eu.seaclouds.platform.planner.core.application.decorators.MonitoringInformationDecorator;
import eu.seaclouds.platform.planner.core.application.decorators.SeaCloudsManagementPolicyDecorator;
import eu.seaclouds.platform.planner.core.application.decorators.SeaCloudsMonitoringInitializerPolicyDecorator;
import eu.seaclouds.platform.planner.core.application.decorators.SlaInformationDecorator;
package eu.seaclouds.platform.planner.core.application;



public class ApplicationFacadeDecoratorApplicator {

    public void applyDecorators(ApplicationFacade applicationFacade) {
        new MonitoringInformationDecorator().apply(applicationFacade);
        new SlaInformationDecorator().apply(applicationFacade);
        new SeaCloudsManagementPolicyDecorator().apply(applicationFacade);
// Path: planner/core/src/main/java/eu/seaclouds/platform/planner/core/application/decorators/SeaCloudsMonitoringInitializerPolicyDecorator.java
// public class SeaCloudsMonitoringInitializerPolicyDecorator implements ApplicationFacadeDecorator {
// 
//     static Logger log = LoggerFactory.getLogger(SeaCloudsMonitoringInitializerPolicyDecorator.class);
// 
//     public static final String SEACLOUDS_APPLICATION_CONFIGURATION_POLICY =
//             "configuration";
//     public static final String SEACLOUDS_MONITORING_POLICY =
//             "eu.seaclouds.policy.SeaCloudsMonitoringInitializationPolicies";
//     public static final String SEACLOUDS_DC_ENDPOINT = "seacloudsdc.endpoint";
//     public static final String TARGET_NODES = "targetEntities";
// 
//     private static final String TARGET_PROPERTY =  "language";
// 
//     private ApplicationFacade applicationFacade;
//     private DamGeneratorConfigBag configBag;
// 
//     @Override
//     public void apply(ApplicationFacade applicationFacade) {
//         this.applicationFacade = applicationFacade;
//         configBag = applicationFacade.getConfigBag();
// 
//         addSeaCloudsMonitoringGroup();
//     }
// 
//     private void addSeaCloudsMonitoringGroup() {
//         Map<String, Object> policyGroupValue = getPolicyGroupValues();
// 
//         applicationFacade.addGroup(
//                 DamGenerator.SEACLOUDS_MONITORING_INITIALIZATION,
//                 policyGroupValue);
//     }
// 
//     public Map<String, Object> getPolicyGroupValues() {
// 
//         Map<String, Object> seaCloudsPolicyConfiguration = MutableMap.of();
//         seaCloudsPolicyConfiguration.put(DamGenerator.TYPE, SEACLOUDS_MONITORING_POLICY);
//         seaCloudsPolicyConfiguration.put(SEACLOUDS_DC_ENDPOINT, configBag.getSeacloudsDcEndPoint());
//         seaCloudsPolicyConfiguration.put(TARGET_NODES,
//                 applicationFacade.filterNodeTemplatesByPropertyAndValues(TARGET_PROPERTY, getAllowedTargetValues()));
// 
//         Map<String, Object> seaCloudsPolicy = MutableMap.of();
//         seaCloudsPolicy.put(SEACLOUDS_APPLICATION_CONFIGURATION_POLICY, seaCloudsPolicyConfiguration);
// 
//         Map<String, Object> seaCloudsApplicationGroup = MutableMap.of();
//         seaCloudsApplicationGroup.put(DamGenerator.MEMBERS, ImmutableList.of());
//         seaCloudsApplicationGroup.put(DamGenerator.POLICIES, ImmutableList.of(seaCloudsPolicy));
// 
//         return seaCloudsApplicationGroup;
//     }
// 
//     private List<Object> getAllowedTargetValues(){
//         return ImmutableList.<Object>of("JAVA", "PHP");
//     }
// 
// 
// 
// 
// }


// Path: planner/core/src/main/java/eu/seaclouds/platform/planner/core/application/ApplicationFacadeDecoratorApplicator.java
import eu.seaclouds.platform.planner.core.application.decorators.MissingPolicyTypesDecorator;
import eu.seaclouds.platform.planner.core.application.decorators.MonitoringInformationDecorator;
import eu.seaclouds.platform.planner.core.application.decorators.SeaCloudsManagementPolicyDecorator;
import eu.seaclouds.platform.planner.core.application.decorators.SeaCloudsMonitoringInitializerPolicyDecorator;
import eu.seaclouds.platform.planner.core.application.decorators.SlaInformationDecorator;

package eu.seaclouds.platform.planner.core.application;



public class ApplicationFacadeDecoratorApplicator {

    public void applyDecorators(ApplicationFacade applicationFacade) {
        new MonitoringInformationDecorator().apply(applicationFacade);
        new SlaInformationDecorator().apply(applicationFacade);
        new SeaCloudsManagementPolicyDecorator().apply(applicationFacade);
        new SeaCloudsMonitoringInitializerPolicyDecorator().apply(applicationFacade);