From 877983cad206446ee7d18c9faa8ef3876ca2b292 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Tue, 5 Feb 2019 17:52:14 +0100 Subject: [PATCH] [#8295] RenderKeywordStyle.PASCAL doesn't work when keywords contain whitespace --- .../main/java/org/jooq/impl/KeywordImpl.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/KeywordImpl.java b/jOOQ/src/main/java/org/jooq/impl/KeywordImpl.java index 302502c644..c350f4d247 100644 --- a/jOOQ/src/main/java/org/jooq/impl/KeywordImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/KeywordImpl.java @@ -63,9 +63,33 @@ final class KeywordImpl extends AbstractQueryPart implements Keyword { this.asIs = keyword; this.upper = keyword.toUpperCase(); this.lower = keyword.toLowerCase(); - this.pascal = keyword.length() > 0 - ? keyword.substring(0, 1).toUpperCase() + keyword.substring(1, keyword.length()).toLowerCase() - : keyword; + this.pascal = keyword.length() > 0 ? pascal(keyword) : keyword; + } + + private static final String pascal(String keyword) { + if (keyword.contains(" ")) { + StringBuilder sb = new StringBuilder(); + + int prev = 0; + int next = 0; + + do { + next = keyword.indexOf(' ', prev); + + if (prev > 0) + sb.append(' '); + + sb.append(Character.toUpperCase(keyword.charAt(prev))); + sb.append(keyword.substring(prev + 1, next == -1 ? keyword.length() : next).toLowerCase()); + + prev = next + 1; + } + while (next != -1); + + return sb.toString(); + } + else + return keyword.substring(0, 1).toUpperCase() + keyword.substring(1, keyword.length()).toLowerCase(); } @Override