package eu.dnetlib.enabling.manager.msro;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.google.common.collect.Lists;

import eu.dnetlib.enabling.tools.EnableableEnumerator;
import eu.dnetlib.enabling.tools.Enableable;

/**
 * Disables msro beans at startup.
 * 
 * @author marko
 * 
 */
public class EnableableDisabler {
	private static final Log log = LogFactory.getLog(EnableableDisabler.class); // NOPMD by marko on 11/24/08 5:02 PM

	private List<String> disabledBeans;

	/**
	 * utility that obtains all enableables with their bean names.
	 */
	@Resource
	EnableableEnumerator enableableEnumerator;

	@PostConstruct
	public void init() {
		for (String beanName : disabledBeans) {
			Enableable bean = enableableEnumerator.getEnableable(beanName.trim());
			if (bean != null)
				bean.setEnabled(false);
			else
				log.warn("cannot find enableable " + beanName);
		}
	}

	public List<String> getDisabledBeans() {
		return disabledBeans;
	}

	public void setDisabledBeans(final List<String> disabledBeans) {
		this.disabledBeans = disabledBeans;
	}

	/**
	 * This allows use to inject an CSV directly via spring. Spring only has an string->array property editor, but not a
	 * string->list<?>.
	 * 
	 * @param disabledBeans
	 */
	public void setDisabledBeansArray(final String[] disabledBeans) {
		setDisabledBeans(Lists.newArrayList(disabledBeans));
	}
}
