* Here we demonstrate the mass replace functions.
  * See example5.tlt for more information.

  * Note about SQL, I was using the postgreSQL database, table creation:
    CREATE TABLE person (
        person_id INT NOT NULL PRIMARY KEY,
        firstname VARCHAR(20) NOT NULL,
        lastname VARCHAR(20) NOT NULL,
        date_of_birth DATE
    INSERT INTO person VALUES (1, 'John', 'Doe', NULL);
    INSERT INTO person VALUES (2, 'Marilyn', 'Monroe', '1926-06-01');
    INSERT INTO person VALUES (3, 'Charles', 'de Gaulle', '1890-11-22');
    INSERT INTO person VALUES (4, 'John', 'Lennon', '1940-10-9');

import ee.mare.indrek.jtlt.*;
import ee.mare.indrek.jtlt.macros.*;

import java.sql.*;
import java.io.*;
import java.util.*;

public class Example5 {
  public static void main (String[] args) throws Exception
    // In general when using templates these two lines would you run at
    // application initialization time, storing the generator somewhere
    HtmlTemplateContext ctx = new HtmlTemplateContext ();
    HtmlTemplateGenerator gen = new HtmlTemplateGenerator ("example5.tlt", ctx);

    // And then whenever you need to use the template you just call this
    HtmlTemplate tlt = gen.createHtmlTemplate();

    // But now back to the topic - mass replace functions

    // Case 1
    Map kv = new HashMap ();
    kv.put("key1", "This is key1 replacement.");
    kv.put("key2", "This is key2 replacement.");
    kv.put("key3", "This is key3 replacement.");

    // We instance the sub block and change tlt.replace key-values from the map
    tlt.instance ("sub1", kv);

    // We can also do that manually, so that we could do our own additional replace-s
    tlt.unlock ();

    // Case 2, using SQL resultset, I use postgresql
    Class.forName("org.postgresql.Driver");   // initialize the driver
    Connection con = DriverManager.getConnection("jdbc:postgresql:test", "john", "");
    PreparedStatement stmt = con.prepareStatement ("select * from person");

    ResultSet res = stmt.executeQuery();

    // And now we replace all the values into the template making as man instances
    // of given sub block as there are rows in the resultset.
    tlt.instance_rows ("person", res);

    // Lets try to do this manually
    res = stmt.executeQuery ();

    while (res.next()) {
      tlt.lock("manual"); // for every row in result we do
      tlt.replace (res);
      tlt.unlock ();

    System.out.println (tlt.toString());

syntax highlighted by Code2HTML, v. 0.9.1