mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
Initial import from qqq-dev-tools standalone repo
This commit is contained in:
90
qqq-dev-tools/bin/liquibaseColumnsToEntityFields.groovy
Executable file
90
qqq-dev-tools/bin/liquibaseColumnsToEntityFields.groovy
Executable file
@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env groovy
|
||||
|
||||
/*******************************************************************************
|
||||
** Script to convert a list of columnNames from liquibase XML (on stdin)
|
||||
** to fields for a QRecordEntity (on stdout)
|
||||
*******************************************************************************/
|
||||
|
||||
def reader = new BufferedReader(new InputStreamReader(System.in))
|
||||
String line
|
||||
String allFieldNames = ""
|
||||
while ((line = reader.readLine()) != null)
|
||||
{
|
||||
line = line.trim();
|
||||
if (!line.matches(".* name=\".*") || !line.matches(".* type=\".*") )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
String columnName = line.replaceFirst(".* name=\"", "").replaceFirst("\".*", "");
|
||||
String columnType = line.replaceFirst(".* type=\"", "").replaceFirst("\".*", "");
|
||||
|
||||
String fieldName = columNameToFieldName(columnName)
|
||||
String fieldType = columTypeToFieldType(columnType)
|
||||
|
||||
printf("""
|
||||
@QField()
|
||||
private %s %s;
|
||||
""", fieldType, fieldName)
|
||||
|
||||
allFieldNames += '"' + fieldName + '",'
|
||||
}
|
||||
|
||||
println()
|
||||
println("All field names:")
|
||||
println(allFieldNames);
|
||||
|
||||
private static String columNameToFieldName(String columnName)
|
||||
{
|
||||
String fieldName = "";
|
||||
char lastChar = 0;
|
||||
for (int i = 0; i < columnName.length(); i++)
|
||||
{
|
||||
char c = columnName.charAt(i);
|
||||
if (c == '_')
|
||||
{
|
||||
// noop
|
||||
}
|
||||
else if (lastChar == '_')
|
||||
{
|
||||
fieldName += new String(c).toUpperCase();
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName += c;
|
||||
}
|
||||
|
||||
lastChar = c;
|
||||
}
|
||||
fieldName
|
||||
}
|
||||
|
||||
|
||||
private static String columTypeToFieldType(String columnType)
|
||||
{
|
||||
if (columnType.toUpperCase().startsWith("INT"))
|
||||
{
|
||||
return ("Integer");
|
||||
}
|
||||
if (columnType.toUpperCase().startsWith("VARCHAR"))
|
||||
{
|
||||
return ("String");
|
||||
}
|
||||
if (columnType.toUpperCase().startsWith("TIMESTAMP"))
|
||||
{
|
||||
return ("Instant");
|
||||
}
|
||||
if (columnType.toUpperCase().startsWith("DATE"))
|
||||
{
|
||||
return ("LocalDate");
|
||||
}
|
||||
if (columnType.toUpperCase().startsWith("DECIMAL"))
|
||||
{
|
||||
return ("BigDecimal");
|
||||
}
|
||||
if (columnType.toUpperCase().startsWith("BOOL"))
|
||||
{
|
||||
return ("Boolean");
|
||||
}
|
||||
return ("FixMeUnknownType");
|
||||
}
|
Reference in New Issue
Block a user