Generate toRecord And fromRecord Using The GenerateRecordSerializers Tool

This example shows how to generate toRecord() and fromRecord() methods for any given class. These methods are very useful for Record and JSON serialization in DataPipeline.

Java Code Listing

package com.northconcepts.datapipeline.examples.cookbook;

import java.util.HashSet;

import com.northconcepts.datapipeline.foundations.tools.GenerateRecordSerializers;

public class GenerateRecordSerializersExample {
    public static void main(String[] args) throws Throwable {
        HashSet types = new HashSet<>();
        types.add(SimpleOrganization.class.getName());
        types.add(SimpleUser.class.getName());

        GenerateRecordSerializers serializers = new GenerateRecordSerializers();
        serializers.generate(types);
    }

}

class SimpleUser {
    private int id;
    private String name;
    private String address;
    private String phoneNumber;
}

class SimpleOrganization {
    private int id;
    private String name;
    private SimpleUser manager;
}

Code walkthrough

  1. There are two classes (or DTO/entity) that have some properties. SimpleUser & SimpleOrganization
  2. In main method, add these two class names to a set.
  3. Create an instance of GenerateRecordSerializers.
  4. Pass the set to GenerateRecordSerializers.generate(types)
  5. This will print toRecord() & fromRecord() on console as follows.

Console Output

com.northconcepts.datapipeline.examples.cookbook.GenerateRecordSerializersExample$SimpleUser -------------------------------------
com.northconcepts.datapipeline.examples.cookbook.SimpleUser -------------------------------------

// TODO: Review record serialization
  @Override
  public Record toRecord() {
    // TODO: call Record record = super.toRecord() instead of the following if appropriate
    Record record = new Record()
      .setField("id", id)
      .setField("name", name)
      .setField("address", address)
      .setField("phoneNumber", phoneNumber)
      ;
    
    return record;
  }


// TODO: Review record deserialization
  @Override
  public SimpleUser fromRecord(Record source) {
    // TODO: call super.fromRecord(source); if appropriate
    this.id = source.getFieldValueAsInteger("id", 0);
    this.name = source.getFieldValueAsString("name", null);
    this.address = source.getFieldValueAsString("address", null);
    this.phoneNumber = source.getFieldValueAsString("phoneNumber", null);
    
    return this;
  }


com.northconcepts.datapipeline.examples.cookbook.SimpleOrganization -------------------------------------

// TODO: Review record serialization
  @Override
  public Record toRecord() {
    // TODO: call Record record = super.toRecord() instead of the following if appropriate
    Record record = new Record()
      .setField("id", id)
      .setField("name", name)
      ;
    // TODO write code to serialize manager
    
    
    return record;
  }


// TODO: Review record deserialization
  @Override
  public SimpleOrganization fromRecord(Record source) {
    // TODO: call super.fromRecord(source); if appropriate
    this.id = source.getFieldValueAsInteger("id", 0);
    this.name = source.getFieldValueAsString("name", null);
    
    // TODO: write the code to deserialize:  SimpleUser manager
    
    return this;
  }
Mobile Analytics