package com.brightgenerous.injection.mybatis.guice;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import org.apache.ibatis.session.AutoMappingBehavior;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.LocalCacheScope;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.type.TypeHandler;
import com.brightgenerous.commons.EqualsUtils;
import com.brightgenerous.commons.HashCodeUtils;
import com.brightgenerous.commons.ToStringUtils;
public class InjectorConfig extends com.brightgenerous.injection.InjectorConfig {
private static final long serialVersionUID = -7277196035686329629L;
private Class<? extends TransactionFactory> transactionFactoryType;
private String environmentId;
private Boolean cacheEnabled;
private Boolean lazyLoadingEnabled;
private Boolean aggressiveLazyLoading;
private Boolean multipleResultSetsEnabled;
private Boolean useColumnLabel;
private Boolean useGeneratedKeys;
private AutoMappingBehavior autoMappingBehavior;
private ExecutorType defaultExecutorType;
private Boolean mapUnderscoreToCamelCase;
private LocalCacheScope localCacheScope;
private Boolean failFast;
private Collection<Class<? extends TypeHandler<?>>> typeHandlerClasses;
// for serialize
private void writeObject(ObjectOutputStream stream) throws IOException {
if ((typeHandlerClasses != null) && !(typeHandlerClasses instanceof Serializable)) {
typeHandlerClasses = new ArrayList<>(typeHandlerClasses); // to java.io.Serializable
}
stream.defaultWriteObject();
}
public Class<? extends TransactionFactory> getTransactionFactoryType() {
return transactionFactoryType;
}
public void setTransactionFactoryType(Class<? extends TransactionFactory> transactionFactoryType) {
this.transactionFactoryType = transactionFactoryType;
}
public String getEnvironmentId() {
return environmentId;
}
public void setEnvironmentId(String environmentId) {
this.environmentId = environmentId;
}
public Boolean getCacheEnabled() {
return cacheEnabled;
}
public void setCacheEnabled(boolean cacheEnabled) {
setCacheEnabled(cacheEnabled ? Boolean.TRUE : Boolean.FALSE);
}
public void setCacheEnabled(Boolean cacheEnabled) {
this.cacheEnabled = cacheEnabled;
}
public Boolean getLazyLoadingEnabled() {
return lazyLoadingEnabled;
}
public void setLazyLoadingEnabled(boolean lazyLoadingEnabled) {
setLazyLoadingEnabled(lazyLoadingEnabled ? Boolean.TRUE : Boolean.FALSE);
}
public void setLazyLoadingEnabled(Boolean lazyLoadingEnabled) {
this.lazyLoadingEnabled = lazyLoadingEnabled;
}
public Boolean getAggressiveLazyLoading() {
return aggressiveLazyLoading;
}
public void setAggressiveLazyLoading(boolean aggressiveLazyLoading) {
setAggressiveLazyLoading(aggressiveLazyLoading ? Boolean.TRUE : Boolean.FALSE);
}
public void setAggressiveLazyLoading(Boolean aggressiveLazyLoading) {
this.aggressiveLazyLoading = aggressiveLazyLoading;
}
public Boolean getMultipleResultSetsEnabled() {
return multipleResultSetsEnabled;
}
public void setMultipleResultSetsEnabled(boolean multipleResultSetsEnabled) {
setMultipleResultSetsEnabled(multipleResultSetsEnabled ? Boolean.TRUE : Boolean.FALSE);
}
public void setMultipleResultSetsEnabled(Boolean multipleResultSetsEnabled) {
this.multipleResultSetsEnabled = multipleResultSetsEnabled;
}
public Boolean getUseColumnLabel() {
return useColumnLabel;
}
public void setUseColumnLabel(boolean useColumnLabel) {
setUseColumnLabel(useColumnLabel ? Boolean.TRUE : Boolean.FALSE);
}
public void setUseColumnLabel(Boolean useColumnLabel) {
this.useColumnLabel = useColumnLabel;
}
public Boolean getUseGeneratedKeys() {
return useGeneratedKeys;
}
public void setUseGeneratedKeys(boolean useGeneratedKeys) {
setUseGeneratedKeys(useGeneratedKeys ? Boolean.TRUE : Boolean.FALSE);
}
public void setUseGeneratedKeys(Boolean useGeneratedKeys) {
this.useGeneratedKeys = useGeneratedKeys;
}
public AutoMappingBehavior getAutoMappingBehavior() {
return autoMappingBehavior;
}
public void setAutoMappingBehavior(AutoMappingBehavior autoMappingBehavior) {
this.autoMappingBehavior = autoMappingBehavior;
}
public ExecutorType getDefaultExecutorType() {
return defaultExecutorType;
}
public void setDefaultExecutorType(ExecutorType defaultExecutorType) {
this.defaultExecutorType = defaultExecutorType;
}
public Boolean getMapUnderscoreToCamelCase() {
return mapUnderscoreToCamelCase;
}
public void setMapUnderscoreToCamelCase(boolean mapUnderscoreToCamelCase) {
setMapUnderscoreToCamelCase(mapUnderscoreToCamelCase ? Boolean.TRUE : Boolean.FALSE);
}
public void setMapUnderscoreToCamelCase(Boolean mapUnderscoreToCamelCase) {
this.mapUnderscoreToCamelCase = mapUnderscoreToCamelCase;
}
public LocalCacheScope getLocalCacheScope() {
return localCacheScope;
}
public void setLocalCacheScope(LocalCacheScope localCacheScope) {
this.localCacheScope = localCacheScope;
}
public Boolean getFailFast() {
return failFast;
}
public void setFailFast(boolean failFast) {
setFailFast(failFast ? Boolean.TRUE : Boolean.FALSE);
}
public void setFailFast(Boolean failFast) {
this.failFast = failFast;
}
public Collection<Class<? extends TypeHandler<?>>> getTypeHandlerClasses() {
return typeHandlerClasses;
}
public void setTypeHandlerClasses(Class<? extends TypeHandler<?>>... typeHandlerClasses) {
this.typeHandlerClasses = Arrays.asList(typeHandlerClasses);
}
public void setTypeHandlerClasses(Collection<Class<? extends TypeHandler<?>>> typeHandlerClasses) {
this.typeHandlerClasses = typeHandlerClasses;
}
@Override
public int hashCode() {
if (HashCodeUtils.resolved()) {
return HashCodeUtils.hashCodeAlt(null, this);
}
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
if (EqualsUtils.resolved()) {
return EqualsUtils.equalsAlt(null, this, obj);
}
return super.equals(obj);
}
@Override
public String toString() {
if (ToStringUtils.resolved()) {
return ToStringUtils.toStringAlt(this);
}
return super.toString();
}
}