Quick reference

Templates

OfTemplate
JNDI, version: 1.0+
type: "JNDI"
jndi: "dataSource"
sql: "SELECT question, answer FROM Answers <@where><@clause render=param.dateOfQuestion?has_content>(Date specific query here)</@clause></@where>"
paramConfig:
  - type: DateTime
    name: "Date of Question"
    help: "The date the question was asked."
    placeholder: "Any"
columns:
  - name: Question
    extraOptions:
      styleType: text
  - name: Answer
    extraOptions:
      styleType: numbers
extraOptions:
  image: image1.png
  reportName: "Answers DB"
JDBC, version: 1.0+
type: "JDBC"
classLoaderPath: "com.mysql.jdbc.Driver"
jdbc: "jdbc:mysql://localhost:3306/test"
username: "test"
password: "test" 
sql: "SELECT question, answer FROM Answers <@where><@clause render=param.question?has_content>question=${method.value(param.question)}</@clause></@where>"
paramConfig:
  - type: String
    name: "Question"
    help: "Enter the exact question used."
    placeholder: "All"
columns:
  - name: Question
    extraOptions:
      styleType: text
  - name: Answer
    extraOptions:
      styleType: numbers
extraOptions:
  image: image1.png
  reportName: "Answer DB"
Groovy, version: 1.0+
type: "Groovy"
groovy: >
  Map<String, Object> row;
  row = new HashMap<String, Object>(); // Row 1
  row.put("test1","Row 1");
  row.put("test2","asdfasdf");
  rows.add(row);
  row = new HashMap<String, Object>(); // Row 2
  row.put("test1","Row 2");
  row.put("test2","asdfasdf");
  rows.add(row);
paramConfig:
  - type: String
    name: "An anonymous string"
    help: "Just put anything in"
    placeholder: "asdfsdaef"
    value:
columns:
  - name: test1
  - name: test2
extraOptions:
  reportName: "Groovy test"

Parameter

OfSnippet
Normal string parameter, version: 1.0+
Long form
 paramConfig:
  - type: String
    id: name
    name: "Full name"
    help: "Leave blank for any"
    placeholder: "Name"
Short form
  paramConfig:
  - { type: String, id: name, name: "Full name", help: "Leave blank for any", placeholder: "Name" }
Date parameter, version: 1.0+
Long form
paramConfig:
  - type: Date
    id: startDate
    name: "Start On Date"
    help: ""
    placeholder: ""
Short form
 paramConfig:
  - { type: Date, id: startDate, name: "Start On Date", help: "", placeholder: "" }
Date time, version: 1.0+
Long form
paramConfig:
  - type: DateTime
    id: startDate
    name: "Start at"
    help: ""
    placeholder: ""
Short form
 paramConfig:
  - { type: DateTime, id: startDate, name: "Start at", help: "", placeholder: "" }
Boolean parameter, version: 1.0+
Long form
paramConfig:
  - type: Boolean
    name: "Select one"
    help: "Just select something"
    placeholder: "No Value"
    value:
Short form
paramConfig:
  - { type: Boolean, name: "Select one", help: "Just select something", placeholder: "No Value", value: } 
Number parameter, version: 1.0+
Long form
paramConfig:
  - type: Number
    name: "Enter one"
    help: "Just type a number or something"
    placeholder: "3.14"
    value:
Short form
 paramConfig:
  - { type: Number, name: "Enter one", help: "Just type a number or something", placeholder: "3.14", value: }
Ordinary combo box parameter, version: 1.1+
Long form
paramConfig:
  - type: Combo
    name: "Select one"
    help: "Just select anything"
    placeholder: "asdfsdaef"
    from:
      list:
        values:
          - 2012
          - 2013
          - 2014
Short form
 paramConfig:
  - { type: Combo, name: "Select one", help: "Just select anything", placeholder: "asdfsdaef",  from: { list: {values: [ 2012, 2013, 2014 ] } } }
  
Multi combo box, version: 1.1+
Long form
paramConfig:
  - type: ManyCombo
    name: "Select many"
    help: "You can select more than 1"
    placeholder: ""
    from:
      list:
        values:
          - c1
          - v1
          - v2

Short form
  paramConfig:
  - { type: ManyCombo, name: "Select many", help: "You can select more than 1", placeholder: "",  from: { list: {values: [ c1, v1, v2 ] } } }
Combo or Multicombo box with values from an SQL query, version: 1.1+
Long form
 paramConfig:
  - type: Combo
    name: "An anonymous string"
    help: "Just put anything in"
    placeholder: "asdfsdaef"
    value:
    from:
      sql:
        selectedColumn: username
        report:
          type: "JDBC"
          jdbc: "jdbc:mysql://localhost:3306/test"
          sql: "SELECT id, email, enabled, username, version FROM User <#if param.User?has_content>WHERE username=${method.value(param.User)}</#if><@limit />;"
          username: root
          password:

Combo or Multicombo box with values from a groovy script, version: 1.1+
  - type: Combo
    name: "Month"
    help: ""
    placeholder: ""
    from:
      groovy: "result.addAll(Arrays.asList(new java.text.DateFormatSymbols().getMonths()))"
Normal String Parameter, which is required for the report to run: (1.7+)
Long form
 paramConfig:
  - type: String
    id: name
    name: "Full name"
    help: "Leave blank for any"
    placeholder: "Name"
    required: true
Short form
  paramConfig:
  - { type: String, id: name, name: "Full name", help: "Leave blank for any", placeholder: "Name", required: true }

Freemarker Markup

OfSnippet
Freemarker if
<#if param.appointment>1<#else>0</#if>
for each
SELECT date AS 'Date'
<#list ["uniqueProperty1", "uniqueProperty2", "uniqueProperty3", "uniqueProperty4"] as x>
`${x}` AS '${x}'
</#list>
FROM dynamicTable WHERE category IS NULL
<#list param.selectedValues as x>
OR category=`${x}`
</#list>
<@limit />
Switch
SELECT invoiceNumber, invoicePrice FROM invoice WHERE
<#switch param.mode>
  <#case "Test">
    category="TE"
  <#case "Customer 1">
    category="ON"
  <#default>
    category IS NOT NULL
</#switch>

Freemarker values

ToDo
Get a parameter valueparam.paramName
Insert a value into the page - not recommended, see custom functions${param.paramName}
Boolean to stringparam.paramName?string("yes", "no")
Date to string

param.paramName?string("yyyy-MM-dd HH:mm:ss zzzz"}

String to date

param.paramName?date("MM/dd/yyyy")

Trim

param.paramName?trim

Capitalize the first letterparam.paramName?cap_first
Convert to uppercaseparam.paramName?upper_case
Capitalize the first letter of every wordparam.paramName?capitialize

Freemarker Customer functions

ToDo
Insert a parameter value safely into a page, version: 1.0+${method.value(param.paramName)}
Convert a value back to a date for a sql safe query${method.value(param.paramName?date)}
Insert an array / freemarker list parameter value safely into a page, version: 1.3+${method.values(param.paramName)}

Freemarker Custom tags

ToDo
Limit, required for each data query, version: 1.0+
Generic:
<@limit />
Mysql
<@limit sql=mysql />
Postgres
<@limit sql=postgres />
Custom where query, version: 1.0+
 <@where>
  <@clause render=true>columnB=${method.value(param.test)}</@clause>
  <@clause render=false>columnC=${method.value(param.test)}</@clause>
  <@clause render=param.test='ParameterOutput'>columnD=${method.value(param.test)}</@clause>
 </@where>

<@where type='and'> clause... </@where>
<@where type='or'> clause... </@where>
<@where type='and'>
<@where type=OR> clause... </@where>
<@where type=OR> clause... </@where>
<@where type=OR> clause... </@where>
</@where>