import java.util.regex.Pattern;
import javax.annotation.Nullable;
-import org.apache.commons.lang.StringUtils;
import static org.apache.commons.lang.StringUtils.abbreviate;
// only statics
}
- public static String formatSql(String sql) {
- return StringUtils.replaceChars(sql, '\n', ' ');
+ public static String reformatSql(String sql) {
+ char[] chars = sql.toCharArray();
+ StringBuilder result = new StringBuilder(chars.length);
+
+ for (int i = 0; i < chars.length; i++) {
+ char c = chars[i];
+ if (c == '\n' || c == '\t') {
+ c = ' ';
+ }
+ if (Character.isWhitespace(c) && i > 0 && Character.isWhitespace(chars[i - 1])) {
+ continue;
+ }
+ result.append(c);
+ }
+ return result.toString();
}
- public static String formatParam(@Nullable Object param) {
+ public static String reformatParam(@Nullable Object param) {
if (param == null) {
return PARAM_NULL;
}
return NEWLINE_PATTERN.matcher(abbreviated).replaceAll("\\\\n");
}
- public static String formatParams(Object[] params) {
+ public static String reformatParams(Object[] params) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < params.length; i++) {
if (i > 0) {
sb.append(", ");
}
- sb.append(formatParam(params[i]));
+ sb.append(reformatParam(params[i]));
}
return sb.toString();
}
public class SqlLogFormatterTest {
@Test
- public void formatSql() {
- assertThat(SqlLogFormatter.formatSql("select *")).isEqualTo("select *");
+ public void reformatSql() {
+ assertThat(SqlLogFormatter.reformatSql("")).isEqualTo("");
+ assertThat(SqlLogFormatter.reformatSql("select *")).isEqualTo("select *");
+ assertThat(SqlLogFormatter.reformatSql("select *\nfrom issues")).isEqualTo("select * from issues");
+ assertThat(SqlLogFormatter.reformatSql("select *\n from issues")).isEqualTo("select * from issues");
+ assertThat(SqlLogFormatter.reformatSql("select *\n from issues")).isEqualTo("select * from issues");
+ assertThat(SqlLogFormatter.reformatSql("select *\n from issues")).isEqualTo("select * from issues");
+ assertThat(SqlLogFormatter.reformatSql("select *\n\t\t from \tissues")).isEqualTo("select * from issues");
}
@Test
- public void formatSql_removes_newlines() {
- assertThat(SqlLogFormatter.formatSql("select *\nfrom issues")).isEqualTo("select * from issues");
+ public void reformatParam() {
+ assertThat(SqlLogFormatter.reformatParam(null)).isEqualTo("[null]");
+ assertThat(SqlLogFormatter.reformatParam("")).isEqualTo("");
+ assertThat(SqlLogFormatter.reformatParam("foo")).isEqualTo("foo");
+ assertThat(SqlLogFormatter.reformatParam("foo bar ")).isEqualTo("foo bar ");
}
@Test
- public void formatParam() {
- assertThat(SqlLogFormatter.formatParam(null)).isEqualTo("[null]");
- assertThat(SqlLogFormatter.formatParam("")).isEqualTo("");
- assertThat(SqlLogFormatter.formatParam("foo")).isEqualTo("foo");
+ public void reformatParam_escapes_newlines() {
+ assertThat(SqlLogFormatter.reformatParam("foo\n bar\nbaz")).isEqualTo("foo\\n bar\\nbaz");
}
@Test
- public void formatParam_escapes_newlines() {
- assertThat(SqlLogFormatter.formatParam("foo\nbar\nbaz")).isEqualTo("foo\\nbar\\nbaz");
- }
-
- @Test
- public void formatParam_truncates_if_too_long() {
+ public void reformatParam_truncates_if_too_long() {
String param = repeat("a", SqlLogFormatter.PARAM_MAX_WIDTH + 10);
- String formattedParam = SqlLogFormatter.formatParam(param);
+ String formattedParam = SqlLogFormatter.reformatParam(param);
assertThat(formattedParam)
.hasSize(SqlLogFormatter.PARAM_MAX_WIDTH)
.endsWith("...")
}
@Test
- public void formatParams() {
- String formattedParams = SqlLogFormatter.formatParams(new Object[] {"foo", 42, null, true});
+ public void reformatParams() {
+ String formattedParams = SqlLogFormatter.reformatParams(new Object[] {"foo", 42, null, true});
assertThat(formattedParams).isEqualTo("foo, 42, [null], true");
}
@Test
- public void formatParams_returns_blank_if_zero_params() {
- String formattedParams = SqlLogFormatter.formatParams(new Object[0]);
+ public void reformatParams_returns_blank_if_zero_params() {
+ String formattedParams = SqlLogFormatter.reformatParams(new Object[0]);
assertThat(formattedParams).isEqualTo("");
}