diff --git a/pom.xml b/pom.xml
index e815197e..42e423ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,7 @@
org.springframework.boot
spring-boot-starter-parent
1.5.6.RELEASE
+
@@ -102,7 +103,8 @@
org.springframework.boot
- spring-boot-starter-cloud-connectors
+ spring-boot-devtools
+ runtime
org.springframework.boot
diff --git a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java
index 903b4548..4e508b06 100644
--- a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java
+++ b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java
@@ -15,25 +15,88 @@
@Component
public class ScheduledTasks {
- @Scheduled(initialDelay= TEN_SECONDS, fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_TWEETS)
+ @Scheduled(initialDelay= TEN_SECONDS, fixedRate = ONE_DAY)
+ public void createImprintUserAsync(){
+ String msg = "create Imprint User (Async) ";
+ if(!schedulerProperties.getSkipFortesting()) {
+ Task task = asyncStartTask.createImprintUserAsync();
+ log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
+ }
+ }
+
+ @Scheduled(initialDelay= TEN_SECONDS * 2, fixedRate = FIVE_MINUTES)
public void fetchTweetsFromTwitterSearch() {
String msg = "fetch Tweets From TwitterSearch ";
- if((schedulerProperties.getAllowUpdateTweets()) && (!schedulerProperties.getSkipFortesting())) {
+ if((schedulerProperties.getAllowFetchTweetsFromTwitterSearch()) && (!schedulerProperties.getSkipFortesting())) {
Task task = asyncStartTask.fetchTweetsFromSearch();
log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
}
}
- @Scheduled(initialDelay= TEN_SECONDS *2, fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_USER_LIST)
+ @Scheduled(initialDelay= TEN_SECONDS * 3, fixedRate = TWELVE_HOURS)
public void fetchUsersFromDefinedUserList(){
String msg = "fetch Users from Defined User List ";
- if((schedulerProperties.getFetchUserListAllow()) && (!schedulerProperties.getSkipFortesting())) {
+ if((schedulerProperties.getFetchUsersFromDefinedUserListAllow()) && (!schedulerProperties.getSkipFortesting())) {
Task task = asyncStartTask.fetchUsersFromList();
log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
}
}
- @Scheduled(initialDelay= TEN_SECONDS *3, fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_FOLLOWER)
+ @Scheduled(initialDelay= TEN_SECONDS * 4, fixedRate = TWELVE_HOURS)
+ public void getHomeTimeline() {
+ String msg = "get Home Timeline Tweets ";
+ if((schedulerProperties.getAllowGetHomeTimeline()) && (!schedulerProperties.getSkipFortesting())) {
+ Task task = asyncStartTask.getHomeTimeline();
+ log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
+ }
+ }
+
+ @Scheduled(initialDelay= TEN_SECONDS * 5, fixedRate = TWELVE_HOURS)
+ public void getUserTimeline() {
+ String msg = " get User Timeline Tweets ";
+ if((schedulerProperties.getAllowGetUserTimeline()) && (!schedulerProperties.getSkipFortesting())) {
+ Task task = asyncStartTask.getUserTimeline();
+ log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
+ }
+ }
+
+ @Scheduled(initialDelay= TEN_SECONDS * 6, fixedRate = TWELVE_HOURS)
+ public void getMentions() {
+ String msg = " get Mentions ";
+ if((schedulerProperties.getAllowGetMentions()) && (!schedulerProperties.getSkipFortesting())) {
+ Task task = asyncStartTask.getMentions();
+ log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
+ }
+ }
+
+ @Scheduled(initialDelay= TEN_SECONDS * 7, fixedRate = TWELVE_HOURS)
+ public void getFavorites() {
+ String msg = " get Favorites ";
+ if((schedulerProperties.getAllowGetFavorites()) && (!schedulerProperties.getSkipFortesting())) {
+ Task task = asyncStartTask.getFavorites();
+ log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
+ }
+ }
+
+ @Scheduled(initialDelay= TEN_SECONDS * 8, fixedRate = TWELVE_HOURS)
+ public void getRetweetsOfMe() {
+ String msg = " get Retweets Of Me ";
+ if((schedulerProperties.getAllowGetRetweetsOfMe()) && (!schedulerProperties.getSkipFortesting())) {
+ Task task = asyncStartTask.getRetweetsOfMe();
+ log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
+ }
+ }
+
+ @Scheduled(initialDelay= TEN_SECONDS * 9, fixedRate = TWELVE_HOURS)
+ public void getLists() {
+ String msg = " get Lists ";
+ if((schedulerProperties.getAllowGetLists()) && (!schedulerProperties.getSkipFortesting())) {
+ Task task = asyncStartTask.getLists();
+ log.info(msg+ "SCHEDULED: task "+task.getUniqueId());
+ }
+ }
+
+ @Scheduled(initialDelay= TEN_SECONDS * 10, fixedRate = ONE_DAY)
public void fetchFollower(){
String msg = "fetch Follower ";
if((schedulerProperties.getFetchFollowerAllow()) && (!schedulerProperties.getSkipFortesting())) {
@@ -42,7 +105,7 @@ public void fetchFollower(){
}
}
- @Scheduled(initialDelay= TEN_SECONDS *4, fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_FRIENDS)
+ @Scheduled(initialDelay= TEN_SECONDS * 11, fixedRate = ONE_DAY)
public void fetchFriends(){
String msg = "fetch Friends ";
if((schedulerProperties.getFetchFriendsAllow()) && (!schedulerProperties.getSkipFortesting())) {
@@ -51,7 +114,7 @@ public void fetchFriends(){
}
}
- @Scheduled(initialDelay= TEN_SECONDS *5, fixedRate = FIXED_RATE_FOR_SCHEDULAR_REMOVE_OLD_DATA_FROM_STORAGE)
+ @Scheduled(initialDelay= TEN_SECONDS * 12, fixedRate = ONE_HOUR)
public void removeOldDataFromStorage(){
String msg = "remove Old Data From Storage: ";
if((schedulerProperties.getRemoveOldDataFromStorageAllow()) && (!schedulerProperties.getSkipFortesting())) {
@@ -60,7 +123,7 @@ public void removeOldDataFromStorage(){
}
}
- @Scheduled(initialDelay= TEN_SECONDS *6, fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER_BY_MENTION)
+ @Scheduled(initialDelay= TEN_SECONDS * 13, fixedRate = ONE_HOUR)
public void updateUserProfilesFromMentions(){
String msg = "update User Profiles From Mentions";
if((schedulerProperties.getAllowUpdateUserProfilesFromMention()) && (!schedulerProperties.getSkipFortesting())) {
@@ -69,7 +132,7 @@ public void updateUserProfilesFromMentions(){
}
}
- @Scheduled(initialDelay= TEN_SECONDS *7, fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_TWEETS)
+ @Scheduled(initialDelay= TEN_SECONDS * 14, fixedRate = ONE_DAY)
public void updateTweets() {
String msg = "update Tweets ";
if((schedulerProperties.getAllowUpdateTweets()) && (!schedulerProperties.getSkipFortesting())){
@@ -78,7 +141,7 @@ public void updateTweets() {
}
}
- @Scheduled(initialDelay= TEN_SECONDS *8, fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER)
+ @Scheduled(initialDelay= TEN_SECONDS * 15, fixedRate = ONE_DAY)
public void updateUserProfiles() {
String msg = "update User Profiles ";
if((schedulerProperties.getAllowUpdateUserProfiles()) && (!schedulerProperties.getSkipFortesting())) {
@@ -97,25 +160,13 @@ public ScheduledTasks(SchedulerProperties schedulerProperties, AsyncStartTask mq
public final static long ONE_MINUTE = 60 * 1000;
+ public final static long FIVE_MINUTES = 5 * ONE_MINUTE;
+
public final static long ONE_HOUR = 60 * ONE_MINUTE;
public final static long TWELVE_HOURS = 12 * ONE_HOUR;
- private final static long FIXED_RATE_FOR_SCHEDULAR_FETCH_TWEETS = ONE_HOUR;
-
- private final static long FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER = TWELVE_HOURS;
-
- private final static long FIXED_RATE_FOR_SCHEDULAR_FETCH_FOLLOWER = TWELVE_HOURS;
-
- private final static long FIXED_RATE_FOR_SCHEDULAR_FETCH_FRIENDS = TWELVE_HOURS;
-
- private final static long FIXED_RATE_FOR_SCHEDULAR_UPDATE_TWEETS = TWELVE_HOURS;
-
- private final static long FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER_BY_MENTION = ONE_HOUR;
-
- private final static long FIXED_RATE_FOR_SCHEDULAR_FETCH_USER_LIST = TWELVE_HOURS;
-
- private final static long FIXED_RATE_FOR_SCHEDULAR_REMOVE_OLD_DATA_FROM_STORAGE = ONE_HOUR;
+ public final static long ONE_DAY = 24 * ONE_HOUR;
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java b/src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java
index 8846d73a..3d96569a 100644
--- a/src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java
+++ b/src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java
@@ -31,10 +31,10 @@ public class SchedulerProperties {
private Boolean skipFortesting;
@NotNull
- private Boolean fetchUserListAllow;
+ private Boolean fetchUsersFromDefinedUserListAllow;
@NotNull
- private String fetchUserListName;
+ private String fetchUsersFromDefinedUserListName;
@NotNull
private Boolean removeOldDataFromStorageAllow;
@@ -45,6 +45,24 @@ public class SchedulerProperties {
@NotNull
private Boolean fetchFriendsAllow;
+ @NotNull
+ private Boolean allowGetHomeTimeline;
+
+ @NotNull
+ private Boolean allowGetUserTimeline;
+
+ @NotNull
+ private Boolean allowGetMentions;
+
+ @NotNull
+ private Boolean allowGetFavorites;
+
+ @NotNull
+ private Boolean allowGetRetweetsOfMe;
+
+ @NotNull
+ private Boolean allowGetLists;
+
public Boolean getAllowFetchTweetsFromTwitterSearch() {
return allowFetchTweetsFromTwitterSearch;
}
@@ -93,20 +111,20 @@ public void setSkipFortesting(Boolean skipFortesting) {
this.skipFortesting = skipFortesting;
}
- public Boolean getFetchUserListAllow() {
- return fetchUserListAllow;
+ public Boolean getFetchUsersFromDefinedUserListAllow() {
+ return fetchUsersFromDefinedUserListAllow;
}
- public void setFetchUserListAllow(Boolean fetchUserListAllow) {
- this.fetchUserListAllow = fetchUserListAllow;
+ public void setFetchUsersFromDefinedUserListAllow(Boolean fetchUsersFromDefinedUserListAllow) {
+ this.fetchUsersFromDefinedUserListAllow = fetchUsersFromDefinedUserListAllow;
}
- public String getFetchUserListName() {
- return fetchUserListName;
+ public String getFetchUsersFromDefinedUserListName() {
+ return fetchUsersFromDefinedUserListName;
}
- public void setFetchUserListName(String fetchUserListName) {
- this.fetchUserListName = fetchUserListName;
+ public void setFetchUsersFromDefinedUserListName(String fetchUsersFromDefinedUserListName) {
+ this.fetchUsersFromDefinedUserListName = fetchUsersFromDefinedUserListName;
}
public Boolean getRemoveOldDataFromStorageAllow() {
@@ -132,4 +150,52 @@ public void setFetchFriendsAllow(Boolean fetchFriendsAllow) {
public Boolean getFetchFriendsAllow() {
return fetchFriendsAllow;
}
+
+ public Boolean getAllowGetHomeTimeline() {
+ return allowGetHomeTimeline;
+ }
+
+ public void setAllowGetHomeTimeline(Boolean allowGetHomeTimeline) {
+ this.allowGetHomeTimeline = allowGetHomeTimeline;
+ }
+
+ public Boolean getAllowGetUserTimeline() {
+ return allowGetUserTimeline;
+ }
+
+ public void setAllowGetUserTimeline(Boolean allowGetUserTimeline) {
+ this.allowGetUserTimeline = allowGetUserTimeline;
+ }
+
+ public Boolean getAllowGetMentions() {
+ return allowGetMentions;
+ }
+
+ public void setAllowGetMentions(Boolean allowGetMentions) {
+ this.allowGetMentions = allowGetMentions;
+ }
+
+ public Boolean getAllowGetFavorites() {
+ return allowGetFavorites;
+ }
+
+ public void setAllowGetFavorites(Boolean allowGetFavorites) {
+ this.allowGetFavorites = allowGetFavorites;
+ }
+
+ public Boolean getAllowGetRetweetsOfMe() {
+ return allowGetRetweetsOfMe;
+ }
+
+ public void setAllowGetRetweetsOfMe(Boolean allowGetRetweetsOfMe) {
+ this.allowGetRetweetsOfMe = allowGetRetweetsOfMe;
+ }
+
+ public Boolean getAllowGetLists() {
+ return allowGetLists;
+ }
+
+ public void setAllowGetLists(Boolean allowGetLists) {
+ this.allowGetLists = allowGetLists;
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java
index 16f2998f..b98a06f2 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java
@@ -7,8 +7,6 @@
import org.woehlke.twitterwall.conf.properties.TwitterProperties;
import org.woehlke.twitterwall.frontend.controller.common.Symbols;
import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper;
-import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
-import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
/**
* Created by tw on 03.07.17.
@@ -17,18 +15,6 @@
@RequestMapping(path="/application")
public class ApplicationController {
- @RequestMapping(path="/domain/count")
- public String domainCount(Model model) {
- String msg = "/application/domain/count: ";
- String title = "Counted Entities";
- String subtitle = twitterProperties.getSearchQuery();
- String symbol = Symbols.DATABASE.toString();
- model = controllerHelper.setupPage(model,title,subtitle,symbol);
- CountedEntities countedEntities =this.countedEntitiesService.countAll();
- model.addAttribute("countedEntities", countedEntities);
- return "application/domain/count";
- }
-
@RequestMapping(path="/management")
public String managementPage(Model model) {
String msg = "/application/domain/count: ";
@@ -39,30 +25,14 @@ public String managementPage(Model model) {
return "application/management";
}
- @RequestMapping(path="/domain/delete/all")
- public String domainDeleteAll(Model model) {
- String msg = "/application/domain/delete/all: ";
- String title = "Counted Entities";
- String subtitle = twitterProperties.getSearchQuery();
- String symbol = Symbols.DATABASE.toString();
- model = controllerHelper.setupPage(model,title,subtitle,symbol);
- CountedEntities countedEntities =this.countedEntitiesService.deleteAll();
- model.addAttribute("countedEntities", countedEntities);
- return "application/domain/count";
- }
-
- private final CountedEntitiesService countedEntitiesService;
-
private final ControllerHelper controllerHelper;
private final TwitterProperties twitterProperties;
@Autowired
public ApplicationController(
- CountedEntitiesService countedEntitiesService,
ControllerHelper controllerHelper,
TwitterProperties twitterProperties) {
- this.countedEntitiesService = countedEntitiesService;
this.controllerHelper = controllerHelper;
this.twitterProperties = twitterProperties;
}
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java
index 022fda7f..b76df6b8 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java
@@ -9,9 +9,11 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.woehlke.twitterwall.conf.properties.FrontendProperties;
+import org.woehlke.twitterwall.conf.properties.TwitterProperties;
import org.woehlke.twitterwall.frontend.controller.common.Symbols;
import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper;
import org.woehlke.twitterwall.oodm.entities.*;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity;
import org.woehlke.twitterwall.oodm.service.*;
@@ -27,6 +29,30 @@ public class CountedEntitiesController {
private final static String PATH="application/countedEntities";
+ @RequestMapping(path="/domain/count")
+ public String domainCount(Model model) {
+ String msg = "/application/domain/count: ";
+ String title = "Counted Entities";
+ String subtitle = twitterProperties.getSearchQuery();
+ String symbol = Symbols.DATABASE.toString();
+ model = controllerHelper.setupPage(model,title,subtitle,symbol);
+ CountedEntities countedEntities =this.countedEntitiesService.countAll();
+ model.addAttribute("countedEntities", countedEntities);
+ return "application/domain/count";
+ }
+
+ @RequestMapping(path="/domain/delete/all")
+ public String domainDeleteAll(Model model) {
+ String msg = "/application/domain/delete/all: ";
+ String title = "Counted Entities";
+ String subtitle = twitterProperties.getSearchQuery();
+ String symbol = Symbols.DATABASE.toString();
+ model = controllerHelper.setupPage(model,title,subtitle,symbol);
+ CountedEntities countedEntities =this.countedEntitiesService.deleteAll();
+ model.addAttribute("countedEntities", countedEntities);
+ return "application/domain/count";
+ }
+
@RequestMapping(path="/tweet/hashtag")
public String domainCountTweet2hashtag(
@RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page,
@@ -292,18 +318,22 @@ private void setUpThisPage(String title,Model model){
private final UrlService urlService;
+ private final CountedEntitiesService countedEntitiesService;
+
+ private final TwitterProperties twitterProperties;
+
@Autowired
public CountedEntitiesController(
- FrontendProperties frontendProperties,
- ControllerHelper controllerHelper,
- TweetService tweetService,
- UserService userService,
- HashTagService hashTagService,
- MediaService mediaService,
- MentionService mentionService,
- TickerSymbolService tickerSymbolService,
- UrlService urlService
- ) {
+ FrontendProperties frontendProperties,
+ ControllerHelper controllerHelper,
+ TweetService tweetService,
+ UserService userService,
+ HashTagService hashTagService,
+ MediaService mediaService,
+ MentionService mentionService,
+ TickerSymbolService tickerSymbolService,
+ UrlService urlService,
+ CountedEntitiesService countedEntitiesService, TwitterProperties twitterProperties) {
this.frontendProperties = frontendProperties;
this.controllerHelper = controllerHelper;
this.tweetService = tweetService;
@@ -313,5 +343,7 @@ public CountedEntitiesController(
this.mentionService = mentionService;
this.tickerSymbolService = tickerSymbolService;
this.urlService = urlService;
+ this.countedEntitiesService = countedEntitiesService;
+ this.twitterProperties = twitterProperties;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java
index f353927a..3034a692 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java
@@ -18,15 +18,12 @@
import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper;
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.TaskHistory;
-import org.woehlke.twitterwall.oodm.entities.Tweet;
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.oodm.service.TaskHistoryService;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.oodm.service.UserService;
import org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.StartTask;
-import java.util.List;
/**
* Created by tw on 11.07.17.
@@ -125,7 +122,7 @@ public String fetchTweetsFromTwitterSearchStartTask(Model model) {
@RequestMapping(path="/start/tweets/update")
public String updateTweetsStartTask(Model model) {
- String msg = "/start/tweets/fetch";
+ String msg = "/start/tweets/update";
String title = "Scheduled Task started: update Tweets";
String subtitle = "/start/tweets/update";
String symbol = Symbols.TASK.toString();
@@ -135,6 +132,18 @@ public String updateTweetsStartTask(Model model) {
return PATH+"/start/taskStarted";
}
+ @RequestMapping(path="/start/users/update")
+ public String updateUsersStartTask(Model model) {
+ String msg = "/start/users/update";
+ String title = "Scheduled Task started: update Users";
+ String subtitle = "/start/users/update";
+ String symbol = Symbols.TASK.toString();
+ model = controllerHelper.setupPage(model,title,subtitle,symbol);
+ Task task = mqAsyncStartTask.updateUsers();
+ model.addAttribute("task",task);
+ return PATH+"/start/taskStarted";
+ }
+
@RequestMapping(path="/start/users/list/fetch")
public String fetchUsersFromDefinedUserListStartTask(Model model){
String msg = "/start/users/list/fetch";
@@ -183,18 +192,79 @@ public String updateUserProfilesFromMentionsStartTask(Model model){
return PATH+"/start/taskStarted";
}
- @RequestMapping(path="/start/users/update")
- public String updateUserProfilesStartTask(Model model) {
- String msg = "/start/users/update";
- String title = "Scheduled Task started: update Users";
- String subtitle = "/start/users/update";
+ @RequestMapping(path="/start/tweets/timeline/home")
+ public String getHomeTimeline(Model model) {
+ String msg = "/start/tweets/timeline/home";
+ String title = "Scheduled Task started: getHomeTimeline";
+ String subtitle = "/start/tweets/timeline/home";
String symbol = Symbols.TASK.toString();
model = controllerHelper.setupPage(model,title,subtitle,symbol);
- Task task = mqAsyncStartTask.updateUsers();
+ Task task = mqAsyncStartTask.getHomeTimeline();
+ model.addAttribute("task",task);
+ return PATH+"/start/taskStarted";
+ }
+
+ @RequestMapping(path="/start/tweets/timeline/user")
+ public String getUserTimeline(Model model) {
+ String msg = "/start/tweets/timeline/user";
+ String title = "Scheduled Task started: getUserTimeline";
+ String subtitle = "/start/tweets/timeline/user";
+ String symbol = Symbols.TASK.toString();
+ model = controllerHelper.setupPage(model,title,subtitle,symbol);
+ Task task = mqAsyncStartTask.getUserTimeline();
model.addAttribute("task",task);
return PATH+"/start/taskStarted";
}
+ @RequestMapping(path="/start/tweets/mentions")
+ public String getMentions(Model model) {
+ String msg = "/start/tweets/mentions";
+ String title = "Scheduled Task started: getMentions";
+ String subtitle = "/start/tweets/mentions";
+ String symbol = Symbols.TASK.toString();
+ model = controllerHelper.setupPage(model,title,subtitle,symbol);
+ Task task = mqAsyncStartTask.getMentions();
+ model.addAttribute("task",task);
+ return PATH+"/start/taskStarted";
+ }
+
+ @RequestMapping(path="/start/tweets/favorites")
+ public String getFavorites(Model model) {
+ String msg = "/start/tweets/favorites";
+ String title = "Scheduled Task started: getFavorites";
+ String subtitle = "/start/tweets/favorites";
+ String symbol = Symbols.TASK.toString();
+ model = controllerHelper.setupPage(model,title,subtitle,symbol);
+ Task task = mqAsyncStartTask.getFavorites();
+ model.addAttribute("task",task);
+ return PATH+"/start/taskStarted";
+ }
+
+ @RequestMapping(path="/start/tweets/myretweets")
+ public String getRetweetsOfMe(Model model) {
+ String msg = "/start/tweets/myretweets";
+ String title = "Scheduled Task started: getRetweetsOfMe";
+ String subtitle = "/start/tweets/myretweets";
+ String symbol = Symbols.TASK.toString();
+ model = controllerHelper.setupPage(model,title,subtitle,symbol);
+ Task task = mqAsyncStartTask.getRetweetsOfMe();
+ model.addAttribute("task",task);
+ return PATH+"/start/taskStarted";
+ }
+
+ @RequestMapping(path="/start/userlists")
+ public String getLists(Model model) {
+ String msg = "/start/userlists";
+ String title = "Scheduled Task started: getLists";
+ String subtitle = "/start/userlists";
+ String symbol = Symbols.TASK.toString();
+ model = controllerHelper.setupPage(model,title,subtitle,symbol);
+ Task task = mqAsyncStartTask.getLists();
+ model.addAttribute("task",task);
+ return PATH+"/start/taskStarted";
+ }
+
+
private static final Logger log = LoggerFactory.getLogger(TaskController.class);
private final String PATH = "task";
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java
index 4a0c0681..2d7b5501 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java
@@ -66,6 +66,126 @@ public String getTweetById(
return "tweet/id";
}
+ @RequestMapping("/timeline/home")
+ public String getHomeTimeline(
+ @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page,
+ Model model
+ ){
+ String title = "Tweets";
+ model = controllerHelper.setupPage(
+ model,
+ title,
+ "Home Timneline",
+ Symbols.HOME_TIMELINE_TWEETS.toString()
+ );
+ String sortByColumn = "createdAt";
+ Pageable pageRequest = new PageRequest(
+ page,
+ frontendProperties.getPageSize(),
+ Sort.Direction.DESC,
+ sortByColumn
+ );
+ Page latest = tweetService.getHomeTimeline(pageRequest);
+ model.addAttribute("latestTweets", latest);
+ return "tweet/all";
+ }
+
+ @RequestMapping("/timeline/user")
+ public String getUserTimeline(
+ @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page,
+ Model model
+ ){
+ String title = "Tweets";
+ model = controllerHelper.setupPage(
+ model,
+ title,
+ "User Timeline",
+ Symbols.USER_TIMELINE_TWEETS.toString()
+ );
+ String sortByColumn = "createdAt";
+ Pageable pageRequest = new PageRequest(
+ page,
+ frontendProperties.getPageSize(),
+ Sort.Direction.DESC,
+ sortByColumn
+ );
+ Page latest = tweetService.getUserTimeline(pageRequest);
+ model.addAttribute("latestTweets", latest);
+ return "tweet/all";
+ }
+
+ @RequestMapping("/mentions")
+ public String getMentions(
+ @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page,
+ Model model
+ ){
+ String title = "Tweets";
+ model = controllerHelper.setupPage(
+ model,
+ title,
+ "Mentions",
+ Symbols.MENTIONS_TWEETS.toString()
+ );
+ String sortByColumn = "createdAt";
+ Pageable pageRequest = new PageRequest(
+ page,
+ frontendProperties.getPageSize(),
+ Sort.Direction.DESC,
+ sortByColumn
+ );
+ Page latest = tweetService.getMentions(pageRequest);
+ model.addAttribute("latestTweets", latest);
+ return "tweet/all";
+ }
+
+ @RequestMapping("/favorites")
+ public String getFavorites(
+ @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page,
+ Model model
+ ){
+ String title = "Tweets";
+ model = controllerHelper.setupPage(
+ model,
+ title,
+ "Favorites",
+ Symbols.FAVORITES_TWEETS.toString()
+ );
+ String sortByColumn = "createdAt";
+ Pageable pageRequest = new PageRequest(
+ page,
+ frontendProperties.getPageSize(),
+ Sort.Direction.DESC,
+ sortByColumn
+ );
+ Page latest = tweetService.getFavorites(pageRequest);
+ model.addAttribute("latestTweets", latest);
+ return "tweet/all";
+ }
+
+ @RequestMapping("/retweets")
+ public String getRetweetsOfMe(
+ @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page,
+ Model model
+ ){
+ String title = "Tweets";
+ model = controllerHelper.setupPage(
+ model,
+ title,
+ "Retweets Of Me",
+ Symbols.RETWEETS_OF_ME_FAVORITES_TWEETS.toString()
+ );
+ String sortByColumn = "createdAt";
+ Pageable pageRequest = new PageRequest(
+ page,
+ frontendProperties.getPageSize(),
+ Sort.Direction.DESC,
+ sortByColumn
+ );
+ Page latest = tweetService.getRetweetsOfMe(pageRequest);
+ model.addAttribute("latestTweets", latest);
+ return "tweet/all";
+ }
+
private static final Logger log = LoggerFactory.getLogger(TweetController.class);
private final TweetService tweetService;
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java
new file mode 100644
index 00000000..18396890
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java
@@ -0,0 +1,82 @@
+package org.woehlke.twitterwall.frontend.controller;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.woehlke.twitterwall.conf.properties.FrontendProperties;
+import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper;
+import org.woehlke.twitterwall.frontend.controller.common.Symbols;
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.oodm.service.UserListService;
+
+@Controller
+@RequestMapping("/userlist")
+public class UserListController {
+
+ private final static String PATH="userlist";
+
+ @RequestMapping("/all")
+ public String getAll(
+ @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page,
+ Model model
+ ) {
+ Pageable pageRequest = new PageRequest(
+ page,
+ frontendProperties.getPageSize(),
+ Sort.Direction.ASC,
+ "slug"
+ );
+ Page userlists = userListService.getAll(pageRequest);
+ model.addAttribute("myPageContent", userlists);
+ String symbol = Symbols.USER_ALL.toString();
+ String subtitle = "All Users";
+ model = controllerHelper.setupPage(model, title, subtitle, symbol);
+ return "userlist/all";
+ }
+
+ @RequestMapping("/{id}")
+ public String getUserListForId(
+ @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page,
+ @PathVariable("id") UserList userList, Model model
+ ) {
+ Pageable pageRequest = new PageRequest(
+ page,
+ frontendProperties.getPageSize(),
+ Sort.Direction.DESC,
+ "createdAt"
+ );
+ String symbol = Symbols.PROFILE.toString();
+ String title = userList.getFullName();
+ String subtitle = userList.getDescription();
+ model = controllerHelper.setupPage(model, title, subtitle, symbol);
+ model.addAttribute("userList", userList);
+ return "userlist/id";
+ }
+
+ private static final Logger log = LoggerFactory.getLogger(UserController.class);
+
+ private final UserListService userListService;
+
+ private final FrontendProperties frontendProperties;
+
+ private final ControllerHelper controllerHelper;
+
+ private static String title = "User List";
+
+ @Autowired
+ public UserListController(UserListService userListService, FrontendProperties frontendProperties, ControllerHelper controllerHelper) {
+ this.userListService = userListService;
+ this.frontendProperties = frontendProperties;
+ this.controllerHelper = controllerHelper;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java
index 86800f5f..ef9bb960 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java
@@ -9,6 +9,11 @@ public enum Symbols {
IMPRINT(""),
PROFILE(""),
HOME(""),
+ HOME_TIMELINE_TWEETS(""),
+ USER_TIMELINE_TWEETS(""),
+ MENTIONS_TWEETS(""),
+ FAVORITES_TWEETS(""),
+ RETWEETS_OF_ME_FAVORITES_TWEETS(""),
USER_ALL(""),
USER_TWEETS(""),
USER_NOT_YET_FRIENDS(""),
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java
index 8ae24ef8..b902ab9c 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java
@@ -34,16 +34,16 @@ private Page setupPage(Page page, String title, String subtitle, String symbol)
} else {
page.setGoogleAnalyticScriptHtml("");
}
- log.info("--------------------------------------------------------------------");
- log.info("setupPage = "+page.toString());
- log.info("--------------------------------------------------------------------");
+ log.debug("--------------------------------------------------------------------");
+ log.debug("setupPage = "+page.toString());
+ log.debug("--------------------------------------------------------------------");
return page;
}
public ModelAndView setupPage(ModelAndView mav, String title, String subtitle, String symbol) {
Page page = new Page();
page = setupPage(page, title, subtitle, symbol);
- log.info("page: "+page.toString());
+ log.debug("page: "+page.toString());
mav.addObject("page", page);
return mav;
}
@@ -51,7 +51,7 @@ public ModelAndView setupPage(ModelAndView mav, String title, String subtitle, S
public Model setupPage(Model model, String title, String subtitle, String symbol) {
Page page = new Page();
page = setupPage(page, title, subtitle, symbol);
- log.info("page: "+page.toString());
+ log.debug("page: "+page.toString());
model.addAttribute("page", page);
return model;
}
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java
index c11c6049..c68a7936 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java
@@ -9,7 +9,6 @@
import org.woehlke.twitterwall.conf.properties.FrontendProperties;
import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper;
import org.woehlke.twitterwall.oodm.entities.HashTag;
-import org.woehlke.twitterwall.oodm.entities.Media;
import org.woehlke.twitterwall.oodm.service.HashTagService;
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java
index 604ad587..a5bfd5bc 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java
@@ -74,6 +74,7 @@ public class TaskHistory implements DomainObjectMinimal {
@AttributeOverrides({
@AttributeOverride(name = "countUser", column = @Column(name = "count_user",nullable=false)),
@AttributeOverride(name = "countTweets", column = @Column(name = "count_tweets",nullable=false)),
+ @AttributeOverride(name = "countUserLists", column = @Column(name = "count_userlists",nullable=false)),
@AttributeOverride(name = "countHashTags", column = @Column(name = "count_hashtags",nullable=false)),
@AttributeOverride(name = "countMedia", column = @Column(name = "count_media",nullable=false)),
@AttributeOverride(name = "countMention", column = @Column(name = "count_mention",nullable=false)),
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java
index 5886100e..be621bf3 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java
@@ -53,6 +53,26 @@
@NamedQuery(
name="Tweet.findByUniqueId",
query="select t from Tweet t where t.idTwitter=:idTwitter"
+ ),
+ @NamedQuery(
+ name="Tweet.getHomeTimeline",
+ query="select t from Tweet t where t.taskInfo.getHomeTimeline=true"
+ ),
+ @NamedQuery(
+ name="Tweet.getUserTimeline",
+ query="select t from Tweet t where t.taskInfo.getUserTimeline=true"
+ ),
+ @NamedQuery(
+ name="Tweet.getMentions",
+ query="select t from Tweet t where t.taskInfo.getMentions=true"
+ ),
+ @NamedQuery(
+ name="Tweet.getFavorites",
+ query="select t from Tweet t where t.taskInfo.getFavorites=true"
+ ),
+ @NamedQuery(
+ name="Tweet.getRetweetsOfMe",
+ query="select t from Tweet t where t.taskInfo.getRetweetsOfMe=true"
)
})
@NamedNativeQueries({
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java
index 7f51a9f1..26e00f9e 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java
@@ -35,62 +35,62 @@
}
)
@NamedQueries({
- @NamedQuery(
- name = "User.findTweetingUsers",
- query = "select t from User as t where t.taskInfo.fetchTweetsFromSearch=true"
- ),
- @NamedQuery(
- name = "User.findFollower",
- query = "select t from User as t where t.taskInfo.fetchFollower=true"
- ),
- @NamedQuery(
- name = "User.findNotYetFollower",
- query = "select t from User as t where t.taskInfo.fetchFollower=false"
- ),
- @NamedQuery(
- name = "User.findFriends",
- query = "select t from User as t where t.taskInfo.fetchFriends=true"
- ),
- @NamedQuery(
- name = "User.findNotYetFriends",
- query = "select t from User as t where t.taskInfo.fetchFriends=false"
- ),
- @NamedQuery(
- name = "User.findOnList",
- query = "select t from User as t where t.taskInfo.fetchUsersFromList=true"
- ),
- @NamedQuery(
- name = "User.findNotYetOnList",
- query = "select t from User as t where t.taskInfo.fetchUsersFromList=false and t.taskInfo.fetchTweetsFromSearch=true"
- ),
- @NamedQuery(
- name="User.getUsersForHashTag",
- query="select t from User as t join t.entities.hashTags hashTag WHERE hashTag.text=:hashtagText"
- ),
- @NamedQuery(
- name="User.countUsersForHashTag",
- query="select count(t) from User as t join t.entities.hashTags hashTag WHERE hashTag.text=:hashtagText"
- ),
- @NamedQuery(
- name = "User.findAllDescriptions",
- query = "select t.description from User as t where t.description is not null"
- ),
- @NamedQuery(
- name="User.findByUniqueId",
- query="select t from User as t where t.idTwitter=:idTwitter and t.screenNameUnique=:screenNameUnique"
- ),
- @NamedQuery(
- name="User.findUsersWhoAreFriendsButNotFollowers",
- query="select t from User as t where t.taskInfo.fetchFollower=false and t.taskInfo.fetchFriends=true"
- ),
- @NamedQuery(
- name="User.findUsersWhoAreFollowersAndFriends",
- query="select t from User as t where t.taskInfo.fetchFollower=true and t.taskInfo.fetchFriends=true"
- ),
- @NamedQuery(
- name="User.findUsersWhoAreFollowersButNotFriends",
- query="select t from User as t where t.taskInfo.fetchFollower=true and t.taskInfo.fetchFriends=false"
- )
+ @NamedQuery(
+ name = "User.findTweetingUsers",
+ query = "select t from User as t where t.taskInfo.fetchTweetsFromSearch=true"
+ ),
+ @NamedQuery(
+ name = "User.findFollower",
+ query = "select t from User as t where t.taskInfo.fetchFollower=true"
+ ),
+ @NamedQuery(
+ name = "User.findNotYetFollower",
+ query = "select t from User as t where t.taskInfo.fetchFollower=false"
+ ),
+ @NamedQuery(
+ name = "User.findFriends",
+ query = "select t from User as t where t.taskInfo.fetchFriends=true"
+ ),
+ @NamedQuery(
+ name = "User.findNotYetFriends",
+ query = "select t from User as t where t.taskInfo.fetchFriends=false"
+ ),
+ @NamedQuery(
+ name = "User.findOnList",
+ query = "select t from User as t where t.taskInfo.fetchUsersFromList=true"
+ ),
+ @NamedQuery(
+ name = "User.findNotYetOnList",
+ query = "select t from User as t where t.taskInfo.fetchUsersFromList=false and t.taskInfo.fetchTweetsFromSearch=true"
+ ),
+ @NamedQuery(
+ name="User.getUsersForHashTag",
+ query="select t from User as t join t.entities.hashTags hashTag WHERE hashTag.text=:hashtagText"
+ ),
+ @NamedQuery(
+ name="User.countUsersForHashTag",
+ query="select count(t) from User as t join t.entities.hashTags hashTag WHERE hashTag.text=:hashtagText"
+ ),
+ @NamedQuery(
+ name = "User.findAllDescriptions",
+ query = "select t.description from User as t where t.description is not null"
+ ),
+ @NamedQuery(
+ name="User.findByUniqueId",
+ query="select t from User as t where t.idTwitter=:idTwitter and t.screenNameUnique=:screenNameUnique"
+ ),
+ @NamedQuery(
+ name="User.findUsersWhoAreFriendsButNotFollowers",
+ query="select t from User as t where t.taskInfo.fetchFollower=false and t.taskInfo.fetchFriends=true"
+ ),
+ @NamedQuery(
+ name="User.findUsersWhoAreFollowersAndFriends",
+ query="select t from User as t where t.taskInfo.fetchFollower=true and t.taskInfo.fetchFriends=true"
+ ),
+ @NamedQuery(
+ name="User.findUsersWhoAreFollowersButNotFriends",
+ query="select t from User as t where t.taskInfo.fetchFollower=true and t.taskInfo.fetchFriends=false"
+ )
})
@NamedNativeQueries({
@NamedNativeQuery(
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java
new file mode 100644
index 00000000..8e53064c
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java
@@ -0,0 +1,274 @@
+package org.woehlke.twitterwall.oodm.entities;
+
+import org.hibernate.validator.constraints.NotEmpty;
+import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithIdTwitter;
+import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask;
+import org.woehlke.twitterwall.oodm.entities.listener.UserListListener;
+import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+
+@Entity
+@Table(
+ name = "userlist",
+ uniqueConstraints = {
+ @UniqueConstraint(name="unique_userlist",columnNames = {"id_twitter"})
+ },
+ indexes = {
+ @Index(name="idx_userprofile_name", columnList="name"),
+ @Index(name="idx_userprofile_full_name", columnList="full_name"),
+ @Index(name="idx_userprofile_uri_path", columnList="uri_path"),
+ @Index(name="idx_userprofile_slug", columnList="slug")
+ }
+)
+@NamedQueries({
+ @NamedQuery(
+ name = "UserList.findByUniqueId",
+ query = "select t from UserList as t where t.idTwitter=:idTwitter"
+ )
+})
+@EntityListeners(UserListListener.class)
+public class UserList extends AbstractDomainObject implements DomainObjectWithTask,DomainObjectWithIdTwitter {
+
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private Long id;
+
+ @NotNull
+ @Column(name="id_twitter", nullable = false)
+ private Long idTwitter;
+
+ @NotEmpty
+ @Column(name="name", nullable = false)
+ private String name;
+
+ @NotEmpty
+ @Column(name="full_name", nullable = false)
+ private String fullName;
+
+ @NotEmpty
+ @Column(name="uri_path", nullable = false)
+ private String uriPath;
+
+ @NotNull
+ @Column(name="description", nullable = false)
+ private String description;
+
+ @NotEmpty
+ @Column(name="slug", nullable = false)
+ private String slug;
+
+ @NotNull
+ @Column(name="is_public", nullable = false)
+ private Boolean isPublic;
+
+ @NotNull
+ @Column(name="is_following", nullable = false)
+ private Boolean isFollowing;
+
+ @NotNull
+ @Column(name="member_count", nullable = false)
+ private Integer memberCount;
+
+ @NotNull
+ @Column(name="subscriber_count", nullable = false)
+ private Integer subscriberCount;
+
+ @Transient
+ public String getListOwnersScreenName(){
+ String myuriPath = uriPath;
+ return myuriPath.split("/")[1];
+ }
+
+ public UserList(Task createdBy, Task updatedBy, long idTwitter, String name, String fullName, String uriPath, String description, String slug, boolean isPublic, boolean isFollowing, int memberCount, int subscriberCount) {
+ super(createdBy, updatedBy);
+ this.idTwitter = idTwitter;
+ this.name = name;
+ this.fullName = fullName;
+ this.uriPath = uriPath;
+ this.slug = slug;
+ this.isPublic = isPublic;
+ this.isFollowing = isFollowing;
+ this.memberCount = memberCount;
+ this.subscriberCount = subscriberCount;
+ if(description==null){
+ this.description = "";
+ } else {
+ this.description = description;
+ }
+ }
+
+ protected UserList() {
+ }
+
+
+ @Transient
+ @Override
+ public String getUniqueId() {
+ return ""+idTwitter;
+ }
+
+ @Transient
+ @Override
+ public boolean isValid() {
+ return idTwitter != null;
+ }
+
+ public static long getSerialVersionUID() {
+ return serialVersionUID;
+ }
+
+ @Override
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @Override
+ public Long getIdTwitter() {
+ return idTwitter;
+ }
+
+ @Override
+ public void setIdTwitter(Long idTwitter) {
+ this.idTwitter = idTwitter;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public void setFullName(String fullName) {
+ this.fullName = fullName;
+ }
+
+ public String getUriPath() {
+ return uriPath;
+ }
+
+ public void setUriPath(String uriPath) {
+ this.uriPath = uriPath;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getSlug() {
+ return slug;
+ }
+
+ public void setSlug(String slug) {
+ this.slug = slug;
+ }
+
+ public Boolean getPublic() {
+ return isPublic;
+ }
+
+ public void setPublic(Boolean aPublic) {
+ isPublic = aPublic;
+ }
+
+ public Boolean getFollowing() {
+ return isFollowing;
+ }
+
+ public void setFollowing(Boolean following) {
+ isFollowing = following;
+ }
+
+ public Integer getMemberCount() {
+ return memberCount;
+ }
+
+ public void setMemberCount(Integer memberCount) {
+ this.memberCount = memberCount;
+ }
+
+ public Integer getSubscriberCount() {
+ return subscriberCount;
+ }
+
+ public void setSubscriberCount(Integer subscriberCount) {
+ this.subscriberCount = subscriberCount;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof UserList)) return false;
+
+ UserList userList = (UserList) o;
+
+ if (getId() != null ? !getId().equals(userList.getId()) : userList.getId() != null) return false;
+ if (getIdTwitter() != null ? !getIdTwitter().equals(userList.getIdTwitter()) : userList.getIdTwitter() != null)
+ return false;
+ if (getName() != null ? !getName().equals(userList.getName()) : userList.getName() != null) return false;
+ if (getFullName() != null ? !getFullName().equals(userList.getFullName()) : userList.getFullName() != null)
+ return false;
+ if (getUriPath() != null ? !getUriPath().equals(userList.getUriPath()) : userList.getUriPath() != null)
+ return false;
+ if (getDescription() != null ? !getDescription().equals(userList.getDescription()) : userList.getDescription() != null)
+ return false;
+ if (getSlug() != null ? !getSlug().equals(userList.getSlug()) : userList.getSlug() != null) return false;
+ if (isPublic != null ? !isPublic.equals(userList.isPublic) : userList.isPublic != null) return false;
+ if (isFollowing != null ? !isFollowing.equals(userList.isFollowing) : userList.isFollowing != null)
+ return false;
+ if (getMemberCount() != null ? !getMemberCount().equals(userList.getMemberCount()) : userList.getMemberCount() != null)
+ return false;
+ return getSubscriberCount() != null ? getSubscriberCount().equals(userList.getSubscriberCount()) : userList.getSubscriberCount() == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getId() != null ? getId().hashCode() : 0;
+ result = 31 * result + (getIdTwitter() != null ? getIdTwitter().hashCode() : 0);
+ result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+ result = 31 * result + (getFullName() != null ? getFullName().hashCode() : 0);
+ result = 31 * result + (getUriPath() != null ? getUriPath().hashCode() : 0);
+ result = 31 * result + (getDescription() != null ? getDescription().hashCode() : 0);
+ result = 31 * result + (getSlug() != null ? getSlug().hashCode() : 0);
+ result = 31 * result + (isPublic != null ? isPublic.hashCode() : 0);
+ result = 31 * result + (isFollowing != null ? isFollowing.hashCode() : 0);
+ result = 31 * result + (getMemberCount() != null ? getMemberCount().hashCode() : 0);
+ result = 31 * result + (getSubscriberCount() != null ? getSubscriberCount().hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "UserList{" +
+ "id=" + id +
+ ", idTwitter=" + idTwitter +
+ ", name='" + name + '\'' +
+ ", fullName='" + fullName + '\'' +
+ ", uriPath='" + uriPath + '\'' +
+ ", description='" + description + '\'' +
+ ", slug='" + slug + '\'' +
+ ", isPublic=" + isPublic +
+ ", isFollowing=" + isFollowing +
+ ", memberCount=" + memberCount +
+ ", subscriberCount=" + subscriberCount +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java
index b11a13eb..0dd8b49e 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java
@@ -1,12 +1,9 @@
package org.woehlke.twitterwall.oodm.entities.common;
-import org.woehlke.twitterwall.oodm.entities.parts.TaskType;
-
/**
* Created by tw on 24.06.17.
*/
-public interface DomainObject extends DomainObjectMinimal {
+public interface DomainObject extends DomainObjectMinimal,DomainObjectWithApiCaching {
- Boolean isCached(TaskType taskType, long timeToLive);
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java
index 67a879c6..0dec201d 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java
@@ -2,20 +2,15 @@
import java.io.Serializable;
-public interface DomainObjectMinimal extends Serializable, Comparable{
+public interface DomainObjectMinimal extends DomainObjectWithUniqueId,DomainObjectWithValidation,Serializable, Comparable{
Long getId();
void setId(Long id);
- String getUniqueId();
-
boolean equals(Object o);
int hashCode();
String toString();
-
- boolean isValid();
-
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithApiCaching.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithApiCaching.java
new file mode 100644
index 00000000..9db2fb43
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithApiCaching.java
@@ -0,0 +1,8 @@
+package org.woehlke.twitterwall.oodm.entities.common;
+
+import org.woehlke.twitterwall.oodm.entities.parts.TaskType;
+
+public interface DomainObjectWithApiCaching {
+
+ Boolean isCached(TaskType taskType, long timeToLive);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java
new file mode 100644
index 00000000..078ff578
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java
@@ -0,0 +1,6 @@
+package org.woehlke.twitterwall.oodm.entities.common;
+
+public interface DomainObjectWithUniqueId {
+
+ String getUniqueId();
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java
new file mode 100644
index 00000000..c9c3c345
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java
@@ -0,0 +1,6 @@
+package org.woehlke.twitterwall.oodm.entities.common;
+
+public interface DomainObjectWithValidation {
+
+ boolean isValid();
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java
index 54f41567..abc52304 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java
@@ -16,37 +16,43 @@ public class HashTagListener {
@PrePersist
public void onPrePersist(HashTag domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(HashTag domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(HashTag domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(HashTag domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(HashTag domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
}
@PostRemove
public void onPostRemove(HashTag domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(HashTag domainObject) {
log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
}
-
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java
index c1613865..beb48218 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java
@@ -16,35 +16,42 @@ public class MediaListener {
@PrePersist
public void onPrePersist(Media domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(Media domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(Media domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(Media domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(Media domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.getUniqueId());
}
@PostRemove
public void onPostRemove(Media domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(Media domainObject) {
log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java
index 4217570b..8d28638e 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java
@@ -16,35 +16,42 @@ public class MentionListener {
@PrePersist
public void onPrePersist(Mention domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(Mention domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(Mention domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(Mention domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(Mention domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
}
@PostRemove
public void onPostRemove(Mention domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(Mention domainObject) {
log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java
index 342309bf..1009cc54 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java
@@ -16,35 +16,42 @@ public class TaskHistoryListener {
@PrePersist
public void onPrePersist(TaskHistory domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(TaskHistory domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(TaskHistory domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(TaskHistory domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(TaskHistory domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
}
@PostRemove
public void onPostRemove(TaskHistory domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(TaskHistory domainObject) {
log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java
index 34166091..c3e273ae 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java
@@ -16,35 +16,42 @@ public class TaskListener {
@PrePersist
public void onPrePersist(Task domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(Task domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(Task domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(Task domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(Task domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
}
@PostRemove
public void onPostRemove(Task domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(Task domainObject) {
log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java
index 0cb650c0..d9359aef 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java
@@ -16,35 +16,42 @@ public class TickerSymbolListener {
@PrePersist
public void onPrePersist(TickerSymbol domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(TickerSymbol domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(TickerSymbol domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(TickerSymbol domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(TickerSymbol domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
}
@PostRemove
public void onPostRemove(TickerSymbol domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(TickerSymbol domainObject) {
log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java
index 6b192803..0671af3a 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java
@@ -15,35 +15,42 @@ public class TweetListener {
@PrePersist
public void onPrePersist(Tweet domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(Tweet domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(Tweet domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(Tweet domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(Tweet domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
}
@PostRemove
public void onPostRemove(Tweet domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(Tweet domainObject) {
- log.debug("loaded: "+domainObject.getUniqueId());
+ log.debug("loaded: " + domainObject.getUniqueId());
+ log.trace("loaded: " + domainObject.toString());
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java
index c73ad608..27b41033 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java
@@ -16,35 +16,42 @@ public class UrlListener {
@PrePersist
public void onPrePersist(Url domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(Url domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(Url domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(Url domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(Url domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
}
@PostRemove
public void onPostRemove(Url domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(Url domainObject) {
log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java
new file mode 100644
index 00000000..8d995928
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java
@@ -0,0 +1,54 @@
+package org.woehlke.twitterwall.oodm.entities.listener;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.woehlke.twitterwall.oodm.entities.UserList;
+
+import javax.persistence.*;
+
+public class UserListListener {
+
+ private static final Logger log = LoggerFactory.getLogger(UserListListener.class);
+
+ @PrePersist
+ public void onPrePersist(UserList domainObject) {
+ log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
+ }
+
+ @PreUpdate
+ public void onPreUpdate(UserList domainObject) {
+ log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
+ }
+
+ @PreRemove
+ public void onPreRemove(UserList domainObject) {
+ log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
+ }
+
+ @PostPersist
+ public void onPostPersist(UserList domainObject) {
+ log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
+ }
+
+ @PostUpdate
+ public void onPostUpdate(UserList domainObject) {
+ log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
+ }
+
+ @PostRemove
+ public void onPostRemove(UserList domainObject) {
+ log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
+ }
+
+ @PostLoad
+ public void onPostLoad(UserList domainObject) {
+ log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java
index 12d434d8..1fce97c2 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java
@@ -16,35 +16,42 @@ public class UserListener {
@PrePersist
public void onPrePersist(User domainObject) {
log.debug("try to Persist: "+domainObject.getUniqueId());
+ log.trace("try to Persist: "+domainObject.toString());
}
@PreUpdate
public void onPreUpdate(User domainObject) {
log.debug("try to Update: "+domainObject.getUniqueId());
+ log.trace("try to Update: "+domainObject.toString());
}
@PreRemove
public void onPreRemove(User domainObject) {
log.debug("try to Remove: "+domainObject.getUniqueId());
+ log.trace("try to Remove: "+domainObject.toString());
}
@PostPersist
public void onPostPersist(User domainObject) {
log.debug("Persisted: "+domainObject.getUniqueId());
+ log.trace("Persisted: "+domainObject.toString());
}
@PostUpdate
public void onPostUpdate(User domainObject) {
log.debug("Updated: "+domainObject.getUniqueId());
+ log.trace("Updated: "+domainObject.toString());
}
@PostRemove
public void onPostRemove(User domainObject) {
log.debug("Removed: "+domainObject.getUniqueId());
+ log.trace("Removed: "+domainObject.toString());
}
@PostLoad
public void onPostLoad(User domainObject) {
log.debug("loaded: "+domainObject.getUniqueId());
+ log.trace("loaded: "+domainObject.toString());
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java
index bb272d38..f5b09362 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java
@@ -100,8 +100,6 @@ public String toString() {
return myExtraData.toString();
}
- public abstract String getUniqueId();
-
@Override
public int compareTo(T other) {
return this.getUniqueId().compareTo(other.getUniqueId());
@@ -166,4 +164,5 @@ private String toStringTaskInfo() {
return taskInfo.toString();
}
}
+
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java
index 77aef520..3a164873 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java
@@ -1,9 +1,11 @@
package org.woehlke.twitterwall.oodm.entities.parts;
import org.springframework.validation.annotation.Validated;
+import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithValidation;
import javax.persistence.Embeddable;
import javax.persistence.Transient;
+import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@@ -12,7 +14,7 @@
*/
@Validated
@Embeddable
-public class CountedEntities implements Serializable {
+public class CountedEntities implements Serializable,DomainObjectWithValidation {
@NotNull
private Long countUser=0L;
@@ -20,6 +22,9 @@ public class CountedEntities implements Serializable {
@NotNull
private Long countTweets=0L;
+ @NotNull
+ private Long countUserLists=0L;
+
@NotNull
private Long countHashTags=0L;
@@ -78,6 +83,7 @@ public CountedEntities() {
public Long getTotalNumberOfRows(){
return countUser +
countTweets +
+ countUserLists +
countHashTags +
countMedia +
countMention +
@@ -113,6 +119,14 @@ public void setCountTweets(Long countTweets) {
this.countTweets = countTweets;
}
+ public Long getCountUserLists() {
+ return countUserLists;
+ }
+
+ public void setCountUserLists(Long countUserLists) {
+ this.countUserLists = countUserLists;
+ }
+
public Long getCountHashTags() {
return countHashTags;
}
@@ -254,6 +268,7 @@ public String toString() {
return "CountedEntities{" +
"countUser=" + countUser +
", countTweets=" + countTweets +
+ ", countUserLists=" + countUserLists +
", countHashTags=" + countHashTags +
", countMedia=" + countMedia +
", countMention=" + countMention +
@@ -281,60 +296,189 @@ public boolean equals(Object o) {
CountedEntities that = (CountedEntities) o;
- if (countUser != null ? !countUser.equals(that.countUser) : that.countUser != null) return false;
- if (countTweets != null ? !countTweets.equals(that.countTweets) : that.countTweets != null) return false;
- if (countHashTags != null ? !countHashTags.equals(that.countHashTags) : that.countHashTags != null)
+ if (getCountUser() != null ? !getCountUser().equals(that.getCountUser()) : that.getCountUser() != null)
+ return false;
+ if (getCountTweets() != null ? !getCountTweets().equals(that.getCountTweets()) : that.getCountTweets() != null)
+ return false;
+ if (getCountUserLists() != null ? !getCountUserLists().equals(that.getCountUserLists()) : that.getCountUserLists() != null)
+ return false;
+ if (getCountHashTags() != null ? !getCountHashTags().equals(that.getCountHashTags()) : that.getCountHashTags() != null)
+ return false;
+ if (getCountMedia() != null ? !getCountMedia().equals(that.getCountMedia()) : that.getCountMedia() != null)
+ return false;
+ if (getCountMention() != null ? !getCountMention().equals(that.getCountMention()) : that.getCountMention() != null)
+ return false;
+ if (getCountTickerSymbol() != null ? !getCountTickerSymbol().equals(that.getCountTickerSymbol()) : that.getCountTickerSymbol() != null)
+ return false;
+ if (getCountUrl() != null ? !getCountUrl().equals(that.getCountUrl()) : that.getCountUrl() != null)
+ return false;
+ if (getCountTask() != null ? !getCountTask().equals(that.getCountTask()) : that.getCountTask() != null)
return false;
- if (countMedia != null ? !countMedia.equals(that.countMedia) : that.countMedia != null) return false;
- if (countMention != null ? !countMention.equals(that.countMention) : that.countMention != null) return false;
- if (countTickerSymbol != null ? !countTickerSymbol.equals(that.countTickerSymbol) : that.countTickerSymbol != null)
+ if (getCountTaskHistory() != null ? !getCountTaskHistory().equals(that.getCountTaskHistory()) : that.getCountTaskHistory() != null)
return false;
- if (countUrl != null ? !countUrl.equals(that.countUrl) : that.countUrl != null) return false;
- if (countTask != null ? !countTask.equals(that.countTask) : that.countTask != null) return false;
- if (countTaskHistory != null ? !countTaskHistory.equals(that.countTaskHistory) : that.countTaskHistory != null)
+ if (getTweet2hashtag() != null ? !getTweet2hashtag().equals(that.getTweet2hashtag()) : that.getTweet2hashtag() != null)
return false;
- if (tweet2hashtag != null ? !tweet2hashtag.equals(that.tweet2hashtag) : that.tweet2hashtag != null)
+ if (getTweet2media() != null ? !getTweet2media().equals(that.getTweet2media()) : that.getTweet2media() != null)
return false;
- if (tweet2media != null ? !tweet2media.equals(that.tweet2media) : that.tweet2media != null) return false;
- if (tweet2mention != null ? !tweet2mention.equals(that.tweet2mention) : that.tweet2mention != null)
+ if (getTweet2mention() != null ? !getTweet2mention().equals(that.getTweet2mention()) : that.getTweet2mention() != null)
return false;
- if (tweet2tickersymbol != null ? !tweet2tickersymbol.equals(that.tweet2tickersymbol) : that.tweet2tickersymbol != null)
+ if (getTweet2tickersymbol() != null ? !getTweet2tickersymbol().equals(that.getTweet2tickersymbol()) : that.getTweet2tickersymbol() != null)
return false;
- if (tweet2url != null ? !tweet2url.equals(that.tweet2url) : that.tweet2url != null) return false;
- if (userprofile2hashtag != null ? !userprofile2hashtag.equals(that.userprofile2hashtag) : that.userprofile2hashtag != null)
+ if (getTweet2url() != null ? !getTweet2url().equals(that.getTweet2url()) : that.getTweet2url() != null)
return false;
- if (userprofile2media != null ? !userprofile2media.equals(that.userprofile2media) : that.userprofile2media != null)
+ if (getUserprofile2hashtag() != null ? !getUserprofile2hashtag().equals(that.getUserprofile2hashtag()) : that.getUserprofile2hashtag() != null)
return false;
- if (userprofile2mention != null ? !userprofile2mention.equals(that.userprofile2mention) : that.userprofile2mention != null)
+ if (getUserprofile2media() != null ? !getUserprofile2media().equals(that.getUserprofile2media()) : that.getUserprofile2media() != null)
return false;
- if (userprofile2tickersymbol != null ? !userprofile2tickersymbol.equals(that.userprofile2tickersymbol) : that.userprofile2tickersymbol != null)
+ if (getUserprofile2mention() != null ? !getUserprofile2mention().equals(that.getUserprofile2mention()) : that.getUserprofile2mention() != null)
return false;
- return userprofile2url != null ? userprofile2url.equals(that.userprofile2url) : that.userprofile2url == null;
+ if (getUserprofile2tickersymbol() != null ? !getUserprofile2tickersymbol().equals(that.getUserprofile2tickersymbol()) : that.getUserprofile2tickersymbol() != null)
+ return false;
+ return getUserprofile2url() != null ? getUserprofile2url().equals(that.getUserprofile2url()) : that.getUserprofile2url() == null;
}
@Override
public int hashCode() {
- int result = countUser != null ? countUser.hashCode() : 0;
- result = 31 * result + (countTweets != null ? countTweets.hashCode() : 0);
- result = 31 * result + (countHashTags != null ? countHashTags.hashCode() : 0);
- result = 31 * result + (countMedia != null ? countMedia.hashCode() : 0);
- result = 31 * result + (countMention != null ? countMention.hashCode() : 0);
- result = 31 * result + (countTickerSymbol != null ? countTickerSymbol.hashCode() : 0);
- result = 31 * result + (countUrl != null ? countUrl.hashCode() : 0);
- result = 31 * result + (countTask != null ? countTask.hashCode() : 0);
- result = 31 * result + (countTaskHistory != null ? countTaskHistory.hashCode() : 0);
- result = 31 * result + (tweet2hashtag != null ? tweet2hashtag.hashCode() : 0);
- result = 31 * result + (tweet2media != null ? tweet2media.hashCode() : 0);
- result = 31 * result + (tweet2mention != null ? tweet2mention.hashCode() : 0);
- result = 31 * result + (tweet2tickersymbol != null ? tweet2tickersymbol.hashCode() : 0);
- result = 31 * result + (tweet2url != null ? tweet2url.hashCode() : 0);
- result = 31 * result + (userprofile2hashtag != null ? userprofile2hashtag.hashCode() : 0);
- result = 31 * result + (userprofile2media != null ? userprofile2media.hashCode() : 0);
- result = 31 * result + (userprofile2mention != null ? userprofile2mention.hashCode() : 0);
- result = 31 * result + (userprofile2tickersymbol != null ? userprofile2tickersymbol.hashCode() : 0);
- result = 31 * result + (userprofile2url != null ? userprofile2url.hashCode() : 0);
+ int result = getCountUser() != null ? getCountUser().hashCode() : 0;
+ result = 31 * result + (getCountTweets() != null ? getCountTweets().hashCode() : 0);
+ result = 31 * result + (getCountUserLists() != null ? getCountUserLists().hashCode() : 0);
+ result = 31 * result + (getCountHashTags() != null ? getCountHashTags().hashCode() : 0);
+ result = 31 * result + (getCountMedia() != null ? getCountMedia().hashCode() : 0);
+ result = 31 * result + (getCountMention() != null ? getCountMention().hashCode() : 0);
+ result = 31 * result + (getCountTickerSymbol() != null ? getCountTickerSymbol().hashCode() : 0);
+ result = 31 * result + (getCountUrl() != null ? getCountUrl().hashCode() : 0);
+ result = 31 * result + (getCountTask() != null ? getCountTask().hashCode() : 0);
+ result = 31 * result + (getCountTaskHistory() != null ? getCountTaskHistory().hashCode() : 0);
+ result = 31 * result + (getTweet2hashtag() != null ? getTweet2hashtag().hashCode() : 0);
+ result = 31 * result + (getTweet2media() != null ? getTweet2media().hashCode() : 0);
+ result = 31 * result + (getTweet2mention() != null ? getTweet2mention().hashCode() : 0);
+ result = 31 * result + (getTweet2tickersymbol() != null ? getTweet2tickersymbol().hashCode() : 0);
+ result = 31 * result + (getTweet2url() != null ? getTweet2url().hashCode() : 0);
+ result = 31 * result + (getUserprofile2hashtag() != null ? getUserprofile2hashtag().hashCode() : 0);
+ result = 31 * result + (getUserprofile2media() != null ? getUserprofile2media().hashCode() : 0);
+ result = 31 * result + (getUserprofile2mention() != null ? getUserprofile2mention().hashCode() : 0);
+ result = 31 * result + (getUserprofile2tickersymbol() != null ? getUserprofile2tickersymbol().hashCode() : 0);
+ result = 31 * result + (getUserprofile2url() != null ? getUserprofile2url().hashCode() : 0);
return result;
}
private static final long serialVersionUID = 1L;
+
+ @AssertTrue
+ @Transient
+ @Override
+ public boolean isValid() {
+ if(countUser == null){
+ return false;
+ }
+ if(countTweets == null){
+ return false;
+ }
+ if(countUserLists == null){
+ return false;
+ }
+ if(countHashTags == null){
+ return false;
+ }
+ if(countMedia == null){
+ return false;
+ }
+ if(countMention == null){
+ return false;
+ }
+ if(countTickerSymbol == null){
+ return false;
+ }
+ if(countTaskHistory == null){
+ return false;
+ }
+ if(countTask == null){
+ return false;
+ }
+ if(tweet2hashtag == null){
+ return false;
+ }
+ if(tweet2media == null){
+ return false;
+ }
+ if(tweet2mention == null){
+ return false;
+ }
+ if(tweet2tickersymbol == null){
+ return false;
+ }
+ if(tweet2url == null){
+ return false;
+ }
+ if(userprofile2hashtag == null){
+ return false;
+ }
+ if(userprofile2media == null){
+ return false;
+ }
+ if(userprofile2mention == null){
+ return false;
+ }
+ if(userprofile2tickersymbol == null){
+ return false;
+ }
+ if(userprofile2url == null){
+ return false;
+ }
+ if(countUser < 0){
+ return false;
+ }
+ if(countTweets < 0){
+ return false;
+ }
+ if(countHashTags < 0){
+ return false;
+ }
+ if(countMedia < 0){
+ return false;
+ }
+ if(countMention < 0){
+ return false;
+ }
+ if(countTickerSymbol < 0){
+ return false;
+ }
+ if(countTaskHistory < 0){
+ return false;
+ }
+ if(countTask < 0){
+ return false;
+ }
+ if(tweet2hashtag < 0){
+ return false;
+ }
+ if(tweet2media < 0){
+ return false;
+ }
+ if(tweet2mention < 0){
+ return false;
+ }
+ if(tweet2tickersymbol < 0){
+ return false;
+ }
+ if(tweet2url < 0){
+ return false;
+ }
+ if(userprofile2hashtag < 0){
+ return false;
+ }
+ if(userprofile2media < 0){
+ return false;
+ }
+ if(userprofile2mention < 0){
+ return false;
+ }
+ if(userprofile2tickersymbol < 0){
+ return false;
+ }
+ if(userprofile2url < 0){
+ return false;
+ }
+ return true;
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/Entities.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/Entities.java
index 6b239218..f779a791 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/Entities.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/Entities.java
@@ -2,8 +2,11 @@
import org.springframework.validation.annotation.Validated;
import org.woehlke.twitterwall.oodm.entities.*;
+import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUniqueId;
+import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithValidation;
import javax.persistence.*;
+import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.LinkedHashSet;
@@ -19,7 +22,7 @@
*/
@Validated
@Embeddable
-public class Entities extends EntitiesFilter implements Serializable {
+public class Entities extends EntitiesFilter implements Serializable,DomainObjectWithValidation,DomainObjectWithUniqueId {
@NotNull
@ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER)
@@ -388,6 +391,93 @@ public String toString() {
"\n}";
}
+
+
+ private String getUniqueIdUrls(){
+ StringBuffer myUrls = new StringBuffer();
+ myUrls.append("[ ");
+ for (Url url : urls) {
+ if(url != null) {
+ myUrls.append(url.getUniqueId());
+ myUrls.append(", ");
+ } else {
+ myUrls.append(", null");
+ }
+ }
+ myUrls.append(" ]");
+ return myUrls.toString();
+ }
+
+ private String getUniqueIdHashTags(){
+ StringBuffer myTags = new StringBuffer();
+ myTags.append("[ ");
+ for (HashTag tag : hashTags) {
+ if(tag != null){
+ myTags.append(tag.getUniqueId());
+ myTags.append(", ");
+ } else {
+ myTags.append(", null");
+ }
+ }
+ myTags.append(" ]");
+ return myTags.toString();
+ }
+
+ private String getUniqueIdMentions(){
+ StringBuffer myMentions = new StringBuffer();
+ myMentions.append("[ ");
+ for (Mention mention : mentions) {
+ if(mention != null){
+ myMentions.append(mention.getUniqueId());
+ myMentions.append(", ");
+ } else {
+ myMentions.append(", null");
+ }
+ }
+ myMentions.append(" ]");
+ return myMentions.toString();
+ }
+
+ private String getUniqueIdMedia(){
+ StringBuffer myMedia = new StringBuffer();
+ myMedia.append("[ ");
+ for (Media medium : media) {
+ if(medium != null){
+ myMedia.append(medium.getUniqueId());
+ myMedia.append(", ");
+ } else {
+ myMedia.append(", null");
+ }
+ }
+ myMedia.append(" ]");
+ return myMedia.toString();
+ }
+
+ private String getUniqueIdTickerSymbols(){
+ StringBuffer myTickerSymbols = new StringBuffer();
+ myTickerSymbols.append("[ ");
+ for (TickerSymbol tickerSymbol : tickerSymbols) {
+ if(tickerSymbol != null){
+ myTickerSymbols.append(tickerSymbol.getUniqueId());
+ myTickerSymbols.append(", ");
+ } else {
+ myTickerSymbols.append(", null");
+ }
+ }
+ myTickerSymbols.append(" ]");
+ return myTickerSymbols.toString();
+ }
+
+ public String getUniqueId(){
+ return "Entities{" +
+ ",\n urls=" + getUniqueIdUrls() +
+ ",\n hashTags=" + getUniqueIdHashTags() +
+ ",\n mentions=" + getUniqueIdMentions() +
+ ",\n media=" +getUniqueIdMedia() +
+ ",\n tickerSymbols=" +getUniqueIdTickerSymbols() +
+ "\n}";
+ }
+
public String getFormattedText(String formattedText ) {
//formattedText = getFormattedTextForUserProfiles(formattedText);
@@ -439,4 +529,25 @@ public int hashCode() {
result = 31 * result + (getTickerSymbols() != null ? getTickerSymbols().hashCode() : 0);
return result;
}
+
+ @AssertTrue
+ @Override
+ public boolean isValid() {
+ if(urls == null){
+ return false;
+ }
+ if(hashTags == null){
+ return false;
+ }
+ if(mentions == null){
+ return false;
+ }
+ if(media == null){
+ return false;
+ }
+ if(tickerSymbols == null){
+ return false;
+ }
+ return true;
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskBasedCaching.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskBasedCaching.java
index e5f7c545..1ca0b9c0 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskBasedCaching.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskBasedCaching.java
@@ -49,6 +49,24 @@ public class TaskBasedCaching implements Serializable {
@Column(name=COLUMN_PREFIX+"fetch_friends")
private Date fetchFriends;
+ @Column(name=COLUMN_PREFIX+"fetch_home_timeline")
+ private Date getHomeTimeline;
+
+ @Column(name=COLUMN_PREFIX+"fetch_user_timeline")
+ private Date getUserTimeline;
+
+ @Column(name=COLUMN_PREFIX+"fetch_mentions")
+ private Date getMentions;
+
+ @Column(name=COLUMN_PREFIX+"fetch_favorites")
+ private Date getFavorites;
+
+ @Column(name=COLUMN_PREFIX+"fetch_retweets_of_me")
+ private Date getRetweetsOfMe;
+
+ @Column(name=COLUMN_PREFIX+"fetch_lists")
+ private Date getLists;
+
@Transient
public Boolean isCached(TaskType taskType, long timeToLive){
Date lastApiCall = null;
@@ -89,6 +107,24 @@ public Boolean isCached(TaskType taskType, long timeToLive){
case FETCH_FRIENDS:
lastApiCall = fetchFriends;
break;
+ case FETCH_HOME_TIMELINE:
+ lastApiCall = getHomeTimeline;
+ break;
+ case FETCH_USER_TIMELINE:
+ lastApiCall = getUserTimeline;
+ break;
+ case FETCH_MENTIONS:
+ lastApiCall = getMentions;
+ break;
+ case FETCH_FAVORITES:
+ lastApiCall = getFavorites;
+ break;
+ case FETCH_RETWEETS_OF_ME:
+ lastApiCall = getRetweetsOfMe;
+ break;
+ case FETCH_LISTS:
+ lastApiCall = getLists;
+ break;
default: break;
}
if(lastApiCall == null){
@@ -99,6 +135,7 @@ public Boolean isCached(TaskType taskType, long timeToLive){
return now < lastApiCallPlusTimeToLive;
}
+ @Transient
public void store(Task task) {
if (task != null) {
TaskType taskType = task.getTaskType();
@@ -106,6 +143,7 @@ public void store(Task task) {
}
}
+ @Transient
public void store(TaskType taskType){
if(taskType != null) {
Date lastApiCall = new Date();
@@ -146,13 +184,30 @@ public void store(TaskType taskType){
case FETCH_FRIENDS:
fetchFriends = lastApiCall;
break;
+ case FETCH_HOME_TIMELINE:
+ getHomeTimeline = lastApiCall;
+ break;
+ case FETCH_USER_TIMELINE:
+ getUserTimeline = lastApiCall;
+ break;
+ case FETCH_MENTIONS:
+ getMentions = lastApiCall;
+ break;
+ case FETCH_FAVORITES:
+ getFavorites = lastApiCall;
+ break;
+ case FETCH_RETWEETS_OF_ME:
+ getRetweetsOfMe = lastApiCall;
+ break;
+ case FETCH_LISTS:
+ getLists = lastApiCall;
default:
break;
}
}
}
- public TaskBasedCaching(Date fetchTweetsFromSearch, Date updateTweets, Date updateUsers, Date updateUsersFromMentions, Date fetchUsersFromList, Date controllerGetTestdataTweets, Date controllerGetTestdataUser, Date controllerAddUserForScreenName, Date controllerCreateImprintUser, Date removeOldDataFromStorage, Date fetchFollower) {
+ public TaskBasedCaching(Date fetchTweetsFromSearch, Date updateTweets, Date updateUsers, Date updateUsersFromMentions, Date fetchUsersFromList, Date controllerGetTestdataTweets, Date controllerGetTestdataUser, Date controllerAddUserForScreenName, Date controllerCreateImprintUser, Date removeOldDataFromStorage, Date fetchFollower, Date fetchFriends, Date getHomeTimeline, Date getUserTimeline, Date getMentions, Date getFavorites, Date getRetweetsOfMe, Date getLists) {
this.fetchTweetsFromSearch = fetchTweetsFromSearch;
this.updateTweets = updateTweets;
this.updateUsers = updateUsers;
@@ -164,6 +219,13 @@ public TaskBasedCaching(Date fetchTweetsFromSearch, Date updateTweets, Date upda
this.controllerCreateImprintUser = controllerCreateImprintUser;
this.removeOldDataFromStorage = removeOldDataFromStorage;
this.fetchFollower = fetchFollower;
+ this.fetchFriends = fetchFriends;
+ this.getHomeTimeline = getHomeTimeline;
+ this.getUserTimeline = getUserTimeline;
+ this.getMentions = getMentions;
+ this.getFavorites = getFavorites;
+ this.getRetweetsOfMe = getRetweetsOfMe;
+ this.getLists = getLists;
}
public TaskBasedCaching() {
@@ -178,6 +240,12 @@ public TaskBasedCaching() {
this.controllerCreateImprintUser = null;
this.removeOldDataFromStorage = null;
this.fetchFollower = null;
+ this.getHomeTimeline = null;
+ this.getUserTimeline = null;
+ this.getMentions = null;
+ this.getFavorites = null;
+ this.getRetweetsOfMe = null;
+ this.getLists = null;
}
public Date getFetchTweetsFromSearch() {
@@ -224,6 +292,34 @@ public Date getFetchFollower() {
return fetchFollower;
}
+ public Date getFetchFriends() {
+ return fetchFriends;
+ }
+
+ public Date getGetHomeTimeline() {
+ return getHomeTimeline;
+ }
+
+ public Date getGetUserTimeline() {
+ return getUserTimeline;
+ }
+
+ public Date getGetMentions() {
+ return getMentions;
+ }
+
+ public Date getGetFavorites() {
+ return getFavorites;
+ }
+
+ public Date getGetRetweetsOfMe() {
+ return getRetweetsOfMe;
+ }
+
+ public Date getGetLists() {
+ return getLists;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -231,60 +327,94 @@ public boolean equals(Object o) {
TaskBasedCaching that = (TaskBasedCaching) o;
- if (fetchTweetsFromSearch != null ? !fetchTweetsFromSearch.equals(that.fetchTweetsFromSearch) : that.fetchTweetsFromSearch != null)
+ if (getFetchTweetsFromSearch() != null ? !getFetchTweetsFromSearch().equals(that.getFetchTweetsFromSearch()) : that.getFetchTweetsFromSearch() != null)
return false;
- if (updateTweets != null ? !updateTweets.equals(that.updateTweets) : that.updateTweets != null) return false;
- if (updateUsers != null ? !updateUsers.equals(that.updateUsers) : that.updateUsers != null)
+ if (getUpdateTweets() != null ? !getUpdateTweets().equals(that.getUpdateTweets()) : that.getUpdateTweets() != null)
return false;
- if (updateUsersFromMentions != null ? !updateUsersFromMentions.equals(that.updateUsersFromMentions) : that.updateUsersFromMentions != null)
+ if (getUpdateUsers() != null ? !getUpdateUsers().equals(that.getUpdateUsers()) : that.getUpdateUsers() != null)
return false;
- if (fetchUsersFromList != null ? !fetchUsersFromList.equals(that.fetchUsersFromList) : that.fetchUsersFromList != null)
+ if (getUpdateUsersFromMentions() != null ? !getUpdateUsersFromMentions().equals(that.getUpdateUsersFromMentions()) : that.getUpdateUsersFromMentions() != null)
return false;
- if (controllerGetTestdataTweets != null ? !controllerGetTestdataTweets.equals(that.controllerGetTestdataTweets) : that.controllerGetTestdataTweets != null)
+ if (getFetchUsersFromList() != null ? !getFetchUsersFromList().equals(that.getFetchUsersFromList()) : that.getFetchUsersFromList() != null)
return false;
- if (controllerGetTestdataUser != null ? !controllerGetTestdataUser.equals(that.controllerGetTestdataUser) : that.controllerGetTestdataUser != null)
+ if (getControllerGetTestdataTweets() != null ? !getControllerGetTestdataTweets().equals(that.getControllerGetTestdataTweets()) : that.getControllerGetTestdataTweets() != null)
return false;
- if (controllerAddUserForScreenName != null ? !controllerAddUserForScreenName.equals(that.controllerAddUserForScreenName) : that.controllerAddUserForScreenName != null)
+ if (getControllerGetTestdataUser() != null ? !getControllerGetTestdataUser().equals(that.getControllerGetTestdataUser()) : that.getControllerGetTestdataUser() != null)
return false;
- if (controllerCreateImprintUser != null ? !controllerCreateImprintUser.equals(that.controllerCreateImprintUser) : that.controllerCreateImprintUser != null)
+ if (getControllerAddUserForScreenName() != null ? !getControllerAddUserForScreenName().equals(that.getControllerAddUserForScreenName()) : that.getControllerAddUserForScreenName() != null)
return false;
- if (removeOldDataFromStorage != null ? !removeOldDataFromStorage.equals(that.removeOldDataFromStorage) : that.removeOldDataFromStorage != null)
+ if (getControllerCreateImprintUser() != null ? !getControllerCreateImprintUser().equals(that.getControllerCreateImprintUser()) : that.getControllerCreateImprintUser() != null)
return false;
- return fetchFollower != null ? fetchFollower.equals(that.fetchFollower) : that.fetchFollower == null;
+ if (getRemoveOldDataFromStorage() != null ? !getRemoveOldDataFromStorage().equals(that.getRemoveOldDataFromStorage()) : that.getRemoveOldDataFromStorage() != null)
+ return false;
+ if (getFetchFollower() != null ? !getFetchFollower().equals(that.getFetchFollower()) : that.getFetchFollower() != null)
+ return false;
+ if (getFetchFriends() != null ? !getFetchFriends().equals(that.getFetchFriends()) : that.getFetchFriends() != null)
+ return false;
+ if (getGetHomeTimeline() != null ? !getGetHomeTimeline().equals(that.getGetHomeTimeline()) : that.getGetHomeTimeline() != null)
+ return false;
+ if (getGetUserTimeline() != null ? !getGetUserTimeline().equals(that.getGetUserTimeline()) : that.getGetUserTimeline() != null)
+ return false;
+ if (getGetMentions() != null ? !getGetMentions().equals(that.getGetMentions()) : that.getGetMentions() != null)
+ return false;
+ if (getGetFavorites() != null ? !getGetFavorites().equals(that.getGetFavorites()) : that.getGetFavorites() != null)
+ return false;
+ if (getGetRetweetsOfMe() != null ? !getGetRetweetsOfMe().equals(that.getGetRetweetsOfMe()) : that.getGetRetweetsOfMe() != null)
+ return false;
+ return getGetLists() != null ? getGetLists().equals(that.getGetLists()) : that.getGetLists() == null;
}
@Override
public int hashCode() {
- int result = fetchTweetsFromSearch != null ? fetchTweetsFromSearch.hashCode() : 0;
- result = 31 * result + (updateTweets != null ? updateTweets.hashCode() : 0);
- result = 31 * result + (updateUsers != null ? updateUsers.hashCode() : 0);
- result = 31 * result + (updateUsersFromMentions != null ? updateUsersFromMentions.hashCode() : 0);
- result = 31 * result + (fetchUsersFromList != null ? fetchUsersFromList.hashCode() : 0);
- result = 31 * result + (controllerGetTestdataTweets != null ? controllerGetTestdataTweets.hashCode() : 0);
- result = 31 * result + (controllerGetTestdataUser != null ? controllerGetTestdataUser.hashCode() : 0);
- result = 31 * result + (controllerAddUserForScreenName != null ? controllerAddUserForScreenName.hashCode() : 0);
- result = 31 * result + (controllerCreateImprintUser != null ? controllerCreateImprintUser.hashCode() : 0);
- result = 31 * result + (removeOldDataFromStorage != null ? removeOldDataFromStorage.hashCode() : 0);
- result = 31 * result + (fetchFollower != null ? fetchFollower.hashCode() : 0);
+ int result = getFetchTweetsFromSearch() != null ? getFetchTweetsFromSearch().hashCode() : 0;
+ result = 31 * result + (getUpdateTweets() != null ? getUpdateTweets().hashCode() : 0);
+ result = 31 * result + (getUpdateUsers() != null ? getUpdateUsers().hashCode() : 0);
+ result = 31 * result + (getUpdateUsersFromMentions() != null ? getUpdateUsersFromMentions().hashCode() : 0);
+ result = 31 * result + (getFetchUsersFromList() != null ? getFetchUsersFromList().hashCode() : 0);
+ result = 31 * result + (getControllerGetTestdataTweets() != null ? getControllerGetTestdataTweets().hashCode() : 0);
+ result = 31 * result + (getControllerGetTestdataUser() != null ? getControllerGetTestdataUser().hashCode() : 0);
+ result = 31 * result + (getControllerAddUserForScreenName() != null ? getControllerAddUserForScreenName().hashCode() : 0);
+ result = 31 * result + (getControllerCreateImprintUser() != null ? getControllerCreateImprintUser().hashCode() : 0);
+ result = 31 * result + (getRemoveOldDataFromStorage() != null ? getRemoveOldDataFromStorage().hashCode() : 0);
+ result = 31 * result + (getFetchFollower() != null ? getFetchFollower().hashCode() : 0);
+ result = 31 * result + (getFetchFriends() != null ? getFetchFriends().hashCode() : 0);
+ result = 31 * result + (getGetHomeTimeline() != null ? getGetHomeTimeline().hashCode() : 0);
+ result = 31 * result + (getGetUserTimeline() != null ? getGetUserTimeline().hashCode() : 0);
+ result = 31 * result + (getGetMentions() != null ? getGetMentions().hashCode() : 0);
+ result = 31 * result + (getGetFavorites() != null ? getGetFavorites().hashCode() : 0);
+ result = 31 * result + (getGetRetweetsOfMe() != null ? getGetRetweetsOfMe().hashCode() : 0);
+ result = 31 * result + (getGetLists() != null ? getGetLists().hashCode() : 0);
return result;
}
@Override
public String toString() {
- return "TwitterApiCaching{" +
- "fetchTweetsFromTwitterSearch=" + fetchTweetsFromSearch +
- ", updateTweets=" + updateTweets +
- ", updateUserProfiles=" + updateUsers +
- ", updateUserProfilesFromMentions=" + updateUsersFromMentions +
- ", fetchUsersFromDefinedUserList=" + fetchUsersFromList +
- ", controllerGetTestdataTweets=" + controllerGetTestdataTweets +
- ", controllerGetTestdataUser=" + controllerGetTestdataUser +
- ", controllerAddUserForScreenName=" + controllerAddUserForScreenName +
- ", controllerCreateImprintUser=" + controllerCreateImprintUser +
- ", removeOldDataFromStorage=" + removeOldDataFromStorage +
- ", fetchFollower=" + fetchFollower +
- '}';
+ return "TaskBasedCaching{" +
+ "fetchTweetsFromSearch=" + fetchTweetsFromSearch +
+ ", updateTweets=" + updateTweets +
+ ", updateUsers=" + updateUsers +
+ ", updateUsersFromMentions=" + updateUsersFromMentions +
+ ", fetchUsersFromList=" + fetchUsersFromList +
+ ", controllerGetTestdataTweets=" + controllerGetTestdataTweets +
+ ", controllerGetTestdataUser=" + controllerGetTestdataUser +
+ ", controllerAddUserForScreenName=" + controllerAddUserForScreenName +
+ ", controllerCreateImprintUser=" + controllerCreateImprintUser +
+ ", removeOldDataFromStorage=" + removeOldDataFromStorage +
+ ", fetchFollower=" + fetchFollower +
+ ", fetchFriends=" + fetchFriends +
+ ", getHomeTimeline=" + getHomeTimeline +
+ ", getUserTimeline=" + getUserTimeline +
+ ", getMentions=" + getMentions +
+ ", getFavorites=" + getFavorites +
+ ", getRetweetsOfMe=" + getRetweetsOfMe +
+ ", getLists=" + getLists +
+ '}';
}
private final static String COLUMN_PREFIX = "cache_";
+
+ @Transient
+ public String getUniqueId() {
+ return toString();
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskInfo.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskInfo.java
index 326e708a..61993e8b 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskInfo.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskInfo.java
@@ -64,6 +64,30 @@ public class TaskInfo implements Serializable {
@Column(nullable = false,name="fetch_friends")
private Boolean fetchFriends = false;
+ @NotNull
+ @Column(nullable = false,name="fetch_home_timeline")
+ private Boolean getHomeTimeline = false;
+
+ @NotNull
+ @Column(nullable = false,name="fetch_user_timeline")
+ private Boolean getUserTimeline = false;
+
+ @NotNull
+ @Column(nullable = false,name="fetch_mentions")
+ private Boolean getMentions = false;
+
+ @NotNull
+ @Column(nullable = false,name="fetch_favorites")
+ private Boolean getFavorites = false;
+
+ @NotNull
+ @Column(nullable = false,name="fetch_retweets_of_me")
+ private Boolean getRetweetsOfMe = false;
+
+ @NotNull
+ @Column(nullable = false,name="fetch_lists")
+ private Boolean getLists = false;
+
@Transient
public void setTaskInfoFromTask(Task task) {
if(task!=null) {
@@ -105,6 +129,24 @@ public void setTaskInfoFromTask(Task task) {
case FETCH_FRIENDS:
fetchFriends = true;
break;
+ case FETCH_HOME_TIMELINE:
+ getHomeTimeline = true;
+ break;
+ case FETCH_USER_TIMELINE:
+ getUserTimeline = true;
+ break;
+ case FETCH_MENTIONS:
+ getMentions = true;
+ break;
+ case FETCH_FAVORITES:
+ getFavorites = true;
+ break;
+ case FETCH_RETWEETS_OF_ME:
+ getRetweetsOfMe = true;
+ break;
+ case FETCH_LISTS:
+ getLists = true;
+ break;
default:
break;
}
@@ -177,6 +219,30 @@ public Boolean getFetchFriends() {
return fetchFriends;
}
+ public Boolean getGetHomeTimeline() {
+ return getHomeTimeline;
+ }
+
+ public Boolean getGetUserTimeline() {
+ return getUserTimeline;
+ }
+
+ public Boolean getGetMentions() {
+ return getMentions;
+ }
+
+ public Boolean getGetFavorites() {
+ return getFavorites;
+ }
+
+ public Boolean getGetRetweetsOfMe() {
+ return getRetweetsOfMe;
+ }
+
+ public Boolean getGetLists() {
+ return getLists;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -184,63 +250,92 @@ public boolean equals(Object o) {
TaskInfo taskInfo = (TaskInfo) o;
- if (fetchTweetsFromSearch != null ? !fetchTweetsFromSearch.equals(taskInfo.fetchTweetsFromSearch) : taskInfo.fetchTweetsFromSearch != null)
+ if (getFetchTweetsFromSearch() != null ? !getFetchTweetsFromSearch().equals(taskInfo.getFetchTweetsFromSearch()) : taskInfo.getFetchTweetsFromSearch() != null)
return false;
- if (updateTweets != null ? !updateTweets.equals(taskInfo.updateTweets) : taskInfo.updateTweets != null)
+ if (getUpdateTweets() != null ? !getUpdateTweets().equals(taskInfo.getUpdateTweets()) : taskInfo.getUpdateTweets() != null)
return false;
- if (updatedUsers != null ? !updatedUsers.equals(taskInfo.updatedUsers) : taskInfo.updatedUsers != null)
+ if (getUpdatedUsers() != null ? !getUpdatedUsers().equals(taskInfo.getUpdatedUsers()) : taskInfo.getUpdatedUsers() != null)
return false;
- if (updateUsersFromMentions != null ? !updateUsersFromMentions.equals(taskInfo.updateUsersFromMentions) : taskInfo.updateUsersFromMentions != null)
+ if (getUpdateUsersFromMentions() != null ? !getUpdateUsersFromMentions().equals(taskInfo.getUpdateUsersFromMentions()) : taskInfo.getUpdateUsersFromMentions() != null)
return false;
- if (fetchUsersFromList != null ? !fetchUsersFromList.equals(taskInfo.fetchUsersFromList) : taskInfo.fetchUsersFromList != null)
+ if (getFetchUsersFromList() != null ? !getFetchUsersFromList().equals(taskInfo.getFetchUsersFromList()) : taskInfo.getFetchUsersFromList() != null)
return false;
- if (controllerAddUserForScreenName != null ? !controllerAddUserForScreenName.equals(taskInfo.controllerAddUserForScreenName) : taskInfo.controllerAddUserForScreenName != null)
+ if (getControllerAddUserForScreenName() != null ? !getControllerAddUserForScreenName().equals(taskInfo.getControllerAddUserForScreenName()) : taskInfo.getControllerAddUserForScreenName() != null)
return false;
- if (controllerCreateTestdataTweets != null ? !controllerCreateTestdataTweets.equals(taskInfo.controllerCreateTestdataTweets) : taskInfo.controllerCreateTestdataTweets != null)
+ if (getControllerCreateTestdataTweets() != null ? !getControllerCreateTestdataTweets().equals(taskInfo.getControllerCreateTestdataTweets()) : taskInfo.getControllerCreateTestdataTweets() != null)
return false;
- if (controllerCreateTestdataUsers != null ? !controllerCreateTestdataUsers.equals(taskInfo.controllerCreateTestdataUsers) : taskInfo.controllerCreateTestdataUsers != null)
+ if (getControllerCreateTestdataUsers() != null ? !getControllerCreateTestdataUsers().equals(taskInfo.getControllerCreateTestdataUsers()) : taskInfo.getControllerCreateTestdataUsers() != null)
return false;
- if (controllerCreateImprintUser != null ? !controllerCreateImprintUser.equals(taskInfo.controllerCreateImprintUser) : taskInfo.controllerCreateImprintUser != null)
+ if (getControllerCreateImprintUser() != null ? !getControllerCreateImprintUser().equals(taskInfo.getControllerCreateImprintUser()) : taskInfo.getControllerCreateImprintUser() != null)
return false;
- if (removeOldDataFromStorage != null ? !removeOldDataFromStorage.equals(taskInfo.removeOldDataFromStorage) : taskInfo.removeOldDataFromStorage != null)
+ if (getRemoveOldDataFromStorage() != null ? !getRemoveOldDataFromStorage().equals(taskInfo.getRemoveOldDataFromStorage()) : taskInfo.getRemoveOldDataFromStorage() != null)
return false;
- if (fetchFollower != null ? !fetchFollower.equals(taskInfo.fetchFollower) : taskInfo.fetchFollower != null)
+ if (getFetchFollower() != null ? !getFetchFollower().equals(taskInfo.getFetchFollower()) : taskInfo.getFetchFollower() != null)
return false;
- return fetchFriends != null ? fetchFriends.equals(taskInfo.fetchFriends) : taskInfo.fetchFriends == null;
+ if (getFetchFriends() != null ? !getFetchFriends().equals(taskInfo.getFetchFriends()) : taskInfo.getFetchFriends() != null)
+ return false;
+ if (getGetHomeTimeline() != null ? !getGetHomeTimeline().equals(taskInfo.getGetHomeTimeline()) : taskInfo.getGetHomeTimeline() != null)
+ return false;
+ if (getGetUserTimeline() != null ? !getGetUserTimeline().equals(taskInfo.getGetUserTimeline()) : taskInfo.getGetUserTimeline() != null)
+ return false;
+ if (getGetMentions() != null ? !getGetMentions().equals(taskInfo.getGetMentions()) : taskInfo.getGetMentions() != null)
+ return false;
+ if (getGetFavorites() != null ? !getGetFavorites().equals(taskInfo.getGetFavorites()) : taskInfo.getGetFavorites() != null)
+ return false;
+ if (getGetRetweetsOfMe() != null ? !getGetRetweetsOfMe().equals(taskInfo.getGetRetweetsOfMe()) : taskInfo.getGetRetweetsOfMe() != null)
+ return false;
+ return getGetLists() != null ? getGetLists().equals(taskInfo.getGetLists()) : taskInfo.getGetLists() == null;
}
@Override
public int hashCode() {
- int result = fetchTweetsFromSearch != null ? fetchTweetsFromSearch.hashCode() : 0;
- result = 31 * result + (updateTweets != null ? updateTweets.hashCode() : 0);
- result = 31 * result + (updatedUsers != null ? updatedUsers.hashCode() : 0);
- result = 31 * result + (updateUsersFromMentions != null ? updateUsersFromMentions.hashCode() : 0);
- result = 31 * result + (fetchUsersFromList != null ? fetchUsersFromList.hashCode() : 0);
- result = 31 * result + (controllerAddUserForScreenName != null ? controllerAddUserForScreenName.hashCode() : 0);
- result = 31 * result + (controllerCreateTestdataTweets != null ? controllerCreateTestdataTweets.hashCode() : 0);
- result = 31 * result + (controllerCreateTestdataUsers != null ? controllerCreateTestdataUsers.hashCode() : 0);
- result = 31 * result + (controllerCreateImprintUser != null ? controllerCreateImprintUser.hashCode() : 0);
- result = 31 * result + (removeOldDataFromStorage != null ? removeOldDataFromStorage.hashCode() : 0);
- result = 31 * result + (fetchFollower != null ? fetchFollower.hashCode() : 0);
- result = 31 * result + (fetchFriends != null ? fetchFriends.hashCode() : 0);
+ int result = getFetchTweetsFromSearch() != null ? getFetchTweetsFromSearch().hashCode() : 0;
+ result = 31 * result + (getUpdateTweets() != null ? getUpdateTweets().hashCode() : 0);
+ result = 31 * result + (getUpdatedUsers() != null ? getUpdatedUsers().hashCode() : 0);
+ result = 31 * result + (getUpdateUsersFromMentions() != null ? getUpdateUsersFromMentions().hashCode() : 0);
+ result = 31 * result + (getFetchUsersFromList() != null ? getFetchUsersFromList().hashCode() : 0);
+ result = 31 * result + (getControllerAddUserForScreenName() != null ? getControllerAddUserForScreenName().hashCode() : 0);
+ result = 31 * result + (getControllerCreateTestdataTweets() != null ? getControllerCreateTestdataTweets().hashCode() : 0);
+ result = 31 * result + (getControllerCreateTestdataUsers() != null ? getControllerCreateTestdataUsers().hashCode() : 0);
+ result = 31 * result + (getControllerCreateImprintUser() != null ? getControllerCreateImprintUser().hashCode() : 0);
+ result = 31 * result + (getRemoveOldDataFromStorage() != null ? getRemoveOldDataFromStorage().hashCode() : 0);
+ result = 31 * result + (getFetchFollower() != null ? getFetchFollower().hashCode() : 0);
+ result = 31 * result + (getFetchFriends() != null ? getFetchFriends().hashCode() : 0);
+ result = 31 * result + (getGetHomeTimeline() != null ? getGetHomeTimeline().hashCode() : 0);
+ result = 31 * result + (getGetUserTimeline() != null ? getGetUserTimeline().hashCode() : 0);
+ result = 31 * result + (getGetMentions() != null ? getGetMentions().hashCode() : 0);
+ result = 31 * result + (getGetFavorites() != null ? getGetFavorites().hashCode() : 0);
+ result = 31 * result + (getGetRetweetsOfMe() != null ? getGetRetweetsOfMe().hashCode() : 0);
+ result = 31 * result + (getGetLists() != null ? getGetLists().hashCode() : 0);
return result;
}
@Override
public String toString() {
return "TaskInfo{" +
- "fetchTweetsFromSearch=" + fetchTweetsFromSearch +
- ", updateTweets=" + updateTweets +
- ", updatedUsers=" + updatedUsers +
- ", updateUsersFromMentions=" + updateUsersFromMentions +
- ", fetchUsersFromList=" + fetchUsersFromList +
- ", controllerAddUserForScreenName=" + controllerAddUserForScreenName +
- ", controllerCreateTestdataTweets=" + controllerCreateTestdataTweets +
- ", controllerCreateTestdataUsers=" + controllerCreateTestdataUsers +
- ", controllerCreateImprintUser=" + controllerCreateImprintUser +
- ", removeOldDataFromStorage=" + removeOldDataFromStorage +
- ", fetchFollower=" + fetchFollower +
- ", fetchFriends=" + fetchFriends +
- '}';
+ "fetchTweetsFromSearch=" + fetchTweetsFromSearch +
+ ", updateTweets=" + updateTweets +
+ ", updatedUsers=" + updatedUsers +
+ ", updateUsersFromMentions=" + updateUsersFromMentions +
+ ", fetchUsersFromList=" + fetchUsersFromList +
+ ", controllerAddUserForScreenName=" + controllerAddUserForScreenName +
+ ", controllerCreateTestdataTweets=" + controllerCreateTestdataTweets +
+ ", controllerCreateTestdataUsers=" + controllerCreateTestdataUsers +
+ ", controllerCreateImprintUser=" + controllerCreateImprintUser +
+ ", removeOldDataFromStorage=" + removeOldDataFromStorage +
+ ", fetchFollower=" + fetchFollower +
+ ", fetchFriends=" + fetchFriends +
+ ", getHomeTimeline=" + getHomeTimeline +
+ ", getUserTimeline=" + getUserTimeline +
+ ", getMentions=" + getMentions +
+ ", getFavorites=" + getFavorites +
+ ", getRetweetsOfMe=" + getRetweetsOfMe +
+ ", getLists=" + getLists +
+ '}';
+ }
+
+ @Transient
+ public String getUniqueId() {
+ return toString();
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskType.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskType.java
index c6ae5078..592cb7b3 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskType.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskType.java
@@ -7,6 +7,12 @@ public enum TaskType {
NULL,
FETCH_TWEETS_FROM_SEARCH,
+ FETCH_HOME_TIMELINE,
+ FETCH_USER_TIMELINE,
+ FETCH_MENTIONS,
+ FETCH_FAVORITES,
+ FETCH_RETWEETS_OF_ME,
+ FETCH_LISTS,
FETCH_USERS_FROM_LIST,
FETCH_FOLLOWER,
FETCH_FRIENDS,
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java
index c2ac9775..48ad6992 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java
@@ -7,7 +7,6 @@
import org.springframework.stereotype.Repository;
import org.woehlke.twitterwall.oodm.entities.Tweet;
import org.woehlke.twitterwall.oodm.entities.User;
-import org.woehlke.twitterwall.oodm.entities.transients.*;
import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository;
import org.woehlke.twitterwall.oodm.repositories.custom.TweetRepositoryCustom;
@@ -44,4 +43,22 @@ public interface TweetRepository extends DomainRepository,TweetRepository
@Query(name="Tweet.countAllUser2Url",nativeQuery=true)
long countAllUser2Url();
+
+ @Query(name="Tweet.getHomeTimeline",nativeQuery=true)
+ Page getHomeTimeline(Pageable pageRequest);
+
+ @Query(name="Tweet.getUserTimeline",nativeQuery=true)
+ Page getUserTimeline(Pageable pageRequest);
+
+ @Query(name="Tweet.getMentions",nativeQuery=true)
+ Page getMentions(Pageable pageRequest);
+
+ @Query(name="Tweet.getFavorites",nativeQuery=true)
+ Page getFavorites(Pageable pageRequest);
+
+ @Query(name="Tweet.getRetweetsOfMe",nativeQuery=true)
+ Page getRetweetsOfMe(Pageable pageRequest);
+
+
+
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java
new file mode 100644
index 00000000..e45af413
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java
@@ -0,0 +1,11 @@
+package org.woehlke.twitterwall.oodm.repositories;
+
+
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository;
+import org.woehlke.twitterwall.oodm.repositories.custom.UserListRepositoryCustom;
+
+public interface UserListRepository extends DomainRepository,UserListRepositoryCustom {
+
+ UserList findByIdTwitter(long idTwitter);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java
new file mode 100644
index 00000000..c8f5466e
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java
@@ -0,0 +1,9 @@
+package org.woehlke.twitterwall.oodm.repositories.custom;
+
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository;
+
+public interface UserListRepositoryCustom extends DomainObjectMinimalRepository {
+
+ UserList findByUniqueId(UserList domainObject);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskRepositoryImpl.java
index 9da1dc0a..4fb21726 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskRepositoryImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskRepositoryImpl.java
@@ -40,7 +40,6 @@ public Task findByUniqueId(Task domainObject) {
@Override
public void deleteAllDomainData() {
-
String SQL_DELETE_ALL_ROWS[] = {
"delete from userprofile_url",
"delete from userprofile_mention",
@@ -59,10 +58,10 @@ public void deleteAllDomainData() {
"delete from hashtag",
"delete from tweet",
"delete from userprofile",
+ "delete from userlist",
"delete from task_history",
"delete from task"
};
-
for(String SQL : SQL_DELETE_ALL_ROWS){
jdbcTemplate.execute(SQL);
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserListRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserListRepositoryImpl.java
new file mode 100644
index 00000000..aa4c6af5
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserListRepositoryImpl.java
@@ -0,0 +1,39 @@
+package org.woehlke.twitterwall.oodm.repositories.custom.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Repository;
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.oodm.repositories.custom.UserListRepositoryCustom;
+
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+import javax.sql.DataSource;
+import java.util.List;
+
+@Repository
+public class UserListRepositoryImpl implements UserListRepositoryCustom {
+
+ @Override
+ public UserList findByUniqueId(UserList domainObject) {
+ String name="UserList.findByUniqueId";
+ TypedQuery query = entityManager.createNamedQuery(name,UserList.class);
+ query.setParameter("idTwitter",domainObject.getIdTwitter());
+ List resultList = query.getResultList();
+ if(resultList.size()>0){
+ return resultList.iterator().next();
+ } else {
+ return null;
+ }
+ }
+
+ private final EntityManager entityManager;
+
+ private JdbcTemplate jdbcTemplate;
+
+ @Autowired
+ public UserListRepositoryImpl(EntityManager entityManager,DataSource dataSource) {
+ this.entityManager = entityManager;
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java
index 90c8046e..57908189 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java
@@ -20,8 +20,6 @@ public interface TweetService extends DomainObjectWithEntitiesService,Dom
Page findTweetsForUser(User user, Pageable pageRequest);
- //Page findAllTwitterIds(Pageable pageRequest);
-
Page findAllTweet2HashTag(Pageable pageRequest);
Page findAllTweet2Media(Pageable pageRequest);
@@ -32,4 +30,14 @@ public interface TweetService extends DomainObjectWithEntitiesService,Dom
Page findAllTweet2TickerSymbol(Pageable pageRequest);
+ Page getHomeTimeline(Pageable pageRequest);
+
+ Page getUserTimeline(Pageable pageRequest);
+
+ Page getMentions(Pageable pageRequest);
+
+ Page getFavorites(Pageable pageRequest);
+
+ Page getRetweetsOfMe(Pageable pageRequest);
+
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java
new file mode 100644
index 00000000..e220445f
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java
@@ -0,0 +1,9 @@
+package org.woehlke.twitterwall.oodm.service;
+
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter;
+import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask;
+
+public interface UserListService extends DomainServiceWithIdTwitter,DomainServiceWithTask {
+
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java
index 6d9b3c2b..a5d66e54 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java
@@ -11,4 +11,6 @@ public interface DomainObjectMinimalService {
Page getAll(Pageable pageRequest);
long count();
+
+ T findByUniqueId(T domainExampleObject);
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithScreenName.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithScreenName.java
index dd391b9f..2dea3a4c 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithScreenName.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithScreenName.java
@@ -5,9 +5,6 @@
/**
* Created by tw on 14.07.17.
*/
-
-//DomainServiceWithIdTwitter extends DomainService
-
public interface DomainServiceWithScreenName extends DomainService {
T findByScreenName(String screenName);
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/CountedEntitiesServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/CountedEntitiesServiceImpl.java
index 23eaeef4..1bb9ef63 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/CountedEntitiesServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/CountedEntitiesServiceImpl.java
@@ -26,6 +26,7 @@ public CountedEntities countAll() {
long countUser = userRepository.count();
long countTweets = tweetRepository.count();
+ long countUserLists = userListRepository.count();
long countHashTags = hashTagRepository.count();
long countMedia = mediaRepository.count();
long countMention = mentionRepository.count();
@@ -36,6 +37,7 @@ public CountedEntities countAll() {
c.setCountHashTags(countHashTags);
c.setCountMedia(countMedia);
+ c.setCountUserLists(countUserLists);
c.setCountMention(countMention);
c.setCountTickerSymbol(countTickerSymbol);
c.setCountTweets(countTweets);
@@ -97,8 +99,10 @@ public CountedEntities deleteAll() {
private final TaskHistoryRepository taskHistoryRepository;
+ private final UserListRepository userListRepository;
+
@Autowired
- public CountedEntitiesServiceImpl(TweetRepository tweetRepository, UserRepository userRepository, MentionRepository mentionRepository, MediaRepository mediaRepository, HashTagRepository hashTagRepository, UrlRepository urlRepository, TickerSymbolRepository tickerSymbolRepository, TaskRepository taskRepository, TaskHistoryRepository taskHistoryRepository) {
+ public CountedEntitiesServiceImpl(TweetRepository tweetRepository, UserRepository userRepository, MentionRepository mentionRepository, MediaRepository mediaRepository, HashTagRepository hashTagRepository, UrlRepository urlRepository, TickerSymbolRepository tickerSymbolRepository, TaskRepository taskRepository, TaskHistoryRepository taskHistoryRepository, UserListRepository userListRepository) {
this.tweetRepository = tweetRepository;
this.userRepository = userRepository;
this.mentionRepository = mentionRepository;
@@ -108,6 +112,7 @@ public CountedEntitiesServiceImpl(TweetRepository tweetRepository, UserRepositor
this.tickerSymbolRepository = tickerSymbolRepository;
this.taskRepository = taskRepository;
this.taskHistoryRepository = taskHistoryRepository;
+ this.userListRepository = userListRepository;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java
index 24aa9ab0..122761fb 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java
@@ -61,7 +61,9 @@ public T store(T domainObject, Task task) {
domainObjectPersistent = null;
log.error(msg+"Something strange happened!");
log.debug(msg+"tried to persist: " + domainObject.getUniqueId());
+ log.debug(msg+"tried to persist: " + domainObject.toString());
log.debug(msg+"found: " + domainObjectPersistent.getUniqueId());
+ log.debug(msg+"found: " + domainObjectPersistent.toString());
}
}
}
@@ -75,17 +77,21 @@ public T store(T domainObject, Task task) {
domainObject.setUpdatedBy(task);
storedObject = domainRepository.save(domainObject);
domainObjectResult = storedObject;
- log.debug(msg+"merged: " + domainObjectResult.toString());
+ log.debug(msg+"merged: " + domainObjectResult.getUniqueId());
+ log.trace(msg+"merged: " + domainObjectResult.toString());
} else {
domainObject.setCreatedBy(task);
domainObject.setUpdatedBy(task);
log.debug("try to persist: " + domainObject.getUniqueId());
+ log.trace("try to persist: " + domainObject.toString());
storedObject = domainRepository.save(domainObject);
domainObjectResult = storedObject;
log.debug("persisted: " + domainObjectResult.getUniqueId());
+ log.trace("persisted: " + domainObjectResult.toString());
}
} catch (Exception e) {
- log.warn(msg+domainObject.toString(),e);
+ log.warn(msg+domainObject.getUniqueId(),e);
+ log.debug(msg+domainObject.toString(),e);
}
return domainObjectResult;
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/HashTagServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/HashTagServiceImpl.java
index 0040d8cf..cba07152 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/HashTagServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/HashTagServiceImpl.java
@@ -64,4 +64,8 @@ public Page getHashTagsUsers(Pageable pageRequestUsers) {
return hashTagRepository.countAllUser2HashTag(pageRequestUsers);
}
+ @Override
+ public HashTag findByUniqueId(HashTag domainExampleObject) {
+ return hashTagRepository.findByUniqueId(domainExampleObject);
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java
index f3aa7919..c5d7fd1a 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java
@@ -38,4 +38,8 @@ public Media findByUrl(String url) {
return mediaRepository.findByUrl(url);
}
+ @Override
+ public Media findByUniqueId(Media domainExampleObject) {
+ return mediaRepository.findByUniqueId(domainExampleObject);
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java
index 9522b40b..23ccc439 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java
@@ -79,4 +79,8 @@ public Mention findByScreenNameAndIdTwitter(String screenName, Long idTwitter) {
return mentionRepository.findByScreenNameUniqueAndIdTwitter(screenNameUnique, idTwitter);
}
+ @Override
+ public Mention findByUniqueId(Mention domainExampleObject) {
+ return mentionRepository.findByUniqueId(domainExampleObject);
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskHistoryServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskHistoryServiceImpl.java
index a81b0251..44119e99 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskHistoryServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskHistoryServiceImpl.java
@@ -45,6 +45,11 @@ public long count() {
return taskHistoryRepository.count();
}
+ @Override
+ public TaskHistory findByUniqueId(TaskHistory domainExampleObject) {
+ return taskHistoryRepository.findByUniqueId(domainExampleObject);
+ }
+
@Override
public Page findByTask(Task oneTask,Pageable pageRequest) {
return taskHistoryRepository.findByTask(oneTask,pageRequest);
@@ -54,4 +59,6 @@ public Page findByTask(Task oneTask,Pageable pageRequest) {
public TaskHistory findById(long id) {
return taskHistoryRepository.findOne(id);
}
+
+
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskServiceImpl.java
index a0378620..902aa654 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskServiceImpl.java
@@ -49,6 +49,11 @@ public long count() {
return taskRepository.count();
}
+ @Override
+ public Task findByUniqueId(Task domainExampleObject) {
+ return taskRepository.findByUniqueId(domainExampleObject);
+ }
+
@Override
public Task findById(long id) {
return taskRepository.findOne(id);
@@ -67,7 +72,8 @@ public Task create(String msg, TaskType type, SendType sendType, CountedEntities
Date now = new Date();
TaskHistory event = new TaskHistory("create: "+msg,TaskStatus.READY, TaskStatus.READY,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -81,7 +87,8 @@ public Task done(Task task,CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("DONE ",oldStatus,TaskStatus.FINISHED,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -95,7 +102,8 @@ public Task error(Task task,Exception e,CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("error: "+e.getMessage(),oldStatus,TaskStatus.ERROR,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -109,7 +117,8 @@ public Task error(Task task, Exception e, String msg,CountedEntities countedEnti
Date now = new Date();
TaskHistory event = new TaskHistory(msg+", error: "+e.getMessage(),oldStatus,TaskStatus.ERROR,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -123,7 +132,8 @@ public Task warn(Task task, Exception e,CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("warn: "+e.getMessage(),oldStatus,TaskStatus.WARN,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -137,7 +147,8 @@ public Task warn(Task task, Exception e, String msg,CountedEntities countedEntit
Date now = new Date();
TaskHistory event = new TaskHistory("warn: "+msg+", "+e.getMessage(),oldStatus,TaskStatus.WARN,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -150,7 +161,8 @@ public Task event(Task task, String msg,CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("event: "+msg,task.getTaskStatus(),oldStatus,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -164,7 +176,8 @@ public Task warn(Task task, String msg,CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("warn: "+msg,oldStatus,TaskStatus.WARN,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -178,7 +191,8 @@ public Task error(Task task, String msg,CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("error: "+msg,oldStatus,TaskStatus.ERROR,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -192,7 +206,8 @@ public Task start(Task task,CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("START",oldStatus,TaskStatus.RUNNING,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -206,7 +221,8 @@ public Task finalError(Task task, String msg, CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("FINAL ERROR: "+msg,oldStatus,TaskStatus.FINAL_ERROR,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
@@ -220,7 +236,8 @@ public Task done(String logMsg, Task task, CountedEntities countedEntities) {
Date now = new Date();
TaskHistory event = new TaskHistory("DONE "+logMsg,oldStatus,TaskStatus.FINISHED,now,task,countedEntities);
event = taskHistoryRepository.save(event);
- log.debug(task.toString());
+ log.debug(task.getUniqueId());
+ log.trace(task.toString());
return task;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java
index 14c0a45d..9eb47aa3 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java
@@ -34,4 +34,8 @@ public TickerSymbol findByUrl(String url) {
return tickerSymbolRepository.findByUrl(url);
}
+ @Override
+ public TickerSymbol findByUniqueId(TickerSymbol domainExampleObject) {
+ return tickerSymbolRepository.findByUniqueId(domainExampleObject);
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java
index 28a4d387..6209277f 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java
@@ -44,13 +44,6 @@ public Page findTweetsForUser(User user, Pageable pageRequest) {
return tweetRepository.findByUser(user,pageRequest);
}
- /*
- @Override
- public Page findAllTwitterIds(Pageable pageRequest) {
- return tweetRepository.findAllTwitterIds(pageRequest);
- }
- */
-
@Override
public Page findAllTweet2HashTag(Pageable pageRequest) {
return tweetRepository.findAllTweet2HashTag(pageRequest);
@@ -76,9 +69,38 @@ public Page findAllTweet2TickerSymbol(Pageable pageRequest) {
return tweetRepository.findAllTweet2TickerSymbol(pageRequest);
}
+ @Override
+ public Page getHomeTimeline(Pageable pageRequest) {
+ return tweetRepository.getHomeTimeline(pageRequest);
+ }
+
+ @Override
+ public Page getUserTimeline(Pageable pageRequest) {
+ return tweetRepository.getUserTimeline(pageRequest);
+ }
+
+ @Override
+ public Page getMentions(Pageable pageRequest) {
+ return tweetRepository.getMentions(pageRequest);
+ }
+
+ @Override
+ public Page getFavorites(Pageable pageRequest) {
+ return tweetRepository.getFavorites(pageRequest);
+ }
+
+ @Override
+ public Page getRetweetsOfMe(Pageable pageRequest) {
+ return tweetRepository.getRetweetsOfMe(pageRequest);
+ }
+
@Override
public Tweet findByIdTwitter(long idTwitter) {
return tweetRepository.findByIdTwitter(idTwitter);
}
+ @Override
+ public Tweet findByUniqueId(Tweet domainExampleObject) {
+ return tweetRepository.findByUniqueId(domainExampleObject);
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlServiceImpl.java
index 6f82f974..413633b4 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlServiceImpl.java
@@ -40,9 +40,14 @@ public Url findByUrl(String url) {
if(result == null){
log.debug(name+"Url.findByUrl: url == null");
} else {
- log.debug(name+result.toString());
+ log.debug(name+result.getUniqueId());
+ log.trace(name+result.toString());
}
return result;
}
+ @Override
+ public Url findByUniqueId(Url domainExampleObject) {
+ return urlRepository.findByUniqueId(domainExampleObject);
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java
new file mode 100644
index 00000000..64970827
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java
@@ -0,0 +1,40 @@
+package org.woehlke.twitterwall.oodm.service.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.oodm.repositories.TaskRepository;
+import org.woehlke.twitterwall.oodm.repositories.UserListRepository;
+import org.woehlke.twitterwall.oodm.service.UserListService;
+
+@Service
+@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
+public class UserListServiceImpl extends DomainServiceWithTaskImpl implements UserListService {
+
+ private static final Logger log = LoggerFactory.getLogger(UserListServiceImpl.class);
+
+ private final UserListRepository domainRepository;
+
+ private final TaskRepository taskRepository;
+
+ @Autowired
+ public UserListServiceImpl(UserListRepository domainRepository, TaskRepository taskRepository) {
+ super(domainRepository, taskRepository);
+ this.domainRepository=domainRepository;
+ this.taskRepository=taskRepository;
+ }
+
+ @Override
+ public UserList findByIdTwitter(long idTwitter) {
+ return domainRepository.findByIdTwitter(idTwitter);
+ }
+
+ @Override
+ public UserList findByUniqueId(UserList domainExampleObject) {
+ return domainRepository.findByUniqueId(domainExampleObject);
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java
index 874f9e1c..dd9dd722 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java
@@ -141,4 +141,8 @@ public boolean isByIdTwitter(long userIdTwitter) {
return ((userRepository.findByIdTwitter(userIdTwitter)) != null);
}
+ @Override
+ public User findByUniqueId(User domainExampleObject) {
+ return userRepository.findByUniqueId(domainExampleObject);
+ }
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTask.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTask.java
index e76b33a5..9cdfd4f2 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTask.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTask.java
@@ -2,6 +2,7 @@
import org.woehlke.twitterwall.oodm.entities.Task;
+
public interface AsyncStartTask {
Task updateTweets();
@@ -23,4 +24,18 @@ public interface AsyncStartTask {
Task createTestDataForUser();
Task removeOldDataFromStorage();
+
+ Task getHomeTimeline();
+
+ Task getUserTimeline();
+
+ Task getMentions();
+
+ Task getFavorites();
+
+ Task getRetweetsOfMe();
+
+ Task getLists();
+
+ Task createImprintUserAsync();
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TwitterwallMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TwitterwallMessageBuilder.java
index e47de42b..5342b1e7 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TwitterwallMessageBuilder.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TwitterwallMessageBuilder.java
@@ -3,10 +3,12 @@
import org.springframework.messaging.Message;
import org.springframework.social.twitter.api.Tweet;
import org.springframework.social.twitter.api.TwitterProfile;
+import org.springframework.social.twitter.api.UserList;
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
public interface TwitterwallMessageBuilder {
@@ -31,5 +33,5 @@ public interface TwitterwallMessageBuilder {
Message buildUserMessage(Message mqMessageIn, User imprintUser);
- void waitForApi();
+ Message buildUserListMessage(Message incomingTaskMessage, UserList userList, int loopId, int loopAll);
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java
new file mode 100644
index 00000000..3389b0b1
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java
@@ -0,0 +1,12 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.common;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
+
+import java.util.List;
+
+public interface UserListsSplitter {
+
+ List> splitUserListMessage(Message incomingTaskMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/impl/TwitterwallMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/impl/TwitterwallMessageBuilderImpl.java
index 08893949..1d351f6f 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/impl/TwitterwallMessageBuilderImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/impl/TwitterwallMessageBuilderImpl.java
@@ -7,6 +7,7 @@
import org.springframework.messaging.Message;
import org.springframework.social.twitter.api.Tweet;
import org.springframework.social.twitter.api.TwitterProfile;
+import org.springframework.social.twitter.api.UserList;
import org.springframework.stereotype.Component;
import org.woehlke.twitterwall.conf.properties.TwitterProperties;
import org.woehlke.twitterwall.oodm.entities.Task;
@@ -14,6 +15,7 @@
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@Component
@@ -62,8 +64,8 @@ public Message buildUserMessage(Message incomingTaskMe
Message mqMessageOut =
MessageBuilder.withPayload(outputPayload)
.copyHeaders(incomingTaskMessage.getHeaders())
- .setHeader("tw_lfd_nr",loopId)
- .setHeader("tw_all",loopAll)
+ .setHeader("loop_id",loopId)
+ .setHeader("loop_all",loopAll)
.build();
return mqMessageOut;
}
@@ -107,6 +109,9 @@ public Message buildUserMessage(Message incomingMessag
@Override
public Message buildUserMessage(Message incomingMessage, TwitterProfile twitterProfile, boolean ignoreTransformation) {
+ if(twitterProfile == null){
+ log.error("buildUserMessage: TwitterProfile twitterProfile == null - bust must not be null");
+ }
UserMessage outputPayload = new UserMessage(incomingMessage.getPayload().getTaskMessage(),twitterProfile,ignoreTransformation);
Message mqMessageOut =
MessageBuilder.withPayload(outputPayload)
@@ -118,6 +123,9 @@ public Message buildUserMessage(Message incomingMessag
@Override
public Message buildUserMessage(Message incomingMessage, TwitterProfile twitterProfile) {
+ if(twitterProfile == null){
+ log.error("buildUserMessage: TwitterProfile twitterProfile == null - bust must not be null");
+ }
UserMessage outputPayload = new UserMessage(incomingMessage.getPayload(),twitterProfile);
Message mqMessageOut =
MessageBuilder.withPayload(outputPayload)
@@ -129,6 +137,9 @@ public Message buildUserMessage(Message incomingMessag
@Override
public Message buildUserMessage(Message incomingMessage, User imprintUser) {
+ if(imprintUser == null){
+ log.error("buildUserMessage: User imprintUser == null - bust must not be null");
+ }
UserMessage outputPayload = new UserMessage(incomingMessage.getPayload(), imprintUser);
Message mqMessageOut =
MessageBuilder.withPayload(outputPayload)
@@ -139,13 +150,15 @@ public Message buildUserMessage(Message incomingMessag
}
@Override
- public void waitForApi() {
- int millisToWaitBetweenTwoApiCalls = twitterProperties.getMillisToWaitBetweenTwoApiCalls();
- log.debug("### waiting now for (ms): "+millisToWaitBetweenTwoApiCalls);
- try {
- Thread.sleep(millisToWaitBetweenTwoApiCalls);
- } catch (InterruptedException e) {
- }
+ public Message buildUserListMessage(Message incomingTaskMessage, UserList userList, int loopId, int loopAll) {
+ UserListMessage outputPayload = new UserListMessage(incomingTaskMessage.getPayload(),userList);
+ Message mqMessageOut =
+ MessageBuilder.withPayload(outputPayload)
+ .copyHeaders(incomingTaskMessage.getHeaders())
+ .setHeader("loop_id",loopId)
+ .setHeader("loop_all",loopAll)
+ .build();
+ return mqMessageOut;
}
@Autowired
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/AsyncStartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/AsyncStartTaskImpl.java
index 641a80b5..c1a0b127 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/AsyncStartTaskImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/AsyncStartTaskImpl.java
@@ -80,6 +80,48 @@ public Task removeOldDataFromStorage() {
return send(taskType);
}
+ @Override
+ public Task getHomeTimeline() {
+ TaskType taskType = TaskType.FETCH_HOME_TIMELINE;
+ return send(taskType);
+ }
+
+ @Override
+ public Task getUserTimeline() {
+ TaskType taskType = TaskType.FETCH_USER_TIMELINE;
+ return send(taskType);
+ }
+
+ @Override
+ public Task getMentions() {
+ TaskType taskType = TaskType.FETCH_MENTIONS;
+ return send(taskType);
+ }
+
+ @Override
+ public Task getFavorites() {
+ TaskType taskType = TaskType.FETCH_FAVORITES;
+ return send(taskType);
+ }
+
+ @Override
+ public Task getRetweetsOfMe() {
+ TaskType taskType = TaskType.FETCH_RETWEETS_OF_ME;
+ return send(taskType);
+ }
+
+ @Override
+ public Task getLists() {
+ TaskType taskType = TaskType.FETCH_LISTS;
+ return send(taskType);
+ }
+
+ @Override
+ public Task createImprintUserAsync() {
+ TaskType taskType = TaskType.CONTROLLER_CREATE_IMPRINT_USER;
+ return send(taskType);
+ }
+
private Task send(TaskType taskType){
SendType sendType = SendType.FIRE_AND_FORGET;
String msg = "START Task "+taskType+" via MQ by "+sendType;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/StartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/StartTaskImpl.java
index 6035c082..20b89a12 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/StartTaskImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/StartTaskImpl.java
@@ -81,6 +81,73 @@ public Task removeOldDataFromStorage() {
return sendAndReceiveTweet(taskType);
}
+ @Override
+ public Task getHomeTimeline() {
+ TaskType taskType = TaskType.FETCH_HOME_TIMELINE;
+ return sendAndReceiveTweet(taskType);
+ }
+
+ @Override
+ public Task getUserTimeline() {
+ TaskType taskType = TaskType.FETCH_USER_TIMELINE;
+ return sendAndReceiveTweet(taskType);
+ }
+
+ @Override
+ public Task getMentions() {
+ TaskType taskType = TaskType.FETCH_MENTIONS;
+ return sendAndReceiveTweet(taskType);
+ }
+
+ @Override
+ public Task getFavorites() {
+ TaskType taskType = TaskType.FETCH_FAVORITES;
+ return sendAndReceiveTweet(taskType);
+ }
+
+ @Override
+ public Task getRetweetsOfMe() {
+ TaskType taskType = TaskType.FETCH_RETWEETS_OF_ME;
+ return sendAndReceiveTweet(taskType);
+ }
+
+ @Override
+ public Task getLists() {
+ TaskType taskType = TaskType.FETCH_LISTS;
+ return sendAndReceiveUserList(taskType);
+ }
+
+ @Override
+ public Task createImprintUserAsync() {
+ TaskType taskType = TaskType.CONTROLLER_CREATE_IMPRINT_USER;
+ return sendAndReceiveUser(taskType);
+ }
+
+ private Task sendAndReceiveUserList(TaskType taskType){
+ SendType sendType = SendType.SEND_AND_WAIT_FOR_RESULT;
+ String logMsg = "Start task "+taskType+"via MQ by "+sendType;
+ log.info(logMsg);
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ Task task = taskService.create("Start via MQ by Scheduler ", taskType,sendType,countedEntities);
+ Message mqMessage = twitterwallMessageBuilder.buildTaskMessage(task);
+ MessagingTemplate mqTemplate = new MessagingTemplate();
+ Message> returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage);
+ Object o = returnedMessage.getPayload();
+ countedEntities = countedEntitiesService.countAll();
+ if( o instanceof TweetResultList){
+ TweetResultList msg = (TweetResultList) o;
+ long taskId = msg.getTaskId();
+ task = taskService.findById(taskId);
+ logMsg = "Sucessfully finished task "+taskType+"via MQ by "+sendType;
+ taskService.done(logMsg,task,countedEntities);
+ } else {
+ logMsg = "Finished with Error: task "+taskType+"via MQ by "+sendType+": Wrong type of returnedMessage";
+ taskService.finalError(task,logMsg,countedEntities);
+ log.error(logMsg);
+ }
+ return task;
+ }
+
@Override
public User createImprintUser() {
TaskType taskType = TaskType.CONTROLLER_CREATE_IMPRINT_USER;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetFinisher.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java
similarity index 84%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetFinisher.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java
index 6a4a9f5e..f084f459 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetFinisher.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services;
import org.springframework.messaging.Message;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetPersistor.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java
similarity index 76%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetPersistor.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java
index 71f2b759..f1a3613f 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetPersistor.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services;
import org.springframework.messaging.Message;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetTransformator.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java
similarity index 75%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetTransformator.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java
index f7e01455..db872381 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetTransformator.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services;
import org.springframework.messaging.Message;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java
similarity index 91%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetFinisherImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java
index fcff96f4..f6586b9e 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetFinisherImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -10,7 +10,8 @@
import org.woehlke.twitterwall.oodm.entities.Tweet;
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.TweetFinisher;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl.UserFinisherImpl;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetFinisher;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetResultList;
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java
similarity index 92%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetPersistorImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java
index 493289ab..d2d84dae 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetPersistorImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.support.MessageBuilder;
@@ -7,7 +7,7 @@
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.Tweet;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.TweetPersistor;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetPersistor;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweetPerform;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java
similarity index 93%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetTransformatorImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java
index a0f138e6..1060b175 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/TweetTransformatorImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.support.MessageBuilder;
@@ -7,7 +7,7 @@
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.Tweet;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.TweetTransformator;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetTransformator;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateTestDataTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java
similarity index 68%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateTestDataTweetsSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java
index 20915ca7..088c1feb 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateTestDataTweetsSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FavoritesSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FavoritesSplitter.java
new file mode 100644
index 00000000..29c333fe
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FavoritesSplitter.java
@@ -0,0 +1,6 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
+
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
+
+public interface FavoritesSplitter extends TweetsSplitter {
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchTweetsFromSearchSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java
similarity index 68%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchTweetsFromSearchSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java
index 3491448e..e9fd75ff 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchTweetsFromSearchSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FindTweetsToRemoveSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java
similarity index 67%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FindTweetsToRemoveSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java
index 513c9623..542da1b0 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FindTweetsToRemoveSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java
new file mode 100644
index 00000000..e39a8cf0
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java
@@ -0,0 +1,6 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
+
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
+
+public interface HomeTimelineSplitter extends TweetsSplitter {
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/MentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/MentionsSplitter.java
new file mode 100644
index 00000000..21b80294
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/MentionsSplitter.java
@@ -0,0 +1,6 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
+
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
+
+public interface MentionsSplitter extends TweetsSplitter {
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java
new file mode 100644
index 00000000..5dedff8a
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java
@@ -0,0 +1,6 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
+
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
+
+public interface RetweetsOfMeSplitter extends TweetsSplitter{
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java
similarity index 66%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateTweetsSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java
index 690ed6c3..34f9550c 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateTweetsSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UserTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UserTimelineSplitter.java
new file mode 100644
index 00000000..b0151210
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UserTimelineSplitter.java
@@ -0,0 +1,6 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter;
+
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter;
+
+public interface UserTimelineSplitter extends TweetsSplitter{
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateTestDataTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java
similarity index 93%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateTestDataTweetsSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java
index 15c7e17a..0fc9f03f 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateTestDataTweetsSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
@@ -9,7 +9,7 @@
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.oodm.service.TweetService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.CreateTestDataTweetsSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.CreateTestDataTweetsSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
@@ -70,9 +70,8 @@ public List> splitTweetMessage(Message incomi
if(fetchTweetFromApi) {
Tweet tweet = twitterApiService.findOneTweetById(idTwitter);
outgoingMessage = twitterwallMessageBuilder.buildTweetMessage(incomingTaskMessage, tweet, loopId, loopAll);
- twitterwallMessageBuilder.waitForApi();
} else {
- outgoingMessage = twitterwallMessageBuilder.buildTweetMessage(incomingTaskMessage,tweetPers,loopId,loopAll);
+ outgoingMessage = twitterwallMessageBuilder.buildTweetMessage(incomingTaskMessage, tweetPers,loopId,loopAll);
}
tweets.add(outgoingMessage);
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java
new file mode 100644
index 00000000..2ea08812
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java
@@ -0,0 +1,57 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FavoritesSplitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
+import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqFavoritesSplitter")
+public class FavoritesSplitterImpl implements FavoritesSplitter {
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ private final TwitterwallMessageBuilder twitterwallMessageBuilder;
+
+ @Autowired
+ public FavoritesSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) {
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ this.twitterwallMessageBuilder = twitterwallMessageBuilder;
+ }
+
+ @Override
+ public List> splitTweetMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List> tweets = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ List twitterTweets = twitterApiService.getFavorites();
+ int loopId = 0;
+ int loopAll = twitterTweets.size();
+ for (Tweet tweet: twitterTweets) {
+ loopId++;
+ Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll);
+ tweets.add(mqMessageOut);
+ }
+ return tweets;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchTweetsFromSearchSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java
similarity index 93%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchTweetsFromSearchSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java
index d765b4b0..8d5267e0 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchTweetsFromSearchSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
@@ -7,7 +7,7 @@
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.FetchTweetsFromSearchSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FetchTweetsFromSearchSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FindTweetsToRemoveSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java
similarity index 94%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FindTweetsToRemoveSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java
index 5c852a00..8e4f4108 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FindTweetsToRemoveSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@@ -12,7 +12,7 @@
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.oodm.service.TweetService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.FindTweetsToRemoveSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FindTweetsToRemoveSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java
new file mode 100644
index 00000000..b058cc19
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java
@@ -0,0 +1,57 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.HomeTimelineSplitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
+import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqHomeTimelineSplitter")
+public class HomeTimelineSplitterImpl implements HomeTimelineSplitter {
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ private final TwitterwallMessageBuilder twitterwallMessageBuilder;
+
+ @Autowired
+ public HomeTimelineSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) {
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ this.twitterwallMessageBuilder = twitterwallMessageBuilder;
+ }
+
+ @Override
+ public List> splitTweetMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List> tweets = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ List twitterTweets = twitterApiService.getHomeTimeline();
+ int loopId = 0;
+ int loopAll = twitterTweets.size();
+ for (Tweet tweet: twitterTweets) {
+ loopId++;
+ Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll);
+ tweets.add(mqMessageOut);
+ }
+ return tweets;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java
new file mode 100644
index 00000000..7725ba1c
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java
@@ -0,0 +1,57 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.MentionsSplitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
+import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqMentionsSplitter")
+public class MentionsSplitterImpl implements MentionsSplitter {
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ private final TwitterwallMessageBuilder twitterwallMessageBuilder;
+
+ @Autowired
+ public MentionsSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) {
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ this.twitterwallMessageBuilder = twitterwallMessageBuilder;
+ }
+
+ @Override
+ public List> splitTweetMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List> tweets = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ List twitterTweets = twitterApiService.getMentions();
+ int loopId = 0;
+ int loopAll = twitterTweets.size();
+ for (Tweet tweet: twitterTweets) {
+ loopId++;
+ Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll);
+ tweets.add(mqMessageOut);
+ }
+ return tweets;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java
new file mode 100644
index 00000000..3ab7b212
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java
@@ -0,0 +1,58 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.RetweetsOfMeSplitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
+import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqRetweetsOfMeSplitter")
+public class RetweetsOfMeSplitterImpl implements RetweetsOfMeSplitter {
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ private final TwitterwallMessageBuilder twitterwallMessageBuilder;
+
+ @Autowired
+ public RetweetsOfMeSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) {
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ this.twitterwallMessageBuilder = twitterwallMessageBuilder;
+ }
+
+
+ @Override
+ public List> splitTweetMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List> tweets = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ List twitterTweets = twitterApiService.getRetweetsOfMe();
+ int loopId = 0;
+ int loopAll = twitterTweets.size();
+ for (Tweet tweet: twitterTweets) {
+ loopId++;
+ Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll);
+ tweets.add(mqMessageOut);
+ }
+ return tweets;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java
similarity index 95%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateTweetsSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java
index ba615825..095828f1 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateTweetsSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -13,7 +13,7 @@
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.oodm.service.TweetService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.UpdateTweetsSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.UpdateTweetsSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
@@ -84,7 +84,6 @@ public List> splitTweetMessage(Message incomi
TweetMessage result = new TweetMessage(msgIn,foundTweetFromTwitter);
Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(incomingTaskMessage,foundTweetFromTwitter,lfdNr,all);
tweets.add(mqMessageOut);
- twitterwallMessageBuilder.waitForApi();
}
return tweets;
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java
new file mode 100644
index 00000000..11f2d5ee
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java
@@ -0,0 +1,58 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.UserTimelineSplitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
+import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqUserTimelineSplitter")
+public class UserTimelineSplitterImpl implements UserTimelineSplitter {
+
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ private final TwitterwallMessageBuilder twitterwallMessageBuilder;
+
+ @Autowired
+ public UserTimelineSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) {
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ this.twitterwallMessageBuilder = twitterwallMessageBuilder;
+ }
+
+ @Override
+ public List> splitTweetMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List> tweets = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ List twitterTweets = twitterApiService.getUserTimeline();
+ int loopId = 0;
+ int loopAll = twitterTweets.size();
+ for (Tweet tweet: twitterTweets) {
+ loopId++;
+ Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll);
+ tweets.add(mqMessageOut);
+ }
+ return tweets;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java
new file mode 100644
index 00000000..36c247fc
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java
@@ -0,0 +1,14 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListResultList;
+
+import java.util.List;
+
+public interface ListFinisher {
+
+ Message finish(Message> incomingMessageList);
+
+ void finishAsnyc(Message> incomingMessageList);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java
new file mode 100644
index 00000000..bb2bd38d
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java
@@ -0,0 +1,9 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
+
+public interface ListsPersistor {
+
+ Message persistList(Message incomingMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java
new file mode 100644
index 00000000..9ec03d37
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java
@@ -0,0 +1,9 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
+
+public interface ListsTransformator {
+
+ Message transformList(Message incomingMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java
new file mode 100644
index 00000000..28771f65
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java
@@ -0,0 +1,68 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.ListFinisher;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl.UserFinisherImpl;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListResultList;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqUserListsFinisher")
+public class ListFinisherImpl implements ListFinisher {
+
+ //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252
+ @Override
+ public Message finish(Message> incomingMessageList) {
+ List resultList = new ArrayList<>();
+ long taskId = 0L;
+ for(UserListMessage msg:incomingMessageList.getPayload()){
+ resultList.add( msg.getUserList());
+ taskId = msg.getTaskMessage().getTaskId();
+ }
+ UserListResultList result = new UserListResultList(taskId,resultList);
+ Message mqMessageOut = MessageBuilder.withPayload(result)
+ .copyHeaders(incomingMessageList.getHeaders())
+ .setHeader("persisted",Boolean.TRUE)
+ .build();
+ return mqMessageOut;
+ }
+
+ //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252
+ @Override
+ public void finishAsnyc(Message> incomingMessageList) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ long taskId = 0L;
+ for(UserListMessage msg:incomingMessageList.getPayload()){
+ taskId = msg.getTaskMessage().getTaskId();
+ break;
+ }
+ Task task = taskService.findById(taskId);
+ String msgDone = "Sucessfully finished task "+task.getTaskType()+" via MQ by FIRE_AND_FORGET_SENDER";
+ taskService.done(msgDone,task,countedEntities);
+ log.info(msgDone);
+ }
+
+ @Autowired
+ public ListFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService) {
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ }
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ private static final Logger log = LoggerFactory.getLogger(UserFinisherImpl.class);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java
new file mode 100644
index 00000000..5f7743d9
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java
@@ -0,0 +1,41 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.oodm.service.UserListService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.ListsPersistor;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
+
+@Component("mqUserListPersistor")
+public class ListsPersistorImpl implements ListsPersistor {
+
+ private final TaskService taskService;
+
+ private final UserListService userListService;
+
+ @Autowired
+ public ListsPersistorImpl(TaskService taskService, UserListService userListService) {
+ this.taskService = taskService;
+ this.userListService = userListService;
+ }
+
+ //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252
+ @Override
+ public Message persistList(Message incomingMessage) {
+ UserListMessage receivedMessage = incomingMessage.getPayload();
+ long taskId = receivedMessage.getTaskMessage().getTaskId();
+ Task task = taskService.findById(taskId);
+ UserList userListOut = userListService.store(receivedMessage.getUserList(),task);
+ UserListMessage newUserListMsg = new UserListMessage(receivedMessage.getTaskMessage(),receivedMessage.getUserListTwitter(),userListOut);
+ Message mqMessageOut = MessageBuilder.withPayload(newUserListMsg)
+ .copyHeaders(incomingMessage.getHeaders())
+ .setHeader("persisted",Boolean.TRUE)
+ .build();
+ return mqMessageOut;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java
new file mode 100644
index 00000000..a2f0ac89
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java
@@ -0,0 +1,39 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.ListsTransformator;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
+import org.woehlke.twitterwall.scheduled.service.transform.UserListTransformService;
+
+@Component("mqUserListTransformator")
+public class ListsTransformatorImpl implements ListsTransformator {
+
+ private final TaskService taskService;
+
+ private final UserListTransformService userListTransformService;
+
+ @Autowired
+ public ListsTransformatorImpl(TaskService taskService, UserListTransformService userListTransformService) {
+ this.taskService = taskService;
+ this.userListTransformService = userListTransformService;
+ }
+
+ //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252
+ @Override
+ public Message transformList(Message incomingMessage) {
+ long taskId = incomingMessage.getPayload().getTaskMessage().getTaskId();
+ Task task = taskService.findById(taskId);
+ org.woehlke.twitterwall.oodm.entities.UserList userListOut = userListTransformService.transform(incomingMessage.getPayload().getUserListTwitter(),task);
+ UserListMessage retVal = new UserListMessage(incomingMessage.getPayload().getTaskMessage(),incomingMessage.getPayload().getUserListTwitter(),userListOut);
+ Message mqMessageOut = MessageBuilder.withPayload(retVal)
+ .copyHeaders(incomingMessage.getHeaders())
+ .setHeader("transformed",Boolean.TRUE)
+ .build();
+ return mqMessageOut;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java
new file mode 100644
index 00000000..411c591f
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java
@@ -0,0 +1,7 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.splitter;
+
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserListsSplitter;
+
+public interface ListsSplitter extends UserListsSplitter {
+
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java
new file mode 100644
index 00000000..75fc743d
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java
@@ -0,0 +1,58 @@
+package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.splitter.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.UserList;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.splitter.ListsSplitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage;
+import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqUserListsSplitter")
+public class ListsSplitterImpl implements ListsSplitter {
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ private final TwitterwallMessageBuilder twitterwallMessageBuilder;
+
+ @Autowired
+ public ListsSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) {
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ this.twitterwallMessageBuilder = twitterwallMessageBuilder;
+ }
+
+ //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252
+ @Override
+ public List> splitUserListMessage(Message incomingTaskMessage) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List> messageListOut = new ArrayList<>();
+ TaskMessage msgIn = incomingTaskMessage.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ List fetchedUserList = twitterApiService.getLists();
+ int loopId = 0;
+ int loopAll = fetchedUserList.size();
+ for (UserList userList: fetchedUserList) {
+ loopId++;
+ Message mqMessageOut = twitterwallMessageBuilder.buildUserListMessage(incomingTaskMessage,userList,loopId,loopAll);
+ messageListOut.add(mqMessageOut);
+ }
+ return messageListOut;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java
similarity index 80%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateImprintUser.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java
index a5175c7d..ea95db1d 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateImprintUser.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services;
import org.springframework.messaging.Message;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserCheckStorage.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java
similarity index 76%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserCheckStorage.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java
index ace44436..ec395a33 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserCheckStorage.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services;
import org.springframework.messaging.Message;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserFinisher.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java
similarity index 73%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserFinisher.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java
index 77b95e96..0b62952f 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserFinisher.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services;
import org.springframework.messaging.Message;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@@ -11,4 +11,6 @@ public interface UserFinisher {
Message finish(Message> incomingMessageList);
void finishAsnyc(Message> incomingMessageList);
+
+ void finishOneUserAsnyc(Message incomingMessage);
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserPersistor.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java
similarity index 76%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserPersistor.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java
index 76db2aa9..e4c47799 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserPersistor.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services;
import org.springframework.messaging.Message;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserTransformator.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java
similarity index 75%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserTransformator.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java
index b9886494..1b5ac220 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserTransformator.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services;
import org.springframework.messaging.Message;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateImprintUserImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java
similarity index 93%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateImprintUserImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java
index 86c9086e..46914e44 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateImprintUserImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
@@ -7,7 +7,7 @@
import org.woehlke.twitterwall.conf.properties.FrontendProperties;
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.oodm.service.UserService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.CreateImprintUser;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.CreateImprintUser;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@@ -56,7 +56,6 @@ private Message getMessageOut(Message mqMessageIn){
String screenName = frontendProperties.getImprintScreenName();
TwitterProfile twitterProfile = twitterApiService.getUserProfileForScreenName(screenName);
Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(mqMessageIn,twitterProfile);
- twitterwallMessageBuilder.waitForApi();
return mqMessageOut;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserCheckStorageImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java
similarity index 73%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserCheckStorageImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java
index 0d0ba5bf..8acda58c 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserCheckStorageImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java
@@ -1,11 +1,11 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.social.twitter.api.TwitterProfile;
import org.springframework.stereotype.Component;
import org.woehlke.twitterwall.oodm.service.UserService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.UserCheckStorage;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserCheckStorage;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService;
@@ -35,10 +35,15 @@ public Message checkIfUserIsInStorage(Message incoming
Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingMessage,isInStorage);
return mqMessageOut;
} else {
- boolean ignoreTransformation = false;
TwitterProfile twitterProfile = twitterApiService.getUserProfileForTwitterId(userIdTwitter);
- Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingMessage, twitterProfile, ignoreTransformation);
- return mqMessageOut;
+ if(twitterProfile == null){
+ Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingMessage,isInStorage);
+ return mqMessageOut;
+ } else {
+ boolean ignoreTransformation = false;
+ Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingMessage, twitterProfile, ignoreTransformation);
+ return mqMessageOut;
+ }
}
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java
similarity index 80%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserFinisherImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java
index 96117bd8..ac93b315 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserFinisherImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -10,7 +10,7 @@
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.UserFinisher;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserFinisher;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserResultList;
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
@@ -53,6 +53,16 @@ public void finishAsnyc(Message> incomingMessageList) {
log.info(msgDone);
}
+ @Override
+ public void finishOneUserAsnyc(Message incomingMessage) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ long taskId = incomingMessage.getPayload().getTaskMessage().getTaskId();
+ Task task = taskService.findById(taskId);
+ String msgDone = "Sucessfully finished task "+task.getTaskType()+" via MQ by FIRE_AND_FORGET_SENDER";
+ taskService.done(msgDone,task,countedEntities);
+ log.info(msgDone);
+ }
+
@Autowired
public UserFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService) {
this.taskService = taskService;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java
similarity index 92%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserPersistorImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java
index 6c155fa3..a6ccbc1e 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserPersistorImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.support.MessageBuilder;
@@ -9,7 +9,7 @@
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.UserPersistor;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserPersistor;
@Component("mqUserPersistor")
public class UserPersistorImpl implements UserPersistor {
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java
similarity index 93%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserTransformatorImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java
index ff9f0087..14699fcd 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UserTransformatorImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.support.MessageBuilder;
@@ -8,7 +8,7 @@
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.UserTransformator;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserTransformator;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@Component("mqUserTransformator")
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateTestDataUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java
similarity index 67%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateTestDataUsersSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java
index 6f39015d..0ce5b272 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/CreateTestDataUsersSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchFollowerSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java
similarity index 66%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchFollowerSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java
index 2503d01c..b97d8d02 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchFollowerSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchFriendsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java
similarity index 66%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchFriendsSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java
index cba70478..b4a99d0c 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchFriendsSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchUsersFromListSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java
similarity index 67%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchUsersFromListSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java
index 00b41172..e4a500e8 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/FetchUsersFromListSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateUsersFromMentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersFromMentionsSplitter.java
similarity index 68%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateUsersFromMentionsSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersFromMentionsSplitter.java
index 3e21fadd..4f8716b1 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateUsersFromMentionsSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersFromMentionsSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java
similarity index 66%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateUsersSplitter.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java
index 75009005..13565ef5 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UpdateUsersSplitter.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateTestDataUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java
similarity index 94%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateTestDataUsersSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java
index 0cfe7d72..7c25667f 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/CreateTestDataUsersSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl;
import org.springframework.messaging.Message;
import org.springframework.social.twitter.api.TwitterProfile;
@@ -9,7 +9,7 @@
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.oodm.service.UserService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.CreateTestDataUsersSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.CreateTestDataUsersSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@@ -69,7 +69,6 @@ public List> splitUserMessage(Message incoming
if(fetchFromTwitterApi){
TwitterProfile userProfile = twitterApiService.getUserProfileForScreenName(screenName);
outgoingMessage = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,loopId,loopAll);
- twitterwallMessageBuilder.waitForApi();
} else {
outgoingMessage = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userPers,loopId,loopAll);
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchFollowerSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java
similarity index 93%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchFollowerSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java
index df88783f..f1c8eede 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchFollowerSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
@@ -8,7 +8,7 @@
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.FetchFollowerSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchFollowerSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@@ -52,7 +52,6 @@ public List> splitUserMessage(Message incoming
Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,twitterProfileId,loopId,loopAll);
userProfileList.add(mqMessageOut);
}
- twitterwallMessageBuilder.waitForApi();
return userProfileList;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchFriendsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java
similarity index 93%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchFriendsSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java
index e14ccc66..64d540ea 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchFriendsSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
@@ -8,7 +8,7 @@
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.FetchFriendsSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchFriendsSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchUsersFromListSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java
similarity index 94%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchUsersFromListSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java
index c1ad0ebe..637a1a4a 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/FetchUsersFromListSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl;
import org.springframework.messaging.Message;
import org.springframework.social.twitter.api.TwitterProfile;
@@ -8,7 +8,7 @@
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.FetchUsersFromListSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchUsersFromListSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@@ -51,7 +51,7 @@ public List> splitUserMessage(Message incoming
Task task = taskService.findById(id);
task = taskService.start(task,countedEntities);
String imprintScreenName = frontendProperties.getImprintScreenName();
- String fetchUsersList = schedulerProperties.getFetchUserListName();
+ String fetchUsersList = schedulerProperties.getFetchUsersFromDefinedUserListName();
List foundTwitterProfiles = twitterApiService.findUsersFromDefinedList(imprintScreenName,fetchUsersList);
int loopId = 0;
int loopAll = foundTwitterProfiles.size();
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateUsersFromMentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java
similarity index 96%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateUsersFromMentionsSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java
index e076010f..03bd691f 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateUsersFromMentionsSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -16,7 +16,7 @@
import org.woehlke.twitterwall.oodm.service.MentionService;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.oodm.service.UserService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.UpdateUsersFromMentionsSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.UpdateUsersFromMentionsSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@@ -102,7 +102,6 @@ public List> splitUserMessage(Message incoming
Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,lfdNr,all);
userProfileList.add(mqMessageOut);
}
- twitterwallMessageBuilder.waitForApi();
}
return userProfileList;
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java
similarity index 96%
rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateUsersSplitterImpl.java
rename to src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java
index f11ba901..cf5e27ff 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/UpdateUsersSplitterImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java
@@ -1,4 +1,4 @@
-package org.woehlke.twitterwall.scheduled.mq.endpoint.impl;
+package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -17,7 +17,7 @@
import org.woehlke.twitterwall.oodm.entities.parts.TaskType;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.oodm.service.UserService;
-import org.woehlke.twitterwall.scheduled.mq.endpoint.UpdateUsersSplitter;
+import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.UpdateUsersSplitter;
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
@@ -103,7 +103,6 @@ public List> splitUserMessage(Message incoming
Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,loopId,loopAll);
userProfileList.add(mqMessageOut);
}
- twitterwallMessageBuilder.waitForApi();
}
log.debug(msg+ " DONE");
return userProfileList;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java
new file mode 100644
index 00000000..a2042eb8
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java
@@ -0,0 +1,91 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+import org.springframework.social.twitter.api.UserList;
+
+import java.io.Serializable;
+
+public class UserListMessage implements Serializable {
+
+ private final TaskMessage taskMessage;
+ private final org.springframework.social.twitter.api.UserList userListTwitter;
+ private final org.woehlke.twitterwall.oodm.entities.UserList userList;
+ private final long idTwitter;
+
+ public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, long idTwitter) {
+ this.taskMessage = taskMessage;
+ this.userListTwitter = userListTwitter;
+ this.idTwitter = idTwitter;
+ this.userList = null;
+ }
+
+ public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.entities.UserList userList, long idTwitter) {
+ this.taskMessage = taskMessage;
+ this.userListTwitter = userListTwitter;
+ this.userList = userList;
+ this.idTwitter = idTwitter;
+ }
+
+ public UserListMessage(TaskMessage taskMessage, UserList userListTwitter) {
+ this.taskMessage = taskMessage;
+ this.userListTwitter = userListTwitter;
+ this.userList = null;
+ this.idTwitter = userListTwitter.getId();
+ }
+
+ public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.entities.UserList userListOut) {
+ this.taskMessage = taskMessage;
+ this.userListTwitter = userListTwitter;
+ this.userList = userListOut;
+ this.idTwitter = userListTwitter.getId();
+ }
+
+ public TaskMessage getTaskMessage() {
+ return taskMessage;
+ }
+
+ public UserList getUserListTwitter() {
+ return userListTwitter;
+ }
+
+ public org.woehlke.twitterwall.oodm.entities.UserList getUserList() {
+ return userList;
+ }
+
+ public long getIdTwitter() {
+ return idTwitter;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof UserListMessage)) return false;
+
+ UserListMessage that = (UserListMessage) o;
+
+ if (getIdTwitter() != that.getIdTwitter()) return false;
+ if (getTaskMessage() != null ? !getTaskMessage().equals(that.getTaskMessage()) : that.getTaskMessage() != null)
+ return false;
+ if (getUserListTwitter() != null ? !getUserListTwitter().equals(that.getUserListTwitter()) : that.getUserListTwitter() != null)
+ return false;
+ return getUserList() != null ? getUserList().equals(that.getUserList()) : that.getUserList() == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getTaskMessage() != null ? getTaskMessage().hashCode() : 0;
+ result = 31 * result + (getUserListTwitter() != null ? getUserListTwitter().hashCode() : 0);
+ result = 31 * result + (getUserList() != null ? getUserList().hashCode() : 0);
+ result = 31 * result + (int) (getIdTwitter() ^ (getIdTwitter() >>> 32));
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "UserListMessage{" +
+ "taskMessage=" + taskMessage +
+ ", userListTwitter=" + userListTwitter +
+ ", userList=" + userList +
+ ", idTwitter=" + idTwitter +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListResultList.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListResultList.java
new file mode 100644
index 00000000..50c99f0d
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListResultList.java
@@ -0,0 +1,50 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+import org.woehlke.twitterwall.oodm.entities.UserList;
+
+import java.util.List;
+
+public class UserListResultList {
+
+ private final long taskId;
+ private final List resultList;
+
+ public UserListResultList(long taskId, List resultList) {
+ this.resultList=resultList;
+ this.taskId=taskId;
+ }
+
+ public long getTaskId() {
+ return taskId;
+ }
+
+ public List getResultList() {
+ return resultList;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof UserListResultList)) return false;
+
+ UserListResultList that = (UserListResultList) o;
+
+ if (taskId != that.taskId) return false;
+ return resultList != null ? resultList.equals(that.resultList) : that.resultList == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (taskId ^ (taskId >>> 32));
+ result = 31 * result + (resultList != null ? resultList.hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "UserListResultList{" +
+ "taskId=" + taskId +
+ ", resultList=" + resultList +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java
index 37e856c5..7b764669 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java
@@ -32,7 +32,6 @@ public UserMessage(TaskMessage taskMessage, long twitterProfileId, boolean ignor
this.ignoreTransformation = ignoreTransformation;
}
- @Deprecated
public UserMessage(TaskMessage taskMessage, TwitterProfile twitterProfile, boolean ignoreTransformation){
this.taskMessage = taskMessage;
this.screenName = twitterProfile.getScreenName();
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java
index 7ab53144..d0b77377 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java
@@ -4,9 +4,6 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.parts.Entities;
import org.woehlke.twitterwall.oodm.entities.Tweet;
import org.woehlke.twitterwall.oodm.entities.User;
@@ -17,10 +14,7 @@
/**
* Created by tw on 09.07.17.
*/
-
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class StoreOneTweetPerformImpl implements StoreOneTweetPerform {
/** Method because of recursive Method Call in this Method **/
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java
index c7908766..75097595 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java
@@ -3,6 +3,7 @@
import org.springframework.social.twitter.api.CursoredList;
import org.springframework.social.twitter.api.Tweet;
import org.springframework.social.twitter.api.TwitterProfile;
+import org.springframework.social.twitter.api.UserList;
import java.util.List;
@@ -15,6 +16,16 @@ public interface TwitterApiService {
Tweet findOneTweetById(long tweetTwitterId);
+ List getHomeTimeline();
+
+ List getUserTimeline();
+
+ List getMentions();
+
+ List getFavorites();
+
+ List getRetweetsOfMe();
+
TwitterProfile getUserProfileForTwitterId(long userProfileTwitterId);
TwitterProfile getUserProfileForScreenName(String screenName);
@@ -24,4 +35,6 @@ public interface TwitterApiService {
CursoredList getFollowerIds();
CursoredList getFriendIds();
+
+ List getLists();
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java
index 054b0bf7..f06b834b 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java
@@ -6,10 +6,7 @@
import org.springframework.core.env.Environment;
import org.springframework.social.RateLimitExceededException;
import org.springframework.social.ResourceNotFoundException;
-import org.springframework.social.twitter.api.CursoredList;
-import org.springframework.social.twitter.api.Tweet;
-import org.springframework.social.twitter.api.Twitter;
-import org.springframework.social.twitter.api.TwitterProfile;
+import org.springframework.social.twitter.api.*;
import org.springframework.social.twitter.api.impl.TwitterTemplate;
import org.springframework.stereotype.Component;
import org.woehlke.twitterwall.conf.properties.TwitterProperties;
@@ -30,23 +27,24 @@ public List findTweetsForSearchQuery() {
String msg = MSG+"findTweetsForSearchQuery: ";
log.debug(msg);
List fetchedTweets;
- try {
- fetchedTweets = getTwitterProxy().searchOperations().search(twitterProperties.getSearchQuery(), twitterProperties.getPageSize()).getTweets();
- msg += " result: ";
- if(fetchedTweets.size()==0){
- log.error(msg+" result.size: 0");
+ while(true) {
+ try {
+ fetchedTweets = getTwitterProxy().searchOperations().search(twitterProperties.getSearchQuery(), twitterProperties.getPageSize()).getTweets();
+ msg += " result: ";
+ if (fetchedTweets.size() == 0) {
+ log.error(msg + " result.size: 0");
+ return new ArrayList<>();
+ } else {
+ log.debug(msg + " result.size: " + fetchedTweets.size());
+ return fetchedTweets;
+ }
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
return new ArrayList<>();
- } else {
- log.debug(msg+" result.size: "+fetchedTweets.size());
- return fetchedTweets;
}
- } catch (RateLimitExceededException e){
- log.warn(msg+" Rate Limit Exceeded : ");
- waitForApi();
- return null;
- } catch (Exception e) {
- log.error(msg + e.getMessage());
- return new ArrayList<>();
}
}
@@ -55,20 +53,179 @@ public Tweet findOneTweetById(long tweetTwitterId) {
String msg = MSG + "findOneTweetById: " + tweetTwitterId;
log.debug(msg);
Tweet result;
- try {
- result = getTwitterProxy().timelineOperations().getStatus(tweetTwitterId);
- log.debug(msg + " Id: " + result.getId());
- msg += " result: ";
- log.debug(msg + result);
- return result;
- } catch (RateLimitExceededException e) {
- log.warn(msg + " Rate Limit Exceeded ");
- waitForApi();
- return null;
- } catch(Exception e){
- log.error(msg + e.getMessage());
- e.printStackTrace();
- return null;
+ while(true) {
+ try {
+ result = getTwitterProxy().timelineOperations().getStatus(tweetTwitterId);
+ log.debug(msg + " Id: " + result.getId());
+ msg += " result: ";
+ log.debug(msg + result);
+ waitForApi();
+ return result;
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+ }
+
+ @Override
+ public List getHomeTimeline() {
+ String msg = MSG+"getHomeTimeline: ";
+ log.debug(msg);
+ List fetchedTweets;
+ while(true) {
+ try {
+ fetchedTweets = getTwitterProxy().timelineOperations().getHomeTimeline();
+ msg += " result: ";
+ if (fetchedTweets.size() == 0) {
+ log.error(msg + " result.size: 0");
+ return new ArrayList<>();
+ } else {
+ log.debug(msg + " result.size: " + fetchedTweets.size());
+ return fetchedTweets;
+ }
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new ArrayList<>();
+ }
+ }
+ }
+
+ @Override
+ public List getUserTimeline() {
+ String msg = MSG+"getUserTimeline: ";
+ log.debug(msg);
+ List fetchedTweets;
+ while(true) {
+ try {
+ fetchedTweets = getTwitterProxy().timelineOperations().getUserTimeline();
+ msg += " result: ";
+ if (fetchedTweets.size() == 0) {
+ log.error(msg + " result.size: 0");
+ //TODO: Why?
+ return new ArrayList<>();
+ } else {
+ log.debug(msg + " result.size: " + fetchedTweets.size());
+ return fetchedTweets;
+ }
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new ArrayList<>();
+ }
+ }
+ }
+
+ @Override
+ public List getMentions() {
+ String msg = MSG+"getMentions: ";
+ log.debug(msg);
+ List fetchedTweets;
+ while(true) {
+ try {
+ fetchedTweets = getTwitterProxy().timelineOperations().getMentions();
+ msg += " result: ";
+ if (fetchedTweets.size() == 0) {
+ log.error(msg + " result.size: 0");
+ return new ArrayList<>();
+ } else {
+ log.debug(msg + " result.size: " + fetchedTweets.size());
+ return fetchedTweets;
+ }
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new ArrayList<>();
+ }
+ }
+ }
+
+ @Override
+ public List getFavorites() {
+ String msg = MSG+"getMentions: ";
+ log.debug(msg);
+ List fetchedTweets;
+ while(true) {
+ try {
+ fetchedTweets = getTwitterProxy().timelineOperations().getFavorites();
+ msg += " result: ";
+ if (fetchedTweets.size() == 0) {
+ log.error(msg + " result.size: 0");
+ return new ArrayList<>();
+ } else {
+ log.debug(msg + " result.size: " + fetchedTweets.size());
+ return fetchedTweets;
+ }
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new ArrayList<>();
+ }
+ }
+ }
+
+ @Override
+ public List getRetweetsOfMe(){
+ String msg = MSG+"getMentions: ";
+ log.debug(msg);
+ List fetchedTweets;
+ while(true) {
+ try {
+ fetchedTweets = getTwitterProxy().timelineOperations().getRetweetsOfMe();
+ msg += " result: ";
+ if (fetchedTweets.size() == 0) {
+ log.error(msg + " result.size: 0");
+ return new ArrayList<>();
+ } else {
+ log.debug(msg + " result.size: " + fetchedTweets.size());
+ return fetchedTweets;
+ }
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new ArrayList<>();
+ }
+ }
+ }
+
+ @Override
+ public List getLists(){
+ String msg = MSG+"getMentions: ";
+ log.debug(msg);
+ List fetchedUserLists;
+ while(true) {
+ try {
+ fetchedUserLists = getTwitterProxy().listOperations().getLists();
+ msg += " result: ";
+ if (fetchedUserLists.size() == 0) {
+ log.error(msg + " result.size: 0");
+ return new ArrayList<>();
+ } else {
+ log.debug(msg + " result.size: " + fetchedUserLists.size());
+ return fetchedUserLists;
+ }
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new ArrayList<>();
+ }
}
}
@@ -77,23 +234,25 @@ public TwitterProfile getUserProfileForTwitterId(long userProfileTwitterId) {
String msg = MSG+"getUserProfileForTwitterId: "+userProfileTwitterId+" : ";
log.debug(msg);
TwitterProfile result;
- try {
- result = getTwitterProxy().userOperations().getUserProfile(userProfileTwitterId);
- msg += " result: ";
- log.debug(msg + " Id: " + result.getId());
- log.debug(msg + " ScreenName: " + result.getScreenName());
- log.debug(msg + " Name: " + result.getName());
- return result;
- } catch (RateLimitExceededException e) {
- log.warn(msg + " Rate Limit Exceeded : ");
- waitForApi();
- return null;
- } catch (ResourceNotFoundException e) {
- log.warn(msg+" User not found : "+userProfileTwitterId);
- return null;
- } catch (Exception e) {
- log.error(msg + e.getMessage());
- return null;
+ while(true) {
+ try {
+ result = getTwitterProxy().userOperations().getUserProfile(userProfileTwitterId);
+ msg += " result: ";
+ log.debug(msg + " Id: " + result.getId());
+ log.debug(msg + " ScreenName: " + result.getScreenName());
+ log.debug(msg + " Name: " + result.getName());
+ waitForApi();
+ return result;
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (ResourceNotFoundException e) {
+ log.warn(msg + " User not found : " + userProfileTwitterId);
+ return null;
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return null;
+ }
}
}
@@ -102,37 +261,44 @@ public TwitterProfile getUserProfileForScreenName(String screenName) {
String msg = MSG+"getUserProfileForScreenName: "+screenName;
log.debug(msg);
TwitterProfile result;
- try {
- result = getTwitterProxy().userOperations().getUserProfile(screenName);
- msg += " result: ";
- log.debug(msg + " ScreenName: " + result.getScreenName());
- log.debug(msg + " Name: " + result.getName());
- return result;
- } catch (RateLimitExceededException e){
- log.warn(msg+" Rate Limit Exceeded : ");
- waitForApi();
- return null;
- } catch (ResourceNotFoundException e) {
- log.warn(msg+" User not found : "+screenName);
- return null;
- } catch (Exception e) {
- log.error(msg + e.getMessage());
- return null;
+ while(true) {
+ try {
+ result = getTwitterProxy().userOperations().getUserProfile(screenName);
+ msg += " result: ";
+ log.debug(msg + " ScreenName: " + result.getScreenName());
+ log.debug(msg + " Name: " + result.getName());
+ waitForApi();
+ return result;
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (ResourceNotFoundException e) {
+ log.warn(msg + " User not found : " + screenName);
+ return null;
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return null;
+ }
}
}
@Override
- public List findUsersFromDefinedList(String screenName,String fetchUserListName) {
- String msg = MSG+"findUsersFromDefinedList: "+fetchUserListName+" ";
+ public List findUsersFromDefinedList(String screenNameOfTheListOwner,String listSlug) {
+ String msg = MSG+"findUsersFromDefinedList: listSlug = "+listSlug+" ";
log.debug(msg);
List result;
- try {
- result = getTwitterProxy().listOperations().getListMembers(screenName, fetchUserListName);
- log.debug(msg + " result.size: " + result.size());
- return result;
- } catch (Exception e) {
- log.error(msg + e.getMessage());
- return new ArrayList<>();
+ while(true) {
+ try {
+ result = getTwitterProxy().listOperations().getListMembers(screenNameOfTheListOwner, listSlug);
+ log.debug(msg + " result.size: " + result.size());
+ return result;
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new ArrayList<>();
+ }
}
}
@@ -141,13 +307,18 @@ public CursoredList getFollowerIds() {
String msg = MSG+"getFollowerIds: ";
log.debug(msg);
CursoredList result;
- try {
- result = getTwitterProxy().friendOperations().getFollowerIds();
- log.debug(msg + " result.size: " + result.size());
- return result;
- } catch (Exception e) {
- log.error(msg + e.getMessage());
- return new CursoredList<>(new ArrayList<>(),0L,0L);
+ while(true) {
+ try {
+ result = getTwitterProxy().friendOperations().getFollowerIds();
+ log.debug(msg + " result.size: " + result.size());
+ return result;
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new CursoredList<>(new ArrayList<>(), 0L, 0L);
+ }
}
}
@@ -156,18 +327,33 @@ public CursoredList getFriendIds() {
String msg = MSG+"findFriendss: ";
log.debug(msg);
CursoredList result;
- try {
- result = getTwitterProxy().friendOperations().getFriendIds();
- log.debug(msg + " result.size: " + result.size());
- return result;
- } catch (Exception e) {
- log.error(msg + e.getMessage());
- return new CursoredList<>(new ArrayList<>(),0L,0L);
+ while(true) {
+ try {
+ result = getTwitterProxy().friendOperations().getFriendIds();
+ log.debug(msg + " result.size: " + result.size());
+ return result;
+ } catch (RateLimitExceededException e) {
+ log.warn(msg + " Rate Limit Exceeded : ");
+ waitLongerForApi();
+ } catch (Exception e) {
+ log.error(msg + e.getMessage());
+ return new CursoredList<>(new ArrayList<>(), 0L, 0L);
+ }
}
}
private void waitForApi(){
- int millisToWaitBetweenTwoApiCalls = twitterProperties.getMillisToWaitBetweenTwoApiCalls() * 10;
+ int millisToWaitBetweenTwoApiCalls = twitterProperties.getMillisToWaitBetweenTwoApiCalls();
+ log.debug("### waiting now for (ms): "+millisToWaitBetweenTwoApiCalls);
+ try {
+ Thread.sleep(millisToWaitBetweenTwoApiCalls);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ private void waitLongerForApi(){
+ int millisToWaitBetweenTwoApiCalls = twitterProperties.getMillisToWaitBetweenTwoApiCalls();
+ millisToWaitBetweenTwoApiCalls *= 10;
log.debug("### waiting now for (ms): "+millisToWaitBetweenTwoApiCalls);
try {
Thread.sleep(millisToWaitBetweenTwoApiCalls);
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java
new file mode 100644
index 00000000..3ee1ba62
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java
@@ -0,0 +1,7 @@
+package org.woehlke.twitterwall.scheduled.service.transform;
+
+import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService;
+
+public interface UserListTransformService extends TransformService {
+
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java
index d0a966ef..bc25187a 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java
@@ -3,12 +3,10 @@
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.common.DomainObject;
-import java.io.Serializable;
-
/**
* Created by tw on 28.06.17.
*/
-public interface TransformService {
+public interface TransformService {
T transform(SRC twitterObject, Task task);
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java
index f8285e30..a3bb3599 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java
@@ -5,9 +5,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.social.twitter.api.*;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.*;
import org.woehlke.twitterwall.oodm.entities.parts.Entities;
import org.woehlke.twitterwall.scheduled.service.transform.*;
@@ -19,8 +16,6 @@
* Created by tw on 11.07.17.
*/
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class EntitiesTransformServiceImpl implements EntitiesTransformService {
private static final Logger log = LoggerFactory.getLogger(EntitiesTransformServiceImpl.class);
@@ -62,7 +57,8 @@ public Entities transformEntitiesForUser(TwitterProfile userSource, Task task) {
log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
log.debug(msg+"description " + description);
log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- log.debug(msg+entitiesTarget.toString());
+ log.debug(msg+entitiesTarget.getUniqueId());
+ log.trace(msg+entitiesTarget.toString());
log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
return entitiesTarget;
}
@@ -111,7 +107,8 @@ public Entities transform(org.springframework.social.twitter.api.Entities entiti
log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
log.debug(msg+"entitiesSource: "+entitiesSource.toString());
log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
- log.debug(msg+"entitiesTarget: "+entitiesTarget.toString());
+ log.debug(msg+"entitiesTarget: "+entitiesTarget.getUniqueId());
+ log.trace(msg+"entitiesTarget: "+entitiesTarget.toString());
log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
return entitiesTarget;
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java
index b59bfc7d..adbdff57 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java
@@ -3,9 +3,6 @@
import org.springframework.social.twitter.api.HashTagEntity;
import org.springframework.social.twitter.api.TwitterProfile;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter;
import org.woehlke.twitterwall.oodm.entities.HashTag;
@@ -17,10 +14,7 @@
/**
* Created by tw on 28.06.17.
*/
-
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class HashTagTransformServiceImpl extends EntitiesFilter implements HashTagTransformService {
@Override
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java
index ffcff889..d0350acc 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java
@@ -3,9 +3,6 @@
import org.springframework.social.twitter.api.MediaEntity;
import org.springframework.social.twitter.api.TwitterProfile;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter;
import org.woehlke.twitterwall.oodm.entities.Media;
@@ -17,10 +14,7 @@
/**
* Created by tw on 28.06.17.
*/
-
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class MediaTransformServiceImpl extends EntitiesFilter implements MediaTransformService {
@Override
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java
index 1f34dc39..f789bd08 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java
@@ -5,9 +5,6 @@
import org.springframework.social.twitter.api.MentionEntity;
import org.springframework.social.twitter.api.TwitterProfile;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter;
import org.woehlke.twitterwall.oodm.entities.Mention;
@@ -18,10 +15,7 @@
/**
* Created by tw on 28.06.17.
*/
-
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class MentionTransformServiceImpl extends EntitiesFilter implements MentionTransformService {
private static final Logger log = LoggerFactory.getLogger(MentionTransformServiceImpl.class);
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java
index bd11a451..2d7bbca3 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java
@@ -3,9 +3,6 @@
import org.springframework.social.twitter.api.TickerSymbolEntity;
import org.springframework.social.twitter.api.TwitterProfile;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter;
import org.woehlke.twitterwall.oodm.entities.TickerSymbol;
@@ -19,8 +16,6 @@
*/
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class TickerSymbolTransformServiceImpl extends EntitiesFilter implements TickerSymbolTransformService {
@Override
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java
index d862d94f..5b31c1d9 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java
@@ -3,9 +3,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.social.twitter.api.*;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.*;
import org.woehlke.twitterwall.scheduled.service.transform.EntitiesTransformService;
import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService;
@@ -18,8 +15,6 @@
*/
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class TweetTransformServiceImpl implements TweetTransformService {
private final UserTransformService userTransformService;
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java
index 15189307..c5f96701 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java
@@ -5,9 +5,6 @@
import org.springframework.social.twitter.api.TwitterProfile;
import org.springframework.social.twitter.api.UrlEntity;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter;
import org.woehlke.twitterwall.oodm.entities.Url;
@@ -18,10 +15,7 @@
/**
* Created by tw on 28.06.17.
*/
-
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class UrlTransformServiceImpl extends EntitiesFilter implements UrlTransformService {
@Override
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java
new file mode 100644
index 00000000..a45146ec
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java
@@ -0,0 +1,28 @@
+package org.woehlke.twitterwall.scheduled.service.transform.impl;
+
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.UserList;
+import org.woehlke.twitterwall.scheduled.service.transform.UserListTransformService;
+
+@Component
+public class UserListTransformServiceImpl implements UserListTransformService {
+
+ @Override
+ public UserList transform(org.springframework.social.twitter.api.UserList twitterObject, Task task) {
+ Task createdBy = task;
+ Task updatedBy = null;
+ long idTwitter = twitterObject.getId();
+ String name = twitterObject.getName();
+ String fullName = twitterObject.getFullName();
+ String uriPath = twitterObject.getUriPath();
+ String description = twitterObject.getDescription();
+ String slug = twitterObject.getSlug();
+ boolean isPublic = twitterObject.isPublic();
+ boolean isFollowing = twitterObject.isFollowing();
+ int memberCount = twitterObject.getMemberCount();
+ int subscriberCount = twitterObject.getSubscriberCount();
+ UserList userList = new UserList(createdBy, updatedBy, idTwitter, name, fullName, uriPath, description, slug, isPublic, isFollowing, memberCount, subscriberCount);
+ return userList;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java
index c55e2352..8e50a4e0 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java
@@ -5,9 +5,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.social.twitter.api.TwitterProfile;
import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.parts.Entities;
import org.woehlke.twitterwall.oodm.entities.User;
@@ -21,8 +18,6 @@
*/
@Component
-//@Service
-//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public class UserTransformServiceImpl implements UserTransformService {
private static final Logger log = LoggerFactory.getLogger(UserTransformServiceImpl.class);
@@ -83,14 +78,10 @@ public User transform(TwitterProfile userSource,Task task) {
userTarget.setShowAllInlineMedia(userSource.showAllInlineMedia());
userTarget.setProfileBannerUrl(userSource.getProfileBannerUrl());
Entities entities = this.entitiesTransformService.transformEntitiesForUser(userSource,task);
- log.debug(msg+" entities = "+entities.toString());
+ log.debug(msg+" entities = "+entities.getUniqueId());
userTarget.setEntities(entities);
log.debug(msg+" userTarget = "+userTarget.getUniqueId());
-
- switch(task.getTaskType()){
-
- }
-
+ log.trace(msg+" userTarget = "+userTarget.toString());
return userTarget;
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 876baa14..01038d4c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -116,8 +116,8 @@ twitterwall:
updateUserProfilesFromMentions: 3600000 # One Hour
scheduler:
allowFetchTweetsFromTwitterSearch: true
- fetchUserListAllow: true
- fetchUserListName: ${TWITTERWALL_SCHEDULER_USER_LIST_NAME}
+ fetchUsersFromDefinedUserListAllow: true
+ fetchUsersFromDefinedUserListName: ${TWITTERWALL_SCHEDULER_USER_LIST_NAME}
allowUpdateUserProfilesFromMention: true
fetchFollowerAllow: false
fetchFriendsAllow: false
@@ -125,6 +125,12 @@ twitterwall:
allowUpdateUserProfiles: false
herokuDbRowsLimit: false
removeOldDataFromStorageAllow: false
+ allowGetHomeTimeline: false
+ allowGetUserTimeline: false
+ allowGetMentions: false
+ allowGetFavorites: false
+ allowGetRetweetsOfMe: false
+ allowGetLists: false
skipFortesting: false
testdata:
oodm:
@@ -224,7 +230,6 @@ twitterwall:
- "https://t.co/4HBxydWdIE"
- "https://t.co/hMMJBGFFKR"
- "https://t.co/cbsEBiSW2E"
- urlcache:
user:
idTwitter:
#t3c_berlin
@@ -342,6 +347,15 @@ spring:
spring:
profiles: travis
datasource:
- url: ${DATABASE_URL_TEST}
-
-
+ driverClassName: org.h2.Driver
+ platform: H2
+ url: jdbc:h2:mem:test
+ jpa:
+ hibernate:
+ ddl-auto: update
+ properties:
+ hibernate:
+ dialect: org.hibernate.dialect.H2Dialect
+ show-sql: true
+hibernate:
+ dialect: org.hibernate.dialect.H2Dialect
diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml
index 075255fe..aefc868f 100644
--- a/src/main/resources/integration.xml
+++ b/src/main/resources/integration.xml
@@ -97,6 +97,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -109,8 +147,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+