package nl.gertontenham.magnolia.templating.rendering.template;
import info.magnolia.cms.beans.config.ServerConfiguration;
import info.magnolia.objectfactory.Components;
import info.magnolia.rendering.template.ComponentAvailability;
import info.magnolia.rendering.template.TemplateAvailability;
import info.magnolia.rendering.template.configured.ConfiguredAreaDefinition;
import info.magnolia.rendering.template.configured.ConfiguredTemplateDefinition;
import info.magnolia.resources.app.action.RemoveHotfixAction;
import nl.gertontenham.magnolia.templating.FoundationTemplatingModule;
import nl.gertontenham.magnolia.templating.beans.AvailabilityConfig;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* A {@link info.magnolia.rendering.template.AreaDefinition} configured in the configuration workspace.
*/
public class EnhancedConfiguredAreaDefinition extends ConfiguredAreaDefinition {
private static final Logger log = LoggerFactory.getLogger(EnhancedConfiguredAreaDefinition.class);
private String availabilityKey;
//private final FoundationTemplatingModule module;
@Inject
public EnhancedConfiguredAreaDefinition(TemplateAvailability templateAvailability) {
super(templateAvailability);
//this.addAddtionalComponents();
//this.module = module;
}
@Override
public Map<String, ComponentAvailability> getAvailableComponents() {
if (StringUtils.isNotBlank(availabilityKey)) {
super.getAvailableComponents().putAll(getAddtionalComponents());
}
return super.getAvailableComponents();
}
@Override
public void setAvailableComponents(Map<String, ComponentAvailability> availableComponents) {
if (StringUtils.isNotBlank(availabilityKey)) {
availableComponents.putAll(getAddtionalComponents());
}
super.setAvailableComponents(availableComponents);
}
private Map<String, ComponentAvailability> getAddtionalComponents() {
Map<String, ComponentAvailability> additionalComponents = new LinkedHashMap<String, ComponentAvailability>();
if (StringUtils.isNotBlank(availabilityKey)) {
FoundationTemplatingModule module = Components.getComponent(FoundationTemplatingModule.class);
if (module.getComponentAvailability().containsKey(availabilityKey)) {
AvailabilityConfig availabilityConfig = module.getComponentAvailability().get(availabilityKey);
additionalComponents.putAll(availabilityConfig.getComponents());
}
}
return additionalComponents;
}
public String getAvailabilityKey() {
return availabilityKey;
}
public void setAvailabilityKey(String availabilityKey) {
this.availabilityKey = availabilityKey;
}
}