Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Blob variables and attributes can be parsed to collections of object instances.

  1. Currently the parser only supports plain CSV files. Native Excel formats etc. are not supported.
  2. CSV files must have a single header line.
  3. Column names must match the attribute names as defined in the associated object type. For example an object’s first_name attribute will only be populated from the CSV file if the CSV file has a column with a header that is first_name Column headers that don’t match attributes from the associated object type will be ignored.
  4. Parsing is type-safe. For example an object with a birth_date attribute that is of type date must contain values that can be converted to a date value using the acting user’s preferred Locale and Time Zone.
  5. Any parsing errors will result in the entire transaction being rolled back. Detailed feedback to users in terms of where the parser failed is a work in progress.
  6. Complex attributes are supported. For example the CSV file may contain a column header clinic.name This will automatically populage the name attribute of an object that is associated with the primary object through a simple relationship with the name clinic. Simple relationships are one-to-one and many-to-one relationships. Other relationships aren’t supported and will be ignored. The object instance that represents the named relationships will only be created if the value in the column is not null. So if none of the complex attributes access through a specific relationships is set to a non-null value, then that related object won’t be created.
Example code for extracting nurses from CSV in a blob type

Table of Contents

 

Description

A variables or attributes of type blob representing a valid CSV file can be parsed to a collection of object instances by simply using the fromCsv built-in function. Please read through this page for clarity on what defines a "valid" CSV file.

 

 

Example

The code snippets below demonstrates how the fromCsv built-in function can be used populate a collection of Nurse object instances:

Code Block
languagejava
linenumberstitletrueRelated model objects
persistent object Clinic {
    string name;
}
 
persistent object Nurse {
    	string first_name;
	string last_name;
 
	@ManyToOne
date birth_date	Clinic clinic;
}
  
object UploadedFile {
    blob data;
}
Code Block
languagejava
titleUnit function using fromCsv
linenumberstrue
 
 Nurse[] extractNurses(UploadedFile f) {
    return Nurse:fromCsv(f.data);
}
 
Code Block
titleExample CSV file
 first_name,last_name,clinic.name
Beatrice,Malherbe,Sonop Clinic
Pieter,Potgieter,Somerset Clinic

 

 

 

Additional Mentions and References

 

Excerpt
hiddentrue
blob | fromCsv