package nl.ipo.cds.etl.theme.protectedSite;
import static nl.ipo.cds.etl.theme.protectedSite.ProtectedSiteThemeConfig.THEME_NAME;
import java.util.List;
import nl.ipo.cds.etl.Transformer;
import nl.ipo.cds.etl.generalization.GeneralizeReader;
import nl.ipo.cds.etl.util.ScriptExecutor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.io.Resource;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
public class ProtectedSiteTransformer implements Transformer {
private static final Log logger = LogFactory.getLog(ProtectedSiteTransformer.class);
private ScriptExecutor scriptExecuter;
private Resource transformScript, deleteScript;
private GeneralizeReader generalizeReader;
public void setScriptExecuter(ScriptExecutor scriptExecuter) {
this.scriptExecuter = scriptExecuter;
}
public void setTransformScript(Resource transformScript) {
this.transformScript = transformScript;
Assert.isTrue(transformScript.exists());
}
public void setDeleteScript(Resource deleteScript) {
this.deleteScript = deleteScript;
Assert.isTrue(deleteScript.exists());
}
public void setGeneralizeReader(GeneralizeReader generalizeReader) {
this.generalizeReader = generalizeReader;
}
@Override
@Transactional(propagation=Propagation.REQUIRES_NEW, rollbackFor=Throwable.class)
public void transform(List<String> themes) throws Exception {
if (themes.contains(THEME_NAME)) {
logger.debug("running script transformer for theme '" + THEME_NAME + "'");
logger.debug("deleting generalized datasets");
generalizeReader.delete();
logger.debug("deleting transformed dataset");
scriptExecuter.executeScript(deleteScript);
logger.debug("executing transform script");
scriptExecuter.executeScript(transformScript);
logger.debug("executing generalizer");
generalizeReader.populate();
} else {
logger.debug("not running script transformer for theme '" + THEME_NAME + "'");
}
}
}