package com.apwide.golive.helper
import com.apwide.env.attribute.Attribute
import com.apwide.env.attribute.AttributeTypeManager
import com.apwide.env.attribute.value.AttributeValue
import com.apwide.env.common.BaseResult
import com.apwide.env.common.ErrorCollectionHelper
import com.apwide.env.environment.Environment
import com.apwide.env.environment.admin.EnvironmentInputParameters
import com.apwide.env.environment.admin.EnvironmentManager
import com.apwide.env.environment.search.EnvironmentSearcher
import com.apwide.env.service.EnvironmentServices
import com.apwide.golive.accessor.EnvironmentServicesAccessor
import groovy.util.logging.Log4j
class EnvironmentHelper {
EnvironmentServices environmentServices = EnvironmentServicesAccessor.get()
EnvironmentSearcher environmentSearcher = environmentServices.getEnvSearcher()
EnvironmentManager environmentManager = environmentServices.getEnvMgr()
Environment getEnvironment(String applicationName, String categoryName) {
BaseResult<Environment> result = environmentSearcher.getByUnique(applicationName, categoryName)
if (result.hasAnyErrors()) {
log.error(ErrorCollectionHelper.displayErrors(result.getErrorCollection()))
return result.getEntity()
Environment setAttributes(Environment environment, Map<String, String> attributes) {
List<AttributeValue> attributeValues = attributes.entrySet().stream().map({ entry ->
Attribute attribute = Attribute.fromName(entry.key)
return new AttributeValue.AttributeValueBuilder().attribute(attribute).value(entry.value).build()
EnvironmentInputParameters params = new EnvironmentInputParameters()
params.setAttributes(attributeValues)
BaseResult<Environment> result = environmentManager.update(environment.getID(), params)
if (result.hasAnyErrors()) {
log.error(ErrorCollectionHelper.displayErrors(result.getErrorCollection()))
return result.getEntity()
String getAttributeValue(Environment environment, String attributeName){
if (!environment.getAttributes())
AttributeValue attributeValue = environment.getAttributes().find({AttributeValue attributeValue -> attributeValue.attribute.name == attributeName})
return attributeValue?.value