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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -438,6 +668,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Count Entities:
+
+ +
+ countUserLists +
+
+

diff --git a/src/main/resources/templates/application/management.html b/src/main/resources/templates/application/management.html index 9d4100b0..c51c7aca 100644 --- a/src/main/resources/templates/application/management.html +++ b/src/main/resources/templates/application/management.html @@ -14,12 +14,12 @@

Welcome to Application Management.

Your Options:

- + Count Entities - + Delete All Entities @@ -66,6 +66,31 @@

Your Options:

Start Task: update Users + + + Start Task: getHomeTimeline + + + + Start Task: getUserTimeline + + + + Start Task: getMentions + + + + Start Task: getFavorites + + + + Start Task: getRetweetsOfMe + + + + Start Task: getLists + + List Users with Tweets diff --git a/src/main/resources/templates/layoutDataview.html b/src/main/resources/templates/layoutDataview.html index 696b35c6..46b9c85b 100644 --- a/src/main/resources/templates/layoutDataview.html +++ b/src/main/resources/templates/layoutDataview.html @@ -123,6 +123,60 @@ fetchFriends +
  • + + + + + + + getHomeTimeline +
  • +
  • + + + + + + + getUserTimeline +
  • +
  • + + + + + + + getMentions +
  • +
  • + + + + + + + getFavorites +
  • +
  • + + + + + + + getRetweetsOfMe +
  • +
  • + + + + + + + getLists +
  • diff --git a/src/main/resources/templates/layoutMain.html b/src/main/resources/templates/layoutMain.html index 8eb15e46..2aa198af 100644 --- a/src/main/resources/templates/layoutMain.html +++ b/src/main/resources/templates/layoutMain.html @@ -138,14 +138,51 @@
  • - + + + Start Task: getHomeTimeline + +
  • +
  • + + + Start Task: getUserTimeline + +
  • +
  • + + + Start Task: getMentions + +
  • +
  • + + + Start Task: getFavorites + +
  • +
  • + + + Start Task: getRetweetsOfMe + +
  • +
  • + + + Start Task: getLists + +
  • + +
  • + Delete All Entities
  • - + Count Entities diff --git a/src/main/resources/templates/userlist/all.html b/src/main/resources/templates/userlist/all.html new file mode 100644 index 00000000..9fd63221 --- /dev/null +++ b/src/main/resources/templates/userlist/all.html @@ -0,0 +1,147 @@ + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + +
    + + +
    +
    idTwitter:
    +
    + idTwitter +
    +
    +
    +
    name:
    +
    + name +
    +
    +
    +
    fullName:
    +
    + fullName +
    +
    +
    +
    uriPath:
    +
    + uriPath +
    +
    +
    +
    description:
    +
    + description +
    +
    +
    +
    slug:
    +
    + slug +
    +
    +
    +
    isPublic:
    +
    + + + + + + +
    +
    +
    +
    isFollowing:
    +
    + + + + + + +
    +
    +
    +
    memberCount:
    +
    + memberCount +
    +
    +
    +
    subscriberCount:
    +
    + subscriberCount +
    +
    +
    +
    listOwnersScreenName:
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
    + +
    +
    + +
    + +
    + + diff --git a/src/main/resources/templates/userlist/id.html b/src/main/resources/templates/userlist/id.html new file mode 100644 index 00000000..e69de29b diff --git a/src/test/java/org/woehlke/twitterwall/ScheduledTasksTest.java b/src/test/java/org/woehlke/twitterwall/ScheduledTasksTest.java index 4c2837dc..104606f8 100644 --- a/src/test/java/org/woehlke/twitterwall/ScheduledTasksTest.java +++ b/src/test/java/org/woehlke/twitterwall/ScheduledTasksTest.java @@ -13,6 +13,12 @@ public class ScheduledTasksTest { @Autowired private ScheduledTasks scheduledTasks; + @Test + public void createImprintUserAsync() throws Exception { + scheduledTasks.createImprintUserAsync(); + } + + @Test public void fetchTweetsFromTwitterSearch() throws Exception { scheduledTasks.fetchTweetsFromTwitterSearch(); } @@ -46,4 +52,34 @@ public void removeOldDataFromStorage() throws Exception { public void fetchFollower() throws Exception { scheduledTasks.fetchFollower(); } + + @Test + public void getHomeTimeline() throws Exception { + scheduledTasks.getHomeTimeline(); + } + + @Test + public void getUserTimeline() throws Exception { + scheduledTasks.getUserTimeline(); + } + + @Test + public void getMentions() throws Exception { + scheduledTasks.getMentions(); + } + + @Test + public void getFavorites() throws Exception { + scheduledTasks.getFavorites(); + } + + @Test + public void getRetweetsOfMe() throws Exception { + scheduledTasks.getRetweetsOfMe(); + } + + @Test + public void getLists() throws Exception { + scheduledTasks.getLists(); + } } diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/ApplicationControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/ApplicationControllerTest.java index b4cdd9eb..5525e20e 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/ApplicationControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/ApplicationControllerTest.java @@ -39,14 +39,14 @@ public class ApplicationControllerTest { @Autowired private PrepareDataTest prepareDataTest; - //@Commit + @Commit @Test public void controllerIsPresentTest(){ log.info("controllerIsPresentTest"); assertThat(controller).isNotNull(); } - //@Commit + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -56,7 +56,7 @@ public void setupTestData() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountTest() throws Exception { String msg ="domainCountTest: "; @@ -79,7 +79,7 @@ public void domainCountTest() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void managementPageTest() throws Exception { String msg ="managementPageTest: "; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesControllerTest.java index d08b534a..de5e4e79 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesControllerTest.java @@ -38,14 +38,14 @@ public class CountedEntitiesControllerTest { @Autowired private MockMvc mockMvc; - //@Commit + @Commit @Test public void controllerIsPresentTest(){ log.info("controllerIsPresentTest"); assertThat(controller).isNotNull(); } - //@Commit + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -59,7 +59,7 @@ public void setupTestData() throws Exception { @WithMockUser - //@Commit + @Commit @Test public void domainCountTweet2hashtag() throws Exception { String msg ="domainCountTweet2hashtag: "; @@ -85,7 +85,7 @@ public void domainCountTweet2hashtag() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountTweet2media() throws Exception { String msg ="domainCountTweet2media: "; @@ -111,7 +111,7 @@ public void domainCountTweet2media() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountTweet2mention() throws Exception { String msg ="domainCountTweet2mention: "; @@ -137,7 +137,7 @@ public void domainCountTweet2mention() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountTweet2tickersymbol() throws Exception { String msg ="domainCountTweet2tickersymbol: "; @@ -163,7 +163,7 @@ public void domainCountTweet2tickersymbol() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountTweet2url() throws Exception { String msg ="domainCountTweet2url: "; @@ -189,7 +189,7 @@ public void domainCountTweet2url() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountUserprofile2hashtag() throws Exception { String msg ="domainCountUserprofile2hashtag: "; @@ -215,7 +215,7 @@ public void domainCountUserprofile2hashtag() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountUserprofile2media() throws Exception { String msg ="domainCountUserprofile2media: "; @@ -241,7 +241,7 @@ public void domainCountUserprofile2media() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountUserprofile2mention() throws Exception { String msg ="domainCountUserprofile2mention: "; @@ -267,7 +267,7 @@ public void domainCountUserprofile2mention() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountUserprofile2Tickersymbol() throws Exception { String msg ="domainCountUserprofile2Tickersymbol: "; @@ -293,7 +293,7 @@ public void domainCountUserprofile2Tickersymbol() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void domainCountUserprofile2Url() throws Exception { String msg ="domainCountUserprofile2Url: "; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java index e4e51ba8..374d75e4 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java @@ -13,6 +13,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithAnonymousUser; import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; @@ -56,6 +57,7 @@ public void controllerIsPresentTest(){ assertThat(controller).isNotNull(); } + @Commit @Test public void setupTestData(){ String msg = "setupTestData: "; @@ -64,6 +66,7 @@ public void setupTestData(){ Assert.assertTrue(true); } + @Commit @WithMockUser @Test public void getAllTest() throws Exception { @@ -95,6 +98,7 @@ private HashTag findOneHashTag(){ } } + @Commit @WithAnonymousUser @Test public void findByIdTest() throws Exception { @@ -120,6 +124,7 @@ public void findByIdTest() throws Exception { Assert.assertTrue(true); } + @Commit @WithAnonymousUser @Test public void hashTagFromTweetsAndUsersTest() throws Exception { @@ -145,6 +150,7 @@ public void hashTagFromTweetsAndUsersTest() throws Exception { Assert.assertTrue(true); } + @Commit @WithAnonymousUser @Test public void hashTagsOverview() throws Exception { diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java index 62baace3..0f24a3bb 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java @@ -9,6 +9,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.test.context.support.WithAnonymousUser; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; @@ -52,6 +53,7 @@ public void controllerIsPresentTest(){ assertThat(controller).isNotNull(); } + @Commit @Test public void prepareDataTest() throws Exception { log.info("------------------------------------"); @@ -62,6 +64,7 @@ public void prepareDataTest() throws Exception { Assert.assertTrue(true); } + @Commit @WithAnonymousUser @Test public void imprintTest1() throws Exception { @@ -70,6 +73,7 @@ public void imprintTest1() throws Exception { Assert.assertTrue(true); } + @Commit @WithAnonymousUser @Test public void imprintTest2() throws Exception { diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/LoginControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/LoginControllerTest.java index bcb25fbf..788e080a 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/LoginControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/LoginControllerTest.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.woehlke.twitterwall.Application; @@ -36,6 +37,7 @@ public void controllerIsPresentTest(){ //TODO: #218 https://github.com/phasenraum2010/twitterwall2/issues/218 + @Commit @Ignore @Test public void login() throws Exception { diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java index 04bd62ac..cc26b790 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java @@ -38,14 +38,14 @@ public class MediaControllerTest { @Autowired private MockMvc mockMvc; - //@Commit + @Commit @Test public void controllerIsPresentTest(){ log.info("controllerIsPresentTest"); assertThat(controller).isNotNull(); } - //@Commit + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -55,7 +55,7 @@ public void setupTestData() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getAllTest() throws Exception { String msg ="getAllTest: "; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java index 5d5d33d0..7c1e7f4f 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java @@ -38,14 +38,14 @@ public class MentionControllerTest { @Autowired private MockMvc mockMvc; - //@Commit + @Commit @Test public void controllerIsPresentTest(){ log.info("controllerIsPresentTest"); assertThat(controller).isNotNull(); } - //@Commit + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -55,7 +55,7 @@ public void setupTestData() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getAllTest() throws Exception { String msg ="getAllTest: "; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java index d76a11b2..7d66f842 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java @@ -59,6 +59,7 @@ public void controllerIsPresentTest(){ assertThat(controller).isNotNull(); } + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -67,6 +68,7 @@ public void setupTestData() throws Exception { Assert.assertTrue(true); } + @Commit @WithMockUser @Test public void getAllTest()throws Exception { @@ -87,6 +89,7 @@ public void getAllTest()throws Exception { Assert.assertTrue(true); } + @Commit @WithMockUser @Test public void getTaskByIdTest() throws Exception { @@ -136,6 +139,7 @@ public void createTestDataTest() throws Exception { Assert.assertTrue(true); } + @Commit @WithMockUser @Test public void getOnListRenewTest() throws Exception { @@ -313,4 +317,136 @@ public void updateUserProfilesStartTaskTest() throws Exception { Assert.assertTrue(true); } + @WithMockUser + @Commit + @Test + public void getHomeTimelineTest() throws Exception { + String msg = "updateUserProfilesStartTaskTest: "; + MvcResult result = this.mockMvc.perform(get("/task/start/tweets/timeline/home")) + .andExpect(status().isOk()) + .andExpect(view().name( PATH+"/start/taskStarted")) + .andExpect(model().attributeExists("task")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getUserTimelineTest() throws Exception { + String msg = "updateUserProfilesStartTaskTest: "; + MvcResult result = this.mockMvc.perform(get("/task/start/tweets/timeline/user")) + .andExpect(status().isOk()) + .andExpect(view().name( PATH+"/start/taskStarted")) + .andExpect(model().attributeExists("task")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getMentionsTest() throws Exception { + String msg = "updateUserProfilesStartTaskTest: "; + MvcResult result = this.mockMvc.perform(get("/task/start/tweets/mentions")) + .andExpect(status().isOk()) + .andExpect(view().name( PATH+"/start/taskStarted")) + .andExpect(model().attributeExists("task")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getFavoritesTest() throws Exception { + String msg = "updateUserProfilesStartTaskTest: "; + MvcResult result = this.mockMvc.perform(get("/task/start/tweets/favorites")) + .andExpect(status().isOk()) + .andExpect(view().name( PATH+"/start/taskStarted")) + .andExpect(model().attributeExists("task")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getRetweetsOfMeTest() throws Exception { + String msg = "updateUserProfilesStartTaskTest: "; + MvcResult result = this.mockMvc.perform(get("/task/start/tweets/myretweets")) + .andExpect(status().isOk()) + .andExpect(view().name( PATH+"/start/taskStarted")) + .andExpect(model().attributeExists("task")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getListsTest() throws Exception { + String msg = "updateUserProfilesStartTaskTest: "; + MvcResult result = this.mockMvc.perform(get("/task/start/userlists")) + .andExpect(status().isOk()) + .andExpect(view().name( PATH+"/start/taskStarted")) + .andExpect(model().attributeExists("task")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + } diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryControllerTest.java index 9324174b..5e50c5af 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryControllerTest.java @@ -38,14 +38,14 @@ public class TaskHistoryControllerTest { @Autowired private MockMvc mockMvc; - //@Commit + @Commit @Test public void controllerIsPresentTest(){ log.info("controllerIsPresentTest"); assertThat(controller).isNotNull(); } - //@Commit + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -55,7 +55,7 @@ public void setupTestData() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getAllTest() throws Exception { String msg = "getAllTest: "; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java index 9e4c4c4a..f6eff05b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java @@ -9,6 +9,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; @@ -51,6 +52,7 @@ public void setupTestData() throws Exception { Assert.assertTrue(true); } + @Commit @WithMockUser @Test public void getAllTest() throws Exception { diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java index 4d6b9357..c5cf2dd9 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java @@ -52,14 +52,14 @@ public class TweetControllerTest { private PrepareDataTest prepareDataTest; - //@Commit + @Commit @Test public void controllerIsPresentTest(){ log.info("controllerIsPresentTest"); assertThat(controller).isNotNull(); } - //@Commit + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -69,7 +69,7 @@ public void setupTestData() throws Exception { } @WithAnonymousUser - //@Commit + @Commit @Test public void getLatestTweetsTest() throws Exception { String msg ="getLatestTweetsTest: "; @@ -102,7 +102,7 @@ private Tweet findOneTweet(){ } @WithMockUser - //@Commit + @Commit @Test public void getTweetById() throws Exception { String msg ="getLatestTweetsById: "; @@ -124,4 +124,119 @@ public void getTweetById() throws Exception { log.info(msg+"#######################################"); Assert.assertTrue(true); } + + @WithMockUser + @Commit + @Test + public void getHomeTimeline() throws Exception { + String msg ="getHomeTimeline: "; + + MvcResult result = this.mockMvc.perform(get("/tweet/timeline/home")) + .andExpect(status().isOk()) + .andExpect(view().name( "tweet/all")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getUserTimeline() throws Exception { + String msg ="getUserTimeline: "; + + MvcResult result = this.mockMvc.perform(get("/tweet/timeline/user")) + .andExpect(status().isOk()) + .andExpect(view().name( "tweet/all")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getMentions() throws Exception { + String msg ="getMentions: "; + + MvcResult result = this.mockMvc.perform(get("/tweet/mentions")) + .andExpect(status().isOk()) + .andExpect(view().name( "tweet/all")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getFavorites() throws Exception { + String msg ="getFavorites: "; + + MvcResult result = this.mockMvc.perform(get("/tweet/favorites")) + .andExpect(status().isOk()) + .andExpect(view().name( "tweet/all")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + @WithMockUser + @Commit + @Test + public void getRetweetsOfMe() throws Exception { + String msg ="getRetweetsOfMe: "; + + MvcResult result = this.mockMvc.perform(get("/tweet/retweets")) + .andExpect(status().isOk()) + .andExpect(view().name( "tweet/all")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } } diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java index e3765a23..8e844e9b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java @@ -39,14 +39,14 @@ public class UrlControllerTest { @Autowired private MockMvc mockMvc; - //@Commit + @Commit @Test public void controllerIsPresentTest(){ log.info("controllerIsPresentTest"); assertThat(controller).isNotNull(); } - //@Commit + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -56,7 +56,7 @@ public void setupTestData() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getAllTest() throws Exception { String msg ="getAllTest: "; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java index 273f2eb8..461e2208 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java @@ -63,14 +63,14 @@ public class UserControllerTest { @Autowired private PrepareDataTest prepareDataTest; - //@Commit + @Commit @Test public void controllerIsPresentTest(){ log.info("controllerIsPresentTest"); assertThat(controller).isNotNull(); } - //@Commit + @Commit @Test public void setupTestData() throws Exception { String msg = "setupTestData: "; @@ -80,7 +80,7 @@ public void setupTestData() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getAllTest() throws Exception { String msg = "getAllTest: "; @@ -112,7 +112,7 @@ private User findOneUser(){ } @WithMockUser - //@Commit + @Commit @Test public void getUserForIdTest() throws Exception { String msg = "getUserForIdTest: "; @@ -137,7 +137,7 @@ public void getUserForIdTest() throws Exception { } @WithAnonymousUser - //@Commit + @Commit @Test public void getUserForScreeNameTest() throws Exception { String msg = "getUserForScreeNameTest: "; @@ -161,7 +161,7 @@ public void getUserForScreeNameTest() throws Exception { } @WithAnonymousUser - //@Commit + @Commit @Test public void getTweetingUsersTest() throws Exception { String msg = "getTweetingUsersTest: "; @@ -183,7 +183,7 @@ public void getTweetingUsersTest() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getNotYetFriendUsersTest() throws Exception { String msg = "getNotYetFriendUsersTest: "; @@ -205,7 +205,7 @@ public void getNotYetFriendUsersTest() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getFriendUsersTest() throws Exception { String msg = "getFriendUsersTest: "; @@ -229,7 +229,7 @@ public void getFriendUsersTest() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getFollowerTest() throws Exception { String msg = "getFollowerTest: "; @@ -253,7 +253,7 @@ public void getFollowerTest() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getNotYetFollowerTest() throws Exception { String msg = "getNotYetFollowerTest: "; @@ -276,7 +276,7 @@ public void getNotYetFollowerTest() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getOnListTest() throws Exception { String msg = "getOnListTest: "; @@ -298,7 +298,7 @@ public void getOnListTest() throws Exception { } @WithMockUser - //@Commit + @Commit @Test public void getNotYetOnListTest() throws Exception { String msg = "getNotYetOnListTest: "; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/UserListControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserListControllerTest.java new file mode 100644 index 00000000..d502a0f9 --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserListControllerTest.java @@ -0,0 +1,81 @@ +package org.woehlke.twitterwall.frontend.controller; + + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.annotation.Commit; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.MvcResult; +import org.woehlke.twitterwall.Application; +import org.woehlke.twitterwall.oodm.service.UserListService; + +import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) +@AutoConfigureMockMvc +public class UserListControllerTest { + + private static final Logger log = LoggerFactory.getLogger(UserListControllerTest.class); + + @Autowired + private MockMvc mockMvc; + + @Autowired + private UserListController controller; + + @Autowired + private UserListService userListService; + + + @Commit + @Test + public void controllerIsPresentTest(){ + log.info("controllerIsPresentTest"); + assertThat(controller).isNotNull(); + } + + @WithMockUser + @Commit + @Test + public void getAllTest() throws Exception { + String msg = "getAllTest: "; + MvcResult result = this.mockMvc.perform(get("/userlist/all")) + .andExpect(status().isOk()) + .andExpect(view().name("userlist/all")) + .andExpect(model().attributeExists("userlists")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + log.info(msg+content); + log.info(msg+"#######################################"); + log.info(msg+"#######################################"); + Assert.assertTrue(true); + } + + //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252 + @WithMockUser + @Commit + @Test + public void getUserListForIdTest() throws Exception { + Assert.assertTrue(true); + } + + +} diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java b/src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java new file mode 100644 index 00000000..066dcf63 --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java @@ -0,0 +1,22 @@ +package org.woehlke.twitterwall.oodm.entities; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class UserListTest implements DomainObjectMinimalTest { + + private static final Logger log = LoggerFactory.getLogger(UserTest.class); + + @Test + @Override + public void getUniqueIdTest() throws Exception { + + } + + @Test + @Override + public void isValidTest() throws Exception { + + } +} diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/DomainObjectMinimalServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainObjectMinimalServiceTest.java new file mode 100644 index 00000000..76cfdaa3 --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainObjectMinimalServiceTest.java @@ -0,0 +1,16 @@ +package org.woehlke.twitterwall.oodm.service; + +public interface DomainObjectMinimalServiceTest { + + void findById() throws Exception; + + void getAll() throws Exception; + + void count() throws Exception; + + void findByUniqueId() throws Exception; + + void areDependenciesLoaded() throws Exception; + + void fetchTestData() throws Exception; +} diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithIdTwitterTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithIdTwitterTest.java new file mode 100644 index 00000000..705eb1d6 --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithIdTwitterTest.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.oodm.service; + +public interface DomainServiceWithIdTwitterTest { + + void findByIdTwitter() throws Exception; +} diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithScreenNameTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithScreenNameTest.java new file mode 100644 index 00000000..b01610eb --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithScreenNameTest.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.oodm.service; + +public interface DomainServiceWithScreenNameTest { + + void findByScreenName() throws Exception; +} diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithTaskTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithTaskTest.java new file mode 100644 index 00000000..8a5b416e --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithTaskTest.java @@ -0,0 +1,11 @@ +package org.woehlke.twitterwall.oodm.service; + + +public interface DomainServiceWithTaskTest { + + void store() throws Exception; + + void create() throws Exception; + + void update() throws Exception; +} diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithUrlTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithUrlTest.java new file mode 100644 index 00000000..7e41c577 --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithUrlTest.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.oodm.service; + +public interface DomainServiceWithUrlTest { + + void findByUrl() throws Exception; +} diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java index cd62e1ad..a83b72f6 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java @@ -10,6 +10,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.HashTag; @@ -17,7 +18,7 @@ @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class HashTagServiceTest { +public class HashTagServiceTest implements DomainObjectMinimalServiceTest,DomainServiceWithTaskTest { private static final Logger log = LoggerFactory.getLogger(HashTagServiceTest.class); @@ -27,13 +28,13 @@ public class HashTagServiceTest { @Autowired private TestdataProperties testdataProperties; - @Test public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(hashTagService); Assert.assertNotNull(testdataProperties); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -51,6 +52,7 @@ public void fetchTestData() throws Exception { } } + @Commit @Test public void findByText() throws Exception { String msg = "findByText: "; @@ -76,6 +78,7 @@ public void findByText() throws Exception { * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllTweet2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsTweets(Pageable) */ + @Commit @Test public void getHashTagsTweets() throws Exception { String msg = "getHashTagsTweets: "; @@ -97,6 +100,7 @@ public void getHashTagsTweets() throws Exception { * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllUser2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsUsers(Pageable) */ + @Commit @Test public void getHashTagsUsers() throws Exception { String msg = "getHashTagsUsers: "; @@ -108,4 +112,53 @@ public void getHashTagsUsers() throws Exception { log.info(msg+" hashTagsUsers: "+counted.getText()); } } + + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + + @Commit + @Test + @Override + public void store() throws Exception { + + } + + @Commit + @Test + @Override + public void create() throws Exception { + + } + + @Commit + @Test + @Override + public void update() throws Exception { + + } } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java index e28ba69b..4c142c49 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java @@ -10,13 +10,14 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.Media; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class MediaServiceTest { +public class MediaServiceTest implements DomainObjectMinimalServiceTest,DomainServiceWithTaskTest,DomainServiceWithIdTwitterTest,DomainServiceWithUrlTest { private static final Logger log = LoggerFactory.getLogger(MediaServiceTest.class); @@ -32,6 +33,7 @@ public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(testdataProperties); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -49,6 +51,7 @@ public void fetchTestData() throws Exception { } } + @Commit @Test public void findByIdTwitter() throws Exception { String msg = "findByIdTwitter: "; @@ -68,6 +71,7 @@ public void findByIdTwitter() throws Exception { } } + @Commit @Test public void findByUrl() throws Exception { String msg = "findByUrl: "; @@ -86,4 +90,53 @@ public void findByUrl() throws Exception { log.debug(msg+" found: myPage.getTotalElements() == 0"); } } + + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + + @Commit + @Test + @Override + public void store() throws Exception { + + } + + @Commit + @Test + @Override + public void create() throws Exception { + + } + + @Commit + @Test + @Override + public void update() throws Exception { + + } } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java index dd9beb50..04f0be6a 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java @@ -11,6 +11,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.Mention; @@ -21,7 +22,7 @@ @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class MentionServiceTest { +public class MentionServiceTest implements DomainObjectMinimalServiceTest,DomainServiceWithTaskTest,DomainServiceWithScreenNameTest,DomainServiceWithIdTwitterTest { private static final Logger log = LoggerFactory.getLogger(MentionServiceTest.class); @@ -44,6 +45,7 @@ public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(countedEntitiesService); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -62,6 +64,7 @@ public void fetchTestData() throws Exception { } } + @Commit @Test public void createProxyMention() throws Exception { String msg = "createProxyMention: "; @@ -76,6 +79,7 @@ public void createProxyMention() throws Exception { Assert.assertTrue(createdMention.isProxy()); } + @Commit @Test public void getAllWithoutPersistentUser() throws Exception { String msg = "getAllWithoutUser: "; @@ -90,6 +94,7 @@ public void getAllWithoutPersistentUser() throws Exception { } } + @Commit @Test public void findByIdTwitter() throws Exception { String msg = "findByIdTwitter: "; @@ -108,6 +113,7 @@ public void findByIdTwitter() throws Exception { } } + @Commit @Test public void findByScreenName() throws Exception { String msg = "findByScreenName: "; @@ -125,4 +131,54 @@ public void findByScreenName() throws Exception { Assert.assertEquals(msg,expectedScreenName,foundScreenName); } } + + + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + + @Commit + @Test + @Override + public void store() throws Exception { + + } + + @Commit + @Test + @Override + public void create() throws Exception { + + } + + @Commit + @Test + @Override + public void update() throws Exception { + + } } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java index 871f21ac..34ca723b 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java @@ -10,13 +10,14 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.TaskHistory; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class TaskHistoryServiceTest { +public class TaskHistoryServiceTest implements DomainObjectMinimalServiceTest { private static final Logger log = LoggerFactory.getLogger(TaskHistoryServiceTest.class); @@ -32,6 +33,7 @@ public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(testdataProperties); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -49,7 +51,37 @@ public void fetchTestData() throws Exception { } } + @Commit @Test public void store() throws Exception {} + + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java index 01037c9f..2e585852 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java @@ -10,6 +10,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.Task; @@ -20,7 +21,8 @@ @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class TaskServiceTest { +public class TaskServiceTest implements DomainObjectMinimalServiceTest { + private static final Logger log = LoggerFactory.getLogger(TaskServiceTest.class); @@ -39,6 +41,7 @@ public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(testdataProperties); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -56,6 +59,7 @@ public void fetchTestData() throws Exception { } } + @Commit @Test public void create() throws Exception { String msg = "TaskServiceTest.create"; @@ -66,6 +70,7 @@ public void create() throws Exception { Assert.assertEquals(createdTask.getTaskStatus(),TaskStatus.READY); } + @Commit @Test public void done() throws Exception { String msg = "TaskServiceTest.done"; @@ -80,6 +85,7 @@ public void done() throws Exception { Assert.assertEquals(TaskStatus.FINISHED,createdTask.getTaskStatus()); } + @Commit @Test public void error() throws Exception { String msg = "TaskServiceTest.error"; @@ -94,6 +100,7 @@ public void error() throws Exception { Assert.assertEquals(TaskStatus.ERROR,createdTask.getTaskStatus()); } + @Commit @Test public void warn() throws Exception { String msg = "TaskServiceTest.error"; @@ -108,6 +115,7 @@ public void warn() throws Exception { Assert.assertEquals(TaskStatus.WARN,createdTask.getTaskStatus()); } + @Commit @Test public void event() throws Exception { String msg = "TaskServiceTest.error"; @@ -123,6 +131,7 @@ public void event() throws Exception { Assert.assertEquals(oldStatus,createdTask.getTaskStatus()); } + @Commit @Test public void start() throws Exception { String msg = "TaskServiceTest.error"; @@ -137,6 +146,7 @@ public void start() throws Exception { Assert.assertEquals(TaskStatus.RUNNING,createdTask.getTaskStatus()); } + @Commit @Test public void finalError() throws Exception { String msg = "TaskServiceTest.error"; @@ -151,4 +161,32 @@ public void finalError() throws Exception { Assert.assertEquals(TaskStatus.FINAL_ERROR,createdTask.getTaskStatus()); } + + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java index 5f85bc15..c287b45d 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java @@ -11,13 +11,14 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.TickerSymbol; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class TickerSymbolServiceTest { +public class TickerSymbolServiceTest implements DomainObjectMinimalServiceTest,DomainServiceWithTaskTest,DomainServiceWithUrlTest { private static final Logger log = LoggerFactory.getLogger(TaskServiceTest.class); @@ -33,6 +34,7 @@ public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(testdataProperties); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -51,6 +53,7 @@ public void fetchTestData() throws Exception { } } + @Commit @Test public void findByUrl() throws Exception { String msg = "findByUrl: "; @@ -71,4 +74,52 @@ public void findByUrl() throws Exception { } } + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + + @Commit + @Test + @Override + public void store() throws Exception { + + } + + @Commit + @Test + @Override + public void create() throws Exception { + + } + + @Commit + @Test + @Override + public void update() throws Exception { + + } } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java index f5adc3ef..ddf4799c 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java @@ -10,6 +10,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.*; @@ -19,7 +20,7 @@ @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class TweetServiceTest { +public class TweetServiceTest implements DomainObjectMinimalServiceTest,DomainServiceWithTaskTest ,DomainServiceWithIdTwitterTest{ private static final Logger log = LoggerFactory.getLogger(TweetServiceTest.class); @@ -53,6 +54,7 @@ public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(testdataProperties); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -73,6 +75,7 @@ public void fetchTestData() throws Exception { log.info(msg+"FINISHED TEST"); } + @Commit @Test public void findByIdTwitter() throws Exception { String msg = "findByIdTwitter: "; @@ -95,6 +98,7 @@ public void findByIdTwitter() throws Exception { } } + @Commit @Test public void findTweetsForHashTag() throws Exception { String msg = "findTweetsForHashTag: "; @@ -113,6 +117,7 @@ public void findTweetsForHashTag() throws Exception { log.info(msg); } + @Commit @Test public void findTweetsForUser() throws Exception { String msg = "findTweetsForUser: "; @@ -139,6 +144,7 @@ public void findTweetsForUser() throws Exception { log.info(msg+" FINISHED TEST. Tested Users "+loopUser+" and Tweets "+loopTweet); } + @Commit @Test public void findAllTweet2HashTag() throws Exception { String msg = "findAllTweet2HashTag: "; @@ -164,6 +170,7 @@ public void findAllTweet2HashTag() throws Exception { } } + @Commit @Test public void findAllTweet2Media() throws Exception { String msg = "findAllTweet2Media: "; @@ -189,6 +196,7 @@ public void findAllTweet2Media() throws Exception { } } + @Commit @Test public void findAllTweet2Mention() throws Exception { String msg = "findAllTweet2Mention: "; @@ -216,6 +224,7 @@ public void findAllTweet2Mention() throws Exception { } } + @Commit @Test public void findAllTweet2Url() throws Exception { String msg = "findAllTweet2Url: "; @@ -241,6 +250,7 @@ public void findAllTweet2Url() throws Exception { } } + @Commit @Test public void findAllTweet2TickerSymbol() throws Exception { String msg = "findAllTweet2TickerSymbol: "; @@ -266,4 +276,52 @@ public void findAllTweet2TickerSymbol() throws Exception { } } + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + + @Commit + @Test + @Override + public void store() throws Exception { + + } + + @Commit + @Test + @Override + public void create() throws Exception { + + } + + @Commit + @Test + @Override + public void update() throws Exception { + + } } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java index 63fe80fc..5e7ff6ca 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java @@ -10,13 +10,14 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.Url; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class UrlServiceTest { +public class UrlServiceTest implements DomainObjectMinimalServiceTest,DomainServiceWithTaskTest,DomainServiceWithUrlTest { private static final Logger log = LoggerFactory.getLogger(UrlServiceTest.class); @@ -32,6 +33,7 @@ public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(testdataProperties); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -49,6 +51,7 @@ public void fetchTestData() throws Exception { } } + @Commit @Test public void findByUrl() throws Exception { String msg = "findByUrl: "; @@ -68,4 +71,52 @@ public void findByUrl() throws Exception { } } + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + + @Commit + @Test + @Override + public void store() throws Exception { + + } + + @Commit + @Test + @Override + public void create() throws Exception { + + } + + @Commit + @Test + @Override + public void update() throws Exception { + + } } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/UserListServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/UserListServiceTest.java new file mode 100644 index 00000000..71278cc8 --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UserListServiceTest.java @@ -0,0 +1,84 @@ +package org.woehlke.twitterwall.oodm.service; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Commit; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) +public class UserListServiceTest implements DomainObjectMinimalServiceTest,DomainServiceWithTaskTest { + + private static final Logger log = LoggerFactory.getLogger(UserListServiceTest.class); + + @Autowired + private UserListService userListService; + + @Test + public void areDependenciesLoaded() throws Exception { + String msg = "areDependenciesLoaded: "; + Assert.assertNotNull(userListService); + log.debug(msg+" YES "); + } + + @Commit + @Test + @Override + public void fetchTestData() throws Exception { + + } + + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + + @Commit + @Test + @Override + public void store() throws Exception { + + } + + @Commit + @Test + @Override + public void create() throws Exception { + + } + + @Commit + @Test + @Override + public void update() throws Exception { + + } +} diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java index 050d5fb4..8b9b162a 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java @@ -11,6 +11,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.conf.properties.TwitterProperties; @@ -23,7 +24,7 @@ @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -public class UserServiceTest { +public class UserServiceTest implements DomainObjectMinimalServiceTest,DomainServiceWithTaskTest { private static final Logger log = LoggerFactory.getLogger(UserServiceTest.class); @@ -53,11 +54,14 @@ public class UserServiceTest { @Test public void areDependenciesLoaded() throws Exception { + String msg = "areDependenciesLoaded: "; Assert.assertNotNull(userService); Assert.assertNotNull(testdataProperties); Assert.assertNotNull(twitterProperties); + log.debug(msg+" YES "); } + @Commit @Test public void fetchTestData() throws Exception { String msg = "fetchTestData: "; @@ -75,6 +79,7 @@ public void fetchTestData() throws Exception { } } + @Commit @Test public void getAllDescriptionsTest() { String msg = "getAllDescriptionsTest"; @@ -97,6 +102,7 @@ public void getAllDescriptionsTest() { log.info(msg+"------------------------------------------------"); } + @Commit @Test public void getTweetingUsers() throws Exception { String msg = "getTweetingUsers: "; @@ -111,6 +117,7 @@ public void getTweetingUsers() throws Exception { log.debug(msg+" foundUser: "+foundUser.getTotalElements()); } + @Commit @Test public void getAllDescriptions() throws Exception { String msg = "getTweetingUsers: "; @@ -125,6 +132,7 @@ public void getAllDescriptions() throws Exception { log.debug(msg+" foundUser: "+foundDescriptions.getTotalElements()); } + @Commit @Test public void getUsersForHashTag() throws Exception { String msg = "getTweetingUsers: "; @@ -142,6 +150,7 @@ public void getUsersForHashTag() throws Exception { } } + @Commit @Test public void getFriends() throws Exception { String msg = "getFriends: "; @@ -156,6 +165,7 @@ public void getFriends() throws Exception { log.debug(msg+" foundUser: "+foundUser.getTotalElements()); } + @Commit @Test public void getNotYetFriendUsers() throws Exception { String msg = "getNotYetFriendUsers: "; @@ -170,6 +180,7 @@ public void getNotYetFriendUsers() throws Exception { log.debug(msg+" foundUser: "+foundUser.getTotalElements()); } + @Commit @Test public void getFollower() throws Exception { String msg = "getFollower: "; @@ -184,6 +195,7 @@ public void getFollower() throws Exception { log.debug(msg+" foundUser: "+foundUser.getTotalElements()); } + @Commit @Test public void getNotYetFollower() throws Exception { String msg = "getNotYetFollower: "; @@ -198,6 +210,7 @@ public void getNotYetFollower() throws Exception { log.debug(msg+" foundUser: "+foundUser.getTotalElements()); } + @Commit @Test public void getOnList() throws Exception { String msg = "getOnList: "; @@ -212,6 +225,7 @@ public void getOnList() throws Exception { log.debug(msg+" foundUser: "+foundUser.getTotalElements()); } + @Commit @Test public void getNotYetOnList() throws Exception { String msg = "getNotYetOnList: "; @@ -227,6 +241,7 @@ public void getNotYetOnList() throws Exception { log.debug(msg+" foundUser: "+foundUser.getTotalElements()); } + @Commit @Test public void findAllUser2HashTag() throws Exception { String msg = "findAllUser2HashTag: "; @@ -252,6 +267,7 @@ public void findAllUser2HashTag() throws Exception { } } + @Commit @Test public void findAllUser2Media() throws Exception { String msg = "findAllUser2Media: "; @@ -277,6 +293,7 @@ public void findAllUser2Media() throws Exception { } } + @Commit @Test public void findAllUser2Mentiong() throws Exception { String msg = "findAllUser2Mentiong: "; @@ -309,6 +326,7 @@ public void findAllUser2Mentiong() throws Exception { } } + @Commit @Test public void findAllUser2Url() throws Exception { String msg = "findAllUser2Url: "; @@ -335,6 +353,7 @@ public void findAllUser2Url() throws Exception { } } + @Commit @Test public void findAllUser2TickerSymbol() throws Exception { String msg = "findAllUser2TickerSymbol: "; @@ -360,6 +379,7 @@ public void findAllUser2TickerSymbol() throws Exception { } } + @Commit @Test public void findByidTwitterAndScreenNameUnique() throws Exception { String msg = "findByidTwitterAndScreenNameUnique: "; @@ -376,4 +396,53 @@ public void findByidTwitterAndScreenNameUnique() throws Exception { Assert.assertEquals(msg,screenNameUnique,foundUser.getScreenNameUnique()); } } + + @Commit + @Test + @Override + public void findById() throws Exception { + + } + + @Commit + @Test + @Override + public void getAll() throws Exception { + + } + + @Commit + @Test + @Override + public void count() throws Exception { + + } + + @Commit + @Test + @Override + public void findByUniqueId() throws Exception { + + } + + @Commit + @Test + @Override + public void store() throws Exception { + + } + + @Commit + @Test + @Override + public void create() throws Exception { + + } + + @Commit + @Test + @Override + public void update() throws Exception { + + } } diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java index 0ba9c149..7decaf2e 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java @@ -20,5 +20,17 @@ public interface AsyncStartTaskTest { void fetchFriendsTest() throws Exception; - void removeOldDataFromStorageTest()throws Exception; + void removeOldDataFromStorageTest() throws Exception; + + void getHomeTimeline() throws Exception; + + void getUserTimeline() throws Exception; + + void getMentions() throws Exception; + + void getFavorites() throws Exception; + + void getRetweetsOfMe() throws Exception; + + void getLists() throws Exception; } diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java index 3381f5ba..79e508bd 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java @@ -168,4 +168,112 @@ public void removeOldDataFromStorageTest() throws Exception { Assert.assertTrue(ok); log.info(msg+"FINISHED TEST"); } + + @Test + @Override + public void getHomeTimeline() throws Exception { + String msg = "getHomeTimeline: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqAsyncStartTask.getHomeTimeline(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_HOME_TIMELINE,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getUserTimeline() throws Exception { + String msg = "getUserTimeline: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqAsyncStartTask.getUserTimeline(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_USER_TIMELINE,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getMentions() throws Exception { + String msg = "getUserTimeline: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqAsyncStartTask.getMentions(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_MENTIONS,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getFavorites() throws Exception { + String msg = "getFavorites: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqAsyncStartTask.getFavorites(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_FAVORITES,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getRetweetsOfMe() throws Exception { + String msg = "getRetweetsOfMe: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqAsyncStartTask.getRetweetsOfMe(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_RETWEETS_OF_ME,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getLists() throws Exception { + String msg = "getLists: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqAsyncStartTask.getLists(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_LISTS,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } } diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java index 6cb6b2ec..2c00c561 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java @@ -11,4 +11,5 @@ public interface StartTaskTest extends AsyncStartTaskTest { void createTestDataUsersTest() throws Exception; void createTestDataTweetsTest() throws Exception; + } diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java index df1987a0..feb5ccac 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java @@ -138,6 +138,7 @@ public void fetchFollowerTest() throws Exception { log.info(msg+"FINISHED TEST"); } + @Test @Override public void fetchFriendsTest() throws Exception { String msg = "fetchFollowerTest: "; @@ -176,6 +177,114 @@ public void removeOldDataFromStorageTest() throws Exception { log.info(msg+"FINISHED TEST"); } + @Test + @Override + public void getHomeTimeline() throws Exception { + String msg = "getHomeTimeline: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqStartTask.getHomeTimeline(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_HOME_TIMELINE,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getUserTimeline() throws Exception { + String msg = "getUserTimeline: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqStartTask.getUserTimeline(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_USER_TIMELINE,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getMentions() throws Exception { + String msg = "getMentions: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqStartTask.getMentions(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_MENTIONS,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getFavorites() throws Exception { + String msg = "getFavorites: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqStartTask.getFavorites(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_FAVORITES,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getRetweetsOfMe() throws Exception { + String msg = "getRetweetsOfMe: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqStartTask.getRetweetsOfMe(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_RETWEETS_OF_ME,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + + @Test + @Override + public void getLists() throws Exception { + String msg = "getLists: "; + log.info(msg+"START TEST"); + CountedEntities beforeTest = countedEntitiesService.countAll(); + Task task = this.mqStartTask.getLists(); + log.info(msg+"created Task = "+task.getUniqueId()); + Assert.assertNotNull(task); + Assert.assertNotNull(task.getUniqueId()); + Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskType.FETCH_LISTS,task.getTaskType()); + CountedEntities afterTest = countedEntitiesService.countAll(); + boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); + Assert.assertTrue(ok); + log.info(msg+"FINISHED TEST"); + } + @Test public void createImprintUserTest() throws Exception { String msg = "createImprintUserTest: "; diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java index ad83c9fe..e816263f 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java @@ -15,8 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.Url; @@ -37,7 +35,6 @@ */ @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -@Transactional(propagation= Propagation.REQUIRES_NEW,readOnly=false) public class TwitterUrlServiceTest { private static final Logger log = LoggerFactory.getLogger(TwitterUrlServiceTest.class); diff --git a/src/test/resources/application-test.yml b/src/test/resources/application-test.yml index 07442754..2f48e6b0 100644 --- a/src/test/resources/application-test.yml +++ b/src/test/resources/application-test.yml @@ -6,8 +6,6 @@ endpoints: enabled: true logging: file: test/twitterwall.log.txt -#hibernate: - #dialect: org.hibernate.dialect.H2Dialect management: security: enabled: true @@ -15,17 +13,7 @@ spring: application: admin: enabled: true - datasource: - #driverClassName: org.h2.Driver - #platform: H2 - #url: jdbc:h2:mem:test - url: ${DATABASE_URL_TEST} jpa: - #hibernate: - # ddl-auto: create-drop - #properties: - # hibernate: - # dialect: org.hibernate.dialect.H2Dialect show-sql: true twitterwall: backend: @@ -37,10 +25,16 @@ twitterwall: allowUpdateTweets: true allowUpdateUserProfiles: true allowUpdateUserProfilesFromMention: true - fetchUserListAllow: true - fetchUserListName: ${TWITTERWALL_SCHEDULER_USER_LIST_NAME} + fetchUsersFromDefinedUserListAllow: true + fetchUsersFromDefinedUserListName: ${TWITTERWALL_SCHEDULER_USER_LIST_NAME} herokuDbRowsLimit: false removeOldDataFromStorageAllow: true fetchFollowerAllow: true fetchFriendsAllow: true + allowGetHomeTimeline: true + allowGetUserTimeline: true + allowGetMentions: true + allowGetFavorites: true + allowGetRetweetsOfMe: true + allowGetLists: true skipFortesting: true \ No newline at end of file diff --git a/test/db-count.sql b/test/db-count.sql index 8f206186..c7e96c7d 100644 --- a/test/db-count.sql +++ b/test/db-count.sql @@ -15,5 +15,6 @@ select count(*) from media; select count(*) from hashtag; select count(*) from tweet; select count(*) from userprofile; +select count(*) from userlist; select count(*) from task_history; select count(*) from task; diff --git a/test/db-drop-tables.sql b/test/db-drop-tables.sql index 62d486a2..99ceebac 100644 --- a/test/db-drop-tables.sql +++ b/test/db-drop-tables.sql @@ -15,6 +15,7 @@ drop table media; drop table hashtag; drop table tweet; drop table userprofile; +drop table userlist; drop table task_history; drop table task; drop sequence hibernate_sequence; diff --git a/test/db-reset.sql b/test/db-reset.sql index 38e08968..27c15415 100644 --- a/test/db-reset.sql +++ b/test/db-reset.sql @@ -15,6 +15,7 @@ delete from media; delete from hashtag; delete from tweet; delete from userprofile; +delete from userlist; delete from task_history; delete from task; diff --git a/twitterwall2.iml b/twitterwall2.iml index 2feb0754..5aee46d4 100644 --- a/twitterwall2.iml +++ b/twitterwall2.iml @@ -2,24 +2,7 @@ - - - file://$MODULE_DIR$/src/main/resources/integration.xml - file://$MODULE_DIR$/src/main/java/org/woehlke/twitterwall/Application.java - file://$MODULE_DIR$/src/main/java/org/woehlke/twitterwall/conf/DataSourceConfig.java - file://$MODULE_DIR$/src/main/java/org/woehlke/twitterwall/conf/WebMvcConfig.java - file://$MODULE_DIR$/src/main/java/org/woehlke/twitterwall/conf/WebSecurityConfig.java - - - - - - - - - - - + @@ -34,17 +17,8 @@ - - - - - - - - - @@ -110,12 +84,9 @@ - - - - - - + + + @@ -157,7 +128,7 @@ - +