import br.com.cafebinario.factory.FactoryMode;
import br.com.cafebinario.factory.IntegracaoFactory;
import br.com.cafebinario.file.factory.FileIntegrationFactory;
import br.com.cafebinario.file.implementation.CsvIntegrationArchive;
import br.com.cafebinario.file.interfaces.IIntegrationArchive;
import br.com.cafebinario.integration.IIntegracao;
import br.com.cafebinario.integration.implementation.GenericReader;
import br.com.cafebinario.properties.AppProperties;
import br.com.cafebinario.shared.ExecutionContex;
import br.com.cafebinario.transport.GenericTO;
import br.com.cafebinario.transport.GenericVO;
import br.com.cafebinario.workflow.IWorkflow;
import br.com.cafebinario.workflow.Result;
public class DynamicFlow implements IWorkflow{
private GenericVO parameter;
@Override
public Result execute(ExecutionContex executionContex) throws Exception {
Result result = new Result();
String integrationClass = AppProperties.instanceOf().getProperty("dynamicIntegrationDBClass", "br.com.cafebinario.integration.implementation.GenericReader");
String archiveClass = AppProperties.instanceOf().getProperty("dynamicIIntegrationArchiveClass", "br.com.cafebinario.file.implementation.CsvIntegrationArchive");
IIntegracao integracao = IntegracaoFactory.getInstance().getIIntegracaoImpl(integrationClass, FactoryMode.REFLECTION);
IIntegrationArchive integrationArchive = FileIntegrationFactory.getInstance().getIIntegrationArchiveImpl(archiveClass, FactoryMode.REFLECTION);
integracao.setIntegrationArchive(integrationArchive);
integracao.setParameter(parameter);
integracao.begin();
integracao.execute();
integracao.end();
integrationArchive.initialize(integracao);
integrationArchive.write();
integrationArchive.finalize();
result.setClazz(String.class);
result.setObject(integracao.getFileName());
return result;
}
@Override
public GenericVO getParameter() {
return parameter;
}
@Override
public void setParameter(GenericVO parameter) {
this.parameter = parameter;
}
}