From 92665ebc3be22415621be8e423840eab15af20cd Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Mon, 29 Aug 2016 21:06:31 +1200 Subject: [PATCH] Refactor - tidy of DefaultSqlRow - no logical change --- .../server/query/DefaultSqlRow.java | 57 ++++++++----------- .../server/query/DefaultSqlRowTest.java | 22 +++++++ 2 files changed, 45 insertions(+), 34 deletions(-) create mode 100644 src/test/java/com/avaje/ebeaninternal/server/query/DefaultSqlRowTest.java diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/DefaultSqlRow.java b/src/main/java/com/avaje/ebeaninternal/server/query/DefaultSqlRow.java index 65cf877d7..80e7e8ff6 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/DefaultSqlRow.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/DefaultSqlRow.java @@ -38,7 +38,7 @@ public class DefaultSqlRow implements SqlRow { /** * The underlying map of property data. */ - final Map map; + private final Map map; /** * Create with an initialCapacity and loadFactor. @@ -59,14 +59,19 @@ public class DefaultSqlRow implements SqlRow { return map.keySet().iterator(); } + /** + * Keys internally always lower cased to take out differences in database dictionaries. + */ + private Object asKey(Object name) { + return ((String) name).toLowerCase(); + } + public Object remove(Object name) { - name = ((String) name).toLowerCase(); - return map.remove(name); + return map.remove(asKey(name)); } public Object get(Object name) { - name = ((String) name).toLowerCase(); - return map.get(name); + return map.get(asKey(name)); } public Object put(String name, Object value) { @@ -78,66 +83,51 @@ public class DefaultSqlRow implements SqlRow { } private Object setInternal(String name, Object newValue) { - // MapBean properties are always lowercase - name = name.toLowerCase(); - - // valueList = null; - return map.put(name, newValue); + return map.put(name.toLowerCase(), newValue); } public UUID getUUID(String name) { - Object val = get(name); - return BasicTypeConverter.toUUID(val); + return BasicTypeConverter.toUUID(get(name)); } public Boolean getBoolean(String name) { - Object val = get(name); - return BasicTypeConverter.toBoolean(val, dbTrueValue); + return BasicTypeConverter.toBoolean(get(name), dbTrueValue); } public Integer getInteger(String name) { - Object val = get(name); - return BasicTypeConverter.toInteger(val); + return BasicTypeConverter.toInteger(get(name)); } public BigDecimal getBigDecimal(String name) { - Object val = get(name); - return BasicTypeConverter.toBigDecimal(val); + return BasicTypeConverter.toBigDecimal(get(name)); } public Long getLong(String name) { - Object val = get(name); - return BasicTypeConverter.toLong(val); + return BasicTypeConverter.toLong(get(name)); } public Double getDouble(String name) { - Object val = get(name); - return BasicTypeConverter.toDouble(val); + return BasicTypeConverter.toDouble(get(name)); } public Float getFloat(String name) { - Object val = get(name); - return BasicTypeConverter.toFloat(val); + return BasicTypeConverter.toFloat(get(name)); } public String getString(String name) { - Object val = get(name); - return BasicTypeConverter.toString(val); + return BasicTypeConverter.toString(get(name)); } public java.util.Date getUtilDate(String name) { - Object val = get(name); - return BasicTypeConverter.toUtilDate(val); + return BasicTypeConverter.toUtilDate(get(name)); } public Date getDate(String name) { - Object val = get(name); - return BasicTypeConverter.toDate(val); + return BasicTypeConverter.toDate(get(name)); } public Timestamp getTimestamp(String name) { - Object val = get(name); - return BasicTypeConverter.toTimestamp(val); + return BasicTypeConverter.toTimestamp(get(name)); } public String toString() { @@ -152,8 +142,7 @@ public class DefaultSqlRow implements SqlRow { } public boolean containsKey(Object key) { - key = ((String) key).toLowerCase(); - return map.containsKey(key); + return map.containsKey(asKey(key)); } public boolean containsValue(Object value) { diff --git a/src/test/java/com/avaje/ebeaninternal/server/query/DefaultSqlRowTest.java b/src/test/java/com/avaje/ebeaninternal/server/query/DefaultSqlRowTest.java new file mode 100644 index 000000000..45848dbf2 --- /dev/null +++ b/src/test/java/com/avaje/ebeaninternal/server/query/DefaultSqlRowTest.java @@ -0,0 +1,22 @@ +package com.avaje.ebeaninternal.server.query; + +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DefaultSqlRowTest { + + @Test + public void test_keyConversion() { + + DefaultSqlRow row = new DefaultSqlRow(16, 0.5f, "T"); + row.put("Foo", "hello"); + + assertThat(row.containsKey("foo")).isTrue(); + assertThat(row.getString("foo")).isEqualTo("hello"); + assertThat(row.get("foo")).isEqualTo("hello"); + + row.remove("foo"); + assertThat(row.isEmpty()).isTrue(); + } +} \ No newline at end of file