package com.g414.haildb;
import java.io.File;
public class DatabaseConfiguration {
private boolean filePerTableEnabled = true;
private LogFlushMode flushLogAtTrxCommitMode = LogFlushMode.ONCE_PER_SECOND;
private FlushMethod flushMethod = FlushMethod.O_DIRECT;
private RecoveryMethod recoveryMethod = RecoveryMethod.NONE;
private int ioCapacityIOPS = 1000;
private int syncSpinLoops = 30;
private boolean printVerboseLog = true;
private boolean statusFileEnabled = false;
private boolean sysMallocEnabled = false;
private boolean rollbackOnTimeoutEnabled = true;
private boolean adaptiveHashEnabled = true;
private boolean adaptiveFlushingEnabled = true;
private int autoextendIncrementSizePages = 8;
private boolean pageChecksumsEnabled = true;
private String datafilePath = "ibdata1:16M:autoextend";
private boolean doublewriteEnabled = true;
private FileFormat fileFormat = FileFormat.BARRACUDA;
private int openFilesLimit = 300;
private int lockWaitTimeoutSeconds = 120;
private int logBufferSize = 16 * 1024 * 1024;
private int logFileSize = 1024 * 1024 * 1024;
private long additionalMemPoolSize = 16 * 1024 * 1024;
private long bufferPoolSize = 16 * 1024 * 1024 * 1024;
private int logFilesInGroup = 3;
private String logFileHomeDirectory = "." + File.separator;
private String dataHomeDir = "." + File.separator;
private int maxDirtyPagesPct = 75;
private int maxPurgeLagSeconds = 0;
private int lruOldBlocksPct = 37;
private int lruBlockAccessRecency = 0;
public boolean isAdaptiveHashEnabled() {
return adaptiveHashEnabled;
}
public void setAdaptiveHashEnabled(boolean adaptiveHashEnabled) {
this.adaptiveHashEnabled = adaptiveHashEnabled;
}
public boolean isAdaptiveFlushingEnabled() {
return adaptiveFlushingEnabled;
}
public void setAdaptiveFlushingEnabled(boolean adaptiveFlushingEnabled) {
this.adaptiveFlushingEnabled = adaptiveFlushingEnabled;
}
public long getAdditionalMemPoolSize() {
return additionalMemPoolSize;
}
public void setAdditionalMemPoolSize(long additionalMemPoolSize) {
this.additionalMemPoolSize = additionalMemPoolSize;
}
public RecoveryMethod getRecoveryMethod() {
return recoveryMethod;
}
public void setRecoveryMethod(RecoveryMethod recoveryMethod) {
this.recoveryMethod = recoveryMethod;
}
public int getAutoextendIncrementSizePages() {
return autoextendIncrementSizePages;
}
public void setAutoextendIncrementSizePages(int autoextendIncrementSizePages) {
this.autoextendIncrementSizePages = autoextendIncrementSizePages;
}
public long getBufferPoolSize() {
return bufferPoolSize;
}
public void setBufferPoolSize(long bufferPoolSize) {
this.bufferPoolSize = bufferPoolSize;
}
public boolean isPageChecksumsEnabled() {
return pageChecksumsEnabled;
}
public void setPageChecksumsEnabled(boolean pageChecksumsEnabled) {
this.pageChecksumsEnabled = pageChecksumsEnabled;
}
public String getDatafilePath() {
return datafilePath;
}
public void setDatafilePath(String datafilePath) {
this.datafilePath = datafilePath;
}
public String getDataHomeDir() {
return dataHomeDir;
}
public void setDataHomeDir(String dataHomeDir) {
this.dataHomeDir = dataHomeDir;
}
public boolean isDoublewriteEnabled() {
return doublewriteEnabled;
}
public void setDoublewriteEnabled(boolean doublewriteEnabled) {
this.doublewriteEnabled = doublewriteEnabled;
}
public FileFormat getFileFormat() {
return fileFormat;
}
public void setFileFormat(FileFormat fileFormat) {
this.fileFormat = fileFormat;
}
public int getOpenFilesLimit() {
return openFilesLimit;
}
public void setOpenFilesLimit(int openFilesLimit) {
this.openFilesLimit = openFilesLimit;
}
public int getLockWaitTimeoutSeconds() {
return lockWaitTimeoutSeconds;
}
public void setLockWaitTimeoutSeconds(int lockWaitTimeoutSeconds) {
this.lockWaitTimeoutSeconds = lockWaitTimeoutSeconds;
}
public int getLogBufferSize() {
return logBufferSize;
}
public void setLogBufferSize(String logBufferSize) {
this.logBufferSize = Integer.parseInt(logBufferSize);
}
public int getLogFileSize() {
return logFileSize;
}
public void setLogFileSizeMegabytes(String logFileSize) {
this.logFileSize = Integer.parseInt(logFileSize);
}
public int getLogFilesInGroup() {
return logFilesInGroup;
}
public void setLogFilesInGroup(int logFilesInGroup) {
this.logFilesInGroup = logFilesInGroup;
}
public String getLogFileHomeDirectory() {
return logFileHomeDirectory;
}
public void setLogFileHomeDirectory(String logFileHomeDirectory) {
this.logFileHomeDirectory = logFileHomeDirectory;
}
public int getMaxDirtyPagesPct() {
return maxDirtyPagesPct;
}
public void setMaxDirtyPagesPct(int maxDirtyPagesPct) {
this.maxDirtyPagesPct = maxDirtyPagesPct;
}
public int getMaxPurgeLagSeconds() {
return maxPurgeLagSeconds;
}
public void setMaxPurgeLagSeconds(int maxPurgeLagSeconds) {
this.maxPurgeLagSeconds = maxPurgeLagSeconds;
}
public int getLruOldBlocksPct() {
return lruOldBlocksPct;
}
public void setLruOldBlocksPct(int lruOldBlocksPct) {
this.lruOldBlocksPct = lruOldBlocksPct;
}
public int getLruBlockAccessRecency() {
return lruBlockAccessRecency;
}
public void setLruBlockAccessRecency(int lruBlockAccessRecency) {
this.lruBlockAccessRecency = lruBlockAccessRecency;
}
public boolean isFilePerTableEnabled() {
return filePerTableEnabled;
}
public void setFilePerTableEnabled(boolean filePerTableEnabled) {
this.filePerTableEnabled = filePerTableEnabled;
}
public LogFlushMode getFlushLogAtTrxCommitMode() {
return flushLogAtTrxCommitMode;
}
public void setFlushLogAtTrxCommitMode(LogFlushMode flushLogAtTrxCommitMode) {
this.flushLogAtTrxCommitMode = flushLogAtTrxCommitMode;
}
public FlushMethod getFlushMethod() {
return flushMethod;
}
public void setFlushMethod(FlushMethod flushMethod) {
this.flushMethod = flushMethod;
}
public int getIoCapacityIOPS() {
return ioCapacityIOPS;
}
public void setIoCapacityIOPS(int ioCapacityIOPS) {
this.ioCapacityIOPS = ioCapacityIOPS;
}
public int getSyncSpinLoops() {
return syncSpinLoops;
}
public void setSyncSpinLoops(int syncSpinLoops) {
this.syncSpinLoops = syncSpinLoops;
}
public boolean isPrintVerboseLog() {
return printVerboseLog;
}
public void setPrintVerboseLog(boolean printVerboseLog) {
this.printVerboseLog = printVerboseLog;
}
public boolean isStatusFileEnabled() {
return statusFileEnabled;
}
public void setStatusFileEnabled(boolean statusFileEnabled) {
this.statusFileEnabled = statusFileEnabled;
}
public boolean isSysMallocEnabled() {
return sysMallocEnabled;
}
public void setSysMallocEnabled(boolean sysMallocEnabled) {
this.sysMallocEnabled = sysMallocEnabled;
}
public boolean isRollbackOnTimeoutEnabled() {
return rollbackOnTimeoutEnabled;
}
public void setRollbackOnTimeoutEnabled(boolean rollbackOnTimeoutEnabled) {
this.rollbackOnTimeoutEnabled = rollbackOnTimeoutEnabled;
}
public DatabaseConfiguration() {
}
public enum LogFlushMode {
ONCE_PER_SECOND(0), AT_TRX_COMMIT_SYNC(1), AT_TRX_COMMIT_NOSYNC(2);
private final int code;
private LogFlushMode(int code) {
this.code = code;
}
public int getCode() {
return code;
}
public LogFlushMode fromCode(int code) {
return LogFlushMode.values()[code];
}
}
public enum FlushMethod {
FSYNC("fsync"), O_DIRECT("O_DIRECT"), O_DSYNC("O_DSYNC");
private final String code;
private FlushMethod(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public FlushMethod fromCode(String code) {
return FlushMethod.valueOf(code.toUpperCase());
}
}
public enum FileFormat {
ANTELOPE("antelope"), BARRACUDA("barracuda");
private final String code;
private FileFormat(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public FileFormat fromCode(String code) {
return FileFormat.valueOf(code.toUpperCase());
}
}
public enum RecoveryMethod {
NONE(0), FORCE_RECOVERY(1), DISABLE_MASTER(2), NO_ROLLBACK_INCOMPLETE(3), DISABLE_INSERT_BUFFER_MERGE(
4), DISABLE_UNDO_LOG(5), DISABLE_REDO_LOG(6);
private final int code;
private RecoveryMethod(int code) {
this.code = code;
}
public int getCode() {
return code;
}
public RecoveryMethod fromCode(int code) {
return RecoveryMethod.values()[code - 1];
}
}
}