CE-936 - Add method inferNameFromBackendName

This commit is contained in:
2024-03-12 11:51:29 -05:00
parent 03f1fc1436
commit a4cdbc429d
2 changed files with 61 additions and 0 deletions

View File

@ -1030,6 +1030,50 @@ public class QInstanceEnricher
/*******************************************************************************
** Do a default mapping from an underscore_style field name to a camelCase name.
**
** Examples:
** <ul>
** <li>word_another_word_more_words -> wordAnotherWordMoreWords</li>
** <li>l_ul_ul_ul -> lUlUlUl</li>
** <li>tla_first -> tlaFirst</li>
** <li>word_then_tla_in_middle -> wordThenTlaInMiddle</li>
** <li>end_with_tla -> endWithTla</li>
** <li>tla_and_another_tla -> tlaAndAnotherTla</li>
** <li>ALL_CAPS -> allCaps</li>
** </ul>
*******************************************************************************/
public static String inferNameFromBackendName(String backendName)
{
StringBuilder rs = new StringBuilder();
////////////////////////////////////////////////////////////////////////////////////////
// build a list of words in the name, then join them with _ and lower-case the result //
////////////////////////////////////////////////////////////////////////////////////////
String[] words = backendName.toLowerCase(Locale.ROOT).split("_");
for(int i = 0; i < words.length; i++)
{
String word = words[i];
if(i == 0)
{
rs.append(word);
}
else
{
rs.append(word.substring(0, 1).toUpperCase());
if(word.length() > 1)
{
rs.append(word.substring(1));
}
}
}
return (rs.toString());
}
/******************************************************************************* /*******************************************************************************
** If a app didn't have any sections, generate "sensible defaults" ** If a app didn't have any sections, generate "sensible defaults"
*******************************************************************************/ *******************************************************************************/

View File

@ -232,6 +232,23 @@ class QInstanceEnricherTest extends BaseTest
} }
/*******************************************************************************
**
*******************************************************************************/
@Test
void testInferNameFromBackendName()
{
assertEquals("id", QInstanceEnricher.inferNameFromBackendName("id"));
assertEquals("wordAnotherWordMoreWords", QInstanceEnricher.inferNameFromBackendName("word_another_word_more_words"));
assertEquals("lUlUlUl", QInstanceEnricher.inferNameFromBackendName("l_ul_ul_ul"));
assertEquals("tlaFirst", QInstanceEnricher.inferNameFromBackendName("tla_first"));
assertEquals("wordThenTlaInMiddle", QInstanceEnricher.inferNameFromBackendName("word_then_tla_in_middle"));
assertEquals("endWithTla", QInstanceEnricher.inferNameFromBackendName("end_with_tla"));
assertEquals("tlaAndAnotherTla", QInstanceEnricher.inferNameFromBackendName("tla_and_another_tla"));
assertEquals("allCaps", QInstanceEnricher.inferNameFromBackendName("ALL_CAPS"));
}
/******************************************************************************* /*******************************************************************************
** **