package org.atomhopper.config;
import org.apache.commons.lang.StringUtils;
import org.atomhopper.config.v1_0.Author;
import org.atomhopper.config.v1_0.Configuration;
import org.atomhopper.config.v1_0.ConfigurationDefaults;
import org.atomhopper.config.v1_0.FeedConfiguration;
import org.atomhopper.config.v1_0.WorkspaceConfiguration;
import java.util.List;
/**
* @author zinic
*/
public class AtomHopperConfigurationPreprocessor {
private final Configuration configuration;
public AtomHopperConfigurationPreprocessor(Configuration configuration) {
this.configuration = configuration;
}
public AtomHopperConfigurationPreprocessor applyDefaults() {
final ConfigurationDefaults configurationDefaults = configuration.getDefaults();
setDefaultAuthor(configuration.getWorkspace(), configurationDefaults.getAuthor());
return new AtomHopperConfigurationPreprocessor(configuration);
}
public Configuration getConfiguration() {
return configuration;
}
private void setDefaultAuthor(List<WorkspaceConfiguration> workspaces, Author globalAuthorDefault) {
for (WorkspaceConfiguration workspaceConfiguration : workspaces) {
final Author workspaceAuthorDefault = (workspaceConfiguration.getDefaults() == null)
? null : workspaceConfiguration.getDefaults().getAuthor();
final Author authorToApply = isAuthorEmpty(workspaceAuthorDefault)
? globalAuthorDefault : workspaceAuthorDefault;
if (!isAuthorEmpty(authorToApply)) {
for (FeedConfiguration feed : workspaceConfiguration.getFeed()) {
if (isAuthorEmpty(feed.getAuthor())) {
feed.setAuthor(authorToApply);
}
}
}
}
}
private boolean isAuthorEmpty(Author author) {
return author == null || author.getName() == null || StringUtils.isBlank(author.getName());
}
}