16.1. Example Usage

Suppose you have a SimpleFeatureType with the following schema: phrase:String,dtg:Date,geom:Point:srid=4326 and comma-separated data as shown below.

first,hello,2015-01-01T00:00:00.000Z,45.0,45.0
second,world,2015-01-01T00:00:00.000Z,45.0,45.0

The first two fields should be concatenated together to form the phrase, the third field should be parsed as a date, and the last two fields should be formed into a Point geometry. The following Typesafe Config string defines an appropriate converter for taking this CSV data and transforming it into our SimpleFeatureType.

{
 type         = "delimited-text",
 format       = "CSV",
 id-field     = "md5($0)",
 user-data    = {
   // note: keys will be treated as strings and should not be quoted
   my.user.key = "$phrase"
 }
 fields = [
   { name = "phrase", transform = "concatenate($1, $2)" },
   { name = "lat",    transform = "$4::double" },
   { name = "lon",    transform = "$5::double" },
   { name = "dtg",    transform = "dateHourMinuteSecondMillis($3)" },
   { name = "geom",   transform = "point($lon, $lat)" }
 ]
}

The id of the SimpleFeature is formed from an md5 hash of the entire record ($0 is the original data). The simple feature attributes are created from the fields list with appropriate transforms (note the use of intermediate fields ‘lat’ and ‘lon’). If desired, user data for the feature can be set by referencing fields. This can be used for setting Accumulo visibility constraints, among other things (see Accumulo Visibilities).