Guest User

Untitled

a guest
Feb 18th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. package entity
  2.  
  3. import model.{Address, Person, Student}
  4.  
  5. case class PersonEntity(firstName: String, lastName: String, city: String, state: String, pin: String) {
  6.  
  7. def as[T](implicit f: PersonEntity => T) = f(this)
  8. }
  9.  
  10. object PersonEntity {
  11.  
  12. /**
  13. * Mapper function that takes a PersonEntity and returns a Person case class
  14. *
  15. * @return
  16. */
  17. implicit def personMapper = (personEntity: PersonEntity) =>
  18. Person(
  19. personEntity.firstName,
  20. personEntity.lastName,
  21. Address(
  22. personEntity.city,
  23. personEntity.state,
  24. personEntity.pin
  25. )
  26. )
  27.  
  28. implicit def studentMapper = (personEntity: PersonEntity) =>
  29. Student(personEntity.firstName, personEntity.city)
  30. }
  31.  
  32. // ---------------------------------
  33.  
  34. package model
  35.  
  36. import entity.PersonEntity
  37.  
  38. case class Person (firstName: String, lastName: String, address: Address) {
  39. def as[T](implicit f: Person => T) = f(this)
  40. }
  41.  
  42. case class Address(city: String, state: String, pin: String)
  43.  
  44.  
  45. object Person {
  46.  
  47. /**
  48. * Mapper function that takes a PersonEntity and returns a Person case class
  49. *
  50. * @return
  51. */
  52. implicit def personEntityMapper = (person: Person) =>
  53. PersonEntity(
  54. person.firstName,
  55. person.lastName,
  56. person.address.city,
  57. person.address.state,
  58. person.address.pin
  59. )
  60.  
  61. }
  62.  
  63. // ---------------------------------
  64.  
  65. object Hello extends Greeting with App {
  66.  
  67. val p = PersonRepository.getPerson("Tom")
  68. println("Found Person: " + p )
  69. val pe: PersonEntity = p;
  70. println("Convert Person: " + pe )
  71.  
  72. }
  73.  
  74. // ---------------------------------
  75.  
  76. package model
  77.  
  78. case class Student (firstName: String, city: String)
Add Comment
Please, Sign In to add comment