Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.northconcepts.datapipeline.examples.cookbook;

import com.northconcepts.datapipeline.core.Record;
import com.northconcepts.datapipeline.core.RecordList;
import com.northconcepts.datapipeline.core.StreamWriter;
import com.northconcepts.datapipeline.group.GroupByReader;
import com.northconcepts.datapipeline.job.Job;
import com.northconcepts.datapipeline.memory.MemoryReader;

public class AddValuesToAnArrayUsingGroupByReader {

public static void main(String[] args) {
RecordList recordList = new RecordList();
recordList.add(createSale("Electronics", "Laptop", 1200));
recordList.add(createSale("Books", "Novel", 15));
recordList.add(createSale("Electronics", "Mouse", 25));
recordList.add(createSale("Clothing", "Shirt", 30));
recordList.add(createSale("Books", "Textbook", 90));

GroupByReader groupByReader = new GroupByReader(new MemoryReader(recordList), "Category");

groupByReader
// Sum the "Price" field and store the result in a new "TotalSales" field.
.sum("Price", "TotalSales")
// Collect values from the "Product" field into a new array field named "Products".
.collect("Product", "Products", false, false, true);

Job.run(groupByReader, new StreamWriter(System.out));
}

private static Record createSale(String category, String product, double price) {
Record record = new Record();
record.setField("Category", category);
record.setField("Product", product);
record.setField("Price", price);
return record;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.northconcepts.datapipeline.examples.cookbook;

import com.northconcepts.datapipeline.core.DataReader;
import com.northconcepts.datapipeline.core.DataWriter;
import com.northconcepts.datapipeline.core.FieldList;
import com.northconcepts.datapipeline.core.Record;
import com.northconcepts.datapipeline.core.RecordList;
import com.northconcepts.datapipeline.core.StreamWriter;
import com.northconcepts.datapipeline.job.Job;
import com.northconcepts.datapipeline.memory.MemoryReader;
import com.northconcepts.datapipeline.transform.TransformingReader;
import com.northconcepts.datapipeline.transform.lookup.LookupTransformer;
import com.northconcepts.datapipeline.transform.lookup.RecordListLookup;

public class LookupUsingRecordList {

public static void main(String[] args) {
RecordList salesOrders = new RecordList();
salesOrders.add(new Record().setField("order_id", 101).setField("product_id", 1).setField("quantity", 2));
salesOrders.add(new Record().setField("order_id", 102).setField("product_id", 3).setField("quantity", 5));
salesOrders.add(new Record().setField("order_id", 103).setField("product_id", 1).setField("quantity", 1));
salesOrders.add(new Record().setField("order_id", 104).setField("product_id", 99).setField("quantity", 10)); // No matching product

DataReader reader = new MemoryReader(salesOrders);

RecordList productData = new RecordList();
productData.add(new Record().setField("id", 1).setField("name", "Laptop").setField("price", 1200.00));
productData.add(new Record().setField("id", 2).setField("name", "Mouse").setField("price", 25.50));
productData.add(new Record().setField("id", 3).setField("name", "Keyboard").setField("price", 75.00));

FieldList keyFieldsInLookup = new FieldList("id");
FieldList valueFieldsToReturn = new FieldList("name", "price");
RecordListLookup productLookup = new RecordListLookup(productData, keyFieldsInLookup, valueFieldsToReturn);

FieldList keyFieldsInStream = new FieldList("product_id");
LookupTransformer lookupTransformer = new LookupTransformer(keyFieldsInStream, productLookup);
lookupTransformer.setAllowNoResults(true); // Prevent job failure on no match.

DataReader transformingReader = new TransformingReader(reader).add(lookupTransformer);

DataWriter writer = new StreamWriter(System.out);

Job.run(transformingReader, writer);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.northconcepts.datapipeline.examples.cookbook;

import com.northconcepts.datapipeline.core.DataReader;
import com.northconcepts.datapipeline.core.DataWriter;
import com.northconcepts.datapipeline.core.Record;
import com.northconcepts.datapipeline.core.StreamWriter;
import com.northconcepts.datapipeline.job.Job;
import com.northconcepts.datapipeline.memory.CollectionReader;

import java.util.ArrayList;
import java.util.List;

public class ReadFromACollection {

public static class User {
private final int id;
private final String username;
private final String email;
private final boolean isActive;

public User(int id, String username, String email, boolean isActive) {
this.id = id;
this.username = username;
this.email = email;
this.isActive = isActive;
}

public int getId() {
return id;
}

public String getUsername() {
return username;
}

public String getEmail() {
return email;
}

public boolean isActive() {
return isActive;
}
}

public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User(1, "john.doe", "john.doe@example.com", true));
users.add(new User(2, "jane.smith", "jane.smith@example.com", false));
users.add(new User(3, "admin", "admin@example.com", true));

DataReader reader = new CollectionReader<>(users, user -> {
Record record = new Record();
record.setField("user_id", user.getId());
record.setField("username", user.getUsername());
record.setField("email_address", user.getEmail());
record.setField("active", user.isActive());
return record;
});

DataWriter writer = new StreamWriter(System.out);

Job.run(reader, writer);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.northconcepts.datapipeline.examples.cookbook;

import com.northconcepts.datapipeline.core.*;
import com.northconcepts.datapipeline.core.DataReader;
import com.northconcepts.datapipeline.core.Record;
import com.northconcepts.datapipeline.core.RecordList;
import com.northconcepts.datapipeline.job.Job;
import com.northconcepts.datapipeline.memory.MemoryReader;
import com.northconcepts.datapipeline.template.TemplateWriter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package com.northconcepts.datapipeline.foundations.examples.schema;

import com.northconcepts.datapipeline.core.*;
import com.northconcepts.datapipeline.core.DataReader;
import com.northconcepts.datapipeline.core.Record;
import com.northconcepts.datapipeline.core.RecordList;
import com.northconcepts.datapipeline.core.FieldList;
import com.northconcepts.datapipeline.core.DataWriter;
import com.northconcepts.datapipeline.core.StreamWriter;
import com.northconcepts.datapipeline.job.Job;
import com.northconcepts.datapipeline.memory.MemoryReader;

Expand Down