2023-05-03 11:06:20 +02:00
== Why is this an issue?
2021-04-28 16:49:39 +02:00
It is not uncommon, for instance when dealing with SQL requests, to have repeated calls to ``++StringBuilder.append()++`` to create a long (sometimes really long) String that will be then passed to the appropriate subsystem (e.g. jdbc.Statement()). This is very undesirable because it makes it more difficult to read, and maintain, the statement in the String due to overlapping syntaxes.
It is highly recommended to address such a case with an external text file loaded as a resource.
2021-04-28 18:08:03 +02:00
2023-05-03 11:06:20 +02:00
=== Noncompliant code example
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
sb = new StringBuilder()
.append("SELECT CASE ")
.append("WHEN year = 'FR' THEN 'FR'")
.append("WHEN year = 'SO' THEN 'SO'")
.append("WHEN year = 'JR' THEN 'JR'")
.append("WHEN year = 'SR' THEN 'SR'")
.append("ELSE 'No Year Data' END AS year_group,")
.append("COUNT(1) AS count")
.append("FROM benn.college_football_players")
.append("GROUP BY CASE WHEN year = 'FR' THEN 'FR'")
.append("WHEN year = 'SO' THEN 'SO'")
.append("WHEN year = 'JR' THEN 'JR'")
.append("WHEN year = 'SR' THEN 'SR'")
.append("ELSE 'No Year Data' END");
----
2021-04-28 18:08:03 +02:00
2023-05-03 11:06:20 +02:00
=== Compliant solution
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
InputStream inputStream = this.getClass().getResourceAsStream("MySQLRequest.txt");
----
2021-04-28 18:08:03 +02:00
2021-06-02 20:44:38 +02:00
2021-06-03 09:05:38 +02:00
ifdef::env-github,rspecator-view[]
2021-09-20 15:38:42 +02:00
'''
== Implementation Specification
(visible only on this page)
include::message.adoc[]
include::highlighting.adoc[]
2021-06-08 15:52:13 +02:00
'''
2021-06-02 20:44:38 +02:00
== Comments And Links
(visible only on this page)
include::comments-and-links.adoc[]
2021-06-03 09:05:38 +02:00
endif::env-github,rspecator-view[]