Advertisement
Guest User

Untitled

a guest
May 2nd, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.03 KB | None | 0 0
  1. package com.dive.Entity;
  2.  
  3.  
  4. import com.dive.Configuration.DateFormatter;
  5. import com.dive.JacksonConfiguration.View;
  6. import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  7. import com.fasterxml.jackson.annotation.JsonView;
  8.  
  9. import javax.persistence.*;
  10. import javax.validation.constraints.Email;
  11. import javax.validation.constraints.NotNull;
  12. import javax.validation.constraints.Size;
  13. import java.util.*;
  14.  
  15.  
  16. @Entity
  17. @Table(name="users")
  18. @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
  19. public class ApplicationUser {
  20.  
  21. @JsonView(View.UserInfo.class)
  22. @Id
  23. @GeneratedValue(strategy= GenerationType.IDENTITY)
  24. @Column(name="user_id")
  25. private int id;
  26.  
  27. @JsonView(View.Internal.class)
  28. @Email
  29. @NotNull
  30. @Size(min = 3, max = 254)
  31. @Column(name = "email")
  32. private String username;
  33.  
  34. @JsonView(View.UserInfo.class)
  35. @Column(name = "name")
  36. @Size(min = 2, max = 50)
  37. private String name;
  38.  
  39. @JsonView(View.UserDescription.class)
  40. @Column(name = "description")
  41. private String description;
  42.  
  43. @JsonView(View.Internal.class)
  44. @Column(name = "password")
  45. private String password;
  46.  
  47. @Column(name = "enabled")
  48. private boolean enabled;
  49.  
  50. @JsonView(View.MoreUserInfo.class)
  51. @Column(name = "country")
  52. private String country;
  53.  
  54. @JsonView(View.MoreUserInfo.class)
  55. @Column(name = "place_of_residence")
  56. private String placeOfResidence;
  57.  
  58. @JsonView(View.MoreUserInfo.class)
  59. @Temporal(TemporalType.TIMESTAMP)
  60. @Column(name = "since_when_in_app")
  61. private Date creationDate;
  62.  
  63. @JsonView(View.MoreUserInfo.class)
  64. @Temporal(TemporalType.DATE)
  65. @Column(name = "birthday_date")
  66. private Date birthDate;
  67.  
  68. @JsonView(View.MoreUserInfo.class)
  69. @Column(name = "gender")
  70. private String gender;
  71.  
  72. @JsonView(View.UserInfo.class)
  73. @Column(name = "is_verified")
  74. private boolean isVerified;
  75.  
  76. @JsonView(View.UserFriendsCount.class)
  77. @Transient
  78. private int friendsCount;
  79.  
  80. @JsonView(View.UserFollowersCount.class)
  81. @Transient
  82. private int followersCount;
  83.  
  84. @JsonView(View.UserIsFriend.class)
  85. @Transient
  86. private boolean isFriend;
  87.  
  88. @JsonView(View.UserIsFollowed.class)
  89. @Transient
  90. private boolean isFollowed;
  91.  
  92. @JsonView(View.MoreUserInfo.class)
  93. @Transient
  94. private boolean isRequestedToFriends;
  95.  
  96. @JsonView(View.MoreUserInfo.class)
  97. @Transient
  98. private boolean haveRequestToFriendsFromUser;
  99.  
  100.  
  101. /**
  102. * Contains user's friends in map
  103. */
  104. @ManyToMany(fetch = FetchType.LAZY,
  105. cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  106. @JoinTable(name = "user_friends",
  107. joinColumns = {@JoinColumn(name = "user_id")},
  108. inverseJoinColumns = {@JoinColumn(name = "friend_id")})
  109. @MapKey(name = "id")
  110. private Map<Integer, ApplicationUser> friends;
  111.  
  112. /**
  113. * Contains user's friended in map
  114. */
  115. @ManyToMany(fetch = FetchType.LAZY,
  116. cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  117. @JoinTable(name = "user_friends",
  118. joinColumns = {@JoinColumn(name = "friend_id")},
  119. inverseJoinColumns = {@JoinColumn(name = "user_id")})
  120. @MapKey(name = "id")
  121. private Map<Integer, ApplicationUser> friendedByUsers;
  122.  
  123. /**
  124. * Contains user's posts
  125. */
  126. @OneToMany(mappedBy = "applicationUser", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  127. @MapKey(name = "id")
  128. private Map<Integer, Post> posts;
  129.  
  130. /**
  131. * Contains relation between two people
  132. */
  133. @JsonView(View.MoreUserInfo.class)
  134. @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  135. @JoinColumn(name = "relationship_id")
  136. private Relationship relationship;
  137.  
  138. @JsonView(View.UserPhoto.class)
  139. @OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  140. @JoinColumn(name = "user_photo")
  141. private Post userPhotoPost;
  142.  
  143. @JsonView(View.UserHeader.class)
  144. @OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  145. @JoinColumn(name = "user_header")
  146. private Post userHeader;
  147.  
  148. /**
  149. * Contains user who follows particle user
  150. */
  151. @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  152. @JoinTable(name = "follows_join_table", joinColumns = {@JoinColumn(name = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "follower_id")})
  153. @MapKey(name = "id")
  154. private Map<Integer, ApplicationUser> followers;
  155.  
  156. /**
  157. * Contains users who user follows
  158. */
  159. @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  160. @JoinTable(name = "follows_join_table", joinColumns = {@JoinColumn(name = "follower_id")}, inverseJoinColumns = {@JoinColumn(name = "user_id")})
  161. @MapKey(name = "id")
  162. private Map<Integer, ApplicationUser> followedUsers;
  163.  
  164. @OneToMany(mappedBy = "requestedUser", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  165. @MapKeyColumn(name = "user_id")
  166. private Map<Integer, FriendRequestEntity> usersRequestsToFriends;
  167.  
  168. @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  169. @MapKeyColumn(name = "requested_user_id")
  170. private Map<Integer, FriendRequestEntity> usersRequestedToFriends;
  171.  
  172. @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  173. @JoinTable(name = "loves_join_table", joinColumns = {@JoinColumn(name = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "post_id")})
  174. @MapKey(name = "id")
  175. private Map<Integer, Post> lovedPosts;
  176.  
  177. @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  178. @JoinTable(name = "group_tab_follows_join_table", joinColumns = {@JoinColumn(name = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "group_tab_id")})
  179. @MapKey(name = "id")
  180. private Map<Integer, GroupTab> followedTabs;
  181.  
  182. @OneToMany(mappedBy = "user",fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  183. @MapKeyColumn(name = "group_id")
  184. private Map<Integer, UserJoinGroupRequest> groupsRequestedToJoin;
  185.  
  186. @OneToMany(mappedBy = "groupUser", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  187. @MapKeyColumn(name = "group_id")
  188. private Map<Integer, GroupUser> joinedGroups;
  189.  
  190. @OneToMany(mappedBy = "invitedUser", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
  191. @MapKeyColumn(name = "group_id")
  192. private Map<Integer, GroupInvitation> invitesToJoinGroupFromGroups;
  193.  
  194. @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  195. @JoinTable(name = "users_removed_from_groups", joinColumns = {@JoinColumn(name = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "group_id")})
  196. @MapKey(name = "id")
  197. private Map<Integer, Group> removedFromGroups;
  198.  
  199. @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
  200. @JoinTable(name = "hashtag_users_followers", joinColumns = {@JoinColumn(name = "user_id")}, inverseJoinColumns = {@JoinColumn(name = "hashtag_id")})
  201. @MapKey(name = "id")
  202. private Map<Integer, Hashtag> followedHashtags;
  203.  
  204. // @OneToOne(fetch = FetchType.LAZY, mappedBy = "user", cascade = CascadeType.ALL)
  205. // private UserAccountVerificationEntity userAccountVerificationEntity;
  206.  
  207.  
  208. /**
  209. * Contains user role (usually is ROLE_USER)
  210. */
  211. @Column(name = "role")
  212. private String userRole;
  213.  
  214. public ApplicationUser() {}
  215.  
  216. public ApplicationUser(String username, String password) {
  217. this.username = username;
  218. this.password = password;
  219. }
  220.  
  221. public int getId() {
  222. return id;
  223. }
  224.  
  225. public void setId(int id) {
  226. this.id = id;
  227. }
  228.  
  229. public String getPassword() {
  230. return password;
  231. }
  232.  
  233. public void setPassword(String password) {
  234. this.password = password;
  235. }
  236.  
  237. public String getUsername() {
  238. return username;
  239. }
  240.  
  241. public void setUsername(String username) {
  242. this.username = username;
  243. }
  244.  
  245. public String getName() {
  246. return name;
  247. }
  248.  
  249. public void setName(String name) {
  250. this.name = name;
  251. }
  252.  
  253. public boolean isEnabled() {
  254. return enabled;
  255. }
  256.  
  257. public void setEnabled(boolean enabled) {
  258. this.enabled = enabled;
  259. }
  260.  
  261. public String getUserRole() {
  262. return userRole;
  263. }
  264.  
  265. public void setUserRole(String userRole) {
  266. this.userRole = userRole;
  267. }
  268.  
  269. public Map<Integer, ApplicationUser> getFriends() {
  270. return friends;
  271. }
  272.  
  273. public void setFriends(Map<Integer, ApplicationUser> friends) {
  274. this.friends = friends;
  275. }
  276.  
  277. public Map<Integer, ApplicationUser> getFriendedByUsers() {
  278. return friendedByUsers;
  279. }
  280.  
  281. public void setFriendedByUsers(Map<Integer, ApplicationUser> friendedByUsers) {
  282. this.friendedByUsers = friendedByUsers;
  283. }
  284.  
  285. public Map<Integer, Post> getPosts() {
  286. return posts;
  287. }
  288.  
  289. public void setPosts(Map<Integer, Post> posts) {
  290. this.posts = posts;
  291. }
  292.  
  293. public Map<Integer, ApplicationUser> getFollowedUsers() {
  294. return followedUsers;
  295. }
  296.  
  297. public void setFollowedUsers(Map<Integer, ApplicationUser> followedUsers) {
  298. this.followedUsers = followedUsers;
  299. }
  300.  
  301. public Relationship getRelationship() {
  302. return relationship;
  303. }
  304.  
  305. public void setRelationship(Relationship relationship) {
  306. this.relationship = relationship;
  307. }
  308.  
  309. public Map<Integer, ApplicationUser> getFollowers() {
  310. return followers;
  311. }
  312.  
  313. public void setFollowers(Map<Integer, ApplicationUser> followers) {
  314. this.followers = followers;
  315. }
  316.  
  317. public Map<Integer, FriendRequestEntity> getUsersRequestsToFriends() {
  318. return usersRequestsToFriends;
  319. }
  320.  
  321. public void setUsersRequestsToFriends(Map<Integer, FriendRequestEntity> usersRequestsToFriends) {
  322. this.usersRequestsToFriends = usersRequestsToFriends;
  323. }
  324.  
  325. public Map<Integer, FriendRequestEntity> getUsersRequestedToFriends() {
  326. return usersRequestedToFriends;
  327. }
  328.  
  329. public void setUsersRequestedToFriends(Map<Integer, FriendRequestEntity> usersRequestedToFriends) {
  330. this.usersRequestedToFriends = usersRequestedToFriends;
  331. }
  332.  
  333. public Map<Integer, Post> getLovedPosts() {
  334. return lovedPosts;
  335. }
  336.  
  337. public void setLovedPosts(Map<Integer, Post> lovedPosts) {
  338. this.lovedPosts = lovedPosts;
  339. }
  340.  
  341. public boolean isFriend() {
  342. return isFriend;
  343. }
  344.  
  345. public void setFriend(boolean friend) {
  346. isFriend = friend;
  347. }
  348.  
  349. public boolean isRequestedToFriends() {
  350. return isRequestedToFriends;
  351. }
  352.  
  353. public void setRequestedToFriends(boolean requestedToFriends) {
  354. isRequestedToFriends = requestedToFriends;
  355. }
  356.  
  357. public boolean isHaveRequestToFriendsFromUser() {
  358. return haveRequestToFriendsFromUser;
  359. }
  360.  
  361. public void setHaveRequestToFriendsFromUser(boolean haveRequestToFriendsFromUser) {
  362. this.haveRequestToFriendsFromUser = haveRequestToFriendsFromUser;
  363. }
  364.  
  365. public Map<Integer, GroupTab> getFollowedTabs() {
  366. return followedTabs;
  367. }
  368.  
  369. public void setFollowedTabs(Map<Integer, GroupTab> followedTabs) {
  370. this.followedTabs = followedTabs;
  371. }
  372.  
  373. public boolean isFollowed() {
  374. return isFollowed;
  375. }
  376.  
  377. public void setFollowed(boolean followed) {
  378. isFollowed = followed;
  379. }
  380.  
  381. public Map<Integer, UserJoinGroupRequest> getGroupsRequestedToJoin() {
  382. return groupsRequestedToJoin;
  383. }
  384.  
  385. public void setGroupsRequestedToJoin(Map<Integer, UserJoinGroupRequest> groupsRequestedToJoin) {
  386. this.groupsRequestedToJoin = groupsRequestedToJoin;
  387. }
  388.  
  389. public Map<Integer, GroupUser> getJoinedGroups() {
  390. return joinedGroups;
  391. }
  392.  
  393. public void setJoinedGroups(Map<Integer, GroupUser> joinedGroups) {
  394. this.joinedGroups = joinedGroups;
  395. }
  396.  
  397. public Map<Integer, GroupInvitation> getInvitesToJoinGroupFromGroups() {
  398. return invitesToJoinGroupFromGroups;
  399. }
  400.  
  401. public void setInvitesToJoinGroupFromGroups(Map<Integer, GroupInvitation> invitesToJoinGroupFromGroups) {
  402. this.invitesToJoinGroupFromGroups = invitesToJoinGroupFromGroups;
  403. }
  404.  
  405. public Map<Integer, Group> getRemovedFromGroups() {
  406. return removedFromGroups;
  407. }
  408.  
  409. public void setRemovedFromGroups(Map<Integer, Group> removedFromGroups) {
  410. this.removedFromGroups = removedFromGroups;
  411. }
  412.  
  413. public String getDescription() {
  414. return description;
  415. }
  416.  
  417. public void setDescription(String description) {
  418. this.description = description;
  419. }
  420.  
  421. public String getCountry() {
  422. return country;
  423. }
  424.  
  425. public void setCountry(String country) {
  426. this.country = country;
  427. }
  428.  
  429. public String getPlaceOfResidence() {
  430. return placeOfResidence;
  431. }
  432.  
  433. public void setPlaceOfResidence(String placeOfResidence) {
  434. this.placeOfResidence = placeOfResidence;
  435. }
  436.  
  437. public String getCreationDate() {
  438. return DateFormatter.format(this.creationDate);
  439. }
  440.  
  441. public void setCreationDate(Date creationDate) {
  442. this.creationDate = creationDate;
  443. }
  444.  
  445. public String getBirthDate() {
  446. return DateFormatter.format(this.birthDate);
  447. }
  448.  
  449. public void setBirthDate(Date birthDate) {
  450. this.birthDate = birthDate;
  451. }
  452.  
  453. public Post getUserHeader() {
  454. return userHeader;
  455. }
  456.  
  457. public void setUserHeader(Post userHeader) {
  458. this.userHeader = userHeader;
  459. }
  460.  
  461. public String getGender() {
  462. return gender;
  463. }
  464.  
  465. public void setGender(String gender) {
  466. this.gender = gender;
  467. }
  468.  
  469. public boolean isVerified() {
  470. return isVerified;
  471. }
  472.  
  473. public void setVerified(boolean verified) {
  474. isVerified = verified;
  475. }
  476.  
  477. // public UserAccountVerificationEntity getUserAccountVerificationEntity() {
  478. // return userAccountVerificationEntity;
  479. // }
  480. //
  481. // public void setUserAccountVerificationEntity(UserAccountVerificationEntity userAccountVerificationEntity) {
  482. // this.userAccountVerificationEntity = userAccountVerificationEntity;
  483. // userAccountVerificationEntity.setUser(this);
  484. // }
  485.  
  486. public boolean lovePost(Post post) {
  487. if (lovedPosts == null) {
  488. lovedPosts = new LinkedHashMap<>();
  489. }
  490.  
  491. if (!lovedPosts.containsKey(post.getId())) {
  492. lovedPosts.put(post.getId(), post);
  493. return true;
  494. }
  495.  
  496. return false;
  497. }
  498.  
  499. public boolean unlovePost(Post post) {
  500. if (lovedPosts == null) {
  501. lovedPosts = new LinkedHashMap<>();
  502. }
  503.  
  504. Post removedPost = lovedPosts.remove(post.getId());
  505. return removedPost != null;
  506. }
  507.  
  508. public boolean unlovePost(int postId) {
  509. if (lovedPosts == null) {
  510. lovedPosts = new LinkedHashMap<>();
  511. }
  512.  
  513. Post removedPost = lovedPosts.remove(postId);
  514. return removedPost != null;
  515. }
  516.  
  517. public boolean isPostLoved(Post post) {
  518. if (lovedPosts == null) {
  519. lovedPosts = new LinkedHashMap<>();
  520. }
  521.  
  522. return lovedPosts.containsKey(post.getId());
  523. }
  524.  
  525. public boolean addUserToFollow(ApplicationUser userToFollow) {
  526. if (followedUsers == null) {
  527. followedUsers = new LinkedHashMap<>();
  528. }
  529.  
  530. if (!followedUsers.containsKey(userToFollow.getId())) {
  531. followedUsers.put(userToFollow.getId() ,userToFollow);
  532. return true;
  533. }
  534.  
  535. return false;
  536. }
  537.  
  538. public boolean unfollowUser(ApplicationUser user) {
  539. if (followedUsers == null) {
  540. followedUsers = new LinkedHashMap<>();
  541. }
  542.  
  543. ApplicationUser removedUser = followedUsers.remove(user.getId());
  544. return removedUser != null;
  545. }
  546.  
  547. public ApplicationUser getFollowedUser(int userId) {
  548. if (followedUsers == null) {
  549. followedUsers = new HashMap<>();
  550. }
  551.  
  552. return followedUsers.get(userId);
  553. }
  554.  
  555. public int getFriendsCount() {
  556. return friendsCount;
  557. }
  558.  
  559. public void setFriendsCount(int friendsCount) {
  560. this.friendsCount = friendsCount;
  561. }
  562.  
  563. public int getFollowersCount() {
  564. return followersCount;
  565. }
  566.  
  567. public void setFollowersCount(int followersCount) {
  568. this.followersCount = followersCount;
  569. }
  570.  
  571. public Post getUserPhotoPost() {
  572. return userPhotoPost;
  573. }
  574.  
  575. public void setUserPhotoPost(Post userPhotoPost) {
  576. this.userPhotoPost = userPhotoPost;
  577. }
  578.  
  579. /**
  580. * Adds a friend to the friends list
  581. * @param friend
  582. */
  583. public void addFriend(ApplicationUser friend) {
  584. if (friends == null) {
  585. friends = new LinkedHashMap<>();
  586. }
  587. friends.put(friend.getId(), friend);
  588. }
  589.  
  590. public boolean removeFriend(ApplicationUser friend) {
  591. if (friends == null) {
  592. friends = new LinkedHashMap<>();
  593. }
  594.  
  595. ApplicationUser removedFriend1 = friends.remove(friend.getId());
  596. ApplicationUser removedFriend2 = friendedByUsers.remove(friend.getId());
  597.  
  598. return removedFriend1 != null || removedFriend2 != null;
  599. }
  600.  
  601. public boolean removeFriend(int friendId) {
  602. if (friends == null) {
  603. friends = new LinkedHashMap<>();
  604. }
  605.  
  606. ApplicationUser removedFriend = friends.remove(friendId);
  607. return removedFriend != null;
  608. }
  609.  
  610. public FriendRequestEntity getRequestToFriends(int userId) {
  611. if (usersRequestsToFriends == null) {
  612. usersRequestsToFriends = new HashMap<>();
  613. }
  614.  
  615. return usersRequestsToFriends.get(userId);
  616. }
  617.  
  618. public FriendRequestEntity getRequestedToFriends(int userId) {
  619. if (usersRequestsToFriends == null) {
  620. usersRequestedToFriends = new HashMap<>();
  621. }
  622.  
  623. return usersRequestedToFriends.get(userId);
  624. }
  625.  
  626. public boolean addFriendRequest(FriendRequestEntity friendRequest, ApplicationUser requestedUser) {
  627. if (usersRequestedToFriends == null) {
  628. usersRequestedToFriends = new HashMap<>();
  629. }
  630.  
  631. if (!usersRequestedToFriends.containsKey(requestedUser.getId())) {
  632. friendRequest.setUser(this);
  633. friendRequest.setRequestedUser(requestedUser);
  634. requestedUser.addRequest(friendRequest, this.getId());
  635. usersRequestedToFriends.put(requestedUser.getId(), friendRequest);
  636. return true;
  637. }
  638.  
  639. return false;
  640. }
  641.  
  642. public void addRequest(FriendRequestEntity friendRequest, int userId) {
  643. if (usersRequestsToFriends == null) {
  644. usersRequestsToFriends = new HashMap<>();
  645. }
  646.  
  647. usersRequestsToFriends.put(userId, friendRequest);
  648. }
  649.  
  650. public FriendRequestEntity removeFromRequestedToFriends(int userId) {
  651. if (usersRequestedToFriends == null) {
  652. usersRequestedToFriends = new HashMap<>();
  653. }
  654.  
  655. FriendRequestEntity deletedRequest = usersRequestedToFriends.remove(userId);
  656.  
  657. return deletedRequest;
  658. }
  659.  
  660. public FriendRequestEntity removeFromFriendRequests(int userId) {
  661. if (usersRequestsToFriends == null) {
  662. usersRequestsToFriends = new HashMap<>();
  663. }
  664. FriendRequestEntity deletedRequest = usersRequestsToFriends.remove(userId);
  665.  
  666. return deletedRequest;
  667. }
  668.  
  669. public void addPost(Post post) {
  670. if (posts == null) {
  671. posts = new LinkedHashMap<>();
  672. }
  673.  
  674. posts.put(post.getId(), post);
  675. post.setApplicationUser(this);
  676. }
  677.  
  678. public boolean containsPost(Post post) {
  679. if (posts == null) {
  680. posts = new LinkedHashMap<>();
  681. }
  682.  
  683. return posts.containsKey(post.getId());
  684. }
  685.  
  686. public UserJoinGroupRequest addRequestGroupToJoin(Group group) {
  687. if (groupsRequestedToJoin == null) {
  688. groupsRequestedToJoin = new HashMap<>();
  689. }
  690.  
  691. UserJoinGroupRequest request = new UserJoinGroupRequest();
  692. request.setUser(this);
  693. request.setRequestDate(new Date());
  694. request.setRequestedGroup(group);
  695.  
  696. groupsRequestedToJoin.put(group.getId(), request);
  697. return request;
  698. }
  699.  
  700. public UserJoinGroupRequest getUserJoinGroupRequestByGroup(Group group) {
  701. if (groupsRequestedToJoin == null) {
  702. groupsRequestedToJoin = new HashMap<>();
  703. }
  704.  
  705. return groupsRequestedToJoin.get(group.getId());
  706. }
  707.  
  708. public GroupInvitation getGroupInvitationByGroup(Group group) {
  709. if (invitesToJoinGroupFromGroups == null) {
  710. invitesToJoinGroupFromGroups = new HashMap<>();
  711. }
  712.  
  713. return invitesToJoinGroupFromGroups.get(group.getId());
  714. }
  715.  
  716. public boolean containsFollowedGroupTab(GroupTab groupTab) {
  717. if (followedTabs == null) {
  718. followedTabs = new HashMap<>();
  719. }
  720.  
  721. return followedTabs.containsKey(groupTab.getId());
  722. }
  723.  
  724. public GroupTab unfollowGroupTab(GroupTab groupTab) {
  725. if (followedTabs == null) {
  726. followedTabs = new HashMap<>();
  727. }
  728.  
  729. return followedTabs.remove(groupTab.getId());
  730. }
  731.  
  732. public GroupTab followGroupTab(GroupTab groupTab) {
  733. if (followedTabs == null) {
  734. followedTabs = new HashMap<>();
  735. }
  736.  
  737. if (!containsFollowedGroupTab(groupTab)) {
  738. followedTabs.put(groupTab.getId(), groupTab);
  739. return groupTab;
  740. } else {
  741. return null;
  742. }
  743. }
  744.  
  745. public Map<Integer, Hashtag> getFollowedHashtags() {
  746. return followedHashtags;
  747. }
  748.  
  749. public void setFollowedHashtags(Map<Integer, Hashtag> followedHashtags) {
  750. this.followedHashtags = followedHashtags;
  751. }
  752.  
  753. public boolean isHashtagFollowed(Hashtag hashtag) {
  754. if (followedHashtags == null) {
  755. followedHashtags = new HashMap<>();
  756. }
  757.  
  758. return followedHashtags.containsKey(hashtag.getId());
  759. }
  760.  
  761. public Hashtag followHashtag(Hashtag hashtag) {
  762. if (followedHashtags == null) {
  763. followedHashtags = new HashMap<>();
  764. }
  765.  
  766. if (!isHashtagFollowed(hashtag)) {
  767. followedHashtags.put(hashtag.getId(), hashtag);
  768. return hashtag;
  769. } else {
  770. return null;
  771. }
  772. }
  773.  
  774. public Hashtag unfollowHashtag(Hashtag hashtag) {
  775. if (followedHashtags == null) {
  776. followedHashtags = new HashMap<>();
  777. }
  778.  
  779. return followedHashtags.remove(hashtag.getId());
  780. }
  781.  
  782. @Override
  783. public int hashCode() {
  784. return id + 57;
  785. }
  786.  
  787. @Override
  788. public boolean equals(Object obj) {
  789. ApplicationUser user = (ApplicationUser) obj;
  790.  
  791. return user.getId() == id;
  792. }
  793.  
  794. @Override
  795. public String toString() {
  796. return "ApplicationUser{" +
  797. "id=" + id +
  798. ", name='" + name + '\'' +
  799. '}';
  800. }
  801. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement