package com.socrata.datasync.config.userpreferences; import com.socrata.datasync.SocrataConnectionInfo; import com.socrata.datasync.job.LoadPreferencesJob; /** * Author: Adrian Laurenzi * Date: 6/13/14 * * Allows configuring "global" configuration when running * DataSync as library. */ public class UserPreferencesLib implements UserPreferences { private String domain; private String username; private String password; private String appToken; private String adminEmail; private String proxyHost; private String proxyPort; private String proxyUsername; private String proxyPassword; private boolean emailUponError; private String logDatasetID; private String outgoingMailServer; private String smtpPort; private String sslPort; private String smtpUsername; private String smtpPassword; private String filesizeChunkingCutoffMB; private String numRowsPerChunk; private String portDestinationDomainAppToken; // When a file to be published is larger than this value (in MB), file is chunked private static final String DEFAULT_FILESIZE_CHUNK_CUTOFF_MB = "10"; // During chunking files are uploaded NUM_ROWS_PER_CHUNK rows per chunk private static final String DEFAULT_NUM_ROWS_PER_CHUNK = "10000"; public UserPreferencesLib() { adminEmail = ""; emailUponError = false; logDatasetID = ""; outgoingMailServer = ""; smtpPort = ""; sslPort = ""; smtpUsername = ""; smtpPassword = ""; filesizeChunkingCutoffMB = DEFAULT_FILESIZE_CHUNK_CUTOFF_MB; numRowsPerChunk = DEFAULT_NUM_ROWS_PER_CHUNK; portDestinationDomainAppToken = ""; } public String getDomain() { if(domain == null) return null; return UserPreferencesUtil.prefixDomain(domain.trim()); } public void setDomain(String domain) { this.domain = domain; } public UserPreferencesLib domain(String domain) { setDomain(domain); return this; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public UserPreferencesLib username(String username) { setUsername(username); return this; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public UserPreferencesLib password(String password) { setPassword(password); return this; } public String getAPIKey() { return appToken; } public String getAppToken() { return appToken; } public void setAppToken(String appToken) { this.appToken = appToken; } public UserPreferencesLib appToken(String appToken) { setAppToken(appToken); return this; } public String getProxyHost() { return proxyHost; } public void setProxyHost(String host) { this.proxyHost = host; } public UserPreferencesLib proxyHost(String host) { setProxyHost(host); return this; } public String getProxyPort() { return proxyPort; } public void setProxyPort(String port) { this.proxyPort = port; } public UserPreferencesLib proxyPort(String port) { setProxyPort(port); return this; } public String getProxyUsername() { return proxyUsername; } public void setProxyUsername(String username) { this.proxyUsername = username; } public UserPreferencesLib proxyUsername(String username) { setProxyUsername(username); return this; } public String getProxyPassword() { return proxyPassword; } public void setProxyPassword(String password) { this.proxyPassword = password; } public UserPreferencesLib proxyPassword(String password) { setProxyPassword(password); return this; } public String getAdminEmail() { return adminEmail; } public void setAdminEmail(String adminEmail) { this.adminEmail = adminEmail; } public UserPreferencesLib adminEmail(String adminEmail) { setAdminEmail(adminEmail); return this; } public boolean emailUponError() { return emailUponError; } public void setEmailUponError(boolean emailUponError) { this.emailUponError = emailUponError; } public UserPreferencesLib emailUponError(boolean emailUponError) { setEmailUponError(emailUponError); return this; } public String getLogDatasetID() { return logDatasetID; } public void setLogDatasetID(String logDatasetID) { this.logDatasetID = logDatasetID; } public UserPreferencesLib logDatasetID(String logDatasetID) { setLogDatasetID(logDatasetID); return this; } public String getOutgoingMailServer() { return outgoingMailServer; } public void setOutgoingMailServer(String mailServer) { this.outgoingMailServer = mailServer; } public UserPreferencesLib outgoingMailServer(String mailServer) { setOutgoingMailServer(mailServer); return this; } public String getSmtpPort() { return smtpPort; } public void setSmtpPort(String smtpPort) { this.smtpPort = smtpPort; } public UserPreferencesLib smtpPort(String smtpPort) { setSmtpPort(smtpPort); return this; } public String getSslPort() { return sslPort; } public void setSslPort(String sslPort) { this.sslPort = sslPort; } public UserPreferencesLib sslPort(String sslPort) { setSslPort(sslPort); return this; } public String getSmtpUsername() { return smtpUsername; } public void setSmtpUsername(String smtpUsername) { this.smtpUsername = smtpUsername; } public UserPreferencesLib smtpUsername(String smtpUsername) { setSmtpUsername(smtpUsername); return this; } public String getSmtpPassword() { return smtpPassword; } public void setSmtpPassword(String smtpPassword) { this.smtpPassword = smtpPassword; } public UserPreferencesLib smtpPassword(String smtpPassword) { setSmtpPassword(smtpPassword); return this; } public String getFilesizeChunkingCutoffMB() { return filesizeChunkingCutoffMB; } public void setFilesizeChunkingCutoffMB(String mb) { this.filesizeChunkingCutoffMB = mb; } public UserPreferencesLib filesizeChunkingCutoffMB(String mb) { setFilesizeChunkingCutoffMB(mb); return this; } public String getNumRowsPerChunk() { return numRowsPerChunk; } public void setNumRowsPerChunk(String numRowsPerChunk) { this.numRowsPerChunk = numRowsPerChunk; } public UserPreferencesLib numRowsPerChunk(String numRows) { setNumRowsPerChunk(numRows); return this; } public boolean getUseNewBackend() { return false; } public void setPortDestinationDomainAppToken(String portDestinationDomainAppToken) { this.portDestinationDomainAppToken = portDestinationDomainAppToken; } public String getPortDestinationDomainAppToken() { return portDestinationDomainAppToken; } public SocrataConnectionInfo getConnectionInfo() { return new SocrataConnectionInfo( this.getDomain(), this.getUsername(), this.getPassword(), this.getAPIKey()); } public String getHost() { if (domain != null) { String[] schemeAndHost = domain.split("//"); return schemeAndHost[schemeAndHost.length - 1]; } else { return null; } } public UserPreferencesLib load() { LoadPreferencesJob j = new LoadPreferencesJob(); j.setUserPrefs(this); j.run(); return this; } }