package com.brightgenerous.orm.mapper; import java.io.Serializable; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import com.brightgenerous.commons.EqualsUtils; import com.brightgenerous.commons.HashCodeUtils; import com.brightgenerous.commons.ToStringUtils; import com.brightgenerous.lang.Args; public class Register implements Serializable { private static final long serialVersionUID = 5665322575628042798L; private final Map<String, TableMapper> tableMappers; private final Set<Class<?>> types; private FieldToColumnCase fieldToSnakeColumn; private boolean checkStrict; public Register() { tableMappers = new HashMap<>(); types = new HashSet<>(); fieldToSnakeColumn = FieldToColumnCase.SNAKE_NUMBER; checkStrict = true; } public Map<String, TableMapper> getTableMappers() { return tableMappers; } public Map<Class<?>, String> getTargetTables() { Map<Class<?>, String> ret = new HashMap<>(); for (TableMapper tm : tableMappers.values()) { if (!tm.isAlias()) { ret.put(tm.getBeanClass(), tm.getTable()); } } return ret; } public TableMapper getTableMapper(String table) { Args.notNull(table, "table"); return tableMappers.get(table); } public TableMapper putTableMapper(String table, TableMapper tableMapper) { Args.notNull(tableMapper, "tableMapper"); return tableMappers.put(table, tableMapper); } public Set<Class<?>> getTypes() { return types; } public Register addType(Class<?> type) { Args.notNull(type, "type"); types.add(type); return this; } public FieldToColumnCase fieldToSnakeColumn() { return fieldToSnakeColumn; } public Register fieldToSnakeColumn(FieldToColumnCase fieldToSnakeColumn) { if (fieldToSnakeColumn == null) { fieldToSnakeColumn = FieldToColumnCase.NONE; } this.fieldToSnakeColumn = fieldToSnakeColumn; return this; } public boolean checkStrict() { return checkStrict; } public Register checkStrict(boolean checkStrict) { this.checkStrict = checkStrict; return this; } @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(); } }