diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/Tweet.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/Tweet.java new file mode 100644 index 0000000000..13576f32f6 --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/Tweet.java @@ -0,0 +1,37 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.Date; + +public class Tweet { + + private String email; + + private String tweetText; + + private Date dateCreated; + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTweetText() { + return tweetText; + } + + public void setTweetText(String tweetText) { + this.tweetText = tweetText; + } + + public Date getDateCreated() { + return dateCreated; + } + + public void setDateCreated(Date dateCreated) { + this.dateCreated = dateCreated; + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDao.java new file mode 100644 index 0000000000..144c04e0ad --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDao.java @@ -0,0 +1,9 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public interface TweetDao { + + List fetchTweets(String email); + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDaoImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDaoImpl.java new file mode 100644 index 0000000000..6e4e8a8985 --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDaoImpl.java @@ -0,0 +1,17 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.ArrayList; +import java.util.List; + +public class TweetDaoImpl implements TweetDao { + + @Override + public List fetchTweets(String email) { + List tweets = new ArrayList(); + + //call Twitter API and prepare Tweet object + + return tweets; + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java new file mode 100644 index 0000000000..8cd4fd0a00 --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java @@ -0,0 +1,51 @@ +package com.baeldung.repositoryvsdaopattern; + +public class User { + + private Long id; + private String userName; + private String firstName; + private String lastName; + private String email; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDao.java new file mode 100644 index 0000000000..47fe2e3262 --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDao.java @@ -0,0 +1,13 @@ +package com.baeldung.repositoryvsdaopattern; + +public interface UserDao { + + void create(User user); + + User read(Long id); + + void update(User user); + + void delete(String userName); + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDaoImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDaoImpl.java new file mode 100644 index 0000000000..24ca04263b --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDaoImpl.java @@ -0,0 +1,33 @@ +package com.baeldung.repositoryvsdaopattern; + +import javax.persistence.EntityManager; + +public class UserDaoImpl implements UserDao { + + private final EntityManager entityManager; + + public UserDaoImpl(EntityManager entityManager) { + this.entityManager = entityManager; + } + + @Override + public void create(User user) { + entityManager.persist(user); + } + + @Override + public User read(Long id) { + return entityManager.find(User.class, id); + } + + @Override + public void update(User user) { + + } + + @Override + public void delete(String userName) { + + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepository.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepository.java new file mode 100644 index 0000000000..1da384958d --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepository.java @@ -0,0 +1,21 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public interface UserRepository { + + User get(Long id); + + void add(User user); + + void update(User user); + + void remove(User user); + + User findByUserName(String userName); + + User findByEmail(String email); + + List fetchTweets(User user); + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java new file mode 100644 index 0000000000..806b44e9d5 --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java @@ -0,0 +1,51 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public class UserRepositoryImpl implements UserRepository { + + private UserDaoImpl userDaoImpl; + private TweetDaoImpl tweetDaoImpl; + + @Override + public User get(Long id) { + UserSocialMedia user = (UserSocialMedia) userDaoImpl.read(id); + + List tweets = tweetDaoImpl.fetchTweets(user.getEmail()); + user.setTweets(tweets); + + return user; + } + + @Override + public void add(User user) { + userDaoImpl.create(user); + } + + @Override + public void remove(User user) { + + } + + @Override + public void update(User user) { + + } + + @Override + public List fetchTweets(User user) { + return tweetDaoImpl.fetchTweets(user.getEmail()); + + } + + @Override + public User findByUserName(String userName) { + return null; + } + + @Override + public User findByEmail(String email) { + return null; + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserSocialMedia.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserSocialMedia.java new file mode 100644 index 0000000000..bf729620af --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserSocialMedia.java @@ -0,0 +1,17 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public class UserSocialMedia extends User { + + private List tweets; + + public List getTweets() { + return tweets; + } + + public void setTweets(List tweets) { + this.tweets = tweets; + } + +}