
ru.yandex.qatools.embed.postgresql.config.PostgresDownloadConfigBuilder Maven / Gradle / Ivy
The newest version!
package ru.yandex.qatools.embed.postgresql.config;
import de.flapdoodle.embed.process.builder.IProperty;
import de.flapdoodle.embed.process.builder.TypedProperty;
import de.flapdoodle.embed.process.config.store.DownloadConfigBuilder;
import de.flapdoodle.embed.process.config.store.DownloadPath;
import de.flapdoodle.embed.process.config.store.IDownloadConfig;
import de.flapdoodle.embed.process.config.store.IDownloadPath;
import de.flapdoodle.embed.process.config.store.IPackageResolver;
import de.flapdoodle.embed.process.config.store.IProxyFactory;
import de.flapdoodle.embed.process.config.store.ITimeoutConfig;
import de.flapdoodle.embed.process.extract.ITempNaming;
import de.flapdoodle.embed.process.extract.UUIDTempNaming;
import de.flapdoodle.embed.process.io.directories.IDirectory;
import de.flapdoodle.embed.process.io.directories.UserHome;
import de.flapdoodle.embed.process.io.progress.IProgressListener;
import de.flapdoodle.embed.process.io.progress.StandardConsoleProgressListener;
import ru.yandex.qatools.embed.postgresql.Command;
import ru.yandex.qatools.embed.postgresql.PackagePaths;
import ru.yandex.qatools.embed.postgresql.ext.SubdirTempDir;
/**
* Download config builder for postgres
*/
public class PostgresDownloadConfigBuilder extends DownloadConfigBuilder {
private static final TypedProperty USER_AGENT = TypedProperty.with("UserAgent", UserAgent.class);
private static final TypedProperty PROGRESS_LISTENER = TypedProperty.with("ProgressListener", IProgressListener.class);
private static final TypedProperty FILE_NAMING = TypedProperty.with("FileNaming", ITempNaming.class);
private static final TypedProperty ARTIFACT_STORE_PATH = TypedProperty.with("ArtifactStorePath", IDirectory.class);
private static final TypedProperty PACKAGE_RESOLVER = TypedProperty.with("PackageResolver", IPackageResolver.class);
private static final TypedProperty DOWNLOAD_PREFIX = TypedProperty.with("DownloadPrefix", DownloadPrefix.class);
private static final TypedProperty DOWNLOAD_PATH = TypedProperty.with("DownloadPath", IDownloadPath.class);
private static final TypedProperty TIMEOUT_CONFIG = TypedProperty.with("TimeoutConfig", ITimeoutConfig.class);
private static final TypedProperty PROXY_FACTORY = TypedProperty.with("ProxyFactory", IProxyFactory.class);
public PostgresDownloadConfigBuilder defaultsForCommand(Command command) {
fileNaming().setDefault(new UUIDTempNaming());
// I've found the only open and easy to use cross platform binaries
downloadPath().setDefault(new DownloadPath("http://get.enterprisedb.com/postgresql/"));
packageResolver().setDefault(new PackagePaths(command, SubdirTempDir.defaultInstance()));
artifactStorePath().setDefault(new UserHome(".embedpostgresql"));
downloadPrefix().setDefault(new DownloadPrefix("postgresql-download"));
userAgent().setDefault(new UserAgent("Mozilla/5.0 (compatible; Embedded postgres; +https://github.com/yandex-qatools)"));
progressListener().setDefault(new StandardConsoleProgressListener() {
@Override
public void info(String label, String message) {
if (label.startsWith("Extract")) {
System.out.print(".");//NOSONAR
} else {
super.info(label, message);//NOSONAR
}
}
});
return this;
}
@Override
public IDownloadConfig build() {
final IDownloadPath downloadPath = get(DOWNLOAD_PATH);
final String downloadPrefix = get(DOWNLOAD_PREFIX).value();
final IPackageResolver packageResolver = get(PACKAGE_RESOLVER);
final IDirectory artifactStorePath = get(ARTIFACT_STORE_PATH);
final ITempNaming fileNaming = get(FILE_NAMING);
final IProgressListener progressListener = get(PROGRESS_LISTENER);
final String userAgent = get(USER_AGENT).value();
final ITimeoutConfig timeoutConfig = get(TIMEOUT_CONFIG);
final IProxyFactory proxyFactory = get(PROXY_FACTORY);
return new MutableDownloadConfig(downloadPath, downloadPrefix, packageResolver, artifactStorePath, fileNaming,
progressListener, userAgent, timeoutConfig, proxyFactory);
}
@Override
public DownloadConfigBuilder downloadPath(String path) {
set(DOWNLOAD_PATH, new DownloadPath(path));
return this;
}
@Override
protected IProperty downloadPath() {
return property(DOWNLOAD_PATH);
}
@Override
public DownloadConfigBuilder downloadPrefix(String prefix) {
set(DOWNLOAD_PREFIX, new DownloadPrefix(prefix));
return this;
}
@Override
protected IProperty downloadPrefix() {
return property(DOWNLOAD_PREFIX);
}
@Override
public DownloadConfigBuilder packageResolver(IPackageResolver packageResolver) {
set(PACKAGE_RESOLVER, packageResolver);
return this;
}
@Override
protected IProperty packageResolver() {
return property(PACKAGE_RESOLVER);
}
@Override
public DownloadConfigBuilder artifactStorePath(IDirectory artifactStorePath) {
set(ARTIFACT_STORE_PATH, artifactStorePath);
return this;
}
@Override
protected IProperty artifactStorePath() {
return property(ARTIFACT_STORE_PATH);
}
@Override
public DownloadConfigBuilder fileNaming(ITempNaming fileNaming) {
set(FILE_NAMING, fileNaming);
return this;
}
@Override
protected IProperty fileNaming() {
return property(FILE_NAMING);
}
@Override
public DownloadConfigBuilder progressListener(IProgressListener progressListener) {
set(PROGRESS_LISTENER, progressListener);
return this;
}
@Override
protected IProperty progressListener() {
return property(PROGRESS_LISTENER);
}
@Override
public DownloadConfigBuilder userAgent(String userAgent) {
set(USER_AGENT, new UserAgent(userAgent));
return this;
}
@Override
protected IProperty userAgent() {
return property(USER_AGENT);
}
@Override
public DownloadConfigBuilder timeoutConfig(ITimeoutConfig timeoutConfig) {
set(TIMEOUT_CONFIG, timeoutConfig);
return this;
}
@Override
protected IProperty timeoutConfig() {
return property(TIMEOUT_CONFIG);
}
@Override
public DownloadConfigBuilder proxyFactory(IProxyFactory proxyFactory) {
set(PROXY_FACTORY, proxyFactory);
return this;
}
@Override
protected IProperty proxyFactory() {
return property(PROXY_FACTORY);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy