Skip to content

Instantly share code, notes, and snippets.

@tsdh
Created February 7, 2019 12:03
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tsdh/41d0952e6f33ac161d3eac6fca90eff9 to your computer and use it in GitHub Desktop.
Save tsdh/41d0952e6f33ac161d3eac6fca90eff9 to your computer and use it in GitHub Desktop.
IntelliJ Table Data Extractor extracting a (or multiple if many columns are selected) SQL lists
/*
* Available context bindings:
* COLUMNS List<DataColumn>
* ROWS Iterable<DataRow>
* OUT { append() }
* FORMATTER { format(row, col); formatValue(Object, col) }
* TRANSPOSED Boolean
* plus ALL_COLUMNS, TABLE, DIALECT
*
* where:
* DataRow { rowNumber(); first(); last(); data(): List<Object>; value(column): Object }
* DataColumn { columnNumber(), name() }
*/
SEPARATOR = ","
QUOTE = "'"
Map<String, List<Object>> map = new LinkedHashMap<>()
ROWS.each { row ->
COLUMNS.each { column ->
value = FORMATTER.format(row, column)
map.computeIfAbsent((String) column.name(), { k -> new LinkedList<>() })
.add(FORMATTER.format(row, column))
}
}
firstCol = true
map.entrySet().each { e ->
if( !firstCol )
{
OUT.append("\n")
}
firstRow = true
OUT.append("(/* ")
.append(e.key)
.append("s */ ")
e.getValue().each { value ->
def q = !value.isNumber()
OUT.append(firstRow ? "" : SEPARATOR)
.append(q ? QUOTE : "")
.append(value.replace(QUOTE, QUOTE + QUOTE))
.append(q ? QUOTE : "")
firstRow = false
}
OUT.append(")")
firstCol = false
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment