- 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 <strong>DBUser to User< /strong > : [User: Mike 55 [address: Street hw Windsor Windsor 112211] 001225365] [User: Peter 41 [address: Street sw Hudson park Hudson 221102] 003665412] |