- Given two heterogeneous objects, we would like to convert one object into another object.
- Transform one object into another object using stream lambda (java 8).
- Suppose,
- We are storing address attributes in DBAddress class
- And We are storing User attributes in DBUser object.
- We would like to perform following operations.
- Convert DBAddress object to Address object.
- Convert DBUser object to User Object.
Program – convert /translate one object into another(lambda stream java8)
We would like to convert DBAddress/DBUser objects to corresponding Address/User objects respectively.
In main method, we are performing following operations.
- We will call getDBUserList to simulate database operation.
- DBUsers class composes DBAddress class.
- We will simulate object retrieval operation from database.
- We will print the attributes of DBUser and DBAddress objects.
- We will use lambda stream (java8) to convert heterogeneous objects.
- Convert DBAddress object to Address object.
- Convert DBUser object to User Object.
- At-last, we will print the converted or translated objects i.e. Address & User objects.
package org.learn; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /****** Database clases ********/ class DBAddress { public String street; public String locality; public String area; public String pinCode; public DBAddress(String street, String locality,String area, String pinCode) { this.street = street; this.locality = locality; this.area = area; this.pinCode = pinCode; } public String toString() { return street + " " + locality + " " + area + " " + pinCode; } } class DBUser { public String firstName; public String lastName; public String age; public DBAddress address; public String contact; public String role; public DBUser(String firstName, String lastName, String age, DBAddress address, String contact, String role) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.address = address; this.contact = contact; this.role = role; } public String toString() { return "[DbUser: " + firstName + " " + lastName + " [address: " + address.toString() + "] " + contact + " " + role + "]"; } } /************ Domain Classes ****************************/ class Address { public String street; public String locality; public String area; public String pinCode; public Address(String street, String locality,String area, String pinCode) { this.street = street; this.locality = locality; this.area = area; this.pinCode = pinCode; } public String toString() { return " " + street + " " + locality + " " + area + " " + pinCode; } } class User { public String name; public String age; public Address address; public String contact; public User(String name, String age, Address address, String contact) { this.name = name; this.age = age; this.address = address; this.contact = contact; } public String toString() { return "[User: " + name + " " + age + " " + " [address: " + address.toString() + "] " + contact + "]"; } } /*****************************************************/ public class ObjectTranslator { // Suppose we are getting this from database private static List getDBUserList() { List dbUserList = new ArrayList(); // First user DBAddress dbAddress1 = new DBAddress ("Street hw", "Windsor", "Windsor", "112211"); DBUser dbUser1 = new DBUser ("Mike", "Cook", "55", dbAddress1, "001225365", "ViewOnly"); dbUserList.add(dbUser1); // Second user DBAddress dbAddress2 = new DBAddress ("Street sw", "Hudson park", "Hudson", "221102"); DBUser dbUser2 = new DBUser ("Peter", "thomas", "41", dbAddress2, "003665412", "Admin"); dbUserList.add(dbUser2); return dbUserList; } public static void main(String[] args) { List dbUserList = getDBUserList(); dbUserList.forEach(db -> System.out.println(db)); List userList = dbUserList.stream().map(db -> { DBAddress dbAddress = db.address; Address address = new Address(dbAddress.street, dbAddress.locality, dbAddress.area, dbAddress.pinCode); User user = new User(db.firstName, db.age, address, db.contact); return user; }).collect(Collectors.toList()); System.out.println("\nObject translated DBUser to User : "); userList.forEach(user -> System.out.println(user)); } }
Output – convert /translate one object into another (lambda stream java8)
[DbUser: Mike Cook [address: Street hw Windsor Windsor 112211] 001225365 ViewOnly] [DbUser: Peter thomas [address: Street sw Hudson park Hudson 221102] 003665412 Admin] Object translated DBUser to User : [User: Mike 55 [address: Street hw Windsor Windsor 112211] 001225365] [User: Peter 41 [address: Street sw Hudson park Hudson 221102] 003665412]