001    package org.kuali.common.jdbc.reset;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    
006    import org.kuali.common.jdbc.model.context.JdbcContext;
007    import org.kuali.common.jdbc.service.JdbcExecutable;
008    import org.kuali.common.jdbc.service.JdbcService;
009    import org.kuali.common.jdbc.service.spring.JdbcServiceConfig;
010    import org.kuali.common.jdbc.show.spring.JdbcShowConfig;
011    import org.kuali.common.jdbc.sql.spring.JdbcContextsConfig;
012    import org.kuali.common.util.execute.Executable;
013    import org.kuali.common.util.execute.impl.ExecutablesExecutable;
014    import org.kuali.common.util.spring.env.EnvironmentService;
015    import org.springframework.beans.factory.annotation.Autowired;
016    import org.springframework.context.annotation.Bean;
017    import org.springframework.context.annotation.Configuration;
018    import org.springframework.context.annotation.Import;
019    
020    @Configuration
021    @Import({ JdbcServiceConfig.class, JdbcShowConfig.class })
022    public class DefaultJdbcResetConfig implements JdbcResetConfig {
023    
024            private static final String TIMED_KEY = "jdbc.reset.timed";
025            private static final String SKIP_KEY = "jdbc.reset.skip";
026    
027            @Autowired
028            JdbcService service;
029    
030            @Autowired
031            JdbcShowConfig show;
032    
033            @Autowired
034            EnvironmentService env;
035    
036            @Autowired
037            JdbcContextsConfig contextsConfig;
038    
039            @Override
040            @Bean
041            public Executable jdbcResetExecutable() {
042                    List<JdbcContext> contexts = contextsConfig.jdbcContexts();
043                    boolean skip = env.getBoolean(SKIP_KEY, false);
044                    boolean timed = env.getBoolean(TIMED_KEY, true);
045                    List<Executable> execs = new ArrayList<Executable>();
046                    execs.add(show.showDbaConfigExecutable());
047                    for (JdbcContext context : contexts) {
048                            execs.add(new JdbcExecutable(service, context));
049                    }
050                    return new ExecutablesExecutable(execs, skip, timed);
051            }
052    
053    }