Skip to content

Commit e49786e

Browse files
bugfix
1 parent 4e61631 commit e49786e

26 files changed

+626
-131
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator;
2+
3+
import org.springframework.messaging.Message;
4+
import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage;
5+
import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage;
6+
7+
import java.util.List;
8+
9+
10+
public interface UserListCollector {
11+
12+
Message<UserMessage> collectList(Message<List<UserListMessage>> incomingListOfUserMessage);
13+
}

src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,20 @@ public ListsPersistorImpl(TaskService taskService, UserListService userListServi
2828
this.userListMessageBuilder = userListMessageBuilder;
2929
}
3030

31-
//TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252
3231
@Override
3332
public Message<UserListMessage> persistList(Message<UserListMessage> incomingMessage) {
3433
UserListMessage receivedMessage = incomingMessage.getPayload();
3534
long taskId = receivedMessage.getTaskMessage().getTaskId();
3635
Task task = taskService.findById(taskId);
3736
UserList userListOut = userListService.store(receivedMessage.getUserList(),task);
38-
UserListMessage newUserListMsg = new UserListMessage(receivedMessage.getTaskMessage(),receivedMessage.getUserListTwitter(),userListOut);
37+
UserListMessage newUserListMsg = new UserListMessage(
38+
receivedMessage.getTaskMessage(),
39+
receivedMessage.getUserListTwitter(),
40+
userListOut,
41+
receivedMessage.getIdTwitterOfThisUserList(),
42+
receivedMessage.getIdTwitterOfListOwningUser(),
43+
receivedMessage.getUserListType()
44+
);
3945
Message<UserListMessage> mqMessageOut = MessageBuilder.withPayload(newUserListMsg)
4046
.copyHeaders(incomingMessage.getHeaders())
4147
.setHeader("persisted",Boolean.TRUE)
Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,32 @@
11
package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl;
22

33
import org.springframework.beans.factory.annotation.Autowired;
4-
import org.springframework.integration.support.MessageBuilder;
54
import org.springframework.messaging.Message;
65
import org.springframework.stereotype.Component;
76
import org.woehlke.twitterwall.oodm.model.Task;
7+
import org.woehlke.twitterwall.oodm.model.parts.UserListType;
88
import org.woehlke.twitterwall.oodm.service.TaskService;
99
import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListsTransformator;
1010
import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage;
1111
import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder;
1212
import org.woehlke.twitterwall.backend.service.transform.UserListTransformService;
1313

14+
1415
@Component("mqUserListTransformator")
1516
public class ListsTransformatorImpl implements ListsTransformator {
1617

18+
19+
@Override
20+
public Message<UserListMessage> transformList(Message<UserListMessage> incomingMessage) {
21+
long taskId = incomingMessage.getPayload().getTaskMessage().getTaskId();
22+
Task task = taskService.findById(taskId);
23+
UserListType userListType = incomingMessage.getPayload().getUserListType();
24+
org.woehlke.twitterwall.oodm.model.UserList userListOut = userListTransformService.transform(incomingMessage.getPayload().getUserListTwitter(),task);
25+
Message<UserListMessage> mqMessageOut = userListMessageBuilder.buildUserListMessageForTransformedUser(incomingMessage,userListOut,userListType);
26+
return mqMessageOut;
27+
}
28+
29+
1730
private final TaskService taskService;
1831

1932
private final UserListTransformService userListTransformService;
@@ -26,18 +39,4 @@ public ListsTransformatorImpl(TaskService taskService, UserListTransformService
2639
this.userListTransformService = userListTransformService;
2740
this.userListMessageBuilder = userListMessageBuilder;
2841
}
29-
30-
//TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252
31-
@Override
32-
public Message<UserListMessage> transformList(Message<UserListMessage> incomingMessage) {
33-
long taskId = incomingMessage.getPayload().getTaskMessage().getTaskId();
34-
Task task = taskService.findById(taskId);
35-
org.woehlke.twitterwall.oodm.model.UserList userListOut = userListTransformService.transform(incomingMessage.getPayload().getUserListTwitter(),task);
36-
UserListMessage retVal = new UserListMessage(incomingMessage.getPayload().getTaskMessage(),incomingMessage.getPayload().getUserListTwitter(),userListOut);
37-
Message<UserListMessage> mqMessageOut = MessageBuilder.withPayload(retVal)
38-
.copyHeaders(incomingMessage.getHeaders())
39-
.setHeader("transformed",Boolean.TRUE)
40-
.build();
41-
return mqMessageOut;
42-
}
4342
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.integration.support.MessageBuilder;
5+
import org.springframework.messaging.Message;
6+
import org.springframework.stereotype.Component;
7+
import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage;
8+
import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.UserListCollector;
9+
import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage;
10+
import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage;
11+
import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder;
12+
import org.woehlke.twitterwall.oodm.model.Task;
13+
import org.woehlke.twitterwall.oodm.model.User;
14+
import org.woehlke.twitterwall.oodm.model.UserList;
15+
import org.woehlke.twitterwall.oodm.model.parts.UserListType;
16+
import org.woehlke.twitterwall.oodm.service.TaskService;
17+
import org.woehlke.twitterwall.oodm.service.UserListService;
18+
import org.woehlke.twitterwall.oodm.service.UserService;
19+
20+
import java.util.List;
21+
22+
@Component("mqUserListCollector")
23+
public class UserListCollectorImpl implements UserListCollector {
24+
25+
26+
@Override
27+
public Message<UserMessage> collectList(Message<List<UserListMessage>> incomingListOfUserMessage) {
28+
long idTwitterOfListOwningUser = (Long)incomingListOfUserMessage.getHeaders().get("idTwitterOfListOwningUser");
29+
long taskId = (Long)incomingListOfUserMessage.getHeaders().get("taskId");
30+
Task task = taskService.findById(taskId);
31+
User user = userService.findByIdTwitter(idTwitterOfListOwningUser);
32+
TaskMessage incomingTaskMessage = null;
33+
List<UserListMessage> in = incomingListOfUserMessage.getPayload();
34+
for(UserListMessage msgIn :in){
35+
UserListType userListType = msgIn.getUserListType();
36+
UserList userList = msgIn.getUserList();
37+
incomingTaskMessage = msgIn.getTaskMessage();
38+
switch (userListType){
39+
case USERS_OWN_LIST:
40+
user.getOwnLists().add(userList);
41+
userList.setListOwner(user);
42+
break;
43+
case USER_IS_MEMBER:
44+
user.getUserListMemberships().add(userList);
45+
userList.getMembers().add(user);
46+
break;
47+
case USER_IS_SUBSCRIBER:
48+
user.getUserListSubcriptions().add(userList);
49+
userList.getSubscriber().add(user);
50+
break;
51+
}
52+
userListService.store(userList,task);
53+
}
54+
userService.store(user,task);
55+
UserMessage outMsgPayload = new UserMessage(incomingTaskMessage, idTwitterOfListOwningUser);
56+
Message<UserMessage> mqMessageOut =
57+
MessageBuilder.withPayload(outMsgPayload)
58+
.copyHeaders(incomingListOfUserMessage.getHeaders())
59+
.build();
60+
return mqMessageOut;
61+
}
62+
63+
private final UserService userService;
64+
65+
private final UserListService userListService;
66+
67+
private final TaskService taskService;
68+
69+
private final UserMessageBuilder userMessageBuilder;
70+
71+
@Autowired
72+
public UserListCollectorImpl(UserService userService, UserListService userListService, TaskService taskService, UserMessageBuilder userMessageBuilder) {
73+
this.userService = userService;
74+
this.userListService = userListService;
75+
this.taskService = taskService;
76+
this.userMessageBuilder = userMessageBuilder;
77+
}
78+
}

src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/FetchUserListsForUsersImpl.java

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,53 @@
22

33
import org.springframework.beans.factory.annotation.Autowired;
44
import org.springframework.messaging.Message;
5+
import org.springframework.social.twitter.api.UserList;
56
import org.springframework.stereotype.Component;
67
import org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.FetchUserListsForUsers;
78
import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage;
89
import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder;
910
import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage;
1011
import org.woehlke.twitterwall.backend.service.remote.TwitterApiService;
11-
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
12-
import org.woehlke.twitterwall.oodm.service.TaskService;
13-
import org.woehlke.twitterwall.oodm.service.UserService;
12+
import org.woehlke.twitterwall.oodm.model.parts.User2UserList;
13+
import org.woehlke.twitterwall.oodm.model.parts.UserListType;
1414

15+
import java.util.ArrayList;
1516
import java.util.List;
1617

1718
@Component("mqFetchUserListsForUsers")
1819
public class FetchUserListsForUsersImpl implements FetchUserListsForUsers {
1920

20-
2121
@Override
22-
public List<Message<UserListMessage>> splitUserListMessage(Message<UserMessage> incomingTaskMessage) {
23-
return null;
22+
public List<Message<UserListMessage>> splitUserListMessage(Message<UserMessage> incomingUserMessage) {
23+
List<Message<UserListMessage>> result = new ArrayList<>();
24+
UserMessage in = incomingUserMessage.getPayload();
25+
long userIdTwitter = in.getTwitterProfileId();
26+
User2UserList user2UserList = twitterApiService.getUserListForUser(userIdTwitter);
27+
for(UserList userList:user2UserList.getOwnLists()){
28+
UserListType type = UserListType.USERS_OWN_LIST;
29+
Message<UserListMessage> out = userListMessageBuilder.buildUserListMessageFromUser(incomingUserMessage,userList,userIdTwitter,type);
30+
result.add(out);
31+
}
32+
for(UserList userList:user2UserList.getUserListMemberships()){
33+
UserListType type = UserListType.USER_IS_MEMBER;
34+
Message<UserListMessage> out = userListMessageBuilder.buildUserListMessageFromUser(incomingUserMessage,userList,userIdTwitter,type);
35+
result.add(out);
36+
}
37+
for(UserList userList:user2UserList.getUserListSubcriptions()){
38+
UserListType type = UserListType.USER_IS_SUBSCRIBER;
39+
Message<UserListMessage> out = userListMessageBuilder.buildUserListMessageFromUser(incomingUserMessage,userList,userIdTwitter,type);
40+
result.add(out);
41+
}
42+
return result;
2443
}
2544

2645
private final TwitterApiService twitterApiService;
2746

28-
private final TaskService taskService;
29-
30-
private final UserService userService;
31-
32-
private final CountedEntitiesService countedEntitiesService;
33-
3447
private final UserListMessageBuilder userListMessageBuilder;
3548

3649
@Autowired
37-
public FetchUserListsForUsersImpl(TwitterApiService twitterApiService, TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, UserListMessageBuilder userListMessageBuilder) {
50+
public FetchUserListsForUsersImpl(TwitterApiService twitterApiService, UserListMessageBuilder userListMessageBuilder) {
3851
this.twitterApiService = twitterApiService;
39-
this.taskService = taskService;
40-
this.userService = userService;
41-
this.countedEntitiesService = countedEntitiesService;
4252
this.userListMessageBuilder = userListMessageBuilder;
4353
}
4454
}

src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import org.springframework.stereotype.Component;
77
import org.woehlke.twitterwall.oodm.model.Task;
88
import org.woehlke.twitterwall.oodm.model.parts.CountedEntities;
9+
import org.woehlke.twitterwall.oodm.model.parts.User2UserList;
10+
import org.woehlke.twitterwall.oodm.model.parts.UserListType;
911
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
1012
import org.woehlke.twitterwall.oodm.service.TaskService;
1113
import org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.ListsSplitter;
@@ -44,12 +46,35 @@ public List<Message<UserListMessage>> splitUserListMessage(Message<TaskMessage>
4446
long id = msgIn.getTaskId();
4547
Task task = taskService.findById(id);
4648
task = taskService.start(task,countedEntities);
47-
List<UserList> fetchedUserList = twitterApiService.getLists();
48-
int loopId = 0;
49-
int loopAll = fetchedUserList.size();
50-
for (UserList userList: fetchedUserList) {
51-
loopId++;
52-
Message<UserListMessage> mqMessageOut = userListMessageBuilder.buildUserListMessage(incomingTaskMessage,userList,loopId,loopAll);
49+
User2UserList fetchedUserList = twitterApiService.getLists();
50+
for (UserList userList: fetchedUserList.getOwnLists()) {
51+
UserListType type = UserListType.USERS_OWN_LIST;
52+
Message<UserListMessage> mqMessageOut = userListMessageBuilder.buildUserListMessageFromTask(
53+
incomingTaskMessage,
54+
userList,
55+
fetchedUserList.getIdTwitterOfListOwningUser(),
56+
type
57+
);
58+
messageListOut.add(mqMessageOut);
59+
}
60+
for (UserList userList: fetchedUserList.getUserListSubcriptions()) {
61+
UserListType type = UserListType.USER_IS_SUBSCRIBER;
62+
Message<UserListMessage> mqMessageOut = userListMessageBuilder.buildUserListMessageFromTask(
63+
incomingTaskMessage,
64+
userList,
65+
fetchedUserList.getIdTwitterOfListOwningUser(),
66+
type
67+
);
68+
messageListOut.add(mqMessageOut);
69+
}
70+
for (UserList userList: fetchedUserList.getUserListMemberships()) {
71+
UserListType type = UserListType.USER_IS_MEMBER;
72+
Message<UserListMessage> mqMessageOut = userListMessageBuilder.buildUserListMessageFromTask(
73+
incomingTaskMessage,
74+
userList,
75+
fetchedUserList.getIdTwitterOfListOwningUser(),
76+
type
77+
);
5378
messageListOut.add(mqMessageOut);
5479
}
5580
return messageListOut;

0 commit comments

Comments
 (0)