org.kuali.common.impex.DumpExecutable Maven / Gradle / Ivy
package org.kuali.common.impex;
import java.util.List;
import java.util.Properties;
import org.kuali.common.impex.service.DefaultImpexGeneratorService;
import org.kuali.common.impex.service.ImpexContext;
import org.kuali.common.impex.service.ImpexGeneratorService;
import org.kuali.common.impex.service.ImpexUtils;
import org.kuali.common.util.FormatUtils;
import org.kuali.common.util.execute.Executable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
public class DumpExecutable implements Executable {
private static final Logger logger = LoggerFactory.getLogger(DumpExecutable.class);
ImpexGeneratorService service = new DefaultImpexGeneratorService();
ImpexContext sourceContext;
List contexts;
List databaseVendors;
boolean skip;
@Override
public void execute() {
if (skip) {
logger.info("Skipping impex database dump");
return;
}
Assert.notNull(sourceContext);
ImpexUtils.log(sourceContext);
Assert.notNull(service);
Assert.notNull(contexts);
Assert.notNull(databaseVendors);
long start = System.currentTimeMillis();
try {
DatabaseContext database = service.getDatabaseObjectLists(sourceContext);
service.fillInMetaData(sourceContext, database);
service.serializeSchemas(contexts, database);
service.generateSchemaSql(contexts, databaseVendors);
List results = service.dumpTables(sourceContext, database);
updateSourceDatabaseProperties(sourceContext, results);
ImpexUtils.doStats(results);
String time = FormatUtils.getTime(System.currentTimeMillis() - start);
logger.info("Total time: {}", time);
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
protected void updateSourceDatabaseProperties(ImpexContext sourceContext, List results) {
if (sourceContext.isStoreDatabaseTableProperties()) {
Properties properties = sourceContext.getDatabaseTableProperties();
String location = sourceContext.getDatabaseTablePropertiesLocation();
ImpexUtils.updateAndStoreDatabaseProperties(properties, location, results);
}
}
public ImpexContext getSourceContext() {
return sourceContext;
}
public void setSourceContext(ImpexContext sourceContext) {
this.sourceContext = sourceContext;
}
public ImpexGeneratorService getService() {
return service;
}
public void setService(ImpexGeneratorService service) {
this.service = service;
}
public List getDatabaseVendors() {
return databaseVendors;
}
public void setDatabaseVendors(List databaseVendors) {
this.databaseVendors = databaseVendors;
}
public List getContexts() {
return contexts;
}
public void setContexts(List contexts) {
this.contexts = contexts;
}
public boolean isSkip() {
return skip;
}
public void setSkip(boolean skip) {
this.skip = skip;
}
}