From 6d2ed0c782cda2c69a459df65de83143b473082e Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Wed, 28 Apr 2021 23:32:14 +0200 Subject: [PATCH 01/13] Add script to start database docker container --- start_mariadb_test_server.sh | 1 + 1 file changed, 1 insertion(+) create mode 100644 start_mariadb_test_server.sh diff --git a/start_mariadb_test_server.sh b/start_mariadb_test_server.sh new file mode 100644 index 0000000..23e4b97 --- /dev/null +++ b/start_mariadb_test_server.sh @@ -0,0 +1 @@ +docker run -p 3306:3306 -e MYSQL_DATABASE=ormtest -e MYSQL_ROOT_PASSWORD=testpassword -d mariadb:10.5.9 \ No newline at end of file From 5c11dbe8281a29d273ff0e895fb072e594ed3628 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Wed, 28 Apr 2021 23:36:14 +0200 Subject: [PATCH 02/13] Fill OnlyIdModel --- .../orm/test/shared/models/OnlyIdModel.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/test/java/org/javawebstack/orm/test/shared/models/OnlyIdModel.java b/src/test/java/org/javawebstack/orm/test/shared/models/OnlyIdModel.java index e69de29..efc4b35 100644 --- a/src/test/java/org/javawebstack/orm/test/shared/models/OnlyIdModel.java +++ b/src/test/java/org/javawebstack/orm/test/shared/models/OnlyIdModel.java @@ -0,0 +1,11 @@ +package org.javawebstack.orm.test.shared.models; + +import org.javawebstack.orm.Model; +import org.javawebstack.orm.annotation.Column; + +public class OnlyIdModel extends Model { + + @Column + int id; + +} From a770745c8465177d0d4383eaf4e892ace60930a3 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Wed, 28 Apr 2021 23:46:52 +0200 Subject: [PATCH 03/13] Add Getter to OnlyIdModel --- .../org/javawebstack/orm/test/shared/models/OnlyIdModel.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/org/javawebstack/orm/test/shared/models/OnlyIdModel.java b/src/test/java/org/javawebstack/orm/test/shared/models/OnlyIdModel.java index efc4b35..9579265 100644 --- a/src/test/java/org/javawebstack/orm/test/shared/models/OnlyIdModel.java +++ b/src/test/java/org/javawebstack/orm/test/shared/models/OnlyIdModel.java @@ -1,8 +1,10 @@ package org.javawebstack.orm.test.shared.models; +import lombok.Getter; import org.javawebstack.orm.Model; import org.javawebstack.orm.annotation.Column; +@Getter public class OnlyIdModel extends Model { @Column From 2c5365c0e837c1e26cbda0bd0f64cc26a48209ca Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Wed, 28 Apr 2021 23:47:05 +0200 Subject: [PATCH 04/13] Add order by query execution test --- .../orm/test/queryexecution/OrderByTest.java | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/test/java/org/javawebstack/orm/test/queryexecution/OrderByTest.java diff --git a/src/test/java/org/javawebstack/orm/test/queryexecution/OrderByTest.java b/src/test/java/org/javawebstack/orm/test/queryexecution/OrderByTest.java new file mode 100644 index 0000000..cdc223a --- /dev/null +++ b/src/test/java/org/javawebstack/orm/test/queryexecution/OrderByTest.java @@ -0,0 +1,69 @@ +package org.javawebstack.orm.test.queryexecution; + +import org.javawebstack.orm.ORM; +import org.javawebstack.orm.Repo; +import org.javawebstack.orm.test.ORMTestCase; +import org.javawebstack.orm.test.shared.models.OnlyIdModel; +import org.javawebstack.orm.test.shared.setup.ModelSetup; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class OrderByTest extends ORMTestCase { + + @Test + void testOrderByCanPullResults() { + ModelSetup.setUpModel(OnlyIdModel.class); + ORM.autoMigrate(true); + + new OnlyIdModel().save(); + new OnlyIdModel().save(); + new OnlyIdModel().save(); + + assertDoesNotThrow(() -> Repo.get(OnlyIdModel.class) + .query() + .order("id") + .get() + ); + } + + @Test + void testOrderByWorksWithAsc() { + ModelSetup.setUpModel(OnlyIdModel.class); + ORM.autoMigrate(true); + + new OnlyIdModel().save(); + new OnlyIdModel().save(); + new OnlyIdModel().save(); + + List orderedList = Repo.get(OnlyIdModel.class) + .query() + .order("id", false) + .get(); + + for(int i = 1; i <= 3; i++) { + assertEquals(i, orderedList.get(i - 1).getId()); + } + } + + @Test + void testOrderByWorksWithDesc() { + ModelSetup.setUpModel(OnlyIdModel.class); + ORM.autoMigrate(true); + + new OnlyIdModel().save(); + new OnlyIdModel().save(); + new OnlyIdModel().save(); + + List orderedList = Repo.get(OnlyIdModel.class) + .query() + .order("id", true) + .get(); + + for(int i = 3; i >= 1; i--) { + assertEquals(i, orderedList.get(3 - i).getId()); + } + } +} From d464bc9d20da8d46559bae94acd199aba3b1f6e6 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Thu, 29 Apr 2021 00:22:42 +0200 Subject: [PATCH 05/13] Change query building tests appropriately --- .../test/querybuilding/OrderByClauseTest.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java index d411536..1998364 100644 --- a/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java @@ -21,50 +21,50 @@ public class OrderByClauseTest { @Test void testOneExistingColumnDefaultOrderBy() { Query query = setUpModel(Datatype.class).query() - .order("wrapper_integer"); + .order("wrapperInteger"); new QueryVerification(query).assertSectionEquals("ORDER BY", "`wrapper_integer`"); } @Test void testOneNonExistingColumnDefaultOrderBy() { Query query = setUpModel(Datatype.class).query() - .order("does_not_exist"); + .order("doesNotExist"); new QueryVerification(query).assertSectionEquals("ORDER BY", "`does_not_exist`"); } @Test void testOneExistingColumnASCOrderBy() { Query query = setUpModel(Datatype.class).query() - .order("wrapper_integer", false); + .order("wrapperInteger", false); new QueryVerification(query).assertSectionEquals("ORDER BY", "`wrapper_integer`"); } @Test void testOneNonExistingColumnASCOrderBy() { Query query = setUpModel(Datatype.class).query() - .order("does_not_exist", false); + .order("doesNotExist", false); new QueryVerification(query).assertSectionEquals("ORDER BY", "`does_not_exist`"); } @Test void testOneExistingColumnDESCOrderBy() { Query query = setUpModel(Datatype.class).query() - .order("wrapper_integer", true); + .order("wrapperInteger", true); new QueryVerification(query).assertSectionEquals("ORDER BY", "`wrapper_integer` DESC"); } @Test void testOneNonExistingColumnDESCOrderBy() { Query query = setUpModel(Datatype.class).query() - .order("does_not_exist", true); + .order("doesNotExist", true); new QueryVerification(query).assertSectionEquals("ORDER BY", "`does_not_exist` DESC"); } @Test void testMultipleOrderByClausesOfASCOrder() { Query query = setUpModel(Datatype.class).query() - .order("wrapper_integer") - .order("primitive_integer"); + .order("wrapperInteger") + .order("primitiveInteger"); new QueryVerification(query) .assertSectionContains("ORDER BY", "`wrapper_integer`") @@ -74,8 +74,8 @@ void testMultipleOrderByClausesOfASCOrder() { @Test void testMultipleOrderByClausesOfDESCOrder() { Query query = setUpModel(Datatype.class).query() - .order("wrapper_integer", true) - .order("primitive_integer", true); + .order("wrapperInteger", true) + .order("primitiveInteger", true); new QueryVerification(query) .assertSectionContains("ORDER BY", "`wrapper_integer` DESC") @@ -85,8 +85,8 @@ void testMultipleOrderByClausesOfDESCOrder() { @Test void testMultipleOrderByClausesOfMixedOrder() { Query query = setUpModel(Datatype.class).query() - .order("wrapper_integer", false) - .order("primitive_integer", true); + .order("wrapperInteger", false) + .order("primitiveInteger", true); new QueryVerification(query) .assertSectionContains("ORDER BY", "`wrapper_integer`") @@ -96,8 +96,8 @@ void testMultipleOrderByClausesOfMixedOrder() { @Test void testMultipleOrderByClausesOfMixedOrderReversed() { Query query = setUpModel(Datatype.class).query() - .order("primitive_integer", true) - .order("wrapper_integer", false); + .order("primitiveInteger", true) + .order("wrapperInteger", false); new QueryVerification(query) .assertSectionContains("ORDER BY", "`primitive_integer` DESC") @@ -108,6 +108,7 @@ void testMultipleOrderByClausesOfMixedOrderReversed() { @Test // This test is important because putting the order by statements in different order is relevant (they set priorities) void testMultipleOrderByClausesOfRandomOrderForCorrectOrder() throws SectionIndexOutOfBoundException { + // This test does not use camel cases as input Query query = setUpModel(Datatype.class).query(); ArrayList columnNames = new ArrayList<>(Datatype.columnNames); @@ -149,8 +150,8 @@ void testMultipleOrderByClausesOfRandomOrderForCorrectOrder() throws SectionInde @Test void testCannotCallOrderOnSameColumnTwice() { Query query = setUpModel(Datatype.class).query() - .order("primitive_integer", true); + .order("primitiveInteger", true); - assertThrows(ORMQueryException.class, () -> query.order("primitive_integer")); + assertThrows(ORMQueryException.class, () -> query.order("primitiveInteger")); } } From 1e9baf49c0d95c7d7d58aa55bce3d453f674c4d9 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Thu, 29 Apr 2021 00:23:35 +0200 Subject: [PATCH 06/13] Fix minor issues --- .../orm/test/querybuilding/OrderByClauseTest.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java index 1998364..c29f6c2 100644 --- a/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java @@ -6,17 +6,12 @@ import org.javawebstack.orm.test.shared.models.Datatype; import org.javawebstack.orm.test.shared.verification.QueryVerification; import org.junit.jupiter.api.Test; - -import javax.xml.crypto.Data; - import java.util.*; -import java.util.stream.Collectors; - import static org.javawebstack.orm.test.shared.setup.ModelSetup.setUpModel; import static org.junit.jupiter.api.Assertions.*; // This class tests the query generation for order by statements an MySQL -public class OrderByClauseTest { +class OrderByClauseTest { @Test void testOneExistingColumnDefaultOrderBy() { @@ -122,7 +117,7 @@ void testMultipleOrderByClausesOfRandomOrderForCorrectOrder() throws SectionInde String queryString = new QueryVerification(query).getSection("ORDER BY"); int lastIndex = 0; - int foundIndex = -1; + int foundIndex; for (String nextInCallOrder : callOrder) { foundIndex = queryString.indexOf("`" + nextInCallOrder + "`"); if(foundIndex < lastIndex) { From 335f6335763985b35941a80b585a3e08ac12d51c Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Thu, 29 Apr 2021 00:38:24 +0200 Subject: [PATCH 07/13] Convert column names to snake case --- src/main/java/org/javawebstack/orm/query/QueryColumn.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/javawebstack/orm/query/QueryColumn.java b/src/main/java/org/javawebstack/orm/query/QueryColumn.java index 651c19d..9155683 100644 --- a/src/main/java/org/javawebstack/orm/query/QueryColumn.java +++ b/src/main/java/org/javawebstack/orm/query/QueryColumn.java @@ -2,6 +2,7 @@ import org.javawebstack.orm.TableInfo; import org.javawebstack.orm.exception.ORMQueryException; +import org.javawebstack.orm.util.Helper; import java.util.Arrays; import java.util.Objects; @@ -41,7 +42,7 @@ public String toString() { public String toString(TableInfo info) { if (raw) return name; - return Arrays.stream((info != null ? info.getColumnName(name) : name).split("\\.")).map(s -> "`" + s + "`").collect(Collectors.joining(".")); + return Arrays.stream((info != null ? info.getColumnName(Helper.toSnakeCase(name)) : Helper.toSnakeCase(name)).split("\\.")).map(s -> "`" + s + "`").collect(Collectors.joining(".")); } private static void validateName(String name) { From f52c9e334157ea1c139a2d671c39a4a137cd05c0 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Fri, 30 Apr 2021 15:38:27 +0200 Subject: [PATCH 08/13] Revert "Convert column names to snake case" This reverts commit 335f6335763985b35941a80b585a3e08ac12d51c. --- src/main/java/org/javawebstack/orm/query/QueryColumn.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/javawebstack/orm/query/QueryColumn.java b/src/main/java/org/javawebstack/orm/query/QueryColumn.java index 9155683..651c19d 100644 --- a/src/main/java/org/javawebstack/orm/query/QueryColumn.java +++ b/src/main/java/org/javawebstack/orm/query/QueryColumn.java @@ -2,7 +2,6 @@ import org.javawebstack.orm.TableInfo; import org.javawebstack.orm.exception.ORMQueryException; -import org.javawebstack.orm.util.Helper; import java.util.Arrays; import java.util.Objects; @@ -42,7 +41,7 @@ public String toString() { public String toString(TableInfo info) { if (raw) return name; - return Arrays.stream((info != null ? info.getColumnName(Helper.toSnakeCase(name)) : Helper.toSnakeCase(name)).split("\\.")).map(s -> "`" + s + "`").collect(Collectors.joining(".")); + return Arrays.stream((info != null ? info.getColumnName(name) : name).split("\\.")).map(s -> "`" + s + "`").collect(Collectors.joining(".")); } private static void validateName(String name) { From 09dcc4c382f8d7d6b8805e54b3af7aacf736f7bd Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Fri, 30 Apr 2021 15:45:21 +0200 Subject: [PATCH 09/13] Correct spelling mistake in class name --- .../javawebstack/orm/test/querybuilding/FromClauseTest.java | 3 +-- .../{OverwritteTableName.java => OverwrittenTableName.java} | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) rename src/test/java/org/javawebstack/orm/test/shared/models/tablenames/{OverwritteTableName.java => OverwrittenTableName.java} (87%) diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/FromClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/FromClauseTest.java index c24faf9..0963e9b 100644 --- a/src/test/java/org/javawebstack/orm/test/querybuilding/FromClauseTest.java +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/FromClauseTest.java @@ -1,6 +1,5 @@ package org.javawebstack.orm.test.querybuilding; -import org.atteo.evo.inflector.English; import org.javawebstack.orm.Model; import org.javawebstack.orm.ORM; import org.javawebstack.orm.Repo; @@ -55,7 +54,7 @@ void testOneWordAlreadyInPluralDoesntWork() throws ORMConfigurationException { @Test void testOverwrittenTableName() throws ORMConfigurationException { - String query = getBaseQuery(OverwritteTableName.class); + String query = getBaseQuery(OverwrittenTableName.class); assertTrue(query.contains("FROM `oVer_writtenValue`")); } diff --git a/src/test/java/org/javawebstack/orm/test/shared/models/tablenames/OverwritteTableName.java b/src/test/java/org/javawebstack/orm/test/shared/models/tablenames/OverwrittenTableName.java similarity index 87% rename from src/test/java/org/javawebstack/orm/test/shared/models/tablenames/OverwritteTableName.java rename to src/test/java/org/javawebstack/orm/test/shared/models/tablenames/OverwrittenTableName.java index 7b4413b..a1d139e 100644 --- a/src/test/java/org/javawebstack/orm/test/shared/models/tablenames/OverwritteTableName.java +++ b/src/test/java/org/javawebstack/orm/test/shared/models/tablenames/OverwrittenTableName.java @@ -8,7 +8,7 @@ * This class overwrites the model name to a seemingly random word to test multiple cases at once. */ @Table("oVer_writtenValue") -public class OverwritteTableName extends Model { +public class OverwrittenTableName extends Model { @Column int id; } From e625333b5beb44181d4d9a50e1508f23a7a68bb5 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Fri, 30 Apr 2021 16:01:13 +0200 Subject: [PATCH 10/13] Add test for overwritten column names --- .../orm/test/querybuilding/OrderByClauseTest.java | 7 +++++++ .../models/columnnames/OverwrittenColumnName.java | 12 ++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/test/java/org/javawebstack/orm/test/shared/models/columnnames/OverwrittenColumnName.java diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java index c29f6c2..2db6476 100644 --- a/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java @@ -137,6 +137,13 @@ void testMultipleOrderByClausesOfRandomOrderForCorrectOrder() throws SectionInde } + @Test + void testWillUseOverwrittenColumnName() { + Query query = setUpModel(OverwrittenColumnName.class).query() + .order("dummyString"); + new QueryVerification(query).assertSectionEquals("ORDER BY", "`oVer_writtenColumn-name`"); + } + /* * Error Cases */ diff --git a/src/test/java/org/javawebstack/orm/test/shared/models/columnnames/OverwrittenColumnName.java b/src/test/java/org/javawebstack/orm/test/shared/models/columnnames/OverwrittenColumnName.java new file mode 100644 index 0000000..d4608e6 --- /dev/null +++ b/src/test/java/org/javawebstack/orm/test/shared/models/columnnames/OverwrittenColumnName.java @@ -0,0 +1,12 @@ +package org.javawebstack.orm.test.shared.models.columnnames; + +import org.javawebstack.orm.Model; +import org.javawebstack.orm.annotation.Column; + +public class OverwrittenColumnName extends Model { + @Column + int id; + + @Column(name = "oVer_writtenColumn-name") + String dummyString; +} From 2e3515569e128021ff1e5eabcd6324a4dcadeaf5 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Fri, 30 Apr 2021 16:01:39 +0200 Subject: [PATCH 11/13] Adjust tests to reflect non snake case of non existant columns --- .../orm/test/querybuilding/OrderByClauseTest.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java b/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java index 2db6476..d3aadb2 100644 --- a/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java +++ b/src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java @@ -4,6 +4,7 @@ import org.javawebstack.orm.query.Query; import org.javawebstack.orm.test.exception.SectionIndexOutOfBoundException; import org.javawebstack.orm.test.shared.models.Datatype; +import org.javawebstack.orm.test.shared.models.columnnames.OverwrittenColumnName; import org.javawebstack.orm.test.shared.verification.QueryVerification; import org.junit.jupiter.api.Test; import java.util.*; @@ -24,7 +25,9 @@ void testOneExistingColumnDefaultOrderBy() { void testOneNonExistingColumnDefaultOrderBy() { Query query = setUpModel(Datatype.class).query() .order("doesNotExist"); - new QueryVerification(query).assertSectionEquals("ORDER BY", "`does_not_exist`"); + + // Not in snake case as it is not in the mapping + new QueryVerification(query).assertSectionEquals("ORDER BY", "`doesNotExist`"); } @Test @@ -38,7 +41,9 @@ void testOneExistingColumnASCOrderBy() { void testOneNonExistingColumnASCOrderBy() { Query query = setUpModel(Datatype.class).query() .order("doesNotExist", false); - new QueryVerification(query).assertSectionEquals("ORDER BY", "`does_not_exist`"); + + // Not in snake case as it is not in the mapping + new QueryVerification(query).assertSectionEquals("ORDER BY", "`doesNotExist`"); } @Test @@ -52,7 +57,8 @@ void testOneExistingColumnDESCOrderBy() { void testOneNonExistingColumnDESCOrderBy() { Query query = setUpModel(Datatype.class).query() .order("doesNotExist", true); - new QueryVerification(query).assertSectionEquals("ORDER BY", "`does_not_exist` DESC"); + // Not in snake case as it is not in the mapping + new QueryVerification(query).assertSectionEquals("ORDER BY", "`doesNotExist` DESC"); } @Test From 15db24b432863cf4054f9e32b049e451884e26b9 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Fri, 30 Apr 2021 16:02:52 +0200 Subject: [PATCH 12/13] Fix order by naming bug --- src/main/java/org/javawebstack/orm/query/QueryOrderBy.java | 2 +- .../orm/wrapper/builder/MySQLQueryStringBuilder.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/javawebstack/orm/query/QueryOrderBy.java b/src/main/java/org/javawebstack/orm/query/QueryOrderBy.java index 7cc6e24..f741993 100644 --- a/src/main/java/org/javawebstack/orm/query/QueryOrderBy.java +++ b/src/main/java/org/javawebstack/orm/query/QueryOrderBy.java @@ -64,7 +64,7 @@ public String toString() { public String toString(TableInfo info) { return this.stream() - .map(QueryOrderByElement::toString) + .map((singleOrderByElement) -> singleOrderByElement.toString(info)) .collect(Collectors.joining(",")); } } diff --git a/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java b/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java index 3b1faef..6bc6588 100644 --- a/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java +++ b/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java @@ -54,7 +54,7 @@ public SQLQueryString buildQuery(Query query, boolean count) { QueryOrderBy orderBy = query.getOrder(); if (!orderBy.isEmpty()) { sb.append(" ORDER BY ") - .append(orderBy.toString()); + .append(orderBy.toString(repo.getInfo())); } Integer offset = query.getOffset(); From 912bd78c859f52209294564239399ac6e838fe40 Mon Sep 17 00:00:00 2001 From: TimothyGillespie Date: Fri, 30 Apr 2021 16:08:26 +0200 Subject: [PATCH 13/13] Address sonar cube concerns --- .../org/javawebstack/orm/query/QueryOrderBy.java | 2 +- .../wrapper/builder/MySQLQueryStringBuilder.java | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/javawebstack/orm/query/QueryOrderBy.java b/src/main/java/org/javawebstack/orm/query/QueryOrderBy.java index f741993..a58925c 100644 --- a/src/main/java/org/javawebstack/orm/query/QueryOrderBy.java +++ b/src/main/java/org/javawebstack/orm/query/QueryOrderBy.java @@ -64,7 +64,7 @@ public String toString() { public String toString(TableInfo info) { return this.stream() - .map((singleOrderByElement) -> singleOrderByElement.toString(info)) + .map(singleOrderByElement -> singleOrderByElement.toString(info)) .collect(Collectors.joining(",")); } } diff --git a/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java b/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java index 6bc6588..5e85191 100644 --- a/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java +++ b/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java @@ -5,7 +5,6 @@ import org.javawebstack.orm.TableInfo; import org.javawebstack.orm.query.*; -import java.lang.reflect.Field; import java.sql.Timestamp; import java.time.Instant; import java.util.*; @@ -23,10 +22,10 @@ public SQLQueryString buildInsert(TableInfo info, Map values) { sb.append("` ("); List cols = new ArrayList<>(); List vals = new ArrayList<>(); - for (String columnName : values.keySet()) { - cols.add("`" + columnName + "`"); + for (Map.Entry columnValueMapping : values.entrySet()) { + cols.add("`" + columnValueMapping.getKey() + "`"); vals.add("?"); - params.add(values.get(columnName)); + params.add(columnValueMapping.getValue()); } sb.append(String.join(",", cols)); sb.append(") VALUES ("); @@ -45,7 +44,7 @@ public SQLQueryString buildQuery(Query query, boolean count) { .append('`'); QueryGroup where = query.getWhereGroup(); checkWithDeleted(repo, query.isWithDeleted(), where); - if (where.getQueryElements().size() > 0) { + if (!where.getQueryElements().isEmpty()) { SQLQueryString qs = convertGroup(repo.getInfo(), where); sb.append(" WHERE ").append(qs.getQuery()); parameters.addAll(qs.getParameters()); @@ -88,7 +87,7 @@ public SQLQueryString buildUpdate(Query query, Map values) { .append(String.join(",", sets)); QueryGroup where = query.getWhereGroup(); checkWithDeleted(repo, query.isWithDeleted(), where); - if (where.getQueryElements().size() > 0) { + if (!where.getQueryElements().isEmpty()) { SQLQueryString qs = convertGroup(repo.getInfo(), where); sb.append(" WHERE ").append(qs.getQuery()); parameters.addAll(qs.getParameters()); @@ -104,7 +103,7 @@ public SQLQueryString buildDelete(Query query) { StringBuilder sb = new StringBuilder("DELETE FROM `") .append(repo.getInfo().getTableName()) .append('`'); - if (where.getQueryElements().size() > 0) { + if (!where.getQueryElements().isEmpty()) { SQLQueryString qs = convertGroup(repo.getInfo(), where); sb.append(" WHERE ").append(qs.getQuery()); parameters = qs.getParameters(); @@ -114,7 +113,7 @@ public SQLQueryString buildDelete(Query query) { private void checkWithDeleted(Repo repo, boolean withDeleted, QueryGroup where) { if (repo.getInfo().isSoftDelete() && !withDeleted) { - if (where.getQueryElements().size() > 0) + if (!where.getQueryElements().isEmpty()) where.getQueryElements().add(0, QueryConjunction.AND); where.getQueryElements().add(0, new QueryCondition(new QueryColumn(repo.getInfo().getColumnName(repo.getInfo().getSoftDeleteField())), "IS NULL", null)); }