org.kuali.common.impex.SyncFilesExecutable Maven / Gradle / Ivy
package org.kuali.common.impex;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.kuali.common.impex.service.ImpexContext;
import org.kuali.common.impex.service.ImpexUtils;
import org.kuali.common.util.Assert;
import org.kuali.common.util.LocationUtils;
import org.kuali.common.util.SyncResult;
import org.kuali.common.util.execute.Executable;
import org.kuali.common.util.service.ScmService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SyncFilesExecutable implements Executable {
private static final Logger logger = LoggerFactory.getLogger(SyncFilesExecutable.class);
List contexts;
boolean skip;
// Don't commit changes unless they specifically set this to true
boolean commitChanges;
ScmService service;
String message = "Automated Impex update";
@Override
public void execute() {
if (skip) {
logger.info("Skipping impex file sync");
return;
}
Assert.notNull(contexts);
List adds = new ArrayList();
List deletes = new ArrayList();
List results = ImpexUtils.syncFiles(contexts);
for (SyncResult result : results) {
adds.addAll(result.getAdds());
deletes.addAll(result.getDeletes());
}
List paths = new ArrayList();
for (ImpexContext context : contexts) {
paths.add(context.getFinalDirectory());
}
File databasePropertiesFile = getDatabasePropertiesFile(contexts);
if (databasePropertiesFile != null) {
paths.add(databasePropertiesFile);
}
logger.info("---------- Sync results ----------");
logger.info("Files added - {}", adds.size());
logger.info("Files deleted - {}", deletes.size());
logger.info("---------- Sync results ----------");
if (commitChanges) {
service.add(adds);
service.delete(deletes);
service.commit(paths, message);
} else {
logger.info("Skipping SCM commit");
}
}
protected File getDatabasePropertiesFile(List contexts) {
for (ImpexContext context : contexts) {
if (context.isStoreDatabaseTableProperties()) {
String location = context.getDatabaseTablePropertiesLocation();
if (LocationUtils.isExistingFile(location)) {
return new File(location);
}
}
}
return null;
}
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;
}
public ScmService getService() {
return service;
}
public void setService(ScmService service) {
this.service = service;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public boolean isCommitChanges() {
return commitChanges;
}
public void setCommitChanges(boolean commitChanges) {
this.commitChanges = commitChanges;
}
}