Added the new ConnectSettingsManager
This commit is contained in:
parent
97431c7c1f
commit
f579b69ae6
@ -0,0 +1,190 @@
|
||||
package de.gnmyt.sqltoolkit.manager;
|
||||
|
||||
import de.gnmyt.sqltoolkit.drivers.MySQLConnection;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ConnectSettingsManager {
|
||||
|
||||
private final MySQLConnection connection;
|
||||
|
||||
private HashMap<String, Object> settingValues = new HashMap<>();
|
||||
|
||||
public ConnectSettingsManager(MySQLConnection connection) {
|
||||
this.connection = connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a custom property to the values
|
||||
* @param property The property you want to add
|
||||
* @param value The value you want to use
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager customProperty(String property, Object value) {
|
||||
settingValues.put(property, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the timezone of the connection
|
||||
* @param timezone The new timezone
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager timezone(String timezone) {
|
||||
settingValues.put("useTimezone", true);
|
||||
settingValues.put("serverTimezone", timezone);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the requireSSL property
|
||||
* @param requireSSL The new value of the requireSSL property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager requireSSL(boolean requireSSL) {
|
||||
settingValues.put("requireSSL", requireSSL);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the useSSL property
|
||||
* @param useSSL The new value of the useSSL property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager useSSL(boolean useSSL) {
|
||||
settingValues.put("useSSL", useSSL);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the autoReconnect property
|
||||
* @param autoReconnect The new value of the autoReconnect property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager autoReconnect(boolean autoReconnect) {
|
||||
settingValues.put("autoReconnect", autoReconnect);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maxReconnects property
|
||||
* @param maxReconnects The new value of the maxReconnects property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager maxReconnects(int maxReconnects) {
|
||||
settingValues.put("maxReconnects", maxReconnects);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the charset property
|
||||
* @param charset The new value of the charset property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager characterEncoding(StandardCharsets charset) {
|
||||
settingValues.put("characterEncoding", charset.toString());
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the tcpKeepAlive property
|
||||
* @param tcpKeepAlive The new value of the tcpKeepAlive property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager tcpKeepAlive(boolean tcpKeepAlive) {
|
||||
settingValues.put("tcpKeepAlive", tcpKeepAlive);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the tcpNoDelay property
|
||||
* @param tcpNoDelay The new value of the tcpNoDelay property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager tcpNoDelay(boolean tcpNoDelay) {
|
||||
settingValues.put("tcpNoDelay", tcpNoDelay);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the tcpRcvBuf property
|
||||
* @param tcpRcvBuf The new value of the tcpRcvBuf property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager tcpRcvBuf(int tcpRcvBuf) {
|
||||
settingValues.put("tcpRcvBuf", tcpRcvBuf);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the tcpSndBuf property
|
||||
* @param tcpSndBuf The new value of the tcpSndBuf property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager tcpSndBuf(int tcpSndBuf) {
|
||||
settingValues.put("tcpSndBuf", tcpSndBuf);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the tcpTrafficClass property
|
||||
* @param tcpTrafficClass The new value of the tcpTrafficClass property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager tcpTrafficClass(int tcpTrafficClass) {
|
||||
settingValues.put("tcpTrafficClass", tcpTrafficClass);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the useCompression property
|
||||
* @param useCompression The new value of the useCompression property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager useCompression(boolean useCompression) {
|
||||
settingValues.put("useCompression", useCompression);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the useUnbufferedInput property
|
||||
* @param useUnbufferedInput The new value of the useUnbufferedInput property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager useUnbufferedInput(boolean useUnbufferedInput) {
|
||||
settingValues.put("useUnbufferedInput", useUnbufferedInput);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the paranoid property
|
||||
* @param paranoid The new value of the paranoid property
|
||||
* @return this class
|
||||
*/
|
||||
public ConnectSettingsManager paranoid(boolean paranoid) {
|
||||
settingValues.put("paranoid", paranoid);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the connection string
|
||||
* @return the connection string
|
||||
*/
|
||||
public String generateConnectionString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
Object[] keys = settingValues.keySet().toArray();
|
||||
Object[] values = settingValues.values().toArray();
|
||||
|
||||
for (int i = 0; i < settingValues.size(); i++) {
|
||||
if (i == 0) builder.append("?");
|
||||
else builder.append("&");
|
||||
|
||||
builder.append(keys[i]).append("=").append(values[i]);
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user