From 8060c0cb77015d7bb3e5ef9a28a7dbd5457f85a7 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Thu, 17 Aug 2017 19:10:02 +0200 Subject: [PATCH 01/45] fixed #259 --- .../woehlke/twitterwall/ScheduledTasks.java | 2 + .../frontend/controller/TaskController.java | 13 +- .../oodm/entities/parts/TaskBasedCaching.java | 152 +++++++++++------- .../oodm/entities/parts/TaskInfo.java | 142 +++++++++------- .../oodm/entities/parts/TaskStatus.java | 1 + .../oodm/entities/parts/TaskType.java | 5 +- .../scheduled/mq/endpoint/AsyncStartTask.java | 4 + .../mq/endpoint/impl/AsyncStartTaskImpl.java | 11 ++ .../mq/endpoint/impl/StartTaskImpl.java | 11 ++ .../services/impl/UserPersistorImpl.java | 2 +- .../splitter/FetchUserlistOwnersSplitter.java | 6 + .../impl/CreateTestDataUsersSplitterImpl.java | 1 + .../impl/FetchUserlistOwnersSplitterImpl.java | 109 +++++++++++++ .../UpdateUsersFromMentionsSplitterImpl.java | 1 + .../impl/UpdateUsersSplitterImpl.java | 1 + src/main/resources/integration.xml | 63 ++++++++ .../templates/task/start/tasksStarted.html | 48 ++++++ twitterwall2.iml | 1 + 18 files changed, 451 insertions(+), 122 deletions(-) create mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java create mode 100644 src/main/resources/templates/task/start/tasksStarted.html diff --git a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java index 4e508b06..4b72dcf0 100644 --- a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java +++ b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java @@ -93,6 +93,8 @@ public void getLists() { if((schedulerProperties.getAllowGetLists()) && (!schedulerProperties.getSkipFortesting())) { Task task = asyncStartTask.getLists(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); + task = asyncStartTask.fetchUserlistOwners(); + log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } 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 3034a692..f3a99c68 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -24,6 +24,9 @@ import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask; +import java.util.ArrayList; +import java.util.List; + /** * Created by tw on 11.07.17. @@ -259,9 +262,13 @@ public String getLists(Model model) { 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"; + List listOfTasks = new ArrayList<>(); + Task task1 = mqAsyncStartTask.getLists(); + listOfTasks.add(task1); + Task task2 = mqAsyncStartTask.fetchUserlistOwners(); + listOfTasks.add(task2); + model.addAttribute("listOfTasks",listOfTasks); + return PATH+"/start/tasksStarted"; } 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 1ca0b9c0..01c77f76 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 @@ -67,6 +67,12 @@ public class TaskBasedCaching implements Serializable { @Column(name=COLUMN_PREFIX+"fetch_lists") private Date getLists; + @Column(name=COLUMN_PREFIX+"fetch_userlist_owners") + private Date fetchUserlistOwners; + + @Column(name=COLUMN_PREFIX+"start_garbage_collection") + private Date startGarbageCollection; + @Transient public Boolean isCached(TaskType taskType, long timeToLive){ Date lastApiCall = null; @@ -125,6 +131,12 @@ public Boolean isCached(TaskType taskType, long timeToLive){ case FETCH_LISTS: lastApiCall = getLists; break; + case FETCH_USERLIST_OWNERS: + lastApiCall = fetchUserlistOwners; + break; + case GARBAGE_COLLECTION: + lastApiCall = startGarbageCollection; + break; default: break; } if(lastApiCall == null){ @@ -201,13 +213,19 @@ public void store(TaskType taskType){ break; case FETCH_LISTS: getLists = lastApiCall; + case FETCH_USERLIST_OWNERS: + fetchUserlistOwners = lastApiCall; + break; + case GARBAGE_COLLECTION: + startGarbageCollection = lastApiCall; + break; 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, Date fetchFriends, Date getHomeTimeline, Date getUserTimeline, Date getMentions, Date getFavorites, Date getRetweetsOfMe, Date getLists) { + 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,Date fetchUserlistOwners,Date startGarbageCollection) { this.fetchTweetsFromSearch = fetchTweetsFromSearch; this.updateTweets = updateTweets; this.updateUsers = updateUsers; @@ -226,6 +244,8 @@ public TaskBasedCaching(Date fetchTweetsFromSearch, Date updateTweets, Date upda this.getFavorites = getFavorites; this.getRetweetsOfMe = getRetweetsOfMe; this.getLists = getLists; + this.fetchUserlistOwners = fetchUserlistOwners; + this.startGarbageCollection = startGarbageCollection; } public TaskBasedCaching() { @@ -246,6 +266,8 @@ public TaskBasedCaching() { this.getFavorites = null; this.getRetweetsOfMe = null; this.getLists = null; + this.fetchUserlistOwners = null; + this.startGarbageCollection = null; } public Date getFetchTweetsFromSearch() { @@ -320,6 +342,14 @@ public Date getGetLists() { return getLists; } + public Date getFetchUserlistOwners() { + return fetchUserlistOwners; + } + + public Date getStartGarbageCollection() { + return startGarbageCollection; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -327,88 +357,90 @@ public boolean equals(Object o) { TaskBasedCaching that = (TaskBasedCaching) o; - if (getFetchTweetsFromSearch() != null ? !getFetchTweetsFromSearch().equals(that.getFetchTweetsFromSearch()) : that.getFetchTweetsFromSearch() != null) - return false; - if (getUpdateTweets() != null ? !getUpdateTweets().equals(that.getUpdateTweets()) : that.getUpdateTweets() != null) - return false; - if (getUpdateUsers() != null ? !getUpdateUsers().equals(that.getUpdateUsers()) : that.getUpdateUsers() != null) - return false; - if (getUpdateUsersFromMentions() != null ? !getUpdateUsersFromMentions().equals(that.getUpdateUsersFromMentions()) : that.getUpdateUsersFromMentions() != null) - return false; - if (getFetchUsersFromList() != null ? !getFetchUsersFromList().equals(that.getFetchUsersFromList()) : that.getFetchUsersFromList() != null) + if (fetchTweetsFromSearch != null ? !fetchTweetsFromSearch.equals(that.fetchTweetsFromSearch) : that.fetchTweetsFromSearch != null) return false; - if (getControllerGetTestdataTweets() != null ? !getControllerGetTestdataTweets().equals(that.getControllerGetTestdataTweets()) : that.getControllerGetTestdataTweets() != null) + if (updateTweets != null ? !updateTweets.equals(that.updateTweets) : that.updateTweets != null) return false; + if (updateUsers != null ? !updateUsers.equals(that.updateUsers) : that.updateUsers != null) return false; + if (updateUsersFromMentions != null ? !updateUsersFromMentions.equals(that.updateUsersFromMentions) : that.updateUsersFromMentions != null) return false; - if (getControllerGetTestdataUser() != null ? !getControllerGetTestdataUser().equals(that.getControllerGetTestdataUser()) : that.getControllerGetTestdataUser() != null) + if (fetchUsersFromList != null ? !fetchUsersFromList.equals(that.fetchUsersFromList) : that.fetchUsersFromList != null) return false; - if (getControllerAddUserForScreenName() != null ? !getControllerAddUserForScreenName().equals(that.getControllerAddUserForScreenName()) : that.getControllerAddUserForScreenName() != null) + if (controllerGetTestdataTweets != null ? !controllerGetTestdataTweets.equals(that.controllerGetTestdataTweets) : that.controllerGetTestdataTweets != null) return false; - if (getControllerCreateImprintUser() != null ? !getControllerCreateImprintUser().equals(that.getControllerCreateImprintUser()) : that.getControllerCreateImprintUser() != null) + if (controllerGetTestdataUser != null ? !controllerGetTestdataUser.equals(that.controllerGetTestdataUser) : that.controllerGetTestdataUser != null) return false; - if (getRemoveOldDataFromStorage() != null ? !getRemoveOldDataFromStorage().equals(that.getRemoveOldDataFromStorage()) : that.getRemoveOldDataFromStorage() != null) + if (controllerAddUserForScreenName != null ? !controllerAddUserForScreenName.equals(that.controllerAddUserForScreenName) : that.controllerAddUserForScreenName != null) return false; - if (getFetchFollower() != null ? !getFetchFollower().equals(that.getFetchFollower()) : that.getFetchFollower() != null) + if (controllerCreateImprintUser != null ? !controllerCreateImprintUser.equals(that.controllerCreateImprintUser) : that.controllerCreateImprintUser != null) return false; - if (getFetchFriends() != null ? !getFetchFriends().equals(that.getFetchFriends()) : that.getFetchFriends() != null) + if (removeOldDataFromStorage != null ? !removeOldDataFromStorage.equals(that.removeOldDataFromStorage) : that.removeOldDataFromStorage != null) return false; - if (getGetHomeTimeline() != null ? !getGetHomeTimeline().equals(that.getGetHomeTimeline()) : that.getGetHomeTimeline() != null) + if (fetchFollower != null ? !fetchFollower.equals(that.fetchFollower) : that.fetchFollower != null) return false; - if (getGetUserTimeline() != null ? !getGetUserTimeline().equals(that.getGetUserTimeline()) : that.getGetUserTimeline() != null) + if (fetchFriends != null ? !fetchFriends.equals(that.fetchFriends) : that.fetchFriends != null) return false; + if (getHomeTimeline != null ? !getHomeTimeline.equals(that.getHomeTimeline) : that.getHomeTimeline != null) return false; - if (getGetMentions() != null ? !getGetMentions().equals(that.getGetMentions()) : that.getGetMentions() != null) + if (getUserTimeline != null ? !getUserTimeline.equals(that.getUserTimeline) : that.getUserTimeline != null) return false; - if (getGetFavorites() != null ? !getGetFavorites().equals(that.getGetFavorites()) : that.getGetFavorites() != null) + if (getMentions != null ? !getMentions.equals(that.getMentions) : that.getMentions != null) return false; + if (getFavorites != null ? !getFavorites.equals(that.getFavorites) : that.getFavorites != null) return false; + if (getRetweetsOfMe != null ? !getRetweetsOfMe.equals(that.getRetweetsOfMe) : that.getRetweetsOfMe != null) return false; - if (getGetRetweetsOfMe() != null ? !getGetRetweetsOfMe().equals(that.getGetRetweetsOfMe()) : that.getGetRetweetsOfMe() != null) + if (getLists != null ? !getLists.equals(that.getLists) : that.getLists != null) return false; + if (fetchUserlistOwners != null ? !fetchUserlistOwners.equals(that.fetchUserlistOwners) : that.fetchUserlistOwners != null) return false; - return getGetLists() != null ? getGetLists().equals(that.getGetLists()) : that.getGetLists() == null; + return startGarbageCollection != null ? startGarbageCollection.equals(that.startGarbageCollection) : that.startGarbageCollection == null; } @Override public int hashCode() { - 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); + 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); + result = 31 * result + (fetchFriends != null ? fetchFriends.hashCode() : 0); + result = 31 * result + (getHomeTimeline != null ? getHomeTimeline.hashCode() : 0); + result = 31 * result + (getUserTimeline != null ? getUserTimeline.hashCode() : 0); + result = 31 * result + (getMentions != null ? getMentions.hashCode() : 0); + result = 31 * result + (getFavorites != null ? getFavorites.hashCode() : 0); + result = 31 * result + (getRetweetsOfMe != null ? getRetweetsOfMe.hashCode() : 0); + result = 31 * result + (getLists != null ? getLists.hashCode() : 0); + result = 31 * result + (fetchUserlistOwners != null ? fetchUserlistOwners.hashCode() : 0); + result = 31 * result + (startGarbageCollection != null ? startGarbageCollection.hashCode() : 0); return result; } @Override public String toString() { 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 + - '}'; + "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 + + ", fetchUserlistOwners=" + fetchUserlistOwners + + ", startGarbageCollection=" + startGarbageCollection + + '}'; } private final static String COLUMN_PREFIX = "cache_"; 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 61993e8b..f042c895 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 @@ -88,6 +88,14 @@ public class TaskInfo implements Serializable { @Column(nullable = false,name="fetch_lists") private Boolean getLists = false; + @NotNull + @Column(nullable = false,name="fetch_userlist_owners") + private Boolean fetchUserlistOwners = false; + + @NotNull + @Column(nullable = false,name="start_garbage_collection") + private Boolean startGarbageCollection = false; + @Transient public void setTaskInfoFromTask(Task task) { if(task!=null) { @@ -147,6 +155,12 @@ public void setTaskInfoFromTask(Task task) { case FETCH_LISTS: getLists = true; break; + case FETCH_USERLIST_OWNERS: + fetchUserlistOwners = true; + break; + case GARBAGE_COLLECTION: + startGarbageCollection = true; + break; default: break; } @@ -156,7 +170,7 @@ public void setTaskInfoFromTask(Task task) { protected TaskInfo() { } - public TaskInfo(Boolean fetchTweetsFromSearch, Boolean updateTweets, Boolean updatedUsers, Boolean updateUsersFromMentions, Boolean fetchUsersFromList, Boolean controllerAddUserForScreenName, Boolean controllerCreateTestdataTweets, Boolean controllerCreateTestdataUsers, Boolean controllerCreateImprintUser, Boolean removeOldDataFromStorage, Boolean fetchFollower, Boolean fetchFriends) { + public TaskInfo(Boolean fetchTweetsFromSearch, Boolean updateTweets, Boolean updatedUsers, Boolean updateUsersFromMentions, Boolean fetchUsersFromList, Boolean controllerAddUserForScreenName, Boolean controllerCreateTestdataTweets, Boolean controllerCreateTestdataUsers, Boolean controllerCreateImprintUser, Boolean removeOldDataFromStorage, Boolean fetchFollower, Boolean fetchFriends,Boolean fetchUserlistOwners) { this.fetchTweetsFromSearch = fetchTweetsFromSearch; this.updateTweets = updateTweets; this.updatedUsers = updatedUsers; @@ -169,6 +183,7 @@ public TaskInfo(Boolean fetchTweetsFromSearch, Boolean updateTweets, Boolean upd this.removeOldDataFromStorage = removeOldDataFromStorage; this.fetchFollower = fetchFollower; this.fetchFriends = fetchFriends; + this.fetchUserlistOwners = fetchUserlistOwners; } public Boolean getFetchTweetsFromSearch() { @@ -243,6 +258,14 @@ public Boolean getGetLists() { return getLists; } + public Boolean getFetchUserlistOwners() { + return fetchUserlistOwners; + } + + public Boolean getStartGarbageCollection() { + return startGarbageCollection; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -250,88 +273,95 @@ public boolean equals(Object o) { TaskInfo taskInfo = (TaskInfo) o; - if (getFetchTweetsFromSearch() != null ? !getFetchTweetsFromSearch().equals(taskInfo.getFetchTweetsFromSearch()) : taskInfo.getFetchTweetsFromSearch() != null) + if (fetchTweetsFromSearch != null ? !fetchTweetsFromSearch.equals(taskInfo.fetchTweetsFromSearch) : taskInfo.fetchTweetsFromSearch != null) + return false; + if (updateTweets != null ? !updateTweets.equals(taskInfo.updateTweets) : taskInfo.updateTweets != null) return false; - if (getUpdateTweets() != null ? !getUpdateTweets().equals(taskInfo.getUpdateTweets()) : taskInfo.getUpdateTweets() != null) + if (updatedUsers != null ? !updatedUsers.equals(taskInfo.updatedUsers) : taskInfo.updatedUsers != null) return false; - if (getUpdatedUsers() != null ? !getUpdatedUsers().equals(taskInfo.getUpdatedUsers()) : taskInfo.getUpdatedUsers() != null) + if (updateUsersFromMentions != null ? !updateUsersFromMentions.equals(taskInfo.updateUsersFromMentions) : taskInfo.updateUsersFromMentions != null) return false; - if (getUpdateUsersFromMentions() != null ? !getUpdateUsersFromMentions().equals(taskInfo.getUpdateUsersFromMentions()) : taskInfo.getUpdateUsersFromMentions() != null) + if (fetchUsersFromList != null ? !fetchUsersFromList.equals(taskInfo.fetchUsersFromList) : taskInfo.fetchUsersFromList != null) return false; - if (getFetchUsersFromList() != null ? !getFetchUsersFromList().equals(taskInfo.getFetchUsersFromList()) : taskInfo.getFetchUsersFromList() != null) + if (controllerAddUserForScreenName != null ? !controllerAddUserForScreenName.equals(taskInfo.controllerAddUserForScreenName) : taskInfo.controllerAddUserForScreenName != null) return false; - if (getControllerAddUserForScreenName() != null ? !getControllerAddUserForScreenName().equals(taskInfo.getControllerAddUserForScreenName()) : taskInfo.getControllerAddUserForScreenName() != null) + if (controllerCreateTestdataTweets != null ? !controllerCreateTestdataTweets.equals(taskInfo.controllerCreateTestdataTweets) : taskInfo.controllerCreateTestdataTweets != null) return false; - if (getControllerCreateTestdataTweets() != null ? !getControllerCreateTestdataTweets().equals(taskInfo.getControllerCreateTestdataTweets()) : taskInfo.getControllerCreateTestdataTweets() != null) + if (controllerCreateTestdataUsers != null ? !controllerCreateTestdataUsers.equals(taskInfo.controllerCreateTestdataUsers) : taskInfo.controllerCreateTestdataUsers != null) return false; - if (getControllerCreateTestdataUsers() != null ? !getControllerCreateTestdataUsers().equals(taskInfo.getControllerCreateTestdataUsers()) : taskInfo.getControllerCreateTestdataUsers() != null) + if (controllerCreateImprintUser != null ? !controllerCreateImprintUser.equals(taskInfo.controllerCreateImprintUser) : taskInfo.controllerCreateImprintUser != null) return false; - if (getControllerCreateImprintUser() != null ? !getControllerCreateImprintUser().equals(taskInfo.getControllerCreateImprintUser()) : taskInfo.getControllerCreateImprintUser() != null) + if (removeOldDataFromStorage != null ? !removeOldDataFromStorage.equals(taskInfo.removeOldDataFromStorage) : taskInfo.removeOldDataFromStorage != null) return false; - if (getRemoveOldDataFromStorage() != null ? !getRemoveOldDataFromStorage().equals(taskInfo.getRemoveOldDataFromStorage()) : taskInfo.getRemoveOldDataFromStorage() != null) + if (fetchFollower != null ? !fetchFollower.equals(taskInfo.fetchFollower) : taskInfo.fetchFollower != null) return false; - if (getFetchFollower() != null ? !getFetchFollower().equals(taskInfo.getFetchFollower()) : taskInfo.getFetchFollower() != null) + if (fetchFriends != null ? !fetchFriends.equals(taskInfo.fetchFriends) : taskInfo.fetchFriends != null) return false; - if (getFetchFriends() != null ? !getFetchFriends().equals(taskInfo.getFetchFriends()) : taskInfo.getFetchFriends() != null) + if (getHomeTimeline != null ? !getHomeTimeline.equals(taskInfo.getHomeTimeline) : taskInfo.getHomeTimeline != null) return false; - if (getGetHomeTimeline() != null ? !getGetHomeTimeline().equals(taskInfo.getGetHomeTimeline()) : taskInfo.getGetHomeTimeline() != null) + if (getUserTimeline != null ? !getUserTimeline.equals(taskInfo.getUserTimeline) : taskInfo.getUserTimeline != null) return false; - if (getGetUserTimeline() != null ? !getGetUserTimeline().equals(taskInfo.getGetUserTimeline()) : taskInfo.getGetUserTimeline() != null) + if (getMentions != null ? !getMentions.equals(taskInfo.getMentions) : taskInfo.getMentions != null) return false; - if (getGetMentions() != null ? !getGetMentions().equals(taskInfo.getGetMentions()) : taskInfo.getGetMentions() != null) + if (getFavorites != null ? !getFavorites.equals(taskInfo.getFavorites) : taskInfo.getFavorites != null) return false; - if (getGetFavorites() != null ? !getGetFavorites().equals(taskInfo.getGetFavorites()) : taskInfo.getGetFavorites() != null) + if (getRetweetsOfMe != null ? !getRetweetsOfMe.equals(taskInfo.getRetweetsOfMe) : taskInfo.getRetweetsOfMe != null) return false; - if (getGetRetweetsOfMe() != null ? !getGetRetweetsOfMe().equals(taskInfo.getGetRetweetsOfMe()) : taskInfo.getGetRetweetsOfMe() != null) + if (getLists != null ? !getLists.equals(taskInfo.getLists) : taskInfo.getLists != null) return false; + if (fetchUserlistOwners != null ? !fetchUserlistOwners.equals(taskInfo.fetchUserlistOwners) : taskInfo.fetchUserlistOwners != null) return false; - return getGetLists() != null ? getGetLists().equals(taskInfo.getGetLists()) : taskInfo.getGetLists() == null; + return startGarbageCollection != null ? startGarbageCollection.equals(taskInfo.startGarbageCollection) : taskInfo.startGarbageCollection == null; } @Override public int hashCode() { - 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); + 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); + result = 31 * result + (getHomeTimeline != null ? getHomeTimeline.hashCode() : 0); + result = 31 * result + (getUserTimeline != null ? getUserTimeline.hashCode() : 0); + result = 31 * result + (getMentions != null ? getMentions.hashCode() : 0); + result = 31 * result + (getFavorites != null ? getFavorites.hashCode() : 0); + result = 31 * result + (getRetweetsOfMe != null ? getRetweetsOfMe.hashCode() : 0); + result = 31 * result + (getLists != null ? getLists.hashCode() : 0); + result = 31 * result + (fetchUserlistOwners != null ? fetchUserlistOwners.hashCode() : 0); + result = 31 * result + (startGarbageCollection != null ? startGarbageCollection.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 + - ", getHomeTimeline=" + getHomeTimeline + - ", getUserTimeline=" + getUserTimeline + - ", getMentions=" + getMentions + - ", getFavorites=" + getFavorites + - ", getRetweetsOfMe=" + getRetweetsOfMe + - ", getLists=" + getLists + - '}'; + "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 + + ", fetchUserlistOwners=" + fetchUserlistOwners + + ", startGarbageCollection=" + startGarbageCollection + + '}'; } @Transient diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskStatus.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskStatus.java index bf6b7758..71e59361 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskStatus.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskStatus.java @@ -11,5 +11,6 @@ public enum TaskStatus { ERROR, FINAL_ERROR, WARN, + STOPPED_BY_TIMEOUT, NULL } 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 592cb7b3..a841a12e 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 @@ -14,6 +14,7 @@ public enum TaskType { FETCH_RETWEETS_OF_ME, FETCH_LISTS, FETCH_USERS_FROM_LIST, + FETCH_USERLIST_OWNERS, FETCH_FOLLOWER, FETCH_FRIENDS, UPDATE_TWEETS, @@ -23,6 +24,6 @@ public enum TaskType { CONTROLLER_CREATE_TESTDATA_TWEETS, CONTROLLER_CREATE_TESTDATA_USERS, CONTROLLER_ADD_USER_FOR_SCREEN_NAME, - REMOVE_OLD_DATA_FROM_STORAGE - + REMOVE_OLD_DATA_FROM_STORAGE, + GARBAGE_COLLECTION } 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 9cdfd4f2..8458d8f2 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 @@ -38,4 +38,8 @@ public interface AsyncStartTask { Task getLists(); Task createImprintUserAsync(); + + Task fetchUserlistOwners(); + + Task startGarbageCollection(); } 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 c1a0b127..2a06d5af 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 @@ -122,6 +122,17 @@ public Task createImprintUserAsync() { return send(taskType); } + @Override + public Task fetchUserlistOwners() { + TaskType taskType = TaskType.FETCH_USERLIST_OWNERS; + return send(taskType); + } + + @Override + public Task startGarbageCollection() { + return null; + } + 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 20b89a12..cd4c7504 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 @@ -123,6 +123,17 @@ public Task createImprintUserAsync() { return sendAndReceiveUser(taskType); } + @Override + public Task fetchUserlistOwners() { + TaskType taskType = TaskType.FETCH_USERLIST_OWNERS; + return sendAndReceiveUser(taskType); + } + + @Override + public Task startGarbageCollection() { + return null; + } + private Task sendAndReceiveUserList(TaskType taskType){ SendType sendType = SendType.SEND_AND_WAIT_FOR_RESULT; String logMsg = "Start task "+taskType+"via MQ by "+sendType; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java index a6ccbc1e..12fa7d3f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java @@ -42,7 +42,7 @@ public Message persistUser(Message incomingUserMessage UserMessage mqMessageOut = new UserMessage( receivedMessage.getTaskMessage(), receivedMessage.getTwitterProfile(), - user + userPers ); return MessageBuilder.withPayload(mqMessageOut) .copyHeaders(incomingUserMessage.getHeaders()) diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java new file mode 100644 index 00000000..6e2e57ca --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; + +import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; + +public interface FetchUserlistOwnersSplitter extends UserSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java index 7c25667f..c2b4aef5 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java @@ -64,6 +64,7 @@ public List> splitUserMessage(Message incoming fetchFromTwitterApi=true; } else { fetchFromTwitterApi=!userPers.getTaskBasedCaching().isCached(task.getTaskType(), TWELVE_HOURS); + userPers = userService.store(userPers,task); } Message outgoingMessage; if(fetchFromTwitterApi){ diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java new file mode 100644 index 00000000..2713264e --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java @@ -0,0 +1,109 @@ +package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; + +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.messaging.Message; +import org.springframework.social.twitter.api.TwitterProfile; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.conf.properties.TwitterProperties; +import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.entities.User; +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.oodm.service.UserListService; +import org.woehlke.twitterwall.oodm.service.UserService; +import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; +import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchUserlistOwnersSplitter; +import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; +import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; + +import java.util.ArrayList; +import java.util.List; + +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; + +@Component("mqFetchUserlistOwnersSplitter") +public class FetchUserlistOwnersSplitterImpl implements FetchUserlistOwnersSplitter { + + + + @Override + public List> splitUserMessage(Message incomingTaskMessage) { + String msg ="splitTweetMessage: "; + log.debug(msg+ " START"); + CountedEntities countedEntities = countedEntitiesService.countAll(); + TaskMessage msgIn = incomingTaskMessage.getPayload(); + long id = msgIn.getTaskId(); + Task task = taskService.findById(id); + task = taskService.start(task,countedEntities); + List> userProfileList = new ArrayList<>(); + List screenNames = new ArrayList<>(); + int lfdNr = 0; + int all = 0; + boolean hasNext=true; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, twitterProperties.getPageSize()); + while (hasNext) { + Page userListPage = userListService.getAll(pageRequest); + hasNext = userListPage.hasNext(); + for (UserList oneUserList : userListPage.getContent()) { + String screenName = oneUserList.getListOwnersScreenName(); + User foundUser = userService.findByScreenName(screenName); + if(foundUser == null) { + lfdNr++; + all++; + log.debug("### mentionService.getAll from DB (" + lfdNr + "): " + screenName); + screenNames.add(screenName); + } else { + foundUser = userService.store(foundUser,task); + log.debug("### updated User with screenName = " + foundUser.getUniqueId()); + } + } + pageRequest = pageRequest.next(); + } + lfdNr = 0; + for(String screenName:screenNames){ + lfdNr++; + log.debug("### twitterApiService.getUserProfileForScreenName("+screenName+") from Twiiter API ("+lfdNr+" of "+all+")"); + TwitterProfile userProfile = twitterApiService.getUserProfileForScreenName(screenName); + if(userProfile!=null) { + Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,lfdNr,all); + userProfileList.add(mqMessageOut); + } + } + return userProfileList; + } + + private static final Logger log = LoggerFactory.getLogger(UpdateUsersFromMentionsSplitterImpl.class); + + private final TwitterProperties twitterProperties; + + private final TwitterApiService twitterApiService; + + private final TaskService taskService; + + private final UserService userService; + + private final UserListService userListService; + + private final CountedEntitiesService countedEntitiesService; + + private final TwitterwallMessageBuilder twitterwallMessageBuilder; + + @Autowired + public FetchUserlistOwnersSplitterImpl(TwitterProperties twitterProperties, TwitterApiService twitterApiService, TaskService taskService, UserService userService, UserListService userListService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + this.twitterProperties = twitterProperties; + this.twitterApiService = twitterApiService; + this.taskService = taskService; + this.userService = userService; + this.userListService = userListService; + this.countedEntitiesService = countedEntitiesService; + this.twitterwallMessageBuilder = twitterwallMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java index 03bd691f..bc0d4c1e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java @@ -85,6 +85,7 @@ public List> splitUserMessage(Message incoming log.debug("### mentionService.getAll from DB (" + lfdNr + "): " + screenName); screenNames.add(screenName); } else { + foundUser = userService.store(foundUser,task); onePersMention.setIdTwitterOfUser(foundUser.getIdTwitter()); onePersMention = mentionService.update(onePersMention,task); log.debug("### updated Mention with screenName = " + onePersMention.getUniqueId()); diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java index cf5e27ff..5971f1a1 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java @@ -80,6 +80,7 @@ public List> splitUserMessage(Message incoming loopAll++; log.debug(msg+ "### userService.getAllTwitterIds: ("+loopId+") "+user.getIdTwitter()); worklistProfileTwitterIds.add(user.getIdTwitter()); + user = userService.store(user,task); } } hasNext = userProfileTwitterIds.hasNext(); diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml index aefc868f..7856d6b1 100644 --- a/src/main/resources/integration.xml +++ b/src/main/resources/integration.xml @@ -134,6 +134,12 @@ + + + + + + @@ -153,9 +159,33 @@ + + + + + + + + + + @@ -674,6 +705,38 @@ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+

Backend Task Started.

+
+
    +
  • + + + id + +
  • +
  • timeStarted: timeStarted
  • +
  • timeLastUpdate: timeLastUpdate
  • +
  • timeFinished: timeFinished
  • +
  • taskType: taskType
  • +
  • taskStatus: taskStatus
  • +
  • sendType: sendType
  • +
+
+ +
+
+
+
+ +
+
+ +
+ +
+ + diff --git a/twitterwall2.iml b/twitterwall2.iml index 5aee46d4..b13db172 100644 --- a/twitterwall2.iml +++ b/twitterwall2.iml @@ -17,6 +17,7 @@ + From 9ee192447fb35771563327d16e8519b9261432c7 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Thu, 17 Aug 2017 22:37:18 +0200 Subject: [PATCH 02/45] fixed #259 --- .../entities/parts/AbstractDomainObject.java | 12 +++++-- .../oodm/entities/parts/Entities.java | 25 +++++++++++--- src/main/resources/templates/media/all.html | 34 ++++++++++++------- src/main/resources/templates/mention/all.html | 28 +++++++++------ .../resources/templates/taskhistory/all.html | 22 +++++++----- .../resources/templates/tickersymbol/all.html | 10 +++--- src/main/resources/templates/url/all.html | 16 +++++---- twitterwall2.iml | 1 - 8 files changed, 99 insertions(+), 49 deletions(-) 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 f5b09362..f9d9bea8 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 @@ -33,11 +33,19 @@ public abstract class AbstractDomainObject implements Do private TaskBasedCaching taskBasedCaching = new TaskBasedCaching(); @NotNull - @JoinColumn(name = "fk_created_by_task", nullable = false) + @JoinColumn( + name = "fk_created_by_task", + foreignKey=@ForeignKey(name="fkey_fk_created_by_task"), + nullable = false + ) @ManyToOne(cascade = {REFRESH, DETACH}, fetch = EAGER, optional = false) private Task createdBy; - @JoinColumn(name = "fk_updated_by_task", nullable = true) + @JoinColumn( + name = "fk_updated_by_task", + foreignKey=@ForeignKey(name="fkey_fk_updated_by_task"), + nullable = true + ) @ManyToOne(cascade = {REFRESH, DETACH}, fetch = EAGER, optional = true) private Task updatedBy; 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 f779a791..0027ce26 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 @@ -25,23 +25,38 @@ public class Entities extends EntitiesFilter implements Serializable,DomainObjectWithValidation,DomainObjectWithUniqueId { @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set urls = new LinkedHashSet(); @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set hashTags = new LinkedHashSet(); @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set mentions = new LinkedHashSet(); @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set media = new LinkedHashSet(); @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set tickerSymbols = new LinkedHashSet(); public Entities(Set urls, Set hashTags, Set mentions, Set media, Set tickerSymbols) { diff --git a/src/main/resources/templates/media/all.html b/src/main/resources/templates/media/all.html index 703ad6c5..131ad6cf 100644 --- a/src/main/resources/templates/media/all.html +++ b/src/main/resources/templates/media/all.html @@ -31,36 +31,46 @@
-
idTwitter:
-
+
idTwitter:
+
idTwitter
-
mediaHttps:
-
+
+
+
mediaHttps:
+ -
mediaHttps:
-
+
+
+
mediaHttps:
+ -
display:
-
+
+
+
display:
+ -
expanded:
-
+
+
+
expanded:
+ -
mediaType:
-
+
+
+
mediaType:
+
mediaType
diff --git a/src/main/resources/templates/mention/all.html b/src/main/resources/templates/mention/all.html index 0360a10a..1acf5cfe 100644 --- a/src/main/resources/templates/mention/all.html +++ b/src/main/resources/templates/mention/all.html @@ -32,12 +32,14 @@
-
idTwitter:
-
+
idTwitter:
+
idTwitter
-
screenName:
-
+
+
+
screenName:
+ -
has User:
- +
+
has User:
+
-
idTwitterOfUser:
-
+
+
+
idTwitterOfUser:
+
idTwitterOfUser
diff --git a/src/main/resources/templates/taskhistory/all.html b/src/main/resources/templates/taskhistory/all.html index c97c71eb..a8202e5e 100644 --- a/src/main/resources/templates/taskhistory/all.html +++ b/src/main/resources/templates/taskhistory/all.html @@ -38,20 +38,26 @@
-
description:
-
+
description:
+
description
-
taskStatusBefore:
-
+
+
+
taskStatusBefore:
+
taskStatusBefore
-
taskStatusNow:
-
+
+
+
taskStatusNow:
+
taskStatusNow
-
timeEvent:
-
+
+
+
timeEvent:
+
timeEvent
diff --git a/src/main/resources/templates/tickersymbol/all.html b/src/main/resources/templates/tickersymbol/all.html index 42053e40..a09cb993 100644 --- a/src/main/resources/templates/tickersymbol/all.html +++ b/src/main/resources/templates/tickersymbol/all.html @@ -32,12 +32,14 @@
-
tickerSymbol:
-
+
tickerSymbol:
+
tickerSymbol
-
url:
-
+
+
+
url:
+
url diff --git a/src/main/resources/templates/url/all.html b/src/main/resources/templates/url/all.html index 7d30daba..0605cb9f 100644 --- a/src/main/resources/templates/url/all.html +++ b/src/main/resources/templates/url/all.html @@ -33,18 +33,22 @@
-
display:
-
+
display:
+
display
-
expanded:
-
+
+
+
expanded:
+ -
url:
-
+
+
+
url:
+
url diff --git a/twitterwall2.iml b/twitterwall2.iml index b13db172..5aee46d4 100644 --- a/twitterwall2.iml +++ b/twitterwall2.iml @@ -17,7 +17,6 @@ - From 2acbcc36ea0880bb3e5fb0f5f9e2d43b467c7228 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Fri, 18 Aug 2017 01:28:20 +0200 Subject: [PATCH 03/45] fixed #266 --- .../controller/HashTagController.java | 49 ++++++------ .../frontend/controller/MediaController.java | 49 +++++++++++- .../controller/MentionController.java | 48 +++++++++++- .../frontend/controller/TaskController.java | 25 +++--- .../controller/TickerSymbolController.java | 48 +++++++++++- .../frontend/controller/TweetController.java | 34 +++++---- .../frontend/controller/UrlController.java | 48 +++++++++++- .../frontend/controller/UserController.java | 42 +++++----- .../controller/UserListController.java | 2 +- .../common/GlobalExceptionHandler.java | 8 ++ .../frontend/controller/common/Symbols.java | 43 +++++++---- .../twitterwall/oodm/entities/Tweet.java | 18 +++++ .../twitterwall/oodm/entities/User.java | 16 ++++ .../oodm/repositories/TweetRepository.java | 17 ++++- .../oodm/repositories/UserRepository.java | 14 +++- .../oodm/service/TweetService.java | 13 +++- .../twitterwall/oodm/service/UserService.java | 11 ++- .../oodm/service/impl/TweetServiceImpl.java | 24 +++++- .../oodm/service/impl/UserServiceImpl.java | 23 +++++- src/main/resources/templates/media/id.html | 0 src/main/resources/templates/mention/id.html | 0 .../resources/templates/tickersymbol/id.html | 0 src/main/resources/templates/url/id.html | 0 .../controller/HashTagControllerTest.java | 4 +- .../controller/MediaControllerTest.java | 50 ++++++++++++ .../controller/MentionControllerTest.java | 48 ++++++++++++ .../TickerSymbolControllerTest.java | 49 ++++++++++++ .../controller/UrlControllerTest.java | 49 ++++++++++++ .../oodm/service/TweetServiceTest.java | 76 +++++++++++++++++++ .../oodm/service/UserServiceTest.java | 72 ++++++++++++++++++ 30 files changed, 775 insertions(+), 105 deletions(-) create mode 100644 src/main/resources/templates/media/id.html create mode 100644 src/main/resources/templates/mention/id.html create mode 100644 src/main/resources/templates/tickersymbol/id.html create mode 100644 src/main/resources/templates/url/id.html diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java index fcd76f96..52aa6dd5 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java @@ -27,6 +27,7 @@ import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.oodm.service.HashTagService; +import javax.persistence.EntityNotFoundException; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -61,30 +62,34 @@ public String getAll( } @RequestMapping(path="/{id}") - public String findById( + public String findHashTagById( @PathVariable("id") HashTag hashTag, @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, Model model ) { - String msg = "/hashtag/" + hashTag.getId()+ " "; - String msg2 = msg + " parameter IS valid - START "; - log.debug(msg2); - Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); - Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); - String subtitle = "Tweets und User für HashTag"; - String title = hashTag.getText(); - String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); - model.addAttribute("hashTag",hashTag); - log.debug(msg+" try to: tweetService.findTweetsForHashTag: "); - Page tweets = tweetService.findTweetsForHashTag(hashTag,pageRequestTweet); - model.addAttribute("latestTweets", tweets); - log.debug(msg+" try to: userService.getUsersForHashTag: "); - Page users = userService.getUsersForHashTag(hashTag,pageRequestUser); - model.addAttribute("users", users); - log.debug(msg + " READY - DONE"); - return "hashtag/id"; + if(hashTag == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/hashtag/" + hashTag.getId()+ " "; + String msg2 = msg + " parameter IS valid - START "; + log.debug(msg2); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + String subtitle = "Tweets und User für HashTag"; + String title = hashTag.getText(); + String symbol = Symbols.HASHTAG.toString(); + model = controllerHelper.setupPage(model, title, subtitle, symbol); + model.addAttribute("hashTag",hashTag); + log.debug(msg+" try to: tweetService.findTweetsForHashTag: "); + Page tweets = tweetService.findTweetsForHashTag(hashTag,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForHashTag: "); + Page users = userService.getUsersForHashTag(hashTag,pageRequestUser); + model.addAttribute("users", users); + log.debug(msg + " READY - DONE"); + return "hashtag/id"; + } } @RequestMapping(path="/text/{text}") @@ -159,8 +164,6 @@ public String hashTagsOverview( private final ControllerHelper controllerHelper; - //private final HashTagsOverviewHelper hashTagsOverviewHelper; - @Autowired public HashTagController( FrontendProperties frontendProperties, @@ -168,8 +171,7 @@ public HashTagController( HashTagService hashTagService, TweetService tweetService, UserService userService, - ControllerHelper controllerHelper/*, - HashTagsOverviewHelper hashTagsOverviewHelper*/ + ControllerHelper controllerHelper ) { this.frontendProperties = frontendProperties; this.twitterProperties = twitterProperties; @@ -177,7 +179,6 @@ public HashTagController( this.tweetService = tweetService; this.userService = userService; this.controllerHelper = controllerHelper; - //this.hashTagsOverviewHelper = hashTagsOverviewHelper; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java index b2b65e06..2f8f4208 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java @@ -1,5 +1,7 @@ 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; @@ -7,13 +9,23 @@ 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.Symbols; import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; import org.woehlke.twitterwall.oodm.entities.Media; +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.MediaService; +import org.woehlke.twitterwall.oodm.service.TweetService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import javax.persistence.EntityNotFoundException; + +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -43,8 +55,41 @@ public String getAll( return "media/all"; } + @RequestMapping(path="/{id}") + public String getMediaById( + @PathVariable("id") Media media, + @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, + @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, + Model model) { + if(media == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/media/ "+media.getId(); + String title = "Media "+media.getUniqueId(); + String subtitle = "List of User and Tweets for one Media"; + String symbol = Symbols.MEDIA.toString(); + model = controllerHelper.setupPage(model,title,subtitle,symbol); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + log.debug(msg+" try to: tweetService.findTweetsForMedia: "); + Page tweets = tweetService.findTweetsForMedia(media,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForMedia: "); + Page users = userService.getUsersForMedia(media,pageRequestUser); + model.addAttribute("users", users); + model.addAttribute("media", media); + return "media/id"; + } + } + + private static final Logger log = LoggerFactory.getLogger(MediaController.class); + private final MediaService mediaService; + private final UserService userService; + + private final TweetService tweetService; + private final FrontendProperties frontendProperties; private final ControllerHelper controllerHelper; @@ -52,10 +97,12 @@ public String getAll( @Autowired public MediaController( MediaService mediaService, - FrontendProperties frontendProperties, + UserService userService, TweetService tweetService, FrontendProperties frontendProperties, ControllerHelper controllerHelper ) { this.mediaService = mediaService; + this.userService = userService; + this.tweetService = tweetService; this.frontendProperties = frontendProperties; this.controllerHelper = controllerHelper; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java index fa9a5003..d76e8a44 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java @@ -1,5 +1,7 @@ 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; @@ -7,13 +9,22 @@ 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.Symbols; import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.entities.User; import org.woehlke.twitterwall.oodm.service.MentionService; +import org.woehlke.twitterwall.oodm.service.TweetService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import javax.persistence.EntityNotFoundException; + +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -41,19 +52,54 @@ public String getAll( return "mention/all"; } + @RequestMapping(path="/{id}") + public String getMentionById( + @PathVariable("id") Mention mention, + @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, + @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, + Model model) { + if(mention == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/mention/ "+mention.getId(); + String title = "Mention "+mention.getUniqueId(); + String subtitle = "List of User and Tweets for one Mention"; + String symbol = Symbols.MENTION.toString(); + model = controllerHelper.setupPage(model,title,subtitle,symbol); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + log.debug(msg+" try to: tweetService.findTweetsForMedia: "); + Page tweets = tweetService.findTweetsForMention(mention,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForMedia: "); + Page users = userService.getUsersForMention(mention,pageRequestUser); + model.addAttribute("users", users); + model.addAttribute("mention", mention); + return "media/id"; + } + } + + private static final Logger log = LoggerFactory.getLogger(MentionController.class); + private final FrontendProperties frontendProperties; private final MentionService mentionService; + private final UserService userService; + + private final TweetService tweetService; + private final ControllerHelper controllerHelper; @Autowired public MentionController( FrontendProperties frontendProperties, MentionService mentionService, - ControllerHelper controllerHelper) { + UserService userService, TweetService tweetService, ControllerHelper controllerHelper) { this.frontendProperties = frontendProperties; this.mentionService = mentionService; + this.userService = userService; + this.tweetService = tweetService; this.controllerHelper = controllerHelper; } 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 f3a99c68..11fcf4bc 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -24,6 +24,7 @@ import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask; +import javax.persistence.EntityNotFoundException; import java.util.ArrayList; import java.util.List; @@ -59,16 +60,20 @@ public String getAll( public String getTaskById( @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, @PathVariable("id") Task task, Model model) { - String msg = "/task/ "+task.getId(); - String title = "Task "+task.getUniqueId(); - String subtitle = "List of TasksHistory for Task"; - String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - Page taskHistoryList = taskHistoryService.findByTask(task,pageRequest); - model.addAttribute("task",task); - model.addAttribute("taskHistoryList",taskHistoryList); - return PATH+"/id"; + if(task == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/task/ "+task.getId(); + String title = "Task "+task.getUniqueId(); + String subtitle = "List of TasksHistory for Task"; + String symbol = Symbols.TASK.toString(); + model = controllerHelper.setupPage(model,title,subtitle,symbol); + Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); + Page taskHistoryList = taskHistoryService.findByTask(task,pageRequest); + model.addAttribute("task",task); + model.addAttribute("taskHistoryList",taskHistoryList); + return PATH+"/id"; + } } @RequestMapping("/start/createTestData") diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java index d1d90b4e..02fc269e 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java @@ -1,5 +1,7 @@ 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; @@ -7,13 +9,22 @@ 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.Symbols; import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.entities.User; import org.woehlke.twitterwall.oodm.service.TickerSymbolService; +import org.woehlke.twitterwall.oodm.service.TweetService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import javax.persistence.EntityNotFoundException; + +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -43,20 +54,55 @@ public String getAll( return "tickersymbol/all"; } + @RequestMapping(path="/{id}") + public String getTickerSymbolById( + @PathVariable("id") TickerSymbol tickerSymbol, + @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, + @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, + Model model) { + if(tickerSymbol == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/tickersymbol/ "+tickerSymbol.getId(); + String title = "TickerSymbol "+tickerSymbol.getUniqueId(); + String subtitle = "List of User and Tweets for one TickerSymbol"; + String symbol = Symbols.MENTION.toString(); + model = controllerHelper.setupPage(model,title,subtitle,symbol); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + log.debug(msg+" try to: tweetService.findTweetsForMedia: "); + Page tweets = tweetService.findTweetsForTickerSymbol(tickerSymbol,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForMedia: "); + Page users = userService.getUsersForTickerSymbol(tickerSymbol,pageRequestUser); + model.addAttribute("users", users); + model.addAttribute("tickerSymbol", tickerSymbol); + return "media/id"; + } + } + + private static final Logger log = LoggerFactory.getLogger(TickerSymbolController.class); + private final FrontendProperties frontendProperties; private final TickerSymbolService tickerSymbolService; + private final UserService userService; + + private final TweetService tweetService; + private final ControllerHelper controllerHelper; @Autowired public TickerSymbolController( FrontendProperties frontendProperties, TickerSymbolService tickerSymbolService, - ControllerHelper controllerHelper + UserService userService, TweetService tweetService, ControllerHelper controllerHelper ) { this.frontendProperties = frontendProperties; this.tickerSymbolService = tickerSymbolService; + this.userService = userService; + this.tweetService = tweetService; this.controllerHelper = controllerHelper; } 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 2d7b5501..5be80fe1 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java @@ -19,6 +19,8 @@ import org.woehlke.twitterwall.oodm.entities.Tweet; import org.woehlke.twitterwall.oodm.service.TweetService; +import javax.persistence.EntityNotFoundException; + /** * Created by tw on 10.06.17. @@ -55,15 +57,19 @@ public String getLatestTweets( public String getTweetById( @PathVariable("id") Tweet tweet, Model model ) { - String title = "Tweet"; - model = controllerHelper.setupPage( - model, - title, - twitterProperties.getSearchQuery(), - Symbols.HOME.toString() - ); - model.addAttribute("tweet", tweet); - return "tweet/id"; + if(tweet == null){ + throw new EntityNotFoundException(); + } else { + String title = "Tweet"; + model = controllerHelper.setupPage( + model, + title, + twitterProperties.getSearchQuery(), + Symbols.HOME.toString() + ); + model.addAttribute("tweet", tweet); + return "tweet/id"; + } } @RequestMapping("/timeline/home") @@ -76,7 +82,7 @@ public String getHomeTimeline( model, title, "Home Timneline", - Symbols.HOME_TIMELINE_TWEETS.toString() + Symbols.TWEETS_HOME_TIMELINE.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -100,7 +106,7 @@ public String getUserTimeline( model, title, "User Timeline", - Symbols.USER_TIMELINE_TWEETS.toString() + Symbols.TWEETS_USER_TIMELINE.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -124,7 +130,7 @@ public String getMentions( model, title, "Mentions", - Symbols.MENTIONS_TWEETS.toString() + Symbols.TWEETS_MENTIONS.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -148,7 +154,7 @@ public String getFavorites( model, title, "Favorites", - Symbols.FAVORITES_TWEETS.toString() + Symbols.TWEETS_FAVORITES.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -172,7 +178,7 @@ public String getRetweetsOfMe( model, title, "Retweets Of Me", - Symbols.RETWEETS_OF_ME_FAVORITES_TWEETS.toString() + Symbols.TWEETS_RETWEETS_OF_ME.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java index 9f1cdbcc..c2d6dd6a 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java @@ -1,5 +1,7 @@ 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; @@ -7,13 +9,22 @@ 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.Tweet; import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UrlService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import javax.persistence.EntityNotFoundException; + +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -41,20 +52,55 @@ public String getAll(@RequestParam(name= "page" ,defaultValue=""+ControllerHelpe return "url/all"; } + @RequestMapping(path="/{id}") + public String getUrlById( + @PathVariable("id") Url url, + @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, + @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, + Model model) { + if(url == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/url/ "+url.getId(); + String title = "Url "+url.getUniqueId(); + String subtitle = "List of User and Tweets for one Url"; + String symbol = Symbols.MENTION.toString(); + model = controllerHelper.setupPage(model,title,subtitle,symbol); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + log.debug(msg+" try to: tweetService.findTweetsForMedia: "); + Page tweets = tweetService.findTweetsForUrl(url,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForMedia: "); + Page users = userService.getUsersForUrl(url,pageRequestUser); + model.addAttribute("users", users); + model.addAttribute("url", url); + return "media/id"; + } + } + + private static final Logger log = LoggerFactory.getLogger(UrlController.class); + private final FrontendProperties frontendProperties; private final UrlService urlService; + private final UserService userService; + + private final TweetService tweetService; + private final ControllerHelper controllerHelper; @Autowired public UrlController( FrontendProperties frontendProperties, UrlService urlService, - ControllerHelper controllerHelper + UserService userService, TweetService tweetService, ControllerHelper controllerHelper ) { this.frontendProperties = frontendProperties; this.urlService = urlService; + this.userService = userService; + this.tweetService = tweetService; this.controllerHelper = controllerHelper; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java index 939fe0f1..0ba7450d 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java @@ -20,6 +20,8 @@ import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; +import javax.persistence.EntityNotFoundException; + /** * Created by tw on 12.06.17. */ @@ -52,20 +54,24 @@ public String getUserForId( @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, @PathVariable("id") User user, Model model ) { - Pageable pageRequest = new PageRequest( - page, - frontendProperties.getPageSize(), - Sort.Direction.DESC, - "createdAt" - ); - Page latestTweets = tweetService.findTweetsForUser(user,pageRequest); - String symbol = Symbols.PROFILE.toString(); - String title = "@" + user.getScreenName(); - String subtitle = user.getName(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); - model.addAttribute("user", user); - model.addAttribute("latestTweets",latestTweets); - return "user/id"; + if(user == null){ + throw new EntityNotFoundException(); + } else { + Pageable pageRequest = new PageRequest( + page, + frontendProperties.getPageSize(), + Sort.Direction.DESC, + "createdAt" + ); + Page latestTweets = tweetService.findTweetsForUser(user,pageRequest); + String symbol = Symbols.USER_PROFILE.toString(); + String title = "@" + user.getScreenName(); + String subtitle = user.getName(); + model = controllerHelper.setupPage(model, title, subtitle, symbol); + model.addAttribute("user", user); + model.addAttribute("latestTweets",latestTweets); + return "user/id"; + } } @RequestMapping("/screenName/{screenName}") @@ -76,13 +82,13 @@ public String getUserForScreeName( if (User.isValidScreenName(screenName)) { User user = userService.findByScreenName(screenName); if(user==null){ - String symbol = Symbols.PROFILE.toString(); + String symbol = Symbols.USER_PROFILE.toString(); String title = "404"; String subtitle = "404: no user found for @"+screenName; model = controllerHelper.setupPage(model, title, subtitle, symbol); return "user/id"; } else { - String symbol = Symbols.PROFILE.toString(); + String symbol = Symbols.USER_PROFILE.toString(); String title = "@" + user.getScreenName(); String subtitle = user.getName(); model = controllerHelper.setupPage(model, title, subtitle, symbol); @@ -99,7 +105,7 @@ public String getUserForScreeName( return "user/id"; } } else { - String symbol = Symbols.PROFILE.toString(); + String symbol = Symbols.USER_PROFILE.toString(); String title = "400"; String subtitle = "400: screenName not valid: for /user/screenName/"+screenName; model = controllerHelper.setupPage(model, title, subtitle, symbol); @@ -120,7 +126,7 @@ public String getTweetingUsers( ); Page tweetingUsers = userService.getTweetingUsers(pageRequest); model.addAttribute("users", tweetingUsers); - String symbol = Symbols.USER_TWEETS.toString(); + String symbol = Symbols.USER_TWEETING.toString(); String subtitle = "With one or more Tweets"; model = controllerHelper.setupPage(model, title, subtitle, symbol); return "user/list/allWithTweets"; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java index 18396890..e98da448 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java @@ -55,7 +55,7 @@ public String getUserListForId( Sort.Direction.DESC, "createdAt" ); - String symbol = Symbols.PROFILE.toString(); + String symbol = Symbols.USER_PROFILE.toString(); String title = userList.getFullName(); String subtitle = userList.getDescription(); model = controllerHelper.setupPage(model, title, subtitle, symbol); diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java index bb197a5b..96de7a24 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; +import javax.persistence.EntityNotFoundException; import javax.servlet.http.HttpServletRequest; /** @@ -18,6 +19,13 @@ @ControllerAdvice public class GlobalExceptionHandler { + @ExceptionHandler(EntityNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public ModelAndView notFound(HttpServletRequest request, Exception ex) { + log.warn("EntityNotFoundException occured :: URL=" + request.getRequestURL()); + log.warn(ex.getMessage()); + return getTemplate(request, ex); + } @ExceptionHandler(Throwable.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) 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 ef9bb960..53a40286 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 @@ -5,28 +5,39 @@ */ public enum Symbols { + TWEET(""), + USER(""), HASHTAG(""), - IMPRINT(""), - PROFILE(""), - HOME(""), - HOME_TIMELINE_TWEETS(""), - USER_TIMELINE_TWEETS(""), - MENTIONS_TWEETS(""), - FAVORITES_TWEETS(""), - RETWEETS_OF_ME_FAVORITES_TWEETS(""), + MEDIA(""), + MENTION(""), + TICKER_SYMBOL(""), + URL(""), + USERLIST(""), + TASK(""), + TASK_HISTORY(""), + TASKS_ALL(""), + TASK_START(""), + TWEETS_HOME_TIMELINE(""), + TWEETS_USER_TIMELINE(""), + TWEETS_MENTIONS(""), + TWEETS_FAVORITES(""), + TWEETS_RETWEETS_OF_ME(""), + USER_TWEETING(""), USER_ALL(""), - USER_TWEETS(""), + USER_FRIENDS(""), + USER_FOLLOWER(""), + USER_ON_LIST(""), + USER_NOT_YET_ON_LIST(""), + USER_CONNECTIONS(""), USER_NOT_YET_FRIENDS(""), + USER_PROFILE(""), + IMPRINT(""), + HOME(""), GET_TEST_DATA("\n"), EXCEPTION(""), LEAF(""), - DATABASE(""), - USER_NOT_YET_ON_LIST(""), - USER_CONNECTIONS(""), - USER_FRIENDS(""), - USER_FOLLOWER(""), - TASK(""), - TASK_HISTORY(""); + DATABASE(""); + Symbols(String html){ this.html=html; 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 be621bf3..42778256 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java @@ -1,6 +1,8 @@ package org.woehlke.twitterwall.oodm.entities; import org.hibernate.validator.constraints.NotEmpty; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.Query; import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; @@ -73,6 +75,22 @@ @NamedQuery( name="Tweet.getRetweetsOfMe", query="select t from Tweet t where t.taskInfo.getRetweetsOfMe=true" + ), + @NamedQuery( + name="Tweet.findTweetsForMedia", + query="select t from Tweet t join t.entities.media media where media=:media" + ), + @NamedQuery( + name="Tweet.findTweetsForMention", + query="select t from Tweet t join t.entities.mentions mention where mention=:mention" + ), + @NamedQuery( + name="Tweet.findTweetsForUrl", + query="select t from Tweet t join t.entities.urls url where url=:url" + ), + @NamedQuery( + name="Tweet.findTweetsForTickerSymbol", + query="select t from Tweet t join t.entities.tickerSymbols tickerSymbol where tickerSymbol=:tickerSymbol" ) }) @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 26e00f9e..d721cb22 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java @@ -90,6 +90,22 @@ @NamedQuery( name="User.findUsersWhoAreFollowersButNotFriends", query="select t from User as t where t.taskInfo.fetchFollower=true and t.taskInfo.fetchFriends=false" + ), + @NamedQuery( + name="User.getUsersForMedia", + query="select t from User t join t.entities.media media where media=:media" + ), + @NamedQuery( + name="User.getUsersForMention", + query="select t from User t join t.entities.mentions mention where mention=:mention" + ), + @NamedQuery( + name="User.getUsersForUrl", + query="select t from User t join t.entities.urls url where url=:url" + ), + @NamedQuery( + name="User.getUsersForTickerSymbol", + query="select t from User t join t.entities.tickerSymbols tickerSymbol where tickerSymbol=:tickerSymbol" ) }) @NamedNativeQueries({ 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 48ad6992..99effdb4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java @@ -5,8 +5,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; 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.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TweetRepositoryCustom; @@ -26,6 +25,18 @@ public interface TweetRepository extends DomainRepository,TweetRepository ) Page findByHashTag(@Param("hashtagText") String hashtagText, Pageable pageRequest); + @Query(name = "Tweet.findTweetsForMedia") + Page findTweetsForMedia(Media media, Pageable pageRequestTweet); + + @Query(name = "Tweet.findTweetsForMention") + Page findTweetsForMention(Mention mention, Pageable pageRequestTweet); + + @Query(name = "Tweet.findTweetsForUrl") + Page findTweetsForUrl(Url url, Pageable pageRequestTweet); + + @Query(name = "Tweet.findTweetsForTickerSymbol") + Page findTweetsForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestTweet); + @Query(name = "Tweet.findAllTwitterIds") Page findAllTwitterIds(Pageable pageRequest); @@ -59,6 +70,4 @@ public interface TweetRepository extends DomainRepository,TweetRepository @Query(name="Tweet.getRetweetsOfMe",nativeQuery=true) Page getRetweetsOfMe(Pageable pageRequest); - - } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java index 5004a985..0752d394 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UserRepositoryCustom; @@ -51,6 +51,18 @@ public interface UserRepository extends DomainRepository,UserRepositoryCus ) Page findUsersForHashTag(@Param("hashtagText") String hashtagText, Pageable pageRequest); + @Query(name="User.getUsersForMedia") + Page getUsersForMedia(Media media, Pageable pageRequestUser); + + @Query(name="User.getUsersForMention") + Page getUsersForMention(Mention mention, Pageable pageRequestUser); + + @Query(name="User.getUsersForUrl") + Page getUsersForUrl(Url url, Pageable pageRequestUser); + + @Query(name="User.getUsersForTickerSymbol") + Page getUsersForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestUser); + @Query(name="User.findUsersWhoAreFriendsButNotFollowers") Page findUsersWhoAreFriendsButNotFollowers(Pageable pageRequest); 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 57908189..7a1799ff 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java @@ -2,9 +2,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.*; import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.service.common.DomainObjectWithEntitiesService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; @@ -18,6 +16,14 @@ public interface TweetService extends DomainObjectWithEntitiesService,Dom Page findTweetsForHashTag(HashTag hashtag, Pageable pageRequest); + Page findTweetsForMedia(Media media, Pageable pageRequestTweet); + + Page findTweetsForMention(Mention mention, Pageable pageRequestTweet); + + Page findTweetsForUrl(Url url, Pageable pageRequestTweet); + + Page findTweetsForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestTweet); + Page findTweetsForUser(User user, Pageable pageRequest); Page findAllTweet2HashTag(Pageable pageRequest); @@ -39,5 +45,4 @@ public interface TweetService extends DomainObjectWithEntitiesService,Dom Page getFavorites(Pageable pageRequest); Page getRetweetsOfMe(Pageable pageRequest); - } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java index 1c58bd0d..ea94f64c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java @@ -2,8 +2,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.*; import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.service.common.DomainObjectWithEntitiesService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithScreenName; @@ -22,6 +21,14 @@ public interface UserService extends DomainObjectWithEntitiesService,Domai Page getUsersForHashTag(HashTag hashTag,Pageable pageRequest); + Page getUsersForMedia(Media media, Pageable pageRequestUser); + + Page getUsersForMention(Mention mention, Pageable pageRequestUser); + + Page getUsersForUrl(Url url, Pageable pageRequestUser); + + Page getUsersForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestUser); + Page getFriends(Pageable pageRequest); Page getNotYetFriendUsers(Pageable pageRequest); 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 6209277f..feefcf45 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 @@ -8,9 +8,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.*; import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.TweetRepository; @@ -39,6 +37,26 @@ public Page findTweetsForHashTag(HashTag hashtag, Pageable pageRequest) { return tweetRepository.findByHashTag(hashtag.getText(),pageRequest); } + @Override + public Page findTweetsForMedia(Media media, Pageable pageRequestTweet) { + return tweetRepository.findTweetsForMedia(media,pageRequestTweet); + } + + @Override + public Page findTweetsForMention(Mention mention, Pageable pageRequestTweet) { + return tweetRepository.findTweetsForMention(mention,pageRequestTweet); + } + + @Override + public Page findTweetsForUrl(Url url, Pageable pageRequestTweet) { + return tweetRepository.findTweetsForUrl(url, pageRequestTweet); + } + + @Override + public Page findTweetsForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestTweet) { + return tweetRepository.findTweetsForTickerSymbol(tickerSymbol,pageRequestTweet); + } + @Override public Page findTweetsForUser(User user, Pageable pageRequest) { return tweetRepository.findByUser(user,pageRequest); 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 dd9dd722..169d20ed 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 @@ -8,8 +8,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.*; import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.UserRepository; @@ -96,6 +95,26 @@ public Page getUsersForHashTag(HashTag hashTag, Pageable pageRequest) { return userRepository.findUsersForHashTag(hashTag.getText(),pageRequest); } + @Override + public Page getUsersForMedia(Media media, Pageable pageRequestUser) { + return userRepository.getUsersForMedia(media, pageRequestUser); + } + + @Override + public Page getUsersForMention(Mention mention, Pageable pageRequestUser) { + return userRepository.getUsersForMention(mention, pageRequestUser); + } + + @Override + public Page getUsersForUrl(Url url, Pageable pageRequestUser) { + return userRepository.getUsersForUrl(url,pageRequestUser); + } + + @Override + public Page getUsersForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestUser) { + return userRepository.getUsersForTickerSymbol(tickerSymbol,pageRequestUser); + } + @Override public Page getFriends(Pageable pageRequest) { return userRepository.findFriendUsers(pageRequest); diff --git a/src/main/resources/templates/media/id.html b/src/main/resources/templates/media/id.html new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/templates/mention/id.html b/src/main/resources/templates/mention/id.html new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/templates/tickersymbol/id.html b/src/main/resources/templates/tickersymbol/id.html new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/templates/url/id.html b/src/main/resources/templates/url/id.html new file mode 100644 index 00000000..e69de29b 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 374d75e4..7b7d9480 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java @@ -101,8 +101,8 @@ private HashTag findOneHashTag(){ @Commit @WithAnonymousUser @Test - public void findByIdTest() throws Exception { - String msg ="findByIdTest: "; + public void findHashTagById() throws Exception { + String msg ="findHashTagById: "; HashTag hashTag = findOneHashTag(); long id = hashTag.getId(); MvcResult result = this.mockMvc.perform(get("/hashtag/"+id)) 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 cc26b790..b56e651f 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java @@ -8,6 +8,10 @@ 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.data.domain.Page; +import org.springframework.data.domain.PageRequest; +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; @@ -15,12 +19,16 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; +import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.service.MediaService; 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; +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -29,6 +37,9 @@ public class MediaControllerTest { private static final Logger log = LoggerFactory.getLogger(MediaControllerTest.class); + @Autowired + private MediaService mediaService; + @Autowired private MediaController controller; @@ -75,4 +86,43 @@ public void getAllTest() throws Exception { log.info(msg+"#######################################"); Assert.assertTrue(true); } + + @Commit + @WithMockUser + @Test + public void getMediaById() throws Exception { + String msg ="getMediaById: "; + Media oneMedia = findOneMedia(); + if(oneMedia != null) { + long id = oneMedia.getId(); + MvcResult result = this.mockMvc.perform(get("/media/" + id)) + .andExpect(status().isOk()) + .andExpect(view().name("media/id")) + .andExpect(model().attributeExists("users")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("media")) + .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); + } + } + + private Media findOneMedia() { + int size = 1; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, size); + Page mediaPage = mediaService.getAll(pageRequest); + if(mediaPage.getContent().size()>0){ + return mediaPage.getContent().iterator().next(); + } else { + return null; + } + } } 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 7c1e7f4f..81567fe6 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java @@ -8,6 +8,9 @@ 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.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @@ -15,12 +18,15 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; +import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.service.MentionService; 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; +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -32,6 +38,9 @@ public class MentionControllerTest { @Autowired private MentionController controller; + @Autowired + private MentionService mentionService; + @Autowired private PrepareDataTest prepareDataTest; @@ -76,4 +85,43 @@ public void getAllTest() throws Exception { Assert.assertTrue(true); } + @Commit + @WithMockUser + @Test + public void getMentionById() throws Exception { + String msg ="getMentionById: "; + Mention oneMention = findOneMention(); + if(oneMention != null) { + long id = oneMention.getId(); + MvcResult result = this.mockMvc.perform(get("/mention/" + id)) + .andExpect(status().isOk()) + .andExpect(view().name("mention/id")) + .andExpect(model().attributeExists("users")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("mention")) + .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); + } + } + + private Mention findOneMention() { + int size = 1; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, size); + Page mentionPage = mentionService.getAll(pageRequest); + if(mentionPage.getContent().size()>0){ + return mentionPage.getContent().iterator().next(); + } else { + return null; + } + } + } 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 f6eff05b..bb77d274 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java @@ -8,6 +8,9 @@ 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.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @@ -15,12 +18,16 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; +import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.service.TickerSymbolService; 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; +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -32,6 +39,9 @@ public class TickerSymbolControllerTest { @Autowired private TickerSymbolController controller; + @Autowired + private TickerSymbolService tickerSymbolService; + @Autowired private PrepareDataTest prepareDataTest; @@ -74,4 +84,43 @@ public void getAllTest() throws Exception { log.info(msg+"#######################################"); Assert.assertTrue(true); } + + @Commit + @WithMockUser + @Test + public void getTickerSymbolById() throws Exception { + String msg ="getTickerSymbolById: "; + TickerSymbol oneTickerSymbol = findOneTickerSymbol(); + if(oneTickerSymbol != null) { + long id = oneTickerSymbol.getId(); + MvcResult result = this.mockMvc.perform(get("/tickersymbol/" + id)) + .andExpect(status().isOk()) + .andExpect(view().name("tickersymbol/id")) + .andExpect(model().attributeExists("users")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("tickersymbol")) + .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); + } + } + + private TickerSymbol findOneTickerSymbol() { + int size = 1; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, size); + Page tickerSymbolPage = tickerSymbolService.getAll(pageRequest); + if(tickerSymbolPage.getContent().size()>0){ + return tickerSymbolPage.getContent().iterator().next(); + } else { + return null; + } + } } 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 8e844e9b..3eea66ac 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java @@ -9,6 +9,9 @@ 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.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @@ -16,12 +19,16 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; +import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.service.UrlService; 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; +import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -33,6 +40,9 @@ public class UrlControllerTest { @Autowired private UrlController controller; + @Autowired + private UrlService urlService; + @Autowired private PrepareDataTest prepareDataTest; @@ -77,4 +87,43 @@ public void getAllTest() throws Exception { Assert.assertTrue(true); } + @Commit + @WithMockUser + @Test + public void getUrlById() throws Exception { + String msg ="getUrlById: "; + Url oneUrl = findOneUrl(); + if(oneUrl != null) { + long id = oneUrl.getId(); + MvcResult result = this.mockMvc.perform(get("/url/" + id)) + .andExpect(status().isOk()) + .andExpect(view().name("url/id")) + .andExpect(model().attributeExists("users")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("url")) + .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); + } + } + + private Url findOneUrl() { + int size = 1; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, size); + Page urlPage = urlService.getAll(pageRequest); + if(urlPage.getContent().size()>0){ + return urlPage.getContent().iterator().next(); + } else { + return null; + } + } + } 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 ddf4799c..bfe10483 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java @@ -117,6 +117,82 @@ public void findTweetsForHashTag() throws Exception { log.info(msg); } + @Commit + @Test + public void findTweetsForMedia() throws Exception { + String msg = "findTweetsForMedia: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page mediaList = mediaService.getAll(pageRequest); + for(Media media:mediaList.getContent()){ + log.debug(msg+" found Media: "+media.getUniqueId()); + Page tweets = tweetService.findTweetsForMedia(media,pageRequest); + for(Tweet tweet: tweets.getContent()){ + Assert.assertTrue(tweet.getEntities().getMedia().contains(media)); + log.debug(msg+" found Tweet: "+tweet.getUniqueId()+" found Media: "+media.getUniqueId()); + } + } + log.info(msg); + } + + @Commit + @Test + public void findTweetsForMention() throws Exception { + String msg = "findTweetsForMention: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page mentionList = mentionService.getAll(pageRequest); + for(Mention mention:mentionList.getContent()){ + log.debug(msg+" found Mention: "+mention.getUniqueId()); + Page tweets = tweetService.findTweetsForMention(mention,pageRequest); + for(Tweet tweet: tweets.getContent()){ + Assert.assertTrue(tweet.getEntities().getMentions().contains(mention)); + log.debug(msg+" found Tweet: "+tweet.getUniqueId()+" found Mention: "+mention.getUniqueId()); + } + } + log.info(msg); + } + + @Commit + @Test + public void findTweetsForUrl() throws Exception { + String msg = "findTweetsForUrl: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page urlPage = urlService.getAll(pageRequest); + for(Url url:urlPage.getContent()){ + log.debug(msg+" found Url: "+url.getUniqueId()); + Page tweets = tweetService.findTweetsForUrl(url,pageRequest); + for(Tweet tweet: tweets.getContent()){ + Assert.assertTrue(tweet.getEntities().getUrls().contains(url)); + log.debug(msg+" found Tweet: "+tweet.getUniqueId()+" found Url: "+url.getUniqueId()); + } + } + log.info(msg); + } + + @Commit + @Test + public void findTweetsForTickerSymbol() throws Exception { + String msg = "findTweetsForTickerSymbol: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page tickerSymbolPage = tickerSymbolService.getAll(pageRequest); + for(TickerSymbol tickerSymbol:tickerSymbolPage.getContent()){ + log.debug(msg+" found TickerSymbol: "+tickerSymbol.getUniqueId()); + Page tweets = tweetService.findTweetsForTickerSymbol(tickerSymbol,pageRequest); + for(Tweet tweet: tweets.getContent()){ + Assert.assertTrue(tweet.getEntities().getTickerSymbols().contains(tickerSymbol)); + log.debug(msg+" found Tweet: "+tweet.getUniqueId()+" found TickerSymbol: "+tickerSymbol.getUniqueId()); + } + } + log.info(msg); + } + @Commit @Test public void findTweetsForUser() 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 8b9b162a..b5c81044 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java @@ -150,6 +150,78 @@ public void getUsersForHashTag() throws Exception { } } + @Commit + @Test + public void getUsersForMedia() throws Exception { + String msg = "getUsersForMedia: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page mediaPage = mediaService.getAll(pageRequest); + for(Media media:mediaPage.getContent()){ + log.debug(msg+" found Media: "+media.getUniqueId()); + Page users = userService.getUsersForMedia(media,pageRequest); + for(User user: users.getContent()){ + log.debug(msg+" found Media: "+user.getUniqueId()); + Assert.assertTrue(user.getEntities().getMedia().contains(media)); + } + } + } + + @Commit + @Test + public void getUsersForMention() throws Exception { + String msg = "getUsersForMention: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page mentionPage = mentionService.getAll(pageRequest); + for(Mention mention:mentionPage.getContent()){ + log.debug(msg+" found Mention: "+mention.getUniqueId()); + Page users = userService.getUsersForMention(mention,pageRequest); + for(User user: users.getContent()){ + log.debug(msg+" found Mention: "+user.getUniqueId()); + Assert.assertTrue(user.getEntities().getMentions().contains(mention)); + } + } + } + + @Commit + @Test + public void getUsersForUrl() throws Exception { + String msg = "getUsersForUrl: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page urlPage = urlService.getAll(pageRequest); + for(Url url:urlPage.getContent()){ + log.debug(msg+" found Url: "+url.getUniqueId()); + Page users = userService.getUsersForUrl(url,pageRequest); + for(User user: users.getContent()){ + log.debug(msg+" found User: "+user.getUniqueId()); + Assert.assertTrue(user.getEntities().getUrls().contains(url)); + } + } + } + + @Commit + @Test + public void getUsersForTickerSymbol() throws Exception { + String msg = "getUsersForTickerSymbol: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page tickerSymbolPage = tickerSymbolService.getAll(pageRequest); + for(TickerSymbol tickerSymbol:tickerSymbolPage.getContent()){ + log.debug(msg+" found TickerSymbol: "+tickerSymbol.getUniqueId()); + Page users = userService.getUsersForTickerSymbol(tickerSymbol,pageRequest); + for(User user: users.getContent()){ + log.debug(msg+" found User: "+user.getUniqueId()); + Assert.assertTrue(user.getEntities().getTickerSymbols().contains(tickerSymbol)); + } + } + } + @Commit @Test public void getFriends() throws Exception { From d954192da91262a66737a96ab3eeb653d80b6389 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Fri, 18 Aug 2017 01:45:39 +0200 Subject: [PATCH 04/45] fixed #266 --- src/main/resources/templates/hashtag/all.html | 9 ++++++++- src/main/resources/templates/media/all.html | 9 ++++++++- src/main/resources/templates/mention/all.html | 9 ++++++++- src/main/resources/templates/tickersymbol/all.html | 9 ++++++++- src/main/resources/templates/url/all.html | 9 ++++++++- src/main/resources/templates/userlist/all.html | 9 ++++++++- 6 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/main/resources/templates/hashtag/all.html b/src/main/resources/templates/hashtag/all.html index fecd57d2..d5e11ae0 100644 --- a/src/main/resources/templates/hashtag/all.html +++ b/src/main/resources/templates/hashtag/all.html @@ -27,7 +27,14 @@ - + + + + id + + + diff --git a/src/main/resources/templates/media/all.html b/src/main/resources/templates/media/all.html index 131ad6cf..7382c86d 100644 --- a/src/main/resources/templates/media/all.html +++ b/src/main/resources/templates/media/all.html @@ -27,7 +27,14 @@ - + + + + id + + +
diff --git a/src/main/resources/templates/mention/all.html b/src/main/resources/templates/mention/all.html index 1acf5cfe..ff2fc795 100644 --- a/src/main/resources/templates/mention/all.html +++ b/src/main/resources/templates/mention/all.html @@ -28,7 +28,14 @@ - + + + + id + + +
diff --git a/src/main/resources/templates/tickersymbol/all.html b/src/main/resources/templates/tickersymbol/all.html index a09cb993..b1d97803 100644 --- a/src/main/resources/templates/tickersymbol/all.html +++ b/src/main/resources/templates/tickersymbol/all.html @@ -28,7 +28,14 @@ - + + + + id + + +
diff --git a/src/main/resources/templates/url/all.html b/src/main/resources/templates/url/all.html index 0605cb9f..34543b71 100644 --- a/src/main/resources/templates/url/all.html +++ b/src/main/resources/templates/url/all.html @@ -29,7 +29,14 @@ - + + + + id + + +
diff --git a/src/main/resources/templates/userlist/all.html b/src/main/resources/templates/userlist/all.html index 9fd63221..3875c7c8 100644 --- a/src/main/resources/templates/userlist/all.html +++ b/src/main/resources/templates/userlist/all.html @@ -29,7 +29,14 @@ - + + + + id + + +
From c491f4a378fb0f413d4aaf1ac7337f49d6a2e2c1 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Fri, 18 Aug 2017 02:19:48 +0200 Subject: [PATCH 05/45] fixed #266 --- src/main/resources/templates/media/id.html | 84 +++++++++++++++++++ src/main/resources/templates/mention/id.html | 84 +++++++++++++++++++ .../resources/templates/tickersymbol/id.html | 84 +++++++++++++++++++ src/main/resources/templates/url/id.html | 84 +++++++++++++++++++ src/main/resources/templates/userlist/id.html | 84 +++++++++++++++++++ 5 files changed, 420 insertions(+) diff --git a/src/main/resources/templates/media/id.html b/src/main/resources/templates/media/id.html index e69de29b..6c6ae3b9 100644 --- a/src/main/resources/templates/media/id.html +++ b/src/main/resources/templates/media/id.html @@ -0,0 +1,84 @@ + + + + + +
+
+
+
+
+

Tweets with the Mention Mention

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+ + + + + + + +
+
+
+
+

Users with the Mention Mention

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+ + + diff --git a/src/main/resources/templates/mention/id.html b/src/main/resources/templates/mention/id.html index e69de29b..afac1709 100644 --- a/src/main/resources/templates/mention/id.html +++ b/src/main/resources/templates/mention/id.html @@ -0,0 +1,84 @@ + + + + + +
+
+
+
+
+

Tweets with the Media Media

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+ + + + + + + +
+
+
+
+

Users with the Media Media

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+ + + diff --git a/src/main/resources/templates/tickersymbol/id.html b/src/main/resources/templates/tickersymbol/id.html index e69de29b..eca1ba81 100644 --- a/src/main/resources/templates/tickersymbol/id.html +++ b/src/main/resources/templates/tickersymbol/id.html @@ -0,0 +1,84 @@ + + + + + +
+
+
+
+
+

Tweets with the TickerSymbol TickerSymbol

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+ + + + + + + +
+
+
+
+

Users with the TickerSymbol TickerSymbol

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+ + + diff --git a/src/main/resources/templates/url/id.html b/src/main/resources/templates/url/id.html index e69de29b..f0b55df3 100644 --- a/src/main/resources/templates/url/id.html +++ b/src/main/resources/templates/url/id.html @@ -0,0 +1,84 @@ + + + + + +
+
+
+
+
+

Tweets with the Url Url

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+ + + + + + + +
+
+
+
+

Users with the Url Url

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+ + + diff --git a/src/main/resources/templates/userlist/id.html b/src/main/resources/templates/userlist/id.html index e69de29b..cd10999c 100644 --- a/src/main/resources/templates/userlist/id.html +++ b/src/main/resources/templates/userlist/id.html @@ -0,0 +1,84 @@ + + + + + +
+
+
+
+
+

Tweets with the UserList UserList

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+ + + + + + + +
+
+
+
+

Users with the UserList UserList

+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+ + + + + + + +
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+ + + From 5d527a7bfefe7ba91baee61a11406ca9b8399e79 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Fri, 18 Aug 2017 04:04:09 +0200 Subject: [PATCH 06/45] fixed #266 --- .../controller/MentionController.java | 2 +- .../controller/TickerSymbolController.java | 2 +- .../frontend/controller/UrlController.java | 2 +- .../controller/UserListController.java | 9 +- .../twitterwall/oodm/entities/Tweet.java | 2 +- .../twitterwall/oodm/entities/User.java | 2 +- .../oodm/repositories/TweetRepository.java | 8 +- .../oodm/repositories/UserRepository.java | 8 +- .../twitterwall/oodm/service/UserService.java | 2 + .../oodm/service/impl/UserServiceImpl.java | 12 ++ src/main/resources/templates/hashtag/all.html | 2 +- src/main/resources/templates/media/all.html | 2 +- src/main/resources/templates/media/id.html | 55 ++++++++- src/main/resources/templates/mention/all.html | 5 +- src/main/resources/templates/mention/id.html | 52 ++++++++- .../resources/templates/tickersymbol/all.html | 2 +- src/main/resources/templates/url/all.html | 2 +- src/main/resources/templates/url/id.html | 29 +++++ .../resources/templates/userlist/all.html | 2 +- src/main/resources/templates/userlist/id.html | 106 +++++++++++++----- 20 files changed, 257 insertions(+), 49 deletions(-) diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java index d76e8a44..7b489726 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java @@ -75,7 +75,7 @@ public String getMentionById( Page users = userService.getUsersForMention(mention,pageRequestUser); model.addAttribute("users", users); model.addAttribute("mention", mention); - return "media/id"; + return "mention/id"; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java index 02fc269e..36cf36bb 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java @@ -77,7 +77,7 @@ public String getTickerSymbolById( Page users = userService.getUsersForTickerSymbol(tickerSymbol,pageRequestUser); model.addAttribute("users", users); model.addAttribute("tickerSymbol", tickerSymbol); - return "media/id"; + return "tickersymbol/id"; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java index c2d6dd6a..5524170c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java @@ -75,7 +75,7 @@ public String getUrlById( Page users = userService.getUsersForUrl(url,pageRequestUser); model.addAttribute("users", users); model.addAttribute("url", url); - return "media/id"; + return "url/id"; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java index e98da448..b1101690 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java @@ -16,8 +16,10 @@ 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.User; import org.woehlke.twitterwall.oodm.entities.UserList; import org.woehlke.twitterwall.oodm.service.UserListService; +import org.woehlke.twitterwall.oodm.service.UserService; @Controller @RequestMapping("/userlist") @@ -59,6 +61,8 @@ public String getUserListForId( String title = userList.getFullName(); String subtitle = userList.getDescription(); model = controllerHelper.setupPage(model, title, subtitle, symbol); + Page userPage = userService.findUsersForUserList(userList,pageRequest); + model.addAttribute("users", userPage); model.addAttribute("userList", userList); return "userlist/id"; } @@ -67,6 +71,8 @@ public String getUserListForId( private final UserListService userListService; + private final UserService userService; + private final FrontendProperties frontendProperties; private final ControllerHelper controllerHelper; @@ -74,8 +80,9 @@ public String getUserListForId( private static String title = "User List"; @Autowired - public UserListController(UserListService userListService, FrontendProperties frontendProperties, ControllerHelper controllerHelper) { + public UserListController(UserListService userListService, UserService userService, FrontendProperties frontendProperties, ControllerHelper controllerHelper) { this.userListService = userListService; + this.userService = userService; this.frontendProperties = frontendProperties; this.controllerHelper = controllerHelper; } 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 42778256..c5902f99 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java @@ -78,7 +78,7 @@ ), @NamedQuery( name="Tweet.findTweetsForMedia", - query="select t from Tweet t join t.entities.media media where media=:media" + query="select t from Tweet t join t.entities.media medium where medium=:media" ), @NamedQuery( name="Tweet.findTweetsForMention", 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 d721cb22..06fc3edf 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java @@ -93,7 +93,7 @@ ), @NamedQuery( name="User.getUsersForMedia", - query="select t from User t join t.entities.media media where media=:media" + query="select t from User t join t.entities.media medium where medium=:media" ), @NamedQuery( name="User.getUsersForMention", 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 99effdb4..d01459aa 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java @@ -26,16 +26,16 @@ public interface TweetRepository extends DomainRepository,TweetRepository Page findByHashTag(@Param("hashtagText") String hashtagText, Pageable pageRequest); @Query(name = "Tweet.findTweetsForMedia") - Page findTweetsForMedia(Media media, Pageable pageRequestTweet); + Page findTweetsForMedia(@Param("media") Media media, Pageable pageRequestTweet); @Query(name = "Tweet.findTweetsForMention") - Page findTweetsForMention(Mention mention, Pageable pageRequestTweet); + Page findTweetsForMention(@Param("mention") Mention mention, Pageable pageRequestTweet); @Query(name = "Tweet.findTweetsForUrl") - Page findTweetsForUrl(Url url, Pageable pageRequestTweet); + Page findTweetsForUrl(@Param("url") Url url, Pageable pageRequestTweet); @Query(name = "Tweet.findTweetsForTickerSymbol") - Page findTweetsForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestTweet); + Page findTweetsForTickerSymbol(@Param("tickerSymbol") TickerSymbol tickerSymbol, Pageable pageRequestTweet); @Query(name = "Tweet.findAllTwitterIds") Page findAllTwitterIds(Pageable pageRequest); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java index 0752d394..21d69aa3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java @@ -52,16 +52,16 @@ public interface UserRepository extends DomainRepository,UserRepositoryCus Page findUsersForHashTag(@Param("hashtagText") String hashtagText, Pageable pageRequest); @Query(name="User.getUsersForMedia") - Page getUsersForMedia(Media media, Pageable pageRequestUser); + Page getUsersForMedia(@Param("media") Media media, Pageable pageRequestUser); @Query(name="User.getUsersForMention") - Page getUsersForMention(Mention mention, Pageable pageRequestUser); + Page getUsersForMention(@Param("mention") Mention mention, Pageable pageRequestUser); @Query(name="User.getUsersForUrl") - Page getUsersForUrl(Url url, Pageable pageRequestUser); + Page getUsersForUrl(@Param("url") Url url, Pageable pageRequestUser); @Query(name="User.getUsersForTickerSymbol") - Page getUsersForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestUser); + Page getUsersForTickerSymbol(@Param("tickerSymbol") TickerSymbol tickerSymbol, Pageable pageRequestUser); @Query(name="User.findUsersWhoAreFriendsButNotFollowers") Page findUsersWhoAreFriendsButNotFollowers(Pageable pageRequest); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java index ea94f64c..d2275424 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java @@ -58,4 +58,6 @@ public interface UserService extends DomainObjectWithEntitiesService,Domai Page findAllUser2TickerSymbol(Pageable pageRequest); boolean isByIdTwitter(long userIdTwitter); + + Page findUsersForUserList(UserList userList, Pageable pageRequest); } 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 169d20ed..3a3511f0 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 @@ -4,6 +4,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -14,6 +15,9 @@ import org.woehlke.twitterwall.oodm.repositories.UserRepository; import org.woehlke.twitterwall.oodm.service.UserService; +import java.util.ArrayList; +import java.util.List; + /** * Created by tw on 11.06.17. @@ -160,6 +164,14 @@ public boolean isByIdTwitter(long userIdTwitter) { return ((userRepository.findByIdTwitter(userIdTwitter)) != null); } + @Override + public Page findUsersForUserList(UserList userList, Pageable pageRequest) { + List userPageContent = new ArrayList<>(); + long totalSize = 0L; + Page page = new PageImpl(userPageContent,pageRequest,totalSize); + return page; + } + @Override public User findByUniqueId(User domainExampleObject) { return userRepository.findByUniqueId(domainExampleObject); diff --git a/src/main/resources/templates/hashtag/all.html b/src/main/resources/templates/hashtag/all.html index d5e11ae0..75a4d657 100644 --- a/src/main/resources/templates/hashtag/all.html +++ b/src/main/resources/templates/hashtag/all.html @@ -30,7 +30,7 @@ - id diff --git a/src/main/resources/templates/media/all.html b/src/main/resources/templates/media/all.html index 7382c86d..7a773fd9 100644 --- a/src/main/resources/templates/media/all.html +++ b/src/main/resources/templates/media/all.html @@ -30,7 +30,7 @@ - id diff --git a/src/main/resources/templates/media/id.html b/src/main/resources/templates/media/id.html index 6c6ae3b9..2e8e277f 100644 --- a/src/main/resources/templates/media/id.html +++ b/src/main/resources/templates/media/id.html @@ -9,7 +9,58 @@
-

Tweets with the Mention Mention

+
+

Media

+
+
idTwitter:
+
+ idTwitter +
+
+
+
mediaHttps:
+ +
+
+
mediaHttps:
+ +
+
+
display:
+ +
+
+
expanded:
+ +
+
+
mediaType:
+
+ mediaType +
+
+
+
+
+
+
+

Tweets with the Media Media


@@ -38,7 +89,7 @@

Tweets with the Mention Mention
-

Users with the Mention Mention

+

Users with the Media Media


diff --git a/src/main/resources/templates/mention/all.html b/src/main/resources/templates/mention/all.html index ff2fc795..f710661d 100644 --- a/src/main/resources/templates/mention/all.html +++ b/src/main/resources/templates/mention/all.html @@ -31,7 +31,7 @@ - id @@ -49,11 +49,13 @@
+ @ screenName + @ screenName @@ -64,6 +66,7 @@
+ @ myPageItem.screenName diff --git a/src/main/resources/templates/mention/id.html b/src/main/resources/templates/mention/id.html index afac1709..6f22e79c 100644 --- a/src/main/resources/templates/mention/id.html +++ b/src/main/resources/templates/mention/id.html @@ -9,7 +9,55 @@
-

Tweets with the Media Media

+

Mention

+
+
+
idTwitter:
+
+ idTwitter +
+
+
+
screenName:
+ +
+
+
has User:
+ +
+
+
idTwitterOfUser:
+
+ idTwitterOfUser +
+
+ +
+
+
+
+
+

Tweets with the Mention Mention


@@ -38,7 +86,7 @@

Tweets with the Media Media

-

Users with the Media Media

+

Users with the Mention Mention


diff --git a/src/main/resources/templates/tickersymbol/all.html b/src/main/resources/templates/tickersymbol/all.html index b1d97803..ee9e8e9e 100644 --- a/src/main/resources/templates/tickersymbol/all.html +++ b/src/main/resources/templates/tickersymbol/all.html @@ -31,7 +31,7 @@ - id diff --git a/src/main/resources/templates/url/all.html b/src/main/resources/templates/url/all.html index 34543b71..7e355305 100644 --- a/src/main/resources/templates/url/all.html +++ b/src/main/resources/templates/url/all.html @@ -32,7 +32,7 @@ - id diff --git a/src/main/resources/templates/url/id.html b/src/main/resources/templates/url/id.html index f0b55df3..beaaf2a2 100644 --- a/src/main/resources/templates/url/id.html +++ b/src/main/resources/templates/url/id.html @@ -7,6 +7,35 @@
+
+
+

Url

+
+
+
display:
+
+ display +
+
+
+
expanded:
+ +
+
+
url:
+ +
+
+
+

Tweets with the Url Url

diff --git a/src/main/resources/templates/userlist/all.html b/src/main/resources/templates/userlist/all.html index 3875c7c8..d691f1cb 100644 --- a/src/main/resources/templates/userlist/all.html +++ b/src/main/resources/templates/userlist/all.html @@ -32,7 +32,7 @@ - id diff --git a/src/main/resources/templates/userlist/id.html b/src/main/resources/templates/userlist/id.html index cd10999c..0f152ac7 100644 --- a/src/main/resources/templates/userlist/id.html +++ b/src/main/resources/templates/userlist/id.html @@ -9,31 +9,87 @@
-

Tweets with the UserList UserList

-
-
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - +

UserList

+
+
+
idTwitter:
+
+ idTwitter +
+
+
+
name:
+
+ name +
+
+
+
fullName:
+
+ fullName +
+
+
+
uriPath:
+
+ uriPath +
+
+
+
description:
+
+ description +
+
+
+
slug:
+
+ slug +
+
+
+
isPublic:
+
+ + + + + + +
+
+
+
isFollowing:
+
+ + + + + + +
+
+
+
memberCount:
+
+ memberCount +
+
+
+
subscriberCount:
+
+ subscriberCount +
+
+
+
listOwnersScreenName:
+ +
+
From 3aa6d8f898c4d5184367c06cb1fba330befd37b4 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Fri, 18 Aug 2017 07:09:49 +0200 Subject: [PATCH 07/45] fixed #266 --- .../twitterwall/frontend/controller/TaskControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7d66f842..511dbc73 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java @@ -434,7 +434,7 @@ 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(view().name( PATH+"/start/tasksStarted")) .andExpect(model().attributeExists("task")) .andExpect(model().attributeExists("page")) .andReturn(); From ff891a3d1b9f72d0cdb8aef1bd12346c1bf270c0 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Fri, 18 Aug 2017 07:32:03 +0200 Subject: [PATCH 08/45] fixed #266 --- .../twitterwall/frontend/controller/TaskControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 511dbc73..4bdc762b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java @@ -435,7 +435,7 @@ public void getListsTest() throws Exception { MvcResult result = this.mockMvc.perform(get("/task/start/userlists")) .andExpect(status().isOk()) .andExpect(view().name( PATH+"/start/tasksStarted")) - .andExpect(model().attributeExists("task")) + .andExpect(model().attributeExists("listOfTasks")) .andExpect(model().attributeExists("page")) .andReturn(); From 210d8056e446f0f254e24a2fd8dc149cb346c023 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Fri, 18 Aug 2017 18:42:39 +0200 Subject: [PATCH 09/45] fixed #266 --- .../resources/templates/application/countedEntities.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/application/countedEntities.html b/src/main/resources/templates/application/countedEntities.html index d0c9f12d..339edfe2 100644 --- a/src/main/resources/templates/application/countedEntities.html +++ b/src/main/resources/templates/application/countedEntities.html @@ -50,8 +50,10 @@ - entityId - entityInfo + + entityId + entityInfo + From cc633a3992a7de638d7ba064b6a6699c6f77e519 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Fri, 18 Aug 2017 20:04:53 +0200 Subject: [PATCH 10/45] fixed #266 --- .../frontend/controller/LoginController.java | 2 +- .../controller/TaskHistoryController.java | 2 +- .../controller/TickerSymbolController.java | 2 +- .../frontend/controller/TweetController.java | 2 +- .../frontend/controller/common/Symbols.java | 6 +- src/main/resources/templates/layoutMain.html | 74 ++++++++++--------- 6 files changed, 50 insertions(+), 38 deletions(-) diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java index 626f65ec..7e2e1276 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java @@ -15,7 +15,7 @@ public class LoginController { @RequestMapping("/login") public String login(Model model) { log.info("-----------------------------------------"); - String symbol = Symbols.LEAF.toString(); + String symbol = Symbols.LOGIN.toString(); String title = "Login"; String subtitle = "Enter your Credentials"; model = controllerHelper.setupPage(model, title, subtitle, symbol); diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java index def07262..c128b84a 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java @@ -30,7 +30,7 @@ public String getAll( ){ String subtitle = "all"; String title = "TaskHistory"; - String symbol = Symbols.DATABASE.toString(); + String symbol = Symbols.TASK_HISTORY.toString(); model = controllerHelper.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java index 36cf36bb..0091fd8f 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java @@ -66,7 +66,7 @@ public String getTickerSymbolById( String msg = "/tickersymbol/ "+tickerSymbol.getId(); String title = "TickerSymbol "+tickerSymbol.getUniqueId(); String subtitle = "List of User and Tweets for one TickerSymbol"; - String symbol = Symbols.MENTION.toString(); + String symbol = Symbols.TICKER_SYMBOL.toString(); model = controllerHelper.setupPage(model,title,subtitle,symbol); Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); 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 5be80fe1..71c52726 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java @@ -39,7 +39,7 @@ public String getLatestTweets( model, title, twitterProperties.getSearchQuery(), - Symbols.HOME.toString() + Symbols.STARTPAGE.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( 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 53a40286..1b6b1aef 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 @@ -33,10 +33,14 @@ public enum Symbols { USER_PROFILE(""), IMPRINT(""), HOME(""), + STARTPAGE(""), GET_TEST_DATA("\n"), EXCEPTION(""), LEAF(""), - DATABASE(""); + DATABASE(""), + MANAGEMENT(""), + DELETE_ALL(""), + LOGIN(""); Symbols(String html){ diff --git a/src/main/resources/templates/layoutMain.html b/src/main/resources/templates/layoutMain.html index 2aa198af..41b74fa2 100644 --- a/src/main/resources/templates/layoutMain.html +++ b/src/main/resources/templates/layoutMain.html @@ -52,7 +52,7 @@ - + AppName @@ -62,14 +62,14 @@ diff --git a/src/main/resources/templates/task/id.html b/src/main/resources/templates/task/id.html index b7ddf515..5d29eda9 100644 --- a/src/main/resources/templates/task/id.html +++ b/src/main/resources/templates/task/id.html @@ -47,7 +47,7 @@
  • timeFinished: timeFinished
  • taskType: taskType
  • taskStatus: taskStatus
  • -
  • sendType: sendType
  • +
  • taskSendType: taskSendType
  • diff --git a/src/main/resources/templates/task/start/createTestData.html b/src/main/resources/templates/task/start/createTestData.html index 032d40ca..8d7778db 100644 --- a/src/main/resources/templates/task/start/createTestData.html +++ b/src/main/resources/templates/task/start/createTestData.html @@ -24,7 +24,7 @@

    Backend Task Started.

  • timeFinished: timeFinished
  • taskType: taskType
  • taskStatus: taskStatus
  • -
  • sendType: sendType
  • +
  • taskSendType: taskSendType
  • @@ -40,7 +40,7 @@

    Backend Task Started.

  • timeFinished: timeFinished
  • taskType: taskType
  • taskStatus: taskStatus
  • -
  • sendType: sendType
  • +
  • taskSendType: taskSendType
  • diff --git a/src/main/resources/templates/task/start/taskStarted.html b/src/main/resources/templates/task/start/taskStarted.html index 34fb9c6e..d36471c9 100644 --- a/src/main/resources/templates/task/start/taskStarted.html +++ b/src/main/resources/templates/task/start/taskStarted.html @@ -24,7 +24,7 @@

    Backend Task Started.

  • timeFinished: timeFinished
  • taskType: taskType
  • taskStatus: taskStatus
  • -
  • sendType: sendType
  • +
  • taskSendType: taskSendType
  • diff --git a/src/main/resources/templates/task/start/tasksStarted.html b/src/main/resources/templates/task/start/tasksStarted.html index eb2ba17c..bf198173 100644 --- a/src/main/resources/templates/task/start/tasksStarted.html +++ b/src/main/resources/templates/task/start/tasksStarted.html @@ -24,7 +24,7 @@

    Backend Task Started.

  • timeFinished: timeFinished
  • taskType: taskType
  • taskStatus: taskStatus
  • -
  • sendType: sendType
  • +
  • taskSendType: taskSendType
  • 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 4bdc762b..9021f4f5 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java @@ -17,10 +17,10 @@ import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; import static org.assertj.core.api.Java6Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -96,8 +96,8 @@ public void getTaskByIdTest() throws Exception { CountedEntities countedEntities = countedEntitiesService.countAll(); String msg ="getTaskByIdTest: "; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; - Task task = taskService.create(msg,taskType,sendType,countedEntities); + TaskSendType taskSendType = TaskSendType.NO_MQ; + Task task = taskService.create(msg,taskType, taskSendType,countedEntities); long id = task.getId(); MvcResult result = this.mockMvc.perform(get("/task/"+id)) .andExpect(status().isOk()) diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java index 2ef41bfd..b3bd901b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java @@ -15,11 +15,11 @@ import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.User; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet; @@ -54,10 +54,10 @@ public PrepareDataTestImpl(TwitterApiService twitterApiService, StoreOneTweet st @Override public void getTestDataTweets(String msg){ - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskType taskType = TaskType.CREATE_TESTDATA_TWEETS; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create(msg, taskType, sendType, countedEntities); + Task task = taskService.create(msg, taskType, taskSendType, countedEntities); List latest = new ArrayList<>(); try { log.info(msg + "--------------------------------------------------------------------"); @@ -106,10 +106,10 @@ public void getTestDataTweets(String msg){ @Override public void getTestDataUser(String msg){ - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskType taskType = TaskType.CREATE_TESTDATA_USERS; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create(msg, taskType,sendType,countedEntities); + Task task = taskService.create(msg, taskType, taskSendType,countedEntities); List user = new ArrayList<>(); try { int loopId = 0; @@ -178,11 +178,11 @@ public void getTestDataUser(String msg){ @Override public User createUser(String screenName) { - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskType taskType = TaskType.CREATE_TESTDATA_USERS; CountedEntities countedEntities = countedEntitiesService.countAll(); String msg = "createUser for screenName="+screenName; - Task task = taskService.create(msg, taskType, sendType, countedEntities); + Task task = taskService.create(msg, taskType, taskSendType, countedEntities); log.info("-----------------------------------------"); try { log.info("screenName = "+ screenName); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java b/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java index 1fded06b..a996e742 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java @@ -5,9 +5,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import java.util.Date; @@ -22,13 +22,13 @@ public void getUniqueIdTest() throws Exception { String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; long taskId = 222L; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task.setId(taskId); String description = "Beam me up, Scotty"; @@ -54,13 +54,13 @@ public void isValidTest() throws Exception { String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; long taskId = 222L; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task.setId(taskId); String description = "Beam me up, Scotty"; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java b/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java index 248f34f4..86e6a2f7 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java @@ -4,9 +4,9 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import java.util.Date; @@ -21,7 +21,7 @@ public void getUniqueIdTest() throws Exception { String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; long taskId = 222L; TaskStatus taskStatus = TaskStatus.READY; @@ -29,7 +29,7 @@ public void getUniqueIdTest() throws Exception { Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task.setId(taskId); String myUniqueId = "" + taskType.name() +"_"+ timeStarted.getTime(); @@ -46,17 +46,17 @@ public void isValidTest() throws Exception { String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task1 = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); - Task task2 = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); - Task task3 = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); - Task task4 = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task1 = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); + Task task2 = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); + Task task3 = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); + Task task4 = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task2.setTaskType(null); task3.setTimeStarted(null); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java b/src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java index d746674e..a9848454 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java @@ -4,9 +4,9 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import java.util.Date; @@ -19,12 +19,12 @@ public class TweetTest implements DomainObjectMinimalTest { public void getUniqueIdTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); String msg = "getUniqueIdTest: "; Task createdBy = task; @@ -36,7 +36,7 @@ public void getUniqueIdTest() throws Exception { Tweet tweet = new Tweet(createdBy,updatedBy,idTwitter,idStr,text,createdAt); Assert.assertEquals(msg,idTwitter.toString(),tweet.getUniqueId()); } - + @Test @Override public void isValidTest() throws Exception { @@ -44,12 +44,12 @@ public void isValidTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); Task createdBy = task; Task updatedBy = null; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java b/src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java index c9511dca..1e284476 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java @@ -2,9 +2,9 @@ import org.junit.Assert; import org.junit.Test; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import java.util.Date; @@ -17,12 +17,12 @@ public void getUniqueIdTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); Task createdBy=task; Task updatedBy=null; @@ -42,12 +42,12 @@ public void isValidTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); Task createdBy=task; Task updatedBy=null; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java b/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java index a4876ff4..7a1c4008 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java @@ -8,10 +8,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.entities.Entities; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import java.util.ArrayList; import java.util.Date; @@ -35,14 +35,14 @@ public class UserDescriptionTest { public void printDescriptionsTest(){ String descriptionTask = "Just another Task"; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = new Date(); Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); int lfdNr = 0; List descriptions = testdataProperties.getOodm().getEntities().getUser().getDescriptions(); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java b/src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java index 1e033b54..8ab64195 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java @@ -4,9 +4,9 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; import java.util.Date; @@ -28,12 +28,12 @@ public void getUniqueIdTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType, timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType, timeStarted,timeLastUpdate,timeFinished); User user1 = User.getDummyUserForScreenName(screenName,task); @@ -75,12 +75,12 @@ public void isValidTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); Assert.assertFalse(msg,User.isValidScreenName(invalidScreenName)); 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 a83b72f6..510ccaf3 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java @@ -14,6 +14,7 @@ import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.entities.entities.Entities; import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; @RunWith(SpringRunner.class) @@ -73,7 +74,7 @@ public void findByText() throws Exception { * @throws Exception * * @see org.woehlke.twitterwall.oodm.entities.HashTag - * @see org.woehlke.twitterwall.oodm.entities.parts.Entities + * @see Entities * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllTweet2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsTweets(Pageable) @@ -95,7 +96,7 @@ public void getHashTagsTweets() throws Exception { * @throws Exception * * @see org.woehlke.twitterwall.oodm.entities.HashTag - * @see org.woehlke.twitterwall.oodm.entities.parts.Entities + * @see Entities * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllUser2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsUsers(Pageable) 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 430e12e9..3979ce32 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java @@ -17,8 +17,8 @@ import org.woehlke.twitterwall.oodm.entities.Mention; import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @@ -70,8 +70,8 @@ public void createProxyMention() throws Exception { String msg = "createProxyMention: "; CountedEntities countedEntities = countedEntitiesService.countAll(); TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; - Task task = taskService.create("MentionServiceTest."+msg,type,sendType,countedEntities); + TaskSendType taskSendType = TaskSendType.NO_MQ; + Task task = taskService.create("MentionServiceTest."+msg,type, taskSendType,countedEntities); String mentionString = "ddhgcvdghvsdhg"; Mention mention = new Mention(task,task, mentionString); Mention createdMention = mentionService.createProxyMention(mention,task); 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 2e585852..a048d0c0 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java @@ -15,9 +15,9 @@ import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @@ -64,9 +64,9 @@ public void fetchTestData() throws Exception { public void create() throws Exception { String msg = "TaskServiceTest.create"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task createdTask = taskService.create(msg,type,sendType,countedEntities); + Task createdTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(createdTask.getTaskStatus(),TaskStatus.READY); } @@ -75,9 +75,9 @@ public void create() throws Exception { public void done() throws Exception { String msg = "TaskServiceTest.done"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.done(myTask,countedEntities); @@ -90,9 +90,9 @@ public void done() throws Exception { public void error() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.error(myTask,msg,countedEntities); @@ -105,9 +105,9 @@ public void error() throws Exception { public void warn() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.warn(myTask,msg,countedEntities); @@ -120,9 +120,9 @@ public void warn() throws Exception { public void event() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); TaskStatus oldStatus = myTask.getTaskStatus(); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); @@ -136,9 +136,9 @@ public void event() throws Exception { public void start() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.start(myTask,countedEntities); @@ -151,9 +151,9 @@ public void start() throws Exception { public void finalError() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.finalError(myTask,msg,countedEntities); 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 9134136f..13651608 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 @@ -12,9 +12,10 @@ import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.AsyncStartTask; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class}) @@ -37,7 +38,7 @@ public void updateTweetsTest() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_TWEETS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -54,7 +55,7 @@ public void updateUsersTest() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -71,7 +72,7 @@ public void updateUsersFromMentionsTest() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_MENTIONS_FOR_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -88,7 +89,7 @@ public void fetchTweetsFromSearchTest() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_TWEETS_FROM_SEARCH,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -105,7 +106,7 @@ public void fetchUsersFromListTest() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_USERS_FROM_LIST,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -123,7 +124,7 @@ public void fetchFollowerTest() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FOLLOWER,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -141,7 +142,7 @@ public void fetchFriendsTest() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FRIENDS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -161,7 +162,7 @@ public void removeOldDataFromStorageTest() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.REMOVE_OLD_DATA_FROM_STORAGE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -179,7 +180,7 @@ public void getHomeTimeline() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_HOME_TIMELINE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -197,7 +198,7 @@ public void getUserTimeline() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_USER_TIMELINE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -215,7 +216,7 @@ public void getMentions() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_MENTIONS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -233,7 +234,7 @@ public void getFavorites() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FAVORITES,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -251,7 +252,7 @@ public void getRetweetsOfMe() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_RETWEETS_OF_ME,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -269,7 +270,7 @@ public void getLists() throws Exception { log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_LISTS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); 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 ebd53391..89044345 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 @@ -1,7 +1,9 @@ package org.woehlke.twitterwall.scheduled.mq.endpoint; +import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; + /** - * @see org.woehlke.twitterwall.scheduled.mq.endpoint.StartTask + * @see StartTask * @see StartTaskAsynchron */ public interface StartTaskTest extends AsyncStartTaskTest { 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 a0187baf..92c8bdf3 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 @@ -15,9 +15,10 @@ import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.User; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class}) @@ -43,7 +44,7 @@ public void updateTweetsTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_TWEETS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -60,7 +61,7 @@ public void updateUsersTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -77,7 +78,7 @@ public void updateUsersFromMentionsTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_MENTIONS_FOR_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -94,7 +95,7 @@ public void fetchTweetsFromSearchTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_TWEETS_FROM_SEARCH,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -111,7 +112,7 @@ public void fetchUsersFromListTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_USERS_FROM_LIST,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -130,7 +131,7 @@ public void fetchFollowerTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FOLLOWER,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -148,7 +149,7 @@ public void fetchFriendsTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FRIENDS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -169,7 +170,7 @@ public void removeOldDataFromStorageTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.REMOVE_OLD_DATA_FROM_STORAGE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -187,7 +188,7 @@ public void getHomeTimeline() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_HOME_TIMELINE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -205,7 +206,7 @@ public void getUserTimeline() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_USER_TIMELINE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -223,7 +224,7 @@ public void getMentions() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_MENTIONS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -241,7 +242,7 @@ public void getFavorites() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FAVORITES,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -259,7 +260,7 @@ public void getRetweetsOfMe() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_RETWEETS_OF_ME,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -277,7 +278,7 @@ public void getLists() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_LISTS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -307,7 +308,7 @@ public void createTestDataUsersTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.CREATE_TESTDATA_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -324,7 +325,7 @@ public void createTestDataTweetsTest() throws Exception { 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(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.CREATE_TESTDATA_TWEETS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); 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 e816263f..6a5f89e1 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 @@ -18,9 +18,9 @@ import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; import java.io.IOException; import java.net.URI; @@ -53,7 +53,7 @@ public void fetchUrlTest(){ String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; long taskId = 222L; TaskStatus taskStatus = TaskStatus.READY; @@ -61,7 +61,7 @@ public void fetchUrlTest(){ Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); List exprectedUrls = testdataProperties.getOodm().getEntities().getUrl().getUrl(); for(String exprectedUrl:exprectedUrls){ From e8c7c9e208144775bc80c0d67cf67e79884d6966 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Sat, 19 Aug 2017 15:59:58 +0200 Subject: [PATCH 22/45] fixed #271 --- .../woehlke/twitterwall/ScheduledTasks.java | 2 +- .../common/ControllerHelper.java | 2 +- .../{controller => }/common/Symbols.java | 2 +- .../common/impl/ControllerHelperImpl.java | 4 +- .../controller/ApplicationController.java | 4 +- .../controller/CountedEntitiesController.java | 10 +-- .../controller/HashTagController.java | 16 ++-- .../controller/ImprintController.java | 6 +- .../frontend/controller/LoginController.java | 4 +- .../frontend/controller/MediaController.java | 12 +-- .../controller/MentionController.java | 12 +-- .../frontend/controller/TaskController.java | 10 +-- .../controller/TaskHistoryController.java | 6 +- .../controller/TickerSymbolController.java | 12 +-- .../frontend/controller/TweetController.java | 6 +- .../frontend/controller/UrlController.java | 12 +-- .../frontend/controller/UserController.java | 8 +- .../controller/UserListController.java | 8 +- .../GlobalExceptionHandler.java | 4 +- .../frontend/model/TaskResourceModel.java | 4 +- .../rest/CountedEntitiesResource.java | 33 --------- .../frontend/rest/HashTagResource.java | 67 ----------------- .../frontend/rest/MediaResource.java | 56 -------------- .../frontend/rest/MentionResource.java | 56 -------------- .../frontend/rest/TaskHistoryResource.java | 50 ------------- .../frontend/rest/TaskResource.java | 58 --------------- .../frontend/rest/TickerSymbolResource.java | 52 ------------- .../frontend/rest/TweetResource.java | 73 ------------------- .../frontend/rest/UrlResource.java | 57 --------------- .../frontend/rest/UserResource.java | 58 --------------- .../common/DomainObjectWithApiCaching.java | 8 -- .../oodm/{entities => model}/HashTag.java | 12 +-- .../oodm/{entities => model}/Media.java | 14 ++-- .../oodm/{entities => model}/Mention.java | 16 ++-- .../oodm/{entities => model}/Task.java | 12 +-- .../oodm/{entities => model}/TaskHistory.java | 10 +-- .../{entities => model}/TickerSymbol.java | 12 +-- .../oodm/{entities => model}/Tweet.java | 14 ++-- .../oodm/{entities => model}/Url.java | 12 +-- .../oodm/{entities => model}/User.java | 18 ++--- .../oodm/{entities => model}/UserList.java | 10 +-- .../common/DomainObject.java | 2 +- .../common/DomainObjectEntity.java | 2 +- .../common/DomainObjectMinimal.java | 2 +- .../common/DomainObjectWithApiCaching.java | 8 ++ .../common/DomainObjectWithEntities.java | 4 +- .../common/DomainObjectWithIdTwitter.java | 2 +- .../common/DomainObjectWithScreenName.java | 2 +- .../common/DomainObjectWithTask.java | 6 +- .../common/DomainObjectWithUniqueId.java | 2 +- .../common/DomainObjectWithUrl.java | 2 +- .../common/DomainObjectWithValidation.java | 4 +- .../entities/Entities.java | 8 +- .../entities/EntitiesFilter.java | 10 +-- .../listener/HashTagListener.java | 4 +- .../listener/MediaListener.java | 4 +- .../listener/MentionListener.java | 4 +- .../listener/TaskHistoryListener.java | 4 +- .../listener/TaskListener.java | 4 +- .../listener/TickerSymbolListener.java | 4 +- .../listener/TweetListener.java | 4 +- .../listener/UrlListener.java | 4 +- .../listener/UserListListener.java | 4 +- .../listener/UserListener.java | 4 +- .../parts/AbstractDomainObject.java | 12 +-- .../parts/CountedEntities.java | 4 +- .../parts/MentionStatus.java | 2 +- .../tasks/TaskBasedCaching.java | 4 +- .../{entities => model}/tasks/TaskInfo.java | 4 +- .../tasks/TaskSendType.java | 2 +- .../{entities => model}/tasks/TaskStatus.java | 2 +- .../{entities => model}/tasks/TaskType.java | 2 +- .../transients/HashTagCounted.java | 10 +-- .../transients/Object2Entity.java | 2 +- .../transients/Object2EntityTable.java | 2 +- .../CountAllTweets2HashTagsRowMapper.java | 6 +- .../CountAllUsers2HashTagsRowMapper.java | 4 +- .../transients/mapper/RowMapperCount.java | 2 +- .../mapper/Tweet2HashTagRowMapper.java | 6 +- .../mapper/Tweet2MediaRowMapper.java | 6 +- .../mapper/Tweet2MentionRowMapper.java | 6 +- .../mapper/Tweet2TickerSymbolRowMapper.java | 6 +- .../transients/mapper/Tweet2UrlRowMapper.java | 6 +- .../mapper/User2HashTagRowMapper.java | 6 +- .../mapper/User2MediaRowMapper.java | 6 +- .../mapper/User2MentionRowMapper.java | 6 +- .../mapper/User2TickerSymbolRowMapper.java | 6 +- .../transients/mapper/User2UrlRowMapper.java | 6 +- .../oodm/repositories/HashTagRepository.java | 2 +- .../oodm/repositories/MediaRepository.java | 2 +- .../oodm/repositories/MentionRepository.java | 2 +- .../repositories/TaskHistoryRepository.java | 4 +- .../oodm/repositories/TaskRepository.java | 2 +- .../repositories/TickerSymbolRepository.java | 2 +- .../oodm/repositories/TweetRepository.java | 2 +- .../oodm/repositories/UrlRepository.java | 2 +- .../oodm/repositories/UserListRepository.java | 2 +- .../oodm/repositories/UserRepository.java | 2 +- .../common/DomainObjectEntityRepository.java | 2 +- .../common/DomainObjectMinimalRepository.java | 2 +- .../DomainObjectWithEntitiesRepository.java | 2 +- .../repositories/common/DomainRepository.java | 2 +- .../custom/HashTagRepositoryCustom.java | 4 +- .../custom/MediaRepositoryCustom.java | 2 +- .../custom/MentionRepositoryCustom.java | 2 +- .../custom/TaskHistoryRepositoryCustom.java | 2 +- .../custom/TaskRepositoryCustom.java | 2 +- .../custom/TickerSymbolRepositoryCustom.java | 2 +- .../custom/TweetRepositoryCustom.java | 4 +- .../custom/UrlRepositoryCustom.java | 2 +- .../custom/UserListRepositoryCustom.java | 2 +- .../custom/UserRepositoryCustom.java | 4 +- .../custom/impl/HashTagRepositoryImpl.java | 18 ++--- .../custom/impl/MediaRepositoryImpl.java | 2 +- .../custom/impl/MentionRepositoryImpl.java | 2 +- .../impl/TaskHistoryRepositoryImpl.java | 2 +- .../custom/impl/TaskRepositoryImpl.java | 2 +- .../impl/TickerSymbolRepositoryImpl.java | 2 +- .../custom/impl/TweetRepositoryImpl.java | 6 +- .../custom/impl/UrlRepositoryImpl.java | 2 +- .../custom/impl/UserListRepositoryImpl.java | 2 +- .../custom/impl/UserRepositoryImpl.java | 6 +- .../oodm/service/CountedEntitiesService.java | 2 +- .../oodm/service/HashTagService.java | 4 +- .../oodm/service/MediaService.java | 2 +- .../oodm/service/MentionService.java | 4 +- .../oodm/service/TaskHistoryService.java | 4 +- .../twitterwall/oodm/service/TaskService.java | 8 +- .../oodm/service/TickerSymbolService.java | 3 +- .../oodm/service/TweetService.java | 4 +- .../twitterwall/oodm/service/UrlService.java | 2 +- .../oodm/service/UserListService.java | 2 +- .../twitterwall/oodm/service/UserService.java | 4 +- .../common/DomainObjectEntityService.java | 2 +- .../common/DomainObjectMinimalService.java | 2 +- .../DomainObjectWithEntitiesService.java | 2 +- .../oodm/service/common/DomainService.java | 2 +- .../common/DomainServiceWithIdTwitter.java | 2 +- .../common/DomainServiceWithScreenName.java | 2 +- .../service/common/DomainServiceWithTask.java | 4 +- .../service/common/DomainServiceWithUrl.java | 2 +- .../impl/CountedEntitiesServiceImpl.java | 2 +- .../impl/DomainServiceWithTaskImpl.java | 4 +- .../oodm/service/impl/HashTagServiceImpl.java | 14 ++-- .../oodm/service/impl/MediaServiceImpl.java | 2 +- .../oodm/service/impl/MentionServiceImpl.java | 4 +- .../service/impl/TaskHistoryServiceImpl.java | 4 +- .../oodm/service/impl/TaskServiceImpl.java | 12 +-- .../service/impl/TickerSymbolServiceImpl.java | 2 +- .../oodm/service/impl/TweetServiceImpl.java | 4 +- .../oodm/service/impl/UrlServiceImpl.java | 2 +- .../service/impl/UserListServiceImpl.java | 2 +- .../oodm/service/impl/UserServiceImpl.java | 4 +- .../services/impl/MentionFinisherImpl.java | 4 +- .../impl/UpdateMentionWithUserImpl.java | 6 +- .../impl/UserforMentionPersistorImpl.java | 4 +- .../impl/UserforMentionTransformatorImpl.java | 4 +- .../UpdateUsersFromMentionsSplitterImpl.java | 10 +-- .../mq/endpoint/tasks/AsyncStartTask.java | 2 +- .../mq/endpoint/tasks/StartTask.java | 2 +- .../tasks/impl/AsyncStartTaskImpl.java | 8 +- .../mq/endpoint/tasks/impl/StartTaskImpl.java | 10 +-- .../services/impl/TweetFinisherImpl.java | 6 +- .../services/impl/TweetPersistorImpl.java | 4 +- .../services/impl/TweetTransformatorImpl.java | 4 +- .../CreateTestDataTweetsSplitterImpl.java | 6 +- .../splitter/impl/FavoritesSplitterImpl.java | 4 +- .../FetchTweetsFromSearchSplitterImpl.java | 4 +- .../impl/FindTweetsToRemoveSplitterImpl.java | 6 +- .../impl/HomeTimelineSplitterImpl.java | 4 +- .../splitter/impl/MentionsSplitterImpl.java | 4 +- .../impl/RetweetsOfMeSplitterImpl.java | 4 +- .../impl/UpdateTweetsSplitterImpl.java | 10 +-- .../impl/UserTimelineSplitterImpl.java | 4 +- .../services/impl/ListFinisherImpl.java | 6 +- .../services/impl/ListsPersistorImpl.java | 4 +- .../services/impl/ListsTransformatorImpl.java | 4 +- .../splitter/impl/ListsSplitterImpl.java | 4 +- .../services/impl/CreateImprintUserImpl.java | 2 +- .../users/services/impl/UserFinisherImpl.java | 6 +- .../services/impl/UserPersistorImpl.java | 4 +- .../services/impl/UserTransformatorImpl.java | 4 +- .../impl/CreateTestDataUsersSplitterImpl.java | 6 +- .../impl/FetchFollowerSplitterImpl.java | 4 +- .../impl/FetchFriendsSplitterImpl.java | 4 +- .../impl/FetchUserlistOwnersSplitterImpl.java | 10 +-- .../impl/FetchUsersFromListSplitterImpl.java | 4 +- .../impl/UpdateUsersSplitterImpl.java | 10 +-- .../scheduled/mq/msg/MentionMessage.java | 4 +- .../scheduled/mq/msg/TaskMessage.java | 4 +- .../scheduled/mq/msg/TweetMessage.java | 10 +-- .../scheduled/mq/msg/UserListMessage.java | 8 +- .../scheduled/mq/msg/UserMessage.java | 2 +- .../mq/msg/builder/MentionMessageBuilder.java | 4 +- .../mq/msg/builder/TaskMessageBuilder.java | 2 +- .../mq/msg/builder/TweetMessageBuilder.java | 2 +- .../mq/msg/builder/UserMessageBuilder.java | 2 +- .../impl/MentionMessageBuilderImpl.java | 4 +- .../builder/impl/TaskMessageBuilderImpl.java | 2 +- .../builder/impl/TweetMessageBuilderImpl.java | 2 +- .../builder/impl/UserMessageBuilderImpl.java | 2 +- .../mq/msg/results/TweetResultList.java | 2 +- .../mq/msg/results/UserListResultList.java | 2 +- .../mq/msg/results/UserResultList.java | 2 +- .../persist/CreatePersistentMention.java | 4 +- .../service/persist/CreatePersistentUrl.java | 4 +- .../service/persist/StoreEntitiesProcess.java | 8 +- .../service/persist/StoreOneTweet.java | 4 +- .../service/persist/StoreOneTweetPerform.java | 4 +- ...eTwitterProfileForProxyMentionForUser.java | 6 +- .../service/persist/StoreUserFromMention.java | 4 +- .../service/persist/StoreUserProcess.java | 4 +- .../service/persist/StoreUserProfile.java | 4 +- .../StoreUserProfileForScreenName.java | 4 +- .../persist/StoreUserProfileForUserList.java | 4 +- .../impl/CreatePersistentMentionImpl.java | 6 +- .../persist/impl/CreatePersistentUrlImpl.java | 4 +- .../impl/StoreEntitiesProcessImpl.java | 4 +- .../persist/impl/StoreOneTweetImpl.java | 4 +- .../impl/StoreOneTweetPerformImpl.java | 8 +- ...tterProfileForProxyMentionForUserImpl.java | 6 +- .../impl/StoreUserFromMentionImpl.java | 6 +- .../persist/impl/StoreUserProcessImpl.java | 6 +- .../StoreUserProfileForScreenNameImpl.java | 7 +- .../impl/StoreUserProfileForUserListImpl.java | 9 +-- .../persist/impl/StoreUserProfileImpl.java | 4 +- .../service/remote/TwitterUrlService.java | 4 +- .../remote/impl/TwitterUrlServiceImpl.java | 4 +- .../transform/EntitiesTransformService.java | 4 +- .../transform/HashTagTransformService.java | 4 +- .../transform/MediaTransformService.java | 4 +- .../transform/MentionTransformService.java | 4 +- .../TickerSymbolTransformService.java | 4 +- .../transform/TweetTransformService.java | 2 +- .../transform/UrlTransformService.java | 4 +- .../transform/UserListTransformService.java | 2 +- .../transform/UserTransformService.java | 2 +- .../transform/common/TransformService.java | 4 +- .../impl/EntitiesTransformServiceImpl.java | 4 +- .../impl/HashTagTransformServiceImpl.java | 6 +- .../impl/MediaTransformServiceImpl.java | 6 +- .../impl/MentionTransformServiceImpl.java | 6 +- .../TickerSymbolTransformServiceImpl.java | 6 +- .../impl/TweetTransformServiceImpl.java | 10 +-- .../impl/UrlTransformServiceImpl.java | 12 +-- .../impl/UserListTransformServiceImpl.java | 4 +- .../impl/UserTransformServiceImpl.java | 8 +- src/main/resources/logback.xml | 6 +- .../controller/HashTagControllerTest.java | 4 +- .../controller/MediaControllerTest.java | 6 +- .../controller/MentionControllerTest.java | 4 +- .../controller/TaskControllerTest.java | 8 +- .../TickerSymbolControllerTest.java | 5 +- .../controller/TweetControllerTest.java | 4 +- .../controller/UrlControllerTest.java | 5 +- .../controller/UserControllerTest.java | 4 +- .../controller/common/PrepareDataTest.java | 2 +- .../common/impl/PrepareDataTestImpl.java | 22 +++--- .../DomainObjectMinimalTest.java | 2 +- .../oodm/{entities => model}/HashTagTest.java | 2 +- .../oodm/{entities => model}/MediaTest.java | 2 +- .../oodm/{entities => model}/MentionTest.java | 2 +- .../{entities => model}/TaskHistoryTest.java | 10 +-- .../oodm/{entities => model}/TaskTest.java | 8 +- .../{entities => model}/TickerSymbolTest.java | 2 +- .../oodm/{entities => model}/TweetTest.java | 8 +- .../oodm/{entities => model}/UrlTest.java | 8 +- .../UserDescriptionTest.java | 10 +-- .../{entities => model}/UserListTest.java | 2 +- .../oodm/{entities => model}/UserTest.java | 8 +- .../oodm/service/HashTagServiceTest.java | 14 ++-- .../oodm/service/MediaServiceTest.java | 2 +- .../oodm/service/MentionServiceTest.java | 10 +-- .../oodm/service/TaskHistoryServiceTest.java | 2 +- .../oodm/service/TaskServiceTest.java | 10 +-- .../oodm/service/TickerSymbolServiceTest.java | 2 +- .../oodm/service/TweetServiceTest.java | 4 +- .../oodm/service/UrlServiceTest.java | 2 +- .../oodm/service/UserServiceTest.java | 6 +- .../mq/endpoint/AbstractMqEndpointTest.java | 2 +- .../mq/endpoint/AsyncStartTaskTestImpl.java | 8 +- .../mq/endpoint/StartTaskTestImpl.java | 10 +-- .../service/remote/TwitterUrlServiceTest.java | 10 +-- src/test/resources/logback.xml | 4 +- 284 files changed, 686 insertions(+), 1255 deletions(-) rename src/main/java/org/woehlke/twitterwall/frontend/{controller => }/common/ControllerHelper.java (86%) rename src/main/java/org/woehlke/twitterwall/frontend/{controller => }/common/Symbols.java (97%) rename src/main/java/org/woehlke/twitterwall/frontend/{controller => }/common/impl/ControllerHelperImpl.java (96%) rename src/main/java/org/woehlke/twitterwall/frontend/{controller/common => errorhandling}/GlobalExceptionHandler.java (94%) delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/CountedEntitiesResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/MediaResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/MentionResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/TaskHistoryResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/TaskResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/TickerSymbolResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/TweetResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/UrlResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/rest/UserResource.java delete mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithApiCaching.java rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/HashTag.java (88%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/Media.java (92%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/Mention.java (95%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/Task.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/TaskHistory.java (96%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/TickerSymbol.java (90%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/Tweet.java (96%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/Url.java (92%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/User.java (97%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/UserList.java (95%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObject.java (74%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectEntity.java (66%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectMinimal.java (85%) create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithApiCaching.java rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectWithEntities.java (67%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectWithIdTwitter.java (79%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectWithScreenName.java (85%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectWithTask.java (67%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectWithUniqueId.java (57%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectWithUrl.java (77%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/common/DomainObjectWithValidation.java (54%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/entities/Entities.java (98%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/entities/EntitiesFilter.java (98%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/HashTagListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/MediaListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/MentionListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/TaskHistoryListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/TaskListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/TickerSymbolListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/TweetListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/UrlListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/UserListListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/listener/UserListener.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/parts/AbstractDomainObject.java (93%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/parts/CountedEntities.java (99%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/parts/MentionStatus.java (87%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/tasks/TaskBasedCaching.java (99%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/tasks/TaskInfo.java (99%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/tasks/TaskSendType.java (65%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/tasks/TaskStatus.java (76%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/tasks/TaskType.java (91%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/HashTagCounted.java (86%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/Object2Entity.java (98%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/Object2EntityTable.java (85%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/CountAllTweets2HashTagsRowMapper.java (80%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/CountAllUsers2HashTagsRowMapper.java (84%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/RowMapperCount.java (82%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/Tweet2HashTagRowMapper.java (68%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/Tweet2MediaRowMapper.java (68%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/Tweet2MentionRowMapper.java (68%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/Tweet2TickerSymbolRowMapper.java (69%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/Tweet2UrlRowMapper.java (67%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/User2HashTagRowMapper.java (68%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/User2MediaRowMapper.java (68%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/User2MentionRowMapper.java (68%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/User2TickerSymbolRowMapper.java (69%) rename src/main/java/org/woehlke/twitterwall/oodm/{entities => model}/transients/mapper/User2UrlRowMapper.java (68%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/DomainObjectMinimalTest.java (74%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/HashTagTest.java (97%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/MediaTest.java (98%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/MentionTest.java (99%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/TaskHistoryTest.java (91%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/TaskTest.java (91%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/TickerSymbolTest.java (96%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/TweetTest.java (90%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/UrlTest.java (92%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/UserDescriptionTest.java (93%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/UserListTest.java (89%) rename src/test/java/org/woehlke/twitterwall/oodm/{entities => model}/UserTest.java (93%) diff --git a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java index 89656478..9236faa3 100644 --- a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java +++ b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java @@ -6,7 +6,7 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.SchedulerProperties; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.AsyncStartTask; /** diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/ControllerHelper.java b/src/main/java/org/woehlke/twitterwall/frontend/common/ControllerHelper.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/frontend/controller/common/ControllerHelper.java rename to src/main/java/org/woehlke/twitterwall/frontend/common/ControllerHelper.java index 54df3a47..6c242d68 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/ControllerHelper.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/common/ControllerHelper.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.controller.common; +package org.woehlke.twitterwall.frontend.common; import org.springframework.ui.Model; import org.springframework.web.servlet.ModelAndView; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java b/src/main/java/org/woehlke/twitterwall/frontend/common/Symbols.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java rename to src/main/java/org/woehlke/twitterwall/frontend/common/Symbols.java index 1b6b1aef..a6927219 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/common/Symbols.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.controller.common; +package org.woehlke.twitterwall.frontend.common; /** * Created by tw on 01.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java b/src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java similarity index 96% rename from src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java rename to src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java index b902ab9c..060ebe95 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.controller.common.impl; +package org.woehlke.twitterwall.frontend.common.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,7 +8,7 @@ import org.springframework.web.servlet.ModelAndView; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.frontend.model.Page; /** 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 b98a06f2..ba11d652 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java @@ -5,8 +5,8 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; 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.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; /** * Created by tw on 03.07.17. 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 b76df6b8..9056f65b 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java @@ -10,11 +10,11 @@ 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.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; import org.woehlke.twitterwall.oodm.service.*; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java index 9a39b0d3..701f20dc 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java @@ -14,12 +14,12 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.oodm.service.HashTagService; @@ -28,8 +28,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; -import static org.woehlke.twitterwall.oodm.entities.HashTag.HASHTAG_TEXT_PATTERN; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.oodm.model.HashTag.HASHTAG_TEXT_PATTERN; /** * Created by tw on 12.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java index 66fd7d5b..5a7be4b6 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java @@ -7,9 +7,9 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java index 7e2e1276..af5c794a 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java @@ -6,8 +6,8 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.common.Symbols; @Controller public class LoginController { diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java index 2f577059..61390efb 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java @@ -13,18 +13,18 @@ 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.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Media; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.Media; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.MediaService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; import javax.persistence.EntityNotFoundException; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java index 7b489726..36e49d3f 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java @@ -13,18 +13,18 @@ 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.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.MentionService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; import javax.persistence.EntityNotFoundException; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. 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 4f76825f..c6f42f3c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -14,11 +14,11 @@ 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.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskHistoryService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java index c128b84a..e3aabb67 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java @@ -10,9 +10,9 @@ 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.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.service.TaskHistoryService; /** diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java index 0091fd8f..d77fef41 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java @@ -13,18 +13,18 @@ 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.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TickerSymbolService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; import javax.persistence.EntityNotFoundException; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. 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 71c52726..361b81b3 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java @@ -14,9 +14,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TweetService; import javax.persistence.EntityNotFoundException; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java index 5524170c..1fb5369d 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java @@ -13,18 +13,18 @@ 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.Tweet; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UrlService; import org.woehlke.twitterwall.oodm.service.UserService; import javax.persistence.EntityNotFoundException; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java index 0ba7450d..f87db5d1 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java @@ -13,10 +13,10 @@ 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.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java index b1101690..7791f011 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java @@ -14,10 +14,10 @@ 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.User; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.service.UserListService; import org.woehlke.twitterwall.oodm.service.UserService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java b/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java rename to src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java index 96de7a24..13aa37be 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.controller.common; +package org.woehlke.twitterwall.frontend.errorhandling; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,6 +9,8 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; +import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.common.ControllerHelper; import javax.persistence.EntityNotFoundException; import javax.servlet.http.HttpServletRequest; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java b/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java index daf979a8..be984732 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.frontend.model; import org.springframework.data.domain.Page; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/CountedEntitiesResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/CountedEntitiesResource.java deleted file mode 100644 index 08d8619a..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/CountedEntitiesResource.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/common") -public class CountedEntitiesResource { - - @RequestMapping(path="/count",method= RequestMethod.GET) - public @ResponseBody - CountedEntities countAll(){ - return this.countedEntitiesService.countAll(); - } - - - private final CountedEntitiesService countedEntitiesService; - - @Autowired - public CountedEntitiesResource( - CountedEntitiesService countedEntitiesService - ) { - this.countedEntitiesService = countedEntitiesService; - } -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java deleted file mode 100644 index c68a7936..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -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.service.HashTagService; - - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/hashtag") -public class HashTagResource { - - @RequestMapping(path="/count",method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.hashTagService.count(); - } - - @RequestMapping(path="/all",params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.hashTagService.getAll(pageRequest); - } - - @RequestMapping(path="/overview", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getOverview( - @RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.hashTagService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - HashTag findById( - @PathVariable("id") HashTag hashTag - ) { - return hashTag; - } - - private final HashTagService hashTagService; - - private final FrontendProperties frontendProperties; - - @Autowired - public HashTagResource( - HashTagService hashTagService, - FrontendProperties frontendProperties - ) { - this.hashTagService = hashTagService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/MediaResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/MediaResource.java deleted file mode 100644 index c3cd5343..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/MediaResource.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Media; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.service.MediaService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/media") -public class MediaResource { - - @RequestMapping(path="/count", method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.mediaService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.mediaService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody Media findById( - @PathVariable("id") Media media - ) { - return media; - } - - private final MediaService mediaService; - - private final FrontendProperties frontendProperties; - - @Autowired - public MediaResource( - MediaService mediaService, - FrontendProperties frontendProperties - ) { - this.mediaService = mediaService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/MentionResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/MentionResource.java deleted file mode 100644 index c879c189..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/MentionResource.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.service.MentionService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/mention") -public class MentionResource { - - @RequestMapping(path="/count", method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.mentionService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.mentionService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody Mention findById( - @PathVariable("id") Mention mention - ) { - return mention; - } - - private final MentionService mentionService; - - private final FrontendProperties frontendProperties; - - @Autowired - public MentionResource( - MentionService mentionService, - FrontendProperties frontendProperties - ) { - this.mentionService = mentionService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskHistoryResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskHistoryResource.java deleted file mode 100644 index 20363a8b..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskHistoryResource.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.service.TaskHistoryService; - -/** - * Created by tw on 12.07.17. - */ -@Controller -@RequestMapping("/rest/taskhistory") -public class TaskHistoryResource { - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody Page countedEntities( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - Page allTasks = taskHistoryService.getAll(pageRequest); - return allTasks; - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody TaskHistory findById( - @PathVariable("id") TaskHistory taskHistory - ) { - return taskHistory; - } - - private final TaskHistoryService taskHistoryService; - - private final FrontendProperties frontendProperties; - - @Autowired - public TaskHistoryResource( - TaskHistoryService taskHistoryService, - FrontendProperties frontendProperties - ) { - this.taskHistoryService = taskHistoryService; - this.frontendProperties = frontendProperties; - } -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskResource.java deleted file mode 100644 index 4ec6fb6b..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskResource.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.model.TaskResourceModel; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.service.TaskHistoryService; -import org.woehlke.twitterwall.oodm.service.TaskService; - -/** - * Created by tw on 12.07.17. - */ -@Controller -@RequestMapping("/rest/task") -public class TaskResource { - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - Page allTasks = taskService.getAll(pageRequest); - return allTasks; - } - - @RequestMapping(path="/{id}", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody TaskResourceModel findByTaskId( - @RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, - @PathVariable long id - ) { - Task oneTask = taskService.findById(id); - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - Page taskHistoryList = taskHistoryService.findByTask(oneTask,pageRequest); - TaskResourceModel taskResourceModel = new TaskResourceModel(oneTask,taskHistoryList); - return taskResourceModel; - } - - @Autowired - public TaskResource(TaskService taskService, TaskHistoryService taskHistoryService, FrontendProperties frontendProperties) { - this.taskService = taskService; - this.taskHistoryService = taskHistoryService; - this.frontendProperties = frontendProperties; - } - - private final TaskService taskService; - - private final TaskHistoryService taskHistoryService; - - private final FrontendProperties frontendProperties; -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/TickerSymbolResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/TickerSymbolResource.java deleted file mode 100644 index 5a1560ef..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/TickerSymbolResource.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -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.TickerSymbol; -import org.woehlke.twitterwall.oodm.service.TickerSymbolService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/tickersymbol") -public class TickerSymbolResource { - - @RequestMapping(path="/count", method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.tickerSymbolService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.tickerSymbolService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - TickerSymbol findById( - @PathVariable("id") TickerSymbol tickerSymbol - ) { - return tickerSymbol; - } - - private final TickerSymbolService tickerSymbolService; - - private final FrontendProperties frontendProperties; - - @Autowired - public TickerSymbolResource(TickerSymbolService tickerSymbolService, FrontendProperties frontendProperties) { - this.tickerSymbolService = tickerSymbolService; - this.frontendProperties = frontendProperties; - } -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/TweetResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/TweetResource.java deleted file mode 100644 index 0d3c33f7..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/TweetResource.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.service.TweetService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/tweet") -public class TweetResource { - - @RequestMapping(path="/count",method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.tweetService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.tweetService.getAll(pageRequest); - } - - @RequestMapping(path="/latest", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getLatestTweets( - @RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest( - page, - frontendProperties.getPageSize(), - Sort.Direction.DESC, - "createdAt" - ); - return this.tweetService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - Tweet findById( - @PathVariable("id") Tweet tweet - ) { - return tweet; - } - - private final TweetService tweetService; - - private final FrontendProperties frontendProperties; - - @Autowired - public TweetResource( - TweetService tweetService, - FrontendProperties frontendProperties - ) { - this.tweetService = tweetService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/UrlResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/UrlResource.java deleted file mode 100644 index 267be250..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/UrlResource.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.oodm.service.UrlService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/url") -public class UrlResource { - - @RequestMapping(path="/count", method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.urlService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.urlService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - Url findById( - @PathVariable("id") Url url - ) { - return url; - } - - private final UrlService urlService; - - private final FrontendProperties frontendProperties; - - @Autowired - public UrlResource( - UrlService urlService, - FrontendProperties frontendProperties - ) { - this.urlService = urlService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/UserResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/UserResource.java deleted file mode 100644 index 199be814..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/UserResource.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -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.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.service.UserService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/user") -public class UserResource { - - @RequestMapping(path="/count",method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.userService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.userService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - User findById( - @PathVariable("id") User user - ) { - return user; - } - - private final UserService userService; - - private final FrontendProperties frontendProperties; - - @Autowired - public UserResource( - UserService userService, - FrontendProperties frontendProperties - ) { - this.userService = userService; - this.frontendProperties = frontendProperties; - } - -} 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 deleted file mode 100644 index de99da71..00000000 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithApiCaching.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.oodm.entities.common; - -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; - -public interface DomainObjectWithApiCaching { - - Boolean isCached(TaskType taskType, long timeToLive); -} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/HashTag.java b/src/main/java/org/woehlke/twitterwall/oodm/model/HashTag.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/HashTag.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/HashTag.java index aea527d6..cbe10ad8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/HashTag.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/HashTag.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.SafeHtml; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.listener.HashTagListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.listener.HashTagListener; import javax.persistence.*; import java.util.regex.Matcher; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Media.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Media.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Media.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Media.java index d5592e4e..fa99c624 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Media.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Media.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.URL; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithIdTwitter; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; -import org.woehlke.twitterwall.oodm.entities.listener.MediaListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithIdTwitter; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.listener.MediaListener; import javax.persistence.*; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Mention.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Mention.java index 0a139488..2f414856 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Mention.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithIdTwitter; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithScreenName; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.listener.MentionListener; -import org.woehlke.twitterwall.oodm.entities.parts.MentionStatus; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithIdTwitter; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithScreenName; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.listener.MentionListener; +import org.woehlke.twitterwall.oodm.model.parts.MentionStatus; import javax.persistence.*; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Task.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Task.java index eac2ebc1..1d32ccbc 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Task.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.SafeHtml; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectMinimal; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; -import org.woehlke.twitterwall.oodm.entities.listener.TaskListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectMinimal; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.listener.TaskListener; import javax.persistence.*; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java b/src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java similarity index 96% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java index bf6e9502..665ea6d9 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.SafeHtml; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectMinimal; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.listener.TaskHistoryListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectMinimal; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.listener.TaskHistoryListener; import javax.persistence.*; import javax.validation.Valid; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/TickerSymbol.java b/src/main/java/org/woehlke/twitterwall/oodm/model/TickerSymbol.java similarity index 90% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/TickerSymbol.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/TickerSymbol.java index 9d0be9b4..eb890fe3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/TickerSymbol.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/TickerSymbol.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.SafeHtml; import org.hibernate.validator.constraints.URL; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; -import org.woehlke.twitterwall.oodm.entities.listener.TickerSymbolListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.listener.TickerSymbolListener; import javax.persistence.*; import java.net.MalformedURLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Tweet.java similarity index 96% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Tweet.java index 521f946a..8fcd4000 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Tweet.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.listener.TweetListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithEntities; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.listener.TweetListener; import javax.persistence.*; import javax.validation.Valid; @@ -485,7 +485,7 @@ public String toString() { ", favoriteCount=" + favoriteCount + ",\n retweetedStatus=" + toStringRetweetedStatus() + super.toString() + - ",\n entities=" + toStringEntities() + + ",\n model=" + toStringEntities() + ",\n user=" + toStringUser() + "\n}"; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Url.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Url.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Url.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Url.java index 26b3b3e9..716d1eba 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Url.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Url.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.URL; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; -import org.woehlke.twitterwall.oodm.entities.listener.UrlListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.listener.UrlListener; import javax.persistence.*; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java b/src/main/java/org/woehlke/twitterwall/oodm/model/User.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/User.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/User.java index 44ed2457..7efaeac4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/User.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithScreenName; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.listener.UserListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithEntities; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithScreenName; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.listener.UserListener; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -814,7 +814,7 @@ public String toString() { ", friend=" + friend + ", profileBannerUrl='" + profileBannerUrl + '\'' + super.toString() + - ",\n entities=" + this.entities.toString() + + ",\n model=" + this.entities.toString() + "\n}"; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java index 8e53064c..4b681528 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; 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 org.woehlke.twitterwall.oodm.model.common.DomainObjectWithIdTwitter; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.listener.UserListListener; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; import javax.persistence.*; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObject.java similarity index 74% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObject.java index 0dd8b49e..3b525d33 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObject.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; /** diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectEntity.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectEntity.java similarity index 66% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectEntity.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectEntity.java index 20e74f60..6e65ac3e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectEntity.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectEntity.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; public interface DomainObjectEntity extends DomainObjectWithTask { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectMinimal.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectMinimal.java index 0dec201d..cfea585c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectMinimal.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithApiCaching.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithApiCaching.java new file mode 100644 index 00000000..a1e7cc73 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithApiCaching.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.oodm.model.common; + +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; + +public interface DomainObjectWithApiCaching { + + Boolean isCached(TaskType taskType, long timeToLive); +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithEntities.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithEntities.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithEntities.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithEntities.java index dd83dae9..f3322dca 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithEntities.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithEntities.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; +import org.woehlke.twitterwall.oodm.model.entities.Entities; public interface DomainObjectWithEntities extends DomainObjectWithIdTwitter,DomainObjectWithTask { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithIdTwitter.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithIdTwitter.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithIdTwitter.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithIdTwitter.java index caa578c2..676e9980 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithIdTwitter.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithIdTwitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithScreenName.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithScreenName.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithScreenName.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithScreenName.java index e5224f95..e8fe568e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithScreenName.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithScreenName.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithTask.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithTask.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithTask.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithTask.java index 17f69178..dbe56bad 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithTask.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithTask.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskInfo; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.tasks.TaskInfo; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUniqueId.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUniqueId.java index 078ff578..6c792537 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUniqueId.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; public interface DomainObjectWithUniqueId { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUrl.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUrl.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUrl.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUrl.java index d10c79a6..a4ae57c6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUrl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUrl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithValidation.java similarity index 54% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithValidation.java index c9c3c345..7c77f39e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithValidation.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; public interface DomainObjectWithValidation { - + boolean isValid(); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/entities/Entities.java b/src/main/java/org/woehlke/twitterwall/oodm/model/entities/Entities.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/entities/Entities.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/entities/Entities.java index 4e081b23..ed2c8bc8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/entities/Entities.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/entities/Entities.java @@ -1,9 +1,9 @@ -package org.woehlke.twitterwall.oodm.entities.entities; +package org.woehlke.twitterwall.oodm.model.entities; 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 org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUniqueId; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithValidation; import javax.persistence.*; import javax.validation.constraints.AssertTrue; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/entities/EntitiesFilter.java b/src/main/java/org/woehlke/twitterwall/oodm/model/entities/EntitiesFilter.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/entities/EntitiesFilter.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/entities/EntitiesFilter.java index fbc0a6b9..a99dac29 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/entities/EntitiesFilter.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/entities/EntitiesFilter.java @@ -1,15 +1,15 @@ -package org.woehlke.twitterwall.oodm.entities.entities; +package org.woehlke.twitterwall.oodm.model.entities; -import org.woehlke.twitterwall.oodm.entities.*; +import org.woehlke.twitterwall.oodm.model.*; import java.util.LinkedHashSet; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.woehlke.twitterwall.oodm.entities.HashTag.HASHTAG_TEXT_PATTERN; -import static org.woehlke.twitterwall.oodm.entities.Url.URL_PATTTERN_FOR_USER_HTTP; -import static org.woehlke.twitterwall.oodm.entities.Url.URL_PATTTERN_FOR_USER_HTTPS; +import static org.woehlke.twitterwall.oodm.model.HashTag.HASHTAG_TEXT_PATTERN; +import static org.woehlke.twitterwall.oodm.model.Url.URL_PATTTERN_FOR_USER_HTTP; +import static org.woehlke.twitterwall.oodm.model.Url.URL_PATTTERN_FOR_USER_HTTPS; /** * Created by tw on 15.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/HashTagListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/HashTagListener.java index abc52304..2c7b7cb1 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/HashTagListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.model.HashTag; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/MediaListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/MediaListener.java index beb48218..c8ce8c58 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/MediaListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/MentionListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/MentionListener.java index 8d28638e..2e56dcc8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/MentionListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskHistoryListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskHistoryListener.java index 1009cc54..2f24d6f8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskHistoryListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskListener.java index c3e273ae..39e428fa 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TickerSymbolListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/TickerSymbolListener.java index d9359aef..bd02ab5a 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TickerSymbolListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TweetListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/TweetListener.java index 0671af3a..bf54c32e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TweetListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.model.Tweet; import javax.persistence.*; /** diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UrlListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/UrlListener.java index 27b41033..b76a10dd 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UrlListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListListener.java index 8d995928..ff16a5bb 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListener.java index 1fce97c2..ab58ed6d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/AbstractDomainObject.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/parts/AbstractDomainObject.java index 49c0740f..c62b4881 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/AbstractDomainObject.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.parts; import com.fasterxml.jackson.annotation.JsonAnySetter; import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskBasedCaching; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskInfo; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.tasks.TaskBasedCaching; +import org.woehlke.twitterwall.oodm.model.tasks.TaskInfo; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import javax.persistence.*; import javax.validation.Valid; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java similarity index 99% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java index 3a164873..787b4618 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.parts; import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithValidation; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithValidation; import javax.persistence.Embeddable; import javax.persistence.Transient; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/MentionStatus.java b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/MentionStatus.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/MentionStatus.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/parts/MentionStatus.java index 3db41ffa..6fd3e940 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/MentionStatus.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/MentionStatus.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.parts; //TODO: wieder entfernen diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskBasedCaching.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java similarity index 99% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskBasedCaching.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java index e1d9ca67..82c4e764 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskBasedCaching.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.tasks; +package org.woehlke.twitterwall.oodm.model.tasks; import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import javax.persistence.Column; import javax.persistence.Embeddable; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskInfo.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java similarity index 99% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskInfo.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java index b35ace00..75d6edec 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskInfo.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.tasks; +package org.woehlke.twitterwall.oodm.model.tasks; import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import javax.persistence.Column; import javax.persistence.Embeddable; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskSendType.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskSendType.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskSendType.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskSendType.java index 9e4a3d35..c21e4515 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskSendType.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskSendType.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.tasks; +package org.woehlke.twitterwall.oodm.model.tasks; public enum TaskSendType { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskStatus.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskStatus.java similarity index 76% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskStatus.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskStatus.java index 3b224007..8f6fcf26 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskStatus.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskStatus.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.tasks; +package org.woehlke.twitterwall.oodm.model.tasks; /** * Created by tw on 10.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskType.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskType.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java index 9953f63c..855b4f73 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/tasks/TaskType.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.tasks; +package org.woehlke.twitterwall.oodm.model.tasks; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/HashTagCounted.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/HashTagCounted.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/HashTagCounted.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/HashTagCounted.java index 88d9a661..323dbe38 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/HashTagCounted.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/HashTagCounted.java @@ -1,17 +1,17 @@ -package org.woehlke.twitterwall.oodm.entities.transients; +package org.woehlke.twitterwall.oodm.model.transients; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; +import org.woehlke.twitterwall.oodm.model.entities.Entities; import java.io.Serializable; /** * Created by tw on 14.06.17. * - * @see org.woehlke.twitterwall.oodm.entities.HashTag + * @see org.woehlke.twitterwall.oodm.model.HashTag * @see Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllTweet2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllUser2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsTweets(Pageable) diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2Entity.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2Entity.java index 6cbe1c78..8cb476c3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2Entity.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.transients; +package org.woehlke.twitterwall.oodm.model.transients; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java index 8d82de0c..31cc75e9 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.transients; +package org.woehlke.twitterwall.oodm.model.transients; public enum Object2EntityTable { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllTweets2HashTagsRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllTweets2HashTagsRowMapper.java similarity index 80% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllTweets2HashTagsRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllTweets2HashTagsRowMapper.java index dc1aa061..4e80133b 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllTweets2HashTagsRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllTweets2HashTagsRowMapper.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import java.sql.ResultSet; import java.sql.SQLException; @@ -9,7 +9,7 @@ public class CountAllTweets2HashTagsRowMapper implements RowMapper { /** - * @see org.woehlke.twitterwall.oodm.entities.HashTag + * @see org.woehlke.twitterwall.oodm.model.HashTag */ public final static String SQL_COUNT_ALL_TWEET_2_HASHTAG = "select count(tweet_id) as number_of_tweets,hash_tags_id,text from tweet_hashtag,hashtag where hashtag.id = hash_tags_id group by hash_tags_id,hashtag.id order by number_of_tweets desc"; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllUsers2HashTagsRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllUsers2HashTagsRowMapper.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllUsers2HashTagsRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllUsers2HashTagsRowMapper.java index 6a46d23c..c10a8382 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllUsers2HashTagsRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllUsers2HashTagsRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/RowMapperCount.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/RowMapperCount.java index 41048500..f95d12ee 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/RowMapperCount.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2HashTagRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2HashTagRowMapper.java index a3fb2dbc..8f89a24d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2HashTagRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MediaRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MediaRowMapper.java index 71eb4081..2ebe1e2a 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MediaRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MentionRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MentionRowMapper.java index 296e8d37..58cefd15 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MentionRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2TickerSymbolRowMapper.java similarity index 69% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2TickerSymbolRowMapper.java index bc3d8642..75f6b4b2 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2TickerSymbolRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2UrlRowMapper.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2UrlRowMapper.java index 202ed6c5..0dfab941 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2UrlRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2HashTagRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2HashTagRowMapper.java index 52be0c9f..7222f149 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2HashTagRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MediaRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MediaRowMapper.java index d42cf5dc..e78649b6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MediaRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MentionRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MentionRowMapper.java index ce72ea4c..99107388 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MentionRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2TickerSymbolRowMapper.java similarity index 69% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2TickerSymbolRowMapper.java index 98022530..727ac3e6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2TickerSymbolRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2UrlRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2UrlRowMapper.java index 0fab56ac..783973af 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2UrlRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/HashTagRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/HashTagRepository.java index b560741e..bb342232 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/HashTagRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/HashTagRepository.java @@ -2,7 +2,7 @@ import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.HashTagRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/MediaRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/MediaRepository.java index 376dd684..31d412a5 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/MediaRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/MediaRepository.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.oodm.repositories; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.MediaRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/MentionRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/MentionRepository.java index 10f62708..25837ea0 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/MentionRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/MentionRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.MentionRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskHistoryRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskHistoryRepository.java index a61cf53b..c5d66ba4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskHistoryRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskHistoryRepository.java @@ -4,8 +4,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TaskHistoryRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskRepository.java index d62137ef..29ceedfc 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskRepository.java @@ -2,7 +2,7 @@ import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TaskRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TickerSymbolRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TickerSymbolRepository.java index d1e94df7..706bebd8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TickerSymbolRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TickerSymbolRepository.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.oodm.repositories; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TickerSymbolRepositoryCustom; 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 d01459aa..cdb6a9ce 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.*; +import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TweetRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UrlRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UrlRepository.java index 5c2f52ee..8920ec16 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UrlRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UrlRepository.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.oodm.repositories; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UrlRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java index e45af413..6e079d9c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.oodm.repositories; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UserListRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java index 21d69aa3..a53e8478 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.*; +import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UserRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectEntityRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectEntityRepository.java index c3308e69..d9a0e6c4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectEntityRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectEntityRepository.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; public interface DomainObjectEntityRepository extends DomainObjectMinimalRepository { } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectMinimalRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectMinimalRepository.java index 05b6a067..828e0fd3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectMinimalRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectMinimalRepository.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectMinimal; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectMinimal; public interface DomainObjectMinimalRepository { T findByUniqueId(T domainObject); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectWithEntitiesRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectWithEntitiesRepository.java index 3f567e04..ea988ca1 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectWithEntitiesRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectWithEntitiesRepository.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithEntities; public interface DomainObjectWithEntitiesRepository extends DomainObjectMinimalRepository { } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainRepository.java index 37c5c534..e1cad721 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainRepository.java @@ -2,7 +2,7 @@ import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.PagingAndSortingRepository; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; @NoRepositoryBean public interface DomainRepository extends DomainObjectMinimalRepository,PagingAndSortingRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/HashTagRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/HashTagRepositoryCustom.java index 3f116daa..ad803180 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/HashTagRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/HashTagRepositoryCustom.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface HashTagRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MediaRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MediaRepositoryCustom.java index 4d9f0d79..8e8fdc0c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MediaRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MediaRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface MediaRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MentionRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MentionRepositoryCustom.java index d12f29b7..d84839a6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MentionRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MentionRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface MentionRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskHistoryRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskHistoryRepositoryCustom.java index e5ce423a..6ad7eee1 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskHistoryRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskHistoryRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface TaskHistoryRepositoryCustom extends DomainObjectMinimalRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskRepositoryCustom.java index 180b2b6d..92914c7d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface TaskRepositoryCustom extends DomainObjectMinimalRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TickerSymbolRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TickerSymbolRepositoryCustom.java index 7ed5c557..86b85f31 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TickerSymbolRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TickerSymbolRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface TickerSymbolRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java index 1aad0512..96f06de0 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectWithEntitiesRepository; public interface TweetRepositoryCustom extends DomainObjectWithEntitiesRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UrlRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UrlRepositoryCustom.java index 24a1beb1..6022e828 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UrlRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UrlRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface UrlRepositoryCustom extends DomainObjectEntityRepository { 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 index c8f5466e..db643e95 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface UserListRepositoryCustom extends DomainObjectMinimalRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java index 73d673c0..704be0e0 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectWithEntitiesRepository; public interface UserRepositoryCustom extends DomainObjectWithEntitiesRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/HashTagRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/HashTagRepositoryImpl.java index a26934a1..225eb037 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/HashTagRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/HashTagRepositoryImpl.java @@ -6,19 +6,19 @@ import org.springframework.data.domain.Pageable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.RowMapperCount; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper; +import org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper; +import org.woehlke.twitterwall.oodm.model.transients.mapper.RowMapperCount; import org.woehlke.twitterwall.oodm.repositories.custom.HashTagRepositoryCustom; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; import java.util.List; -import static org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper.SQL_COUNT_ALL_TWEET_2_HASHTAG; -import static org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper.SQL_COUNT_ALL_USER_2_HASHTAG; +import static org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper.SQL_COUNT_ALL_TWEET_2_HASHTAG; +import static org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper.SQL_COUNT_ALL_USER_2_HASHTAG; @Repository public class HashTagRepositoryImpl implements HashTagRepositoryCustom { @@ -47,7 +47,7 @@ public HashTag findByUniqueId(HashTag domainObject) { } /** - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG */ @Override public Page countAllUser2HashTag(Pageable pageRequest) { @@ -62,7 +62,7 @@ public Page countAllUser2HashTag(Pageable pageRequest) { } /** - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG */ @Override public Page countAllTweet2HashTag(Pageable pageRequest) { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MediaRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MediaRepositoryImpl.java index 2ff4585b..b2ec3290 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MediaRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MediaRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.repositories.custom.MediaRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MentionRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MentionRepositoryImpl.java index 0dd71576..14e55b12 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MentionRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MentionRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.repositories.custom.MentionRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskHistoryRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskHistoryRepositoryImpl.java index e3e31607..98dbdc33 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskHistoryRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskHistoryRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.repositories.custom.TaskHistoryRepositoryCustom; import javax.persistence.EntityManager; 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 4fb21726..51214724 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 @@ -3,7 +3,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.repositories.custom.TaskRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TickerSymbolRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TickerSymbolRepositoryImpl.java index a74663c9..438a9ec5 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TickerSymbolRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TickerSymbolRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.repositories.custom.TickerSymbolRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java index a0ef4f95..2c963690 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java @@ -6,9 +6,9 @@ import org.springframework.data.domain.Pageable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.transients.*; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.*; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.transients.*; +import org.woehlke.twitterwall.oodm.model.transients.mapper.*; import org.woehlke.twitterwall.oodm.repositories.custom.TweetRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UrlRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UrlRepositoryImpl.java index ae3c9abb..284f2e93 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UrlRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UrlRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.repositories.custom.UrlRepositoryCustom; import javax.persistence.EntityManager; 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 index aa4c6af5..057c75d0 100644 --- 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 @@ -3,7 +3,7 @@ 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.model.UserList; import org.woehlke.twitterwall.oodm.repositories.custom.UserListRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java index e9b91cda..4508e237 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java @@ -6,9 +6,9 @@ import org.springframework.data.domain.Pageable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.transients.*; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.*; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.transients.*; +import org.woehlke.twitterwall.oodm.model.transients.mapper.*; import org.woehlke.twitterwall.oodm.repositories.custom.UserRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/CountedEntitiesService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/CountedEntitiesService.java index 861d5179..37f7fe1b 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/CountedEntitiesService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/CountedEntitiesService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/HashTagService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/HashTagService.java index 66f8ce9b..4ed15933 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/HashTagService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/HashTagService.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; import org.woehlke.twitterwall.oodm.service.common.DomainService; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/MediaService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/MediaService.java index 6ca77968..e12ccac8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/MediaService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/MediaService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithUrl; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/MentionService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/MentionService.java index dfcc5f03..7cc9c9cb 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/MentionService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/MentionService.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithScreenName; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskHistoryService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskHistoryService.java index 82b2f2cb..e041366c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskHistoryService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskHistoryService.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.service.common.DomainObjectMinimalService; /** diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java index aab0be37..ab09828c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java @@ -1,10 +1,10 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.common.DomainObjectMinimalService; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TickerSymbolService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TickerSymbolService.java index 89772537..75cc086d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TickerSymbolService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TickerSymbolService.java @@ -1,8 +1,7 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; -import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithUrl; 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 7a1799ff..517e0ce3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.service.common.DomainObjectWithEntitiesService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UrlService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UrlService.java index bda4f1f5..8b6c5280 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UrlService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UrlService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithUrl; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java index e220445f..fff3b720 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java index d2275424..6379c071 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.service.common.DomainObjectWithEntitiesService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithScreenName; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectEntityService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectEntityService.java index 2ae133bf..9aed5af8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectEntityService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectEntityService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; public interface DomainObjectEntityService extends 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 a5d66e54..84ddc4a9 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 @@ -2,7 +2,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectMinimal; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectMinimal; public interface DomainObjectMinimalService { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectWithEntitiesService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectWithEntitiesService.java index 5aca6f2f..fc6c07a4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectWithEntitiesService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectWithEntitiesService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithEntities; public interface DomainObjectWithEntitiesService extends DomainServiceWithIdTwitter,DomainServiceWithTask { } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainService.java index 25caf1dd..459e8669 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; /** * Created by tw on 24.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithIdTwitter.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithIdTwitter.java index 5099f5b9..31974c61 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithIdTwitter.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithIdTwitter.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithIdTwitter; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithIdTwitter; /** * Created by tw on 14.07.17. 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 2dea3a4c..8a34ba67 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 @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithScreenName; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithScreenName; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithTask.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithTask.java index c227febd..d0d97c5f 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithTask.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithTask.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithUrl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithUrl.java index 2f680c26..c161bcb4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithUrl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithUrl.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; /** * Created by tw on 14.07.17. 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 1bb9ef63..3fbe507f 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 @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.repositories.*; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; 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 122761fb..2cdf6ab7 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 @@ -6,8 +6,8 @@ import org.springframework.data.domain.Pageable; 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.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; 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 8fac7185..c16aad23 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 @@ -8,9 +8,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import org.woehlke.twitterwall.oodm.repositories.HashTagRepository; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.service.HashTagService; @@ -41,9 +41,9 @@ public HashTag findByText(String text) { * @param pageRequestTweets org.springframework.data.domain.Pageable * @return HashTagCounted * - * @see org.woehlke.twitterwall.oodm.entities.HashTag + * @see org.woehlke.twitterwall.oodm.model.HashTag * @see Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllTweet2HashTag(Pageable) */ @Override @@ -55,9 +55,9 @@ public Page getHashTagsTweets(Pageable pageRequestTweets) { * @param pageRequestUsers org.springframework.data.domain.Pageable * @return HashTagCounted * - * @see org.woehlke.twitterwall.oodm.entities.HashTag + * @see org.woehlke.twitterwall.oodm.model.HashTag * @see Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllUser2HashTag(Pageable) */ @Override 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 c5d7fd1a..8b2cc0ed 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 @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.repositories.MediaRepository; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.service.MediaService; 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 9ee5474d..64a15a32 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 @@ -8,8 +8,8 @@ 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.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.repositories.MentionRepository; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.service.MentionService; 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 44119e99..18d8e9f1 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 @@ -8,8 +8,8 @@ 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.TaskHistory; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.repositories.TaskHistoryRepository; import org.woehlke.twitterwall.oodm.service.TaskHistoryService; 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 1bb59442..9af154fb 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 @@ -8,12 +8,12 @@ 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.TaskHistory; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.repositories.TaskHistoryRepository; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.service.TaskService; 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 9eb47aa3..74a7cc80 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 @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.TickerSymbolRepository; import org.woehlke.twitterwall.oodm.service.TickerSymbolService; 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 feefcf45..0c07e520 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 @@ -8,8 +8,8 @@ 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.transients.*; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.TweetRepository; import org.woehlke.twitterwall.oodm.service.TweetService; 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 413633b4..a69b4815 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 @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.UrlRepository; import org.woehlke.twitterwall.oodm.service.UrlService; 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 index 64970827..76e91b9e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java @@ -6,7 +6,7 @@ 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.model.UserList; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.UserListRepository; import org.woehlke.twitterwall.oodm.service.UserListService; 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 3a3511f0..824f478c 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 @@ -9,8 +9,8 @@ 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.transients.*; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.UserRepository; import org.woehlke.twitterwall.oodm.service.UserService; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java index 0684fa1e..461b339c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java @@ -6,8 +6,8 @@ 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.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.MentionFinisher; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java index 9b0070d6..f49530b3 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java @@ -4,9 +4,9 @@ import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.MentionService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.UpdateMentionWithUser; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java index 2e084937..357d38a5 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java @@ -4,8 +4,8 @@ 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.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.UserforMentionPersistor; import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java index ad22c3cb..8294b047 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java @@ -3,8 +3,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.UserforMentionTransformator; import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java index ceee90f8..e6055723 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java @@ -8,10 +8,10 @@ import org.springframework.messaging.Message; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.MentionService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @Component("mqUpdateUserFromMentionsSplitter") public class UpdateUsersFromMentionsSplitterImpl implements UpdateUsersFromMentionsSplitter { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/AsyncStartTask.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/AsyncStartTask.java index 4281d498..73b4a17b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/AsyncStartTask.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/AsyncStartTask.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.scheduled.mq.endpoint.tasks; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; public interface AsyncStartTask { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/StartTask.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/StartTask.java index aafcb541..91e22fd7 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/StartTask.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/StartTask.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.scheduled.mq.endpoint.tasks; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; public interface StartTask extends AsyncStartTask { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java index a12e4466..9e7b3827 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java @@ -7,13 +7,13 @@ import org.springframework.integration.core.MessagingTemplate; import org.springframework.messaging.Message; 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.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.AsyncStartTask; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; import org.woehlke.twitterwall.scheduled.mq.msg.builder.TaskMessageBuilder; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/StartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/StartTaskImpl.java index 707bdb73..6e5cfa2d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/StartTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/StartTaskImpl.java @@ -8,11 +8,11 @@ import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; import org.woehlke.twitterwall.scheduled.mq.msg.*; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java index c676e5e0..300927c6 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java @@ -6,9 +6,9 @@ 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.Tweet; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl.UserFinisherImpl; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetFinisher; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java index b4d2f2f8..6d0c44d2 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java @@ -4,8 +4,8 @@ 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.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetPersistor; import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java index e460a1af..a4ca57e5 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java @@ -4,8 +4,8 @@ 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.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetTransformator; import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java index 294db14c..3bacd879 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java @@ -5,8 +5,8 @@ import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.CreateTestDataTweetsSplitter; @@ -60,7 +60,7 @@ public List> splitTweetMessage(Message incomi for (long idTwitter : userIdTwitterList) { loopId++; boolean fetchTweetFromApi = true; - org.woehlke.twitterwall.oodm.entities.Tweet tweetPers = tweetService.findByIdTwitter(idTwitter); + org.woehlke.twitterwall.oodm.model.Tweet tweetPers = tweetService.findByIdTwitter(idTwitter); if(tweetPers == null){ fetchTweetFromApi = true; } else { 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 index a615e009..c4af1532 100644 --- 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 @@ -4,8 +4,8 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FavoritesSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java index 2c1368ff..a887e06e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java @@ -4,8 +4,8 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FetchTweetsFromSearchSplitter; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java index 69ee29a8..41fb4099 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java @@ -6,9 +6,9 @@ import org.springframework.data.domain.Pageable; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; 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 index 4407ac10..77607437 100644 --- 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 @@ -4,8 +4,8 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.HomeTimelineSplitter; 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 index 4260f0e8..9baf3c65 100644 --- 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 @@ -4,8 +4,8 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.MentionsSplitter; 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 index 3325e8d5..d2a08387 100644 --- 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 @@ -4,8 +4,8 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.RetweetsOfMeSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java index 0df17dda..122327b8 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java @@ -9,8 +9,8 @@ import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.UpdateTweetsSplitter; @@ -24,7 +24,7 @@ import java.util.List; import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @Component("mqUpdateTweetsSplitter") public class UpdateTweetsSplitterImpl implements UpdateTweetsSplitter { @@ -63,8 +63,8 @@ public List> splitTweetMessage(Message incomi int lfdNr = 0; int all = 0; while(hasNext) { - Page tweetTwitterIds = tweetService.getAll(pageRequest); - for(org.woehlke.twitterwall.oodm.entities.Tweet tweetTwitterId:tweetTwitterIds.getContent()){ + Page tweetTwitterIds = tweetService.getAll(pageRequest); + for(org.woehlke.twitterwall.oodm.model.Tweet tweetTwitterId:tweetTwitterIds.getContent()){ if(!tweetTwitterId.getTaskBasedCaching().isCached(task.getTaskType(), TWELVE_HOURS)) { lfdNr++; all++; 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 index 04c0b01b..238e3d51 100644 --- 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 @@ -4,8 +4,8 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.UserTimelineSplitter; 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 index 832d4c52..18d3d8db 100644 --- 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 @@ -6,9 +6,9 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.UserList; +import org.woehlke.twitterwall.oodm.model.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; 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 index 178f8d8a..a07ed3df 100644 --- 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 @@ -4,8 +4,8 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.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; 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 index e93c55c8..8a87d50a 100644 --- 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 @@ -4,7 +4,7 @@ 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.model.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; @@ -32,7 +32,7 @@ public ListsTransformatorImpl(TaskService taskService, UserListTransformService 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); + org.woehlke.twitterwall.oodm.model.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()) 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 index 3e615c3c..9b3f4c70 100644 --- 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 @@ -4,8 +4,8 @@ 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.splitter.ListsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java index 4ac95295..7c5aec61 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java @@ -5,7 +5,7 @@ import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.CreateImprintUser; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java index 1ab68af8..afd88441 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java @@ -6,9 +6,9 @@ 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.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserFinisher; import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java index cb7c523d..8754b10b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java @@ -4,8 +4,8 @@ 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.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java index 84b33258..d2655fbc 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java @@ -4,8 +4,8 @@ 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.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java index 0ccee8ce..1a16d69a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java @@ -4,9 +4,9 @@ import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.CreateTestDataUsersSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java index 865fbd63..d41b5ccd 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java @@ -4,8 +4,8 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.CursoredList; 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchFollowerSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java index 8d8f1856..ec68e47a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java @@ -4,8 +4,8 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.CursoredList; 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.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchFriendsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java index 15d33e6d..5636b52b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java @@ -10,10 +10,10 @@ import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.UserList; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.UserList; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserListService; @@ -28,7 +28,7 @@ import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @Component("mqFetchUserlistOwnersSplitter") public class FetchUserlistOwnersSplitterImpl implements FetchUserlistOwnersSplitter { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java index 5c5567a7..a31e90a8 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java @@ -5,8 +5,8 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.conf.properties.SchedulerProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchUsersFromListSplitter; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java index 6e708551..7882e821 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java @@ -11,10 +11,10 @@ import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.UpdateUsersSplitter; @@ -28,7 +28,7 @@ import java.util.List; import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @Component("mqUpdateUserSplitter") public class UpdateUsersSplitterImpl implements UpdateUsersSplitter { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/MentionMessage.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/MentionMessage.java index d01c4eb5..1a560f76 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/MentionMessage.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/MentionMessage.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.scheduled.mq.msg; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.User; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java index fcd8ed0f..9a1c7c9d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.mq.msg; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import java.io.Serializable; import java.util.Date; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java index 44320b2a..32b8fe82 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java @@ -10,7 +10,7 @@ public class TweetMessage implements Serializable { private final TaskMessage taskMessage; private final long tweetIdTwitter; private final org.springframework.social.twitter.api.Tweet tweetFromTwitter; - private final org.woehlke.twitterwall.oodm.entities.Tweet tweet; + private final org.woehlke.twitterwall.oodm.model.Tweet tweet; private final boolean ignoreTransformation; public TweetMessage( @@ -26,7 +26,7 @@ public TweetMessage( public TweetMessage( TaskMessage taskMessage, - org.woehlke.twitterwall.oodm.entities.Tweet tweet + org.woehlke.twitterwall.oodm.model.Tweet tweet ){ this.taskMessage = taskMessage; this.tweetFromTwitter = null; @@ -39,7 +39,7 @@ public TweetMessage( TaskMessage taskMessage, long tweetIdTwitter, Tweet tweetFromTwitter, - org.woehlke.twitterwall.oodm.entities.Tweet tweet + org.woehlke.twitterwall.oodm.model.Tweet tweet ) { this.taskMessage = taskMessage; this.tweetIdTwitter = tweetIdTwitter; @@ -50,7 +50,7 @@ public TweetMessage( public TweetMessage( TaskMessage taskMessage, - org.woehlke.twitterwall.oodm.entities.Tweet myTweet, + org.woehlke.twitterwall.oodm.model.Tweet myTweet, org.springframework.social.twitter.api.Tweet tweetFromTwitter ) { this.taskMessage = taskMessage; @@ -72,7 +72,7 @@ public Tweet getTweetFromTwitter() { return tweetFromTwitter; } - public org.woehlke.twitterwall.oodm.entities.Tweet getTweet() { + public org.woehlke.twitterwall.oodm.model.Tweet getTweet() { return tweet; } 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 index a2042eb8..c061eb70 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java @@ -8,7 +8,7 @@ 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 org.woehlke.twitterwall.oodm.model.UserList userList; private final long idTwitter; public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, long idTwitter) { @@ -18,7 +18,7 @@ public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, long i this.userList = null; } - public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.entities.UserList userList, long idTwitter) { + public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.model.UserList userList, long idTwitter) { this.taskMessage = taskMessage; this.userListTwitter = userListTwitter; this.userList = userList; @@ -32,7 +32,7 @@ public UserListMessage(TaskMessage taskMessage, UserList userListTwitter) { this.idTwitter = userListTwitter.getId(); } - public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.entities.UserList userListOut) { + public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.model.UserList userListOut) { this.taskMessage = taskMessage; this.userListTwitter = userListTwitter; this.userList = userListOut; @@ -47,7 +47,7 @@ public UserList getUserListTwitter() { return userListTwitter; } - public org.woehlke.twitterwall.oodm.entities.UserList getUserList() { + public org.woehlke.twitterwall.oodm.model.UserList getUserList() { return userList; } 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 7b764669..b9b58542 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 @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.mq.msg; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/MentionMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/MentionMessageBuilder.java index 63e760a8..a7ccb60d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/MentionMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/MentionMessageBuilder.java @@ -2,8 +2,8 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TaskMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TaskMessageBuilder.java index 48f43483..fdf23e1e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TaskMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TaskMessageBuilder.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.mq.msg.builder; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; public interface TaskMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TweetMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TweetMessageBuilder.java index 2d623b9e..12d93fb9 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TweetMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TweetMessageBuilder.java @@ -7,7 +7,7 @@ public interface TweetMessageBuilder { - Message buildTweetMessage(Message incomingTaskMessage, org.woehlke.twitterwall.oodm.entities.Tweet tweet, int loopId, int loopAll); + Message buildTweetMessage(Message incomingTaskMessage, org.woehlke.twitterwall.oodm.model.Tweet tweet, int loopId, int loopAll); Message buildTweetMessage(Message incomingTaskMessage, Tweet tweet, int loopId, int loopAll); diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserMessageBuilder.java index 91c5acb2..7bd20476 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserMessageBuilder.java @@ -2,7 +2,7 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; 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/msg/builder/impl/MentionMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/MentionMessageBuilderImpl.java index 58cecda0..3c5703d0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/MentionMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/MentionMessageBuilderImpl.java @@ -4,8 +4,8 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; import org.woehlke.twitterwall.scheduled.mq.msg.builder.MentionMessageBuilder; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TaskMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TaskMessageBuilderImpl.java index 613f8541..653858e1 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TaskMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TaskMessageBuilderImpl.java @@ -3,7 +3,7 @@ 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.model.Task; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; import org.woehlke.twitterwall.scheduled.mq.msg.builder.TaskMessageBuilder; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TweetMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TweetMessageBuilderImpl.java index 4b5118f2..33c75f1b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TweetMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TweetMessageBuilderImpl.java @@ -12,7 +12,7 @@ public class TweetMessageBuilderImpl implements TweetMessageBuilder { @Override - public Message buildTweetMessage(Message incomingTaskMessage, org.woehlke.twitterwall.oodm.entities.Tweet tweet, int loopId, int loopAll){ + public Message buildTweetMessage(Message incomingTaskMessage, org.woehlke.twitterwall.oodm.model.Tweet tweet, int loopId, int loopAll){ TweetMessage outputPayload = new TweetMessage(incomingTaskMessage.getPayload(),tweet); Message mqMessageOut = MessageBuilder.withPayload(outputPayload) diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserMessageBuilderImpl.java index 21bfc5c5..d393329e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserMessageBuilderImpl.java @@ -4,7 +4,7 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/TweetResultList.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/TweetResultList.java index 431671be..438ffd01 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/TweetResultList.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/TweetResultList.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.scheduled.mq.msg.results; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.model.Tweet; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserListResultList.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserListResultList.java index 106e8c0c..baa018fc 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserListResultList.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserListResultList.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.scheduled.mq.msg.results; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserResultList.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserResultList.java index d8b93010..42e1d3b5 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserResultList.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserResultList.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.scheduled.mq.msg.results; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java index ab541ba8..5c1f65bf 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java index 97f91b1c..ad76088c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java index ad4ddc3d..759875d6 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java @@ -1,9 +1,9 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java index b04ad5d0..e4fff8e0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java index a8772a8d..805474a0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java index 58df9580..41c1b663 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java index 0b98d40d..43121480 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java index 24b8e50f..d3b8cbb0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java index 064407e7..04c5ed77 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.scheduled.service.persist; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java index f86ea1e8..2560c0f1 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.persist; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java index 4a93038f..6690b7aa 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.scheduled.service.persist; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java index b3355449..90c39df0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java @@ -4,9 +4,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.service.MentionService; import org.woehlke.twitterwall.scheduled.service.persist.StoreTwitterProfileForProxyMentionForUser; import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentMention; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java index c7f99c09..f2a7055e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java @@ -4,10 +4,10 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UrlService; import org.woehlke.twitterwall.scheduled.service.remote.TwitterUrlService; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentUrl; import java.net.MalformedURLException; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java index f1871176..24f8cd11 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java @@ -4,8 +4,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.service.*; import org.woehlke.twitterwall.scheduled.service.persist.StoreEntitiesProcess; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java index f9c2d4b5..3b6d8485 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java @@ -4,8 +4,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet; import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweetPerform; import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService; 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 c8597056..d2d73cfa 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,10 +4,10 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.scheduled.service.persist.*; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java index aeaa9717..dbd8ba16 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java @@ -7,9 +7,9 @@ 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.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.service.*; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java index 4da42849..7b3aad0a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java @@ -4,9 +4,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.scheduled.service.persist.StoreUserFromMention; import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java index 1b13b184..21dd52ae 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java @@ -4,9 +4,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.scheduled.service.persist.StoreEntitiesProcess; import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java index 8a267df4..093f3bfa 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java @@ -6,11 +6,8 @@ import org.springframework.social.RateLimitExceededException; 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.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UserService; //import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java index 3d382924..104d222f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java @@ -5,12 +5,9 @@ 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.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForUserList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java index 66c91158..6fb8e346 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java @@ -5,8 +5,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile; import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java index 05f5f384..3670449f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.remote; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java index d57b7a3a..fde9812d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java @@ -12,8 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.conf.properties.BackendProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.service.impl.UrlServiceImpl; import org.woehlke.twitterwall.scheduled.service.remote.TwitterUrlService; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java index f46e775c..2808f143 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java @@ -2,8 +2,8 @@ import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.Entities; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java index f4726cff..8c51d5d0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java @@ -2,8 +2,8 @@ import org.springframework.social.twitter.api.HashTagEntity; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java index 94be415b..b09969fe 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java @@ -2,8 +2,8 @@ import org.springframework.social.twitter.api.MediaEntity; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Media; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Media; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java index bf815ded..922ef8b2 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java @@ -3,8 +3,8 @@ import org.springframework.social.twitter.api.MentionEntity; import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java index 8bd09f0f..efddadc2 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java @@ -2,8 +2,8 @@ import org.springframework.social.twitter.api.TickerSymbolEntity; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java index e53bb315..a641431a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java @@ -5,5 +5,5 @@ /** * Created by tw on 28.06.17. */ -public interface TweetTransformService extends TransformService { +public interface TweetTransformService extends TransformService { } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java index 5f896dbd..3802d4b8 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java @@ -3,8 +3,8 @@ import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.social.twitter.api.UrlEntity; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; import java.util.Set; 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 index 3ee1ba62..d0fbbef0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java @@ -2,6 +2,6 @@ import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; -public interface UserListTransformService extends TransformService { +public interface UserListTransformService extends TransformService { } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java index a0c66c52..00e74dfb 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.transform; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.service.transform.common.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 bc25187a..efb1b46d 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 @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.service.transform.common; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; /** * Created by tw on 28.06.17. 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 7a51f395..636558d8 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 @@ -6,8 +6,8 @@ import org.springframework.social.twitter.api.*; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.scheduled.service.transform.*; import java.util.List; 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 ba840620..643052e9 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,9 @@ import org.springframework.social.twitter.api.HashTagEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.entities.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.scheduled.service.transform.HashTagTransformService; import java.util.Set; 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 c23e88c2..f69a01b5 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,9 @@ import org.springframework.social.twitter.api.MediaEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.entities.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.scheduled.service.transform.MediaTransformService; import java.util.LinkedHashSet; 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 932ec9ea..6cda5787 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 @@ -6,9 +6,9 @@ import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.entities.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.scheduled.service.transform.MentionTransformService; import java.util.Set; 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 c7bc29f0..c60cdb4a 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,9 @@ import org.springframework.social.twitter.api.TickerSymbolEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.entities.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.scheduled.service.transform.TickerSymbolTransformService; import java.util.LinkedHashSet; 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 1c0304ff..cebe8d88 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,8 +3,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.social.twitter.api.*; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.scheduled.service.transform.EntitiesTransformService; import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService; import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; @@ -29,9 +29,9 @@ public TweetTransformServiceImpl(UserTransformService userTransformService, Enti } @Override - public org.woehlke.twitterwall.oodm.entities.Tweet transform(org.springframework.social.twitter.api.Tweet tweetSource,Task task) { + public org.woehlke.twitterwall.oodm.model.Tweet transform(org.springframework.social.twitter.api.Tweet tweetSource, Task task) { if (tweetSource == null) { return null; } else { - org.woehlke.twitterwall.oodm.entities.Tweet retweetedStatus = transform(tweetSource.getRetweetedStatus(),task); + org.woehlke.twitterwall.oodm.model.Tweet retweetedStatus = transform(tweetSource.getRetweetedStatus(),task); long idTwitter = tweetSource.getId(); String idStr = tweetSource.getIdStr(); String text = tweetSource.getText(); @@ -42,7 +42,7 @@ public org.woehlke.twitterwall.oodm.entities.Tweet transform(org.springframework long fromUserId = tweetSource.getFromUserId(); String languageCode = tweetSource.getLanguageCode(); String source = tweetSource.getSource(); - org.woehlke.twitterwall.oodm.entities.Tweet tweetTarget = new org.woehlke.twitterwall.oodm.entities.Tweet(task,null,idTwitter, idStr, text, createdAt, fromUser, profileImageUrl, toUserId, fromUserId, languageCode, source); + org.woehlke.twitterwall.oodm.model.Tweet tweetTarget = new org.woehlke.twitterwall.oodm.model.Tweet(task,null,idTwitter, idStr, text, createdAt, fromUser, profileImageUrl, toUserId, fromUserId, languageCode, source); tweetTarget.setFavoriteCount(tweetSource.getFavoriteCount()); tweetTarget.setFavorited(tweetSource.isFavorited()); tweetTarget.setInReplyToScreenName(tweetSource.getInReplyToScreenName()); 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 ecba428e..518ec6e8 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 @@ -6,9 +6,9 @@ import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.social.twitter.api.UrlEntity; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.entities.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.scheduled.service.transform.UrlTransformService; import java.util.*; @@ -40,7 +40,7 @@ private Set getUrlsFromExtraDataAndText(Map extraData, Stri if(extraData.containsKey("status")){ Object o = extraData.get("status"); if(o != null && o instanceof Map) { - Object oo = ((Map) o).get("entities"); + Object oo = ((Map) o).get("model"); if(oo != null && oo instanceof Map) { Object ooo = ((Map) oo).get("urls"); if(ooo != null && ooo instanceof List) { @@ -57,8 +57,8 @@ private Set getUrlsFromExtraDataAndText(Map extraData, Stri } } } - if(extraData.containsKey("entities")){ - Object o = extraData.get("entities"); + if(extraData.containsKey("model")){ + Object o = extraData.get("model"); if(o != null && o instanceof Map) { Object oo = ((Map) o).get("url"); if(oo != null && oo instanceof Map) { 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 index a45146ec..ccac413b 100644 --- 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 @@ -1,8 +1,8 @@ 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.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.scheduled.service.transform.UserListTransformService; @Component 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 195c7d0a..c66b79a1 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,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.service.transform.EntitiesTransformService; import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; @@ -78,7 +78,7 @@ 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.getUniqueId()); + log.debug(msg+" model = "+entities.getUniqueId()); userTarget.setEntities(entities); log.debug(msg+" userTarget = "+userTarget.getUniqueId()); log.trace(msg+" userTarget = "+userTarget.toString()); diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 3cfb87ff..c09b144f 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,9 +1,9 @@ - - - + + + 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 7b7d9480..f631df89 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java @@ -19,7 +19,7 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.*; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.oodm.service.HashTagService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -27,7 +27,7 @@ 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; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 01.07.17. 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 b56e651f..cdd9d3bc 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java @@ -11,7 +11,6 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; 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; @@ -19,8 +18,7 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.service.MediaService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -28,7 +26,7 @@ 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; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) 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 81567fe6..14b2393f 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java @@ -18,7 +18,7 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.service.MentionService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -26,7 +26,7 @@ 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; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) 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 9021f4f5..aea995b7 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java @@ -15,12 +15,12 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import static org.assertj.core.api.Java6Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 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 bb77d274..6a30a5b9 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java @@ -18,8 +18,7 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.service.TickerSymbolService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -27,7 +26,7 @@ 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; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) 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 c5cf2dd9..7a1bde33 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java @@ -19,7 +19,7 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TweetService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -27,7 +27,7 @@ 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; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 19.06.17. 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 3eea66ac..c7a9c66b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java @@ -19,8 +19,7 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.service.UrlService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -28,7 +27,7 @@ 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; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) 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 461e2208..60f72e1e 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java @@ -22,7 +22,7 @@ import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.conf.properties.SchedulerProperties; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.UserService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -30,7 +30,7 @@ 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; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; /** * Created by tw on 19.06.17. diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/PrepareDataTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/PrepareDataTest.java index 5fcb0a80..3e822e25 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/PrepareDataTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/PrepareDataTest.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.frontend.controller.common; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; @Deprecated public interface PrepareDataTest { diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java index b3bd901b..25c91f60 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java @@ -11,12 +11,12 @@ import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; @@ -65,7 +65,7 @@ public void getTestDataTweets(String msg){ List idTwitterListTweets = testdataProperties.getOodm().getEntities().getTweet().getIdTwitter(); for (long idTwitter : idTwitterListTweets) { try { - org.woehlke.twitterwall.oodm.entities.Tweet persTweet = tweetService.findByIdTwitter(idTwitter); + org.woehlke.twitterwall.oodm.model.Tweet persTweet = tweetService.findByIdTwitter(idTwitter); if(persTweet != null){ loopId++; log.info(msg + "--------------------------------------------------------------------"); @@ -110,13 +110,13 @@ public void getTestDataUser(String msg){ TaskType taskType = TaskType.CREATE_TESTDATA_USERS; CountedEntities countedEntities = countedEntitiesService.countAll(); Task task = taskService.create(msg, taskType, taskSendType,countedEntities); - List user = new ArrayList<>(); + List user = new ArrayList<>(); try { int loopId = 0; List idTwitterListUsers = testdataProperties.getOodm().getEntities().getUser().getIdTwitter(); for (long idTwitter : idTwitterListUsers) { try { - org.woehlke.twitterwall.oodm.entities.User persUser = userService.findByIdTwitter(idTwitter); + org.woehlke.twitterwall.oodm.model.User persUser = userService.findByIdTwitter(idTwitter); if(persUser != null){ loopId++; user.add(persUser); @@ -141,7 +141,7 @@ public void getTestDataUser(String msg){ } } try { - org.woehlke.twitterwall.oodm.entities.User persUser = userService.findByScreenName(frontendProperties.getImprintScreenName()); + org.woehlke.twitterwall.oodm.model.User persUser = userService.findByScreenName(frontendProperties.getImprintScreenName()); if(persUser!=null){ loopId++; user.add(persUser); @@ -169,7 +169,7 @@ public void getTestDataUser(String msg){ } catch (Exception e) { log.warn(msg + e.getMessage()); } - for(org.woehlke.twitterwall.oodm.entities.User oneUser:user){ + for(org.woehlke.twitterwall.oodm.model.User oneUser:user){ log.debug(msg + oneUser.toString()); } countedEntities = countedEntitiesService.countAll(); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/DomainObjectMinimalTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/DomainObjectMinimalTest.java similarity index 74% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/DomainObjectMinimalTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/DomainObjectMinimalTest.java index fb10e0ef..1a9aff59 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/DomainObjectMinimalTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/DomainObjectMinimalTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; public interface DomainObjectMinimalTest { diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/HashTagTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/HashTagTest.java similarity index 97% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/HashTagTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/HashTagTest.java index 4eb464a9..6e14e8f7 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/HashTagTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/HashTagTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/MediaTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/MediaTest.java similarity index 98% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/MediaTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/MediaTest.java index 731bf936..3c0cd99d 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/MediaTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/MediaTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/MentionTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/MentionTest.java similarity index 99% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/MentionTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/MentionTest.java index 24725a84..3a30c19b 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/MentionTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/MentionTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/TaskHistoryTest.java similarity index 91% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/TaskHistoryTest.java index a996e742..51524338 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/TaskHistoryTest.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.Date; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/TaskTest.java similarity index 91% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/TaskTest.java index 86e6a2f7..9cb4b381 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/TaskTest.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.Date; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TickerSymbolTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/TickerSymbolTest.java similarity index 96% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/TickerSymbolTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/TickerSymbolTest.java index 26e0c807..0c503814 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TickerSymbolTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/TickerSymbolTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/TweetTest.java similarity index 90% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/TweetTest.java index a9848454..dac07fde 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/TweetTest.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.Date; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UrlTest.java similarity index 92% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/UrlTest.java index 1e284476..5c18cd1e 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UrlTest.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.Date; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java similarity index 93% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java index 7a1c4008..7ab0bdb0 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Test; import org.junit.runner.RunWith; @@ -8,10 +8,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.ArrayList; import java.util.Date; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UserListTest.java similarity index 89% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/UserListTest.java index 066dcf63..fbd310f0 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UserListTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Test; import org.slf4j.Logger; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UserTest.java similarity index 93% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/UserTest.java index 8ab64195..73bbc292 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UserTest.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import java.util.Date; 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 510ccaf3..e430187c 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java @@ -13,9 +13,9 @@ 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; -import org.woehlke.twitterwall.oodm.entities.entities.Entities; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @@ -73,9 +73,9 @@ public void findByText() throws Exception { /** * @throws Exception * - * @see org.woehlke.twitterwall.oodm.entities.HashTag + * @see org.woehlke.twitterwall.oodm.model.HashTag * @see Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllTweet2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsTweets(Pageable) */ @@ -95,9 +95,9 @@ public void getHashTagsTweets() throws Exception { /** * @throws Exception * - * @see org.woehlke.twitterwall.oodm.entities.HashTag + * @see org.woehlke.twitterwall.oodm.model.HashTag * @see Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllUser2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsUsers(Pageable) */ 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 4c142c49..cc9bd692 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java @@ -13,7 +13,7 @@ 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; +import org.woehlke.twitterwall.oodm.model.Media; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) 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 3979ce32..1d208d53 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java @@ -14,11 +14,11 @@ 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; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) 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 34ca723b..a774c74b 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java @@ -13,7 +13,7 @@ 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; +import org.woehlke.twitterwall.oodm.model.TaskHistory; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) 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 a048d0c0..e7054abb 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java @@ -13,11 +13,11 @@ 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; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) 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 c287b45d..a9991998 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java @@ -14,7 +14,7 @@ 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; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) 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 bfe10483..e638096c 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java @@ -13,8 +13,8 @@ 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.*; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; import java.util.Set; 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 5e7ff6ca..303788bd 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java @@ -13,7 +13,7 @@ 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; +import org.woehlke.twitterwall.oodm.model.Url; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) 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 b5c81044..93753eb6 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java @@ -15,12 +15,12 @@ import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; import java.util.Set; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java index 58b498a4..f91efd5a 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.scheduled.mq.endpoint; import org.junit.Assert; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; public abstract class AbstractMqEndpointTest { 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 13651608..9eb103c7 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 @@ -10,10 +10,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.Application; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.AsyncStartTask; 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 92c8bdf3..d88aa7fd 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 @@ -12,11 +12,11 @@ import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; 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 6a5f89e1..d48710a8 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 @@ -16,11 +16,11 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskSendType; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.io.IOException; import java.net.URI; diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml index ceaf1fc2..8a80976c 100644 --- a/src/test/resources/logback.xml +++ b/src/test/resources/logback.xml @@ -1,10 +1,10 @@ - + - + From 6e78a7ab70835b8c94065579a44abf8662d18ea8 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Sat, 19 Aug 2017 16:06:45 +0200 Subject: [PATCH 23/45] fixed #271 --- .../common/impl/ControllerHelperImpl.java | 2 +- .../frontend/{model => content}/Page.java | 4 +- .../frontend/{common => content}/Symbols.java | 2 +- .../controller/ApplicationController.java | 2 +- .../controller/CountedEntitiesController.java | 2 +- .../controller/HashTagController.java | 2 +- .../controller/ImprintController.java | 2 +- .../frontend/controller/LoginController.java | 2 +- .../frontend/controller/MediaController.java | 2 +- .../controller/MentionController.java | 2 +- .../frontend/controller/TaskController.java | 2 +- .../controller/TaskHistoryController.java | 2 +- .../controller/TickerSymbolController.java | 2 +- .../frontend/controller/TweetController.java | 2 +- .../frontend/controller/UrlController.java | 2 +- .../frontend/controller/UserController.java | 2 +- .../controller/UserListController.java | 2 +- .../errorhandling/GlobalExceptionHandler.java | 2 +- .../frontend/model/TaskResourceModel.java | 58 ------------------- 19 files changed, 19 insertions(+), 77 deletions(-) rename src/main/java/org/woehlke/twitterwall/frontend/{model => content}/Page.java (98%) rename src/main/java/org/woehlke/twitterwall/frontend/{common => content}/Symbols.java (98%) delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java diff --git a/src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java b/src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java index 060ebe95..bfa144f4 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java @@ -9,7 +9,7 @@ import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.model.Page; +import org.woehlke.twitterwall.frontend.content.Page; /** * Created by tw on 18.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/frontend/model/Page.java b/src/main/java/org/woehlke/twitterwall/frontend/content/Page.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/frontend/model/Page.java rename to src/main/java/org/woehlke/twitterwall/frontend/content/Page.java index 03d8e2d1..260702ca 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/model/Page.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/Page.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.model; +package org.woehlke.twitterwall.frontend.content; import java.io.Serializable; @@ -81,7 +81,7 @@ public boolean isHistoryBack() { public void setHistoryBack(boolean historyBack) { this.historyBack = historyBack; } - + public String getTheme() { return theme; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/common/Symbols.java b/src/main/java/org/woehlke/twitterwall/frontend/content/Symbols.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/frontend/common/Symbols.java rename to src/main/java/org/woehlke/twitterwall/frontend/content/Symbols.java index a6927219..02e4d19c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/common/Symbols.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/Symbols.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.common; +package org.woehlke.twitterwall.frontend.content; /** * Created by tw on 01.07.17. 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 ba11d652..2052c95f 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java @@ -5,7 +5,7 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; /** 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 9056f65b..1a291acb 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java @@ -10,7 +10,7 @@ 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.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java index 701f20dc..70d9c81f 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import org.woehlke.twitterwall.oodm.model.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java index 5a7be4b6..5fc57df8 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java @@ -7,7 +7,7 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java index af5c794a..8bdb685a 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java @@ -7,7 +7,7 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.woehlke.twitterwall.frontend.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; @Controller public class LoginController { diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java index 61390efb..df701409 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java @@ -13,7 +13,7 @@ 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.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.model.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java index 36e49d3f..f51ee260 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java @@ -13,7 +13,7 @@ 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.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.Tweet; 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 c6f42f3c..aede0200 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -14,7 +14,7 @@ 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.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.TaskHistory; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java index e3aabb67..dafd596c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java @@ -10,7 +10,7 @@ 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.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.service.TaskHistoryService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java index d77fef41..222fa9da 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java @@ -13,7 +13,7 @@ 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.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.model.Tweet; 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 361b81b3..f8bee682 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TweetService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java index 1fb5369d..9d3702ff 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java index f87db5d1..441c9427 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.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 index 7791f011..0a8e27ad 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.service.UserListService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java b/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java index 13aa37be..85add840 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java @@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; -import org.woehlke.twitterwall.frontend.common.Symbols; +import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.common.ControllerHelper; import javax.persistence.EntityNotFoundException; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java b/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java deleted file mode 100644 index be984732..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.woehlke.twitterwall.frontend.model; - -import org.springframework.data.domain.Page; -import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.oodm.model.TaskHistory; - -import java.io.Serializable; - -/** - * Created by tw on 12.07.17. - */ -public class TaskResourceModel implements Serializable { - - private Task oneTask; - private Page taskHistoryList; - - public TaskResourceModel(Task oneTask, Page taskHistoryList) { - this.oneTask = oneTask; - this.taskHistoryList = taskHistoryList; - } - - public TaskResourceModel() { - } - - public Task getOneTask() { - return oneTask; - } - - public void setOneTask(Task oneTask) { - this.oneTask = oneTask; - } - - public Page getTaskHistoryList() { - return taskHistoryList; - } - - public void setTaskHistoryList(Page taskHistoryList) { - this.taskHistoryList = taskHistoryList; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof TaskResourceModel)) return false; - - TaskResourceModel that = (TaskResourceModel) o; - - if (oneTask != null ? !oneTask.equals(that.oneTask) : that.oneTask != null) return false; - return taskHistoryList != null ? taskHistoryList.equals(that.taskHistoryList) : that.taskHistoryList == null; - } - - @Override - public int hashCode() { - int result = oneTask != null ? oneTask.hashCode() : 0; - result = 31 * result + (taskHistoryList != null ? taskHistoryList.hashCode() : 0); - return result; - } -} From 3be51b8d9c6c21e235d9adb4937c9d60535bf62b Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Sat, 19 Aug 2017 16:10:07 +0200 Subject: [PATCH 24/45] fixed #271 --- .../frontend/content/ContentFactory.java | 16 +++++ .../impl/ContentFactoryImpl.java} | 10 +-- .../controller/ApplicationController.java | 10 +-- .../controller/CountedEntitiesController.java | 34 +++++----- .../controller/HashTagController.java | 18 +++--- .../controller/ImprintController.java | 10 +-- .../frontend/controller/LoginController.java | 10 +-- .../frontend/controller/MediaController.java | 16 ++--- .../controller/MentionController.java | 16 ++--- .../frontend/controller/TaskController.java | 48 +++++++------- .../controller/TaskHistoryController.java | 12 ++-- .../controller/TickerSymbolController.java | 16 ++--- .../frontend/controller/TweetController.java | 34 +++++----- .../frontend/controller/UrlController.java | 16 ++--- .../frontend/controller/UserController.java | 64 +++++++++---------- .../controller/UserListController.java | 16 ++--- .../errorhandling/GlobalExceptionHandler.java | 12 ++-- .../UpdateUsersFromMentionsSplitterImpl.java | 2 +- .../impl/UpdateTweetsSplitterImpl.java | 2 +- .../impl/FetchUserlistOwnersSplitterImpl.java | 2 +- .../impl/UpdateUsersSplitterImpl.java | 2 +- .../controller/HashTagControllerTest.java | 2 +- .../controller/MediaControllerTest.java | 2 +- .../controller/MentionControllerTest.java | 2 +- .../TickerSymbolControllerTest.java | 2 +- .../controller/TweetControllerTest.java | 2 +- .../controller/UrlControllerTest.java | 2 +- .../controller/UserControllerTest.java | 2 +- .../oodm/service/UserServiceTest.java | 2 +- 29 files changed, 199 insertions(+), 183 deletions(-) create mode 100644 src/main/java/org/woehlke/twitterwall/frontend/content/ContentFactory.java rename src/main/java/org/woehlke/twitterwall/frontend/{common/impl/ControllerHelperImpl.java => content/impl/ContentFactoryImpl.java} (93%) diff --git a/src/main/java/org/woehlke/twitterwall/frontend/content/ContentFactory.java b/src/main/java/org/woehlke/twitterwall/frontend/content/ContentFactory.java new file mode 100644 index 00000000..ac6c9215 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/ContentFactory.java @@ -0,0 +1,16 @@ +package org.woehlke.twitterwall.frontend.content; + +import org.springframework.ui.Model; +import org.springframework.web.servlet.ModelAndView; + +/** + * Created by tw on 18.07.17. + */ +public interface ContentFactory { + + int FIRST_PAGE_NUMBER = 0; + + ModelAndView setupPage(ModelAndView mav, String title, String subtitle, String symbol); + + Model setupPage(Model model, String title, String subtitle, String symbol); +} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java b/src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java rename to src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java index bfa144f4..e5f6df91 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/common/impl/ControllerHelperImpl.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.common.impl; +package org.woehlke.twitterwall.frontend.content.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,14 +8,14 @@ import org.springframework.web.servlet.ModelAndView; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Page; /** * Created by tw on 18.07.17. */ @Component -public class ControllerHelperImpl implements ControllerHelper { +public class ContentFactoryImpl implements ContentFactory { private Page setupPage(Page page, String title, String subtitle, String symbol) { page.setTitle(title); @@ -56,7 +56,7 @@ public Model setupPage(Model model, String title, String subtitle, String symbol return model; } - private static final Logger log = LoggerFactory.getLogger(ControllerHelperImpl.class); + private static final Logger log = LoggerFactory.getLogger(ContentFactoryImpl.class); private final FrontendProperties frontendProperties; @@ -74,7 +74,7 @@ public Model setupPage(Model model, String title, String subtitle, String symbol @Autowired - public ControllerHelperImpl( + public ContentFactoryImpl( FrontendProperties frontendProperties, TwitterProperties twitterProperties ) { 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 2052c95f..d30026c0 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; /** * Created by tw on 03.07.17. @@ -21,19 +21,19 @@ public String managementPage(Model model) { String title = "Application Management"; String subtitle = twitterProperties.getSearchQuery(); String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); return "application/management"; } - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private final TwitterProperties twitterProperties; @Autowired public ApplicationController( - ControllerHelper controllerHelper, + ContentFactory contentFactory, TwitterProperties twitterProperties) { - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; 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 1a291acb..ecdd3e3c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java @@ -11,7 +11,7 @@ import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; @@ -35,7 +35,7 @@ public String domainCount(Model model) { String title = "Counted Entities"; String subtitle = twitterProperties.getSearchQuery(); String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); CountedEntities countedEntities =this.countedEntitiesService.countAll(); model.addAttribute("countedEntities", countedEntities); return "application/domain/count"; @@ -47,7 +47,7 @@ public String domainDeleteAll(Model model) { String title = "Counted Entities"; String subtitle = twitterProperties.getSearchQuery(); String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); CountedEntities countedEntities =this.countedEntitiesService.deleteAll(); model.addAttribute("countedEntities", countedEntities); return "application/domain/count"; @@ -55,7 +55,7 @@ public String domainDeleteAll(Model model) { @RequestMapping(path="/tweet/hashtag") public String domainCountTweet2hashtag( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> HashTag"; @@ -79,7 +79,7 @@ public String domainCountTweet2hashtag( @RequestMapping(path="/tweet/media") public String domainCountTweet2media( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> Media"; @@ -103,7 +103,7 @@ public String domainCountTweet2media( @RequestMapping(path="/tweet/mention") public String domainCountTweet2mention( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> Mention"; @@ -127,7 +127,7 @@ public String domainCountTweet2mention( @RequestMapping(path="/tweet/tickersymbol") public String domainCountTweet2tickersymbol( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> TickerSymbol"; @@ -151,7 +151,7 @@ public String domainCountTweet2tickersymbol( @RequestMapping(path="/tweet/url") public String domainCountTweet2url( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> Url"; @@ -175,7 +175,7 @@ public String domainCountTweet2url( @RequestMapping(path="/user/hashtag") public String domainCountUserprofile2hashtag( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> HashTag"; @@ -199,7 +199,7 @@ public String domainCountUserprofile2hashtag( @RequestMapping(path="/user/media") public String domainCountUserprofile2media( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> Media"; @@ -223,7 +223,7 @@ public String domainCountUserprofile2media( @RequestMapping(path="/user/mention") public String domainCountUserprofile2mention( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> Mention"; @@ -247,7 +247,7 @@ public String domainCountUserprofile2mention( @RequestMapping(path="/user/tickersymbol") public String domainCountUserprofile2Tickersymbol( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> TickerSymbol"; @@ -271,7 +271,7 @@ public String domainCountUserprofile2Tickersymbol( @RequestMapping(path="/user/url") public String domainCountUserprofile2Url( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> Url"; @@ -296,13 +296,13 @@ public String domainCountUserprofile2Url( private void setUpThisPage(String title,Model model){ String subtitle = "Counted Entities"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); } private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private final TweetService tweetService; @@ -325,7 +325,7 @@ private void setUpThisPage(String title,Model model){ @Autowired public CountedEntitiesController( FrontendProperties frontendProperties, - ControllerHelper controllerHelper, + ContentFactory contentFactory, TweetService tweetService, UserService userService, HashTagService hashTagService, @@ -335,7 +335,7 @@ public CountedEntitiesController( UrlService urlService, CountedEntitiesService countedEntitiesService, TwitterProperties twitterProperties) { this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; this.tweetService = tweetService; this.userService = userService; this.hashTagService = hashTagService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java index 70d9c81f..6394f913 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java @@ -15,7 +15,7 @@ import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.User; @@ -28,7 +28,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; import static org.woehlke.twitterwall.oodm.model.HashTag.HASHTAG_TEXT_PATTERN; /** @@ -46,7 +46,7 @@ public String getAll( String subtitle = "all"; String title = "HashTag"; String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -76,7 +76,7 @@ public String findHashTagById( String subtitle = "Tweets und User für HashTag"; String title = hashTag.getText(); String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); model.addAttribute("hashTag",hashTag); log.debug(msg+" try to: tweetService.findTweetsForHashTag: "); Page tweets = tweetService.findTweetsForHashTag(hashTag,pageRequestTweet); @@ -107,7 +107,7 @@ public String hashTagFromTweetsAndUsers( String subtitle = "Tweets und User für HashTag"; String title = text; String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); log.debug(msg + " try to: hashTagService.findByText "); HashTag hashTag = hashTagService.findByText(text); model.addAttribute("hashTag",hashTag); @@ -136,7 +136,7 @@ public String hashTagsOverview( String title = "HashTags"; String subtitle = twitterProperties.getSearchQuery(); String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); int size= frontendProperties.getPageSize() * 2; Pageable pageRequestTweets = new PageRequest(pageTweet,size); Pageable pageRequestUsers = new PageRequest(pageUser,size); @@ -159,7 +159,7 @@ public String hashTagsOverview( private final UserService userService; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public HashTagController( @@ -168,14 +168,14 @@ public HashTagController( HashTagService hashTagService, TweetService tweetService, UserService userService, - ControllerHelper controllerHelper + ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; this.twitterProperties = twitterProperties; this.hashTagService = hashTagService; this.tweetService = tweetService; this.userService = userService; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java index 5fc57df8..685ec42f 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; @@ -25,7 +25,7 @@ public String imprint(Model model) { String symbol = Symbols.IMPRINT.toString(); String title = "Imprint"; String subtitle = frontendProperties.getImprintSubtitle(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); User user = startTask.createImprintUser(); model.addAttribute("user", user); log.info("-----------------------------------------"); @@ -38,17 +38,17 @@ public String imprint(Model model) { private final StartTask startTask; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public ImprintController( FrontendProperties frontendProperties, StartTask startTask, - ControllerHelper controllerHelper + ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; this.startTask = startTask; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java index 8bdb685a..951a5c81 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Symbols; @Controller @@ -18,19 +18,19 @@ public String login(Model model) { String symbol = Symbols.LOGIN.toString(); String title = "Login"; String subtitle = "Enter your Credentials"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); log.info("-----------------------------------------"); return "login/login"; } private static final Logger log = LoggerFactory.getLogger(LoginController.class); - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public LoginController( - ControllerHelper controllerHelper + ContentFactory contentFactory ) { - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java index df701409..ee11a2ae 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.User; @@ -24,7 +24,7 @@ import javax.persistence.EntityNotFoundException; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -36,13 +36,13 @@ public class MediaController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String subtitle = "all"; String title = "Media"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -67,7 +67,7 @@ public String getMediaById( String title = "Media "+media.getUniqueId(); String subtitle = "List of User and Tweets for one Media"; String symbol = Symbols.MEDIA.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); log.debug(msg+" try to: tweetService.findTweetsForMedia: "); @@ -91,19 +91,19 @@ public String getMediaById( private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public MediaController( MediaService mediaService, UserService userService, TweetService tweetService, FrontendProperties frontendProperties, - ControllerHelper controllerHelper + ContentFactory contentFactory ) { this.mediaService = mediaService; this.userService = userService; this.tweetService = tweetService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java index f51ee260..88b3923c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.User; @@ -24,7 +24,7 @@ import javax.persistence.EntityNotFoundException; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -35,13 +35,13 @@ public class MentionController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String subtitle = "all"; String title = "Mention"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), Sort.Direction.ASC, @@ -65,7 +65,7 @@ public String getMentionById( String title = "Mention "+mention.getUniqueId(); String subtitle = "List of User and Tweets for one Mention"; String symbol = Symbols.MENTION.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); log.debug(msg+" try to: tweetService.findTweetsForMedia: "); @@ -89,18 +89,18 @@ public String getMentionById( private final TweetService tweetService; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public MentionController( FrontendProperties frontendProperties, MentionService mentionService, - UserService userService, TweetService tweetService, ControllerHelper controllerHelper) { + UserService userService, TweetService tweetService, ContentFactory contentFactory) { this.frontendProperties = frontendProperties; this.mentionService = mentionService; this.userService = userService; this.tweetService = tweetService; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } 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 aede0200..62a33735 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -15,7 +15,7 @@ import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.model.User; @@ -38,14 +38,14 @@ public class TaskController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page",defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page",defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String msg = "/task/all: "; String title = "Tasks"; String subtitle = "List aller Tasks"; String symbol = Symbols.TASKS_ALL.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), Sort.Direction.DESC, @@ -58,7 +58,7 @@ public String getAll( @RequestMapping(path="/{id}") public String getTaskById( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, @PathVariable("id") Task task, Model model) { if(task == null){ throw new EntityNotFoundException(); @@ -67,7 +67,7 @@ public String getTaskById( String title = "Task "+task.getUniqueId(); String subtitle = "List of TasksHistory for Task"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); Page taskHistoryList = taskHistoryService.findByTask(task,pageRequest); model.addAttribute("task",task); @@ -78,7 +78,7 @@ public String getTaskById( @RequestMapping("/start/createTestData") public String createTTestData(Model model) { - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model,"Test Data Tweets", twitterProperties.getSearchQuery(), Symbols.GET_TEST_DATA.toString() @@ -97,7 +97,7 @@ public String createTTestData(Model model) { @RequestMapping("/start/user/onlist/renew") public String getOnListRenew( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); @@ -112,7 +112,7 @@ public String getOnListRenew( model.addAttribute("users", usersOnList); String symbol = Symbols.LEAF.toString(); String title = "Renew List of Users On List"; - model = controllerHelper.setupPage(model, title, "Users", symbol); + model = contentFactory.setupPage(model, title, "Users", symbol); return PATH+"/start/renew"; } @@ -122,7 +122,7 @@ public String fetchTweetsFromTwitterSearchStartTask(Model model) { String title = "Scheduled Task started: fetch Tweets from Search"; String subtitle = "/start/tweets/search"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.fetchTweetsFromSearch(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -134,7 +134,7 @@ public String updateTweetsStartTask(Model model) { String title = "Scheduled Task started: update Tweets"; String subtitle = "/start/tweets/update"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.updateTweets(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -146,7 +146,7 @@ public String updateUsersStartTask(Model model) { String title = "Scheduled Task started: update Users"; String subtitle = "/start/users/update"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.updateUsers(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -158,7 +158,7 @@ public String fetchUsersFromDefinedUserListStartTask(Model model){ String title = "Scheduled Task started: fetch Users from List"; String subtitle = "/start/users/list/fetch"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.fetchUsersFromList(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -170,7 +170,7 @@ public String fetchFollowerStartTask(Model model){ String title = "Scheduled Task started: fetch Follower"; String subtitle = "/start/users/follower/fetch"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.fetchFollower(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -182,7 +182,7 @@ public String fetchFriendsStartTask(Model model){ String title = "Scheduled Task started: fetch Friends"; String subtitle = "/start/users/friends/fetch"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.fetchFriends(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -194,7 +194,7 @@ public String updateUserProfilesFromMentionsStartTask(Model model){ String title = "Scheduled Task started: update Users from Mentions"; String subtitle = "/start/users/mentions/update"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.updateUsersFromMentions(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -206,7 +206,7 @@ public String getHomeTimeline(Model model) { String title = "Scheduled Task started: getHomeTimeline"; String subtitle = "/start/tweets/timeline/home"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.getHomeTimeline(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -218,7 +218,7 @@ public String getUserTimeline(Model model) { String title = "Scheduled Task started: getUserTimeline"; String subtitle = "/start/tweets/timeline/user"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.getUserTimeline(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -230,7 +230,7 @@ public String getMentions(Model model) { String title = "Scheduled Task started: getMentions"; String subtitle = "/start/tweets/mentions"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.getMentions(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -242,7 +242,7 @@ public String getFavorites(Model model) { String title = "Scheduled Task started: getFavorites"; String subtitle = "/start/tweets/favorites"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.getFavorites(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -254,7 +254,7 @@ public String getRetweetsOfMe(Model model) { String title = "Scheduled Task started: getRetweetsOfMe"; String subtitle = "/start/tweets/myretweets"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Task task = mqAsyncStartTask.getRetweetsOfMe(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; @@ -266,7 +266,7 @@ public String getLists(Model model) { String title = "Scheduled Task started: getLists"; String subtitle = "/start/userlists"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); List listOfTasks = new ArrayList<>(); Task task1 = mqAsyncStartTask.getLists(); listOfTasks.add(task1); @@ -289,7 +289,7 @@ public String getLists(Model model) { private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private final AsyncStartTask mqAsyncStartTask; @@ -300,14 +300,14 @@ public TaskController( UserService userService, TaskService taskService, TaskHistoryService taskHistoryService, FrontendProperties frontendProperties, - ControllerHelper controllerHelper, + ContentFactory contentFactory, AsyncStartTask mqAsyncStartTask, TwitterProperties twitterProperties) { this.userService = userService; this.taskService = taskService; this.taskHistoryService = taskHistoryService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; this.mqAsyncStartTask = mqAsyncStartTask; this.twitterProperties = twitterProperties; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java index dafd596c..d3b51f3b 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java @@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.service.TaskHistoryService; @@ -25,13 +25,13 @@ public class TaskHistoryController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String subtitle = "all"; String title = "TaskHistory"; String symbol = Symbols.TASK_HISTORY.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -47,17 +47,17 @@ public String getAll( private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public TaskHistoryController( TaskHistoryService taskHistoryService, FrontendProperties frontendProperties, - ControllerHelper controllerHelper + ContentFactory contentFactory ) { this.taskHistoryService = taskHistoryService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java index 222fa9da..932ccc60 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.User; @@ -24,7 +24,7 @@ import javax.persistence.EntityNotFoundException; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -35,14 +35,14 @@ public class TickerSymbolController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String subtitle = "all"; String title = "TickerSymbol"; String sortByColumn = "url"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -67,7 +67,7 @@ public String getTickerSymbolById( String title = "TickerSymbol "+tickerSymbol.getUniqueId(); String subtitle = "List of User and Tweets for one TickerSymbol"; String symbol = Symbols.TICKER_SYMBOL.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); log.debug(msg+" try to: tweetService.findTweetsForMedia: "); @@ -91,19 +91,19 @@ public String getTickerSymbolById( private final TweetService tweetService; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public TickerSymbolController( FrontendProperties frontendProperties, TickerSymbolService tickerSymbolService, - UserService userService, TweetService tweetService, ControllerHelper controllerHelper + UserService userService, TweetService tweetService, ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; this.tickerSymbolService = tickerSymbolService; this.userService = userService; this.tweetService = tweetService; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } 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 f8bee682..06ec7201 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java @@ -15,7 +15,7 @@ import org.woehlke.twitterwall.conf.properties.TwitterProperties; import org.woehlke.twitterwall.conf.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TweetService; @@ -31,11 +31,11 @@ public class TweetController { @RequestMapping("/all") public String getLatestTweets( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, twitterProperties.getSearchQuery(), @@ -61,7 +61,7 @@ public String getTweetById( throw new EntityNotFoundException(); } else { String title = "Tweet"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, twitterProperties.getSearchQuery(), @@ -74,11 +74,11 @@ public String getTweetById( @RequestMapping("/timeline/home") public String getHomeTimeline( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "Home Timneline", @@ -98,11 +98,11 @@ public String getHomeTimeline( @RequestMapping("/timeline/user") public String getUserTimeline( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "User Timeline", @@ -122,11 +122,11 @@ public String getUserTimeline( @RequestMapping("/mentions") public String getMentions( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "Mentions", @@ -146,11 +146,11 @@ public String getMentions( @RequestMapping("/favorites") public String getFavorites( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "Favorites", @@ -170,11 +170,11 @@ public String getFavorites( @RequestMapping("/retweets") public String getRetweetsOfMe( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "Retweets Of Me", @@ -196,7 +196,7 @@ public String getRetweetsOfMe( private final TweetService tweetService; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private final FrontendProperties frontendProperties; @@ -205,12 +205,12 @@ public String getRetweetsOfMe( @Autowired public TweetController( TweetService tweetService, - ControllerHelper controllerHelper, + ContentFactory contentFactory, FrontendProperties frontendProperties, TwitterProperties twitterProperties ) { this.tweetService = tweetService; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; this.frontendProperties = frontendProperties; this.twitterProperties = twitterProperties; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java index 9d3702ff..ebda3c6d 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java @@ -13,7 +13,7 @@ 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.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.Url; @@ -24,7 +24,7 @@ import javax.persistence.EntityNotFoundException; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -35,12 +35,12 @@ public class UrlController { @RequestMapping(path="/all") - public String getAll(@RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model){ + public String getAll(@RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model){ String subtitle = "all"; String title = "Url"; String sortByColumn = "url"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -65,7 +65,7 @@ public String getUrlById( String title = "Url "+url.getUniqueId(); String subtitle = "List of User and Tweets for one Url"; String symbol = Symbols.MENTION.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); log.debug(msg+" try to: tweetService.findTweetsForMedia: "); @@ -89,19 +89,19 @@ public String getUrlById( private final TweetService tweetService; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public UrlController( FrontendProperties frontendProperties, UrlService urlService, - UserService userService, TweetService tweetService, ControllerHelper controllerHelper + UserService userService, TweetService tweetService, ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; this.urlService = urlService; this.userService = userService; this.tweetService = tweetService; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java index 441c9427..7a6d056e 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java @@ -13,7 +13,7 @@ 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.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.User; @@ -33,7 +33,7 @@ public class UserController { @RequestMapping("/all") public String getAll( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -45,13 +45,13 @@ public String getAll( model.addAttribute("users", userService.getAll(pageRequest)); String symbol = Symbols.USER_ALL.toString(); String subtitle = "All Users"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/all"; } @RequestMapping("/{id}") public String getUserForId( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, @PathVariable("id") User user, Model model ) { if(user == null){ @@ -67,7 +67,7 @@ public String getUserForId( String symbol = Symbols.USER_PROFILE.toString(); String title = "@" + user.getScreenName(); String subtitle = user.getName(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); model.addAttribute("user", user); model.addAttribute("latestTweets",latestTweets); return "user/id"; @@ -76,7 +76,7 @@ public String getUserForId( @RequestMapping("/screenName/{screenName}") public String getUserForScreeName( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, @PathVariable String screenName, Model model ) { if (User.isValidScreenName(screenName)) { @@ -85,13 +85,13 @@ public String getUserForScreeName( String symbol = Symbols.USER_PROFILE.toString(); String title = "404"; String subtitle = "404: no user found for @"+screenName; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/id"; } else { String symbol = Symbols.USER_PROFILE.toString(); String title = "@" + user.getScreenName(); String subtitle = user.getName(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -108,14 +108,14 @@ public String getUserForScreeName( String symbol = Symbols.USER_PROFILE.toString(); String title = "400"; String subtitle = "400: screenName not valid: for /user/screenName/"+screenName; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/id"; } } @RequestMapping("/list/tweets") public String getTweetingUsers( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -128,13 +128,13 @@ public String getTweetingUsers( model.addAttribute("users", tweetingUsers); String symbol = Symbols.USER_TWEETING.toString(); String subtitle = "With one or more Tweets"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/allWithTweets"; } @RequestMapping("/list/notyetfriends") public String getNotYetFriendUsers( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -147,13 +147,13 @@ public String getNotYetFriendUsers( model.addAttribute("users", users); String symbol = Symbols.USER_NOT_YET_FRIENDS.toString(); String subtitle = "Not Yet Friends"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/friendsNotYet"; } @RequestMapping("/list/friends") public String getFriendUsers( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -166,13 +166,13 @@ public String getFriendUsers( model.addAttribute("users", users); String symbol = Symbols.USER_FRIENDS.toString(); String subtitle = "Friends"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/friends"; } @RequestMapping("/list/follower") public String getFollower( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -185,13 +185,13 @@ public String getFollower( model.addAttribute("users", users); String symbol = Symbols.USER_FOLLOWER.toString(); String subtitle = "Follower"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/follower"; } @RequestMapping("/list/notyetfollower") public String getNotYetFollower( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -204,13 +204,13 @@ public String getNotYetFollower( model.addAttribute("users", users); String symbol = Symbols.USER_FOLLOWER.toString(); String subtitle = "Follower"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/followerNotYet"; } @RequestMapping("/list/onlist") public String getOnList( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -223,13 +223,13 @@ public String getOnList( model.addAttribute("users", usersOnList); String symbol = Symbols.LEAF.toString(); String subtitle = "On List"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/onlist"; } @RequestMapping("/list/notyetonlist") public String getNotYetOnList( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -241,13 +241,13 @@ public String getNotYetOnList( model.addAttribute("users", userService.getNotYetOnList(pageRequest)); String symbol = Symbols.USER_NOT_YET_ON_LIST.toString(); String subtitle = "Not Yet On List"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/onlistNotYet"; } @RequestMapping("/list/usersWhoAreFollowersButNotFriends") public String findUsersWhoAreFollowersButNotFriends( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ Pageable pageRequest = new PageRequest( @@ -259,13 +259,13 @@ public String findUsersWhoAreFollowersButNotFriends( model.addAttribute("users", userService.findUsersWhoAreFollowersButNotFriends(pageRequest)); String symbol = Symbols.USER_CONNECTIONS.toString(); String subtitle = "Users who are Followers but not Friends"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/usersWhoAreFollowersButNotFriends"; } @RequestMapping("/list/usersWhoAreFollowersAndFriends") public String findUsersWhoAreFollowersAndFriends( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ Pageable pageRequest = new PageRequest( @@ -277,13 +277,13 @@ public String findUsersWhoAreFollowersAndFriends( model.addAttribute("users", userService.findUsersWhoAreFollowersAndFriends(pageRequest)); String symbol = Symbols.USER_CONNECTIONS.toString(); String subtitle = "Users who are Followers AND Friends"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/usersWhoAreFollowersAndFriends"; } @RequestMapping("/list/usersWhoAreFriendsButNotFollowers") public String findUsersWhoAreFriendsButNotFollowers( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ Pageable pageRequest = new PageRequest( @@ -295,7 +295,7 @@ public String findUsersWhoAreFriendsButNotFollowers( model.addAttribute("users", userService.findUsersWhoAreFriendsButNotFollowers(pageRequest)); String symbol = Symbols.USER_CONNECTIONS.toString(); String subtitle = "Users who are Friends but not Followers"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/usersWhoAreFriendsButNotFollowers"; } @@ -307,7 +307,7 @@ public String findUsersWhoAreFriendsButNotFollowers( private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private static String title = "Users"; @@ -316,11 +316,11 @@ public UserController( UserService userService, TweetService tweetService, FrontendProperties frontendProperties, - ControllerHelper controllerHelper + ContentFactory contentFactory ) { this.userService = userService; this.tweetService = tweetService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java index 0a8e27ad..7baa0545 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java @@ -14,7 +14,7 @@ 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.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.UserList; @@ -29,7 +29,7 @@ public class UserListController { @RequestMapping("/all") public String getAll( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -42,13 +42,13 @@ public String getAll( model.addAttribute("myPageContent", userlists); String symbol = Symbols.USER_ALL.toString(); String subtitle = "All Users"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "userlist/all"; } @RequestMapping("/{id}") public String getUserListForId( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, @PathVariable("id") UserList userList, Model model ) { Pageable pageRequest = new PageRequest( @@ -60,7 +60,7 @@ public String getUserListForId( String symbol = Symbols.USER_PROFILE.toString(); String title = userList.getFullName(); String subtitle = userList.getDescription(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); Page userPage = userService.findUsersForUserList(userList,pageRequest); model.addAttribute("users", userPage); model.addAttribute("userList", userList); @@ -75,15 +75,15 @@ public String getUserListForId( private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private static String title = "User List"; @Autowired - public UserListController(UserListService userListService, UserService userService, FrontendProperties frontendProperties, ControllerHelper controllerHelper) { + public UserListController(UserListService userListService, UserService userService, FrontendProperties frontendProperties, ContentFactory contentFactory) { this.userListService = userListService; this.userService = userService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java b/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java index 85add840..e8d229cd 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; import org.woehlke.twitterwall.frontend.content.Symbols; -import org.woehlke.twitterwall.frontend.common.ControllerHelper; +import org.woehlke.twitterwall.frontend.content.ContentFactory; import javax.persistence.EntityNotFoundException; import javax.servlet.http.HttpServletRequest; @@ -37,7 +37,7 @@ public ModelAndView exception(final HttpServletRequest request, final Throwable String symbol = Symbols.EXCEPTION.toString(); String title = "Exception"; String subtitle = throwable.getMessage(); - mav = controllerHelper.setupPage(mav, title, subtitle, symbol); + mav = contentFactory.setupPage(mav, title, subtitle, symbol); mav.addObject("exception", throwable); mav.addObject("url", request.getRequestURL()); mav.setViewName("exceptionhandler/persistentObjectNotFound"); @@ -59,7 +59,7 @@ private ModelAndView getTemplate(HttpServletRequest request, Exception ex) { String symbol = Symbols.EXCEPTION.toString(); String title = "Exception"; String subtitle = ex.getMessage(); - mav = controllerHelper.setupPage(mav, title, subtitle, symbol); + mav = contentFactory.setupPage(mav, title, subtitle, symbol); mav.addObject("exception", ex); mav.addObject("url", request.getRequestURL()); mav.setViewName("exceptionhandler/persistentObjectNotFound"); @@ -67,11 +67,11 @@ private ModelAndView getTemplate(HttpServletRequest request, Exception ex) { } @Autowired - public GlobalExceptionHandler(ControllerHelper controllerHelper) { - this.controllerHelper = controllerHelper; + public GlobalExceptionHandler(ContentFactory contentFactory) { + this.contentFactory = contentFactory; } - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java index e6055723..25d82145 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqUpdateUserFromMentionsSplitter") public class UpdateUsersFromMentionsSplitterImpl implements UpdateUsersFromMentionsSplitter { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java index 122327b8..16f9824f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java @@ -24,7 +24,7 @@ import java.util.List; import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqUpdateTweetsSplitter") public class UpdateTweetsSplitterImpl implements UpdateTweetsSplitter { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java index 5636b52b..d2cc079b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java @@ -28,7 +28,7 @@ import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqFetchUserlistOwnersSplitter") public class FetchUserlistOwnersSplitterImpl implements FetchUserlistOwnersSplitter { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java index 7882e821..4e88f314 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java @@ -28,7 +28,7 @@ import java.util.List; import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqUpdateUserSplitter") public class UpdateUsersSplitterImpl implements UpdateUsersSplitter { 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 f631df89..1909aa8b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java @@ -27,7 +27,7 @@ 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; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 01.07.17. 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 cdd9d3bc..4b1b88aa 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java @@ -26,7 +26,7 @@ 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; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) 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 14b2393f..748ff547 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java @@ -26,7 +26,7 @@ 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; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) 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 6a30a5b9..465fb194 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java @@ -26,7 +26,7 @@ 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; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) 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 7a1bde33..983c7e02 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java @@ -27,7 +27,7 @@ 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; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 19.06.17. 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 c7a9c66b..a291046e 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java @@ -27,7 +27,7 @@ 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; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) 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 60f72e1e..8c1f2117 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java @@ -30,7 +30,7 @@ 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; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 19.06.17. 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 93753eb6..9c6c9fdf 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java @@ -20,7 +20,7 @@ import java.util.Set; -import static org.woehlke.twitterwall.frontend.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) From 4a4ce22ed4952b14f9803ec544a1460d8d0ae040 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Sat, 19 Aug 2017 16:29:03 +0200 Subject: [PATCH 25/45] fixed #271 --- .../org/woehlke/twitterwall/Application.java | 2 +- .../woehlke/twitterwall/ScheduledTasks.java | 4 +- .../mq/endpoint/common/MentionSplitter.java | 6 +- .../mq/endpoint/common/TweetsSplitter.java | 6 +- .../mq/endpoint/common/UrlSplitter.java | 11 +++ .../mq/endpoint/common/UserListsSplitter.java | 6 +- .../mq/endpoint/common/UserSplitter.java | 6 +- .../mentions/services/MentionFinisher.java | 6 +- .../services/UpdateMentionWithUser.java | 4 +- .../services/UserforMentionLoader.java | 4 +- .../services/UserforMentionPersistor.java | 4 +- .../services/UserforMentionTransformator.java | 4 +- .../services/impl/MentionFinisherImpl.java | 12 +-- .../impl/UpdateMentionWithUserImpl.java | 8 +- .../impl/UserforMentionLoaderImpl.java | 10 +-- .../impl/UserforMentionPersistorImpl.java | 10 +-- .../impl/UserforMentionTransformatorImpl.java | 10 +-- .../UpdateUsersFromMentionsSplitter.java | 8 ++ .../UpdateUsersFromMentionsSplitterImpl.java | 12 +-- .../mq/endpoint/tasks/AsyncStartTask.java | 2 +- .../mq/endpoint/tasks/StartTask.java | 2 +- .../tasks/impl/AsyncStartTaskImpl.java | 8 +- .../mq/endpoint/tasks/impl/StartTaskImpl.java | 10 +-- .../tweets/services/TweetFinisher.java | 6 +- .../tweets/services/TweetPersistor.java | 4 +- .../tweets/services/TweetTransformator.java | 4 +- .../services/impl/TweetFinisherImpl.java | 12 +-- .../services/impl/TweetPersistorImpl.java | 10 +-- .../services/impl/TweetTransformatorImpl.java | 10 +-- .../CreateTestDataTweetsSplitter.java | 7 ++ .../tweets/splitter/FavoritesSplitter.java | 6 ++ .../FetchTweetsFromSearchSplitter.java | 7 ++ .../splitter/FindTweetsToRemoveSplitter.java | 7 ++ .../tweets/splitter/HomeTimelineSplitter.java | 6 ++ .../tweets/splitter/MentionsSplitter.java | 6 ++ .../tweets/splitter/RetweetsOfMeSplitter.java | 6 ++ .../tweets/splitter/UpdateTweetsSplitter.java | 7 ++ .../tweets/splitter/UserTimelineSplitter.java | 6 ++ .../CreateTestDataTweetsSplitterImpl.java | 14 ++-- .../splitter/impl/FavoritesSplitterImpl.java | 12 +-- .../FetchTweetsFromSearchSplitterImpl.java | 12 +-- .../impl/FindTweetsToRemoveSplitterImpl.java | 10 +-- .../impl/HomeTimelineSplitterImpl.java | 12 +-- .../splitter/impl/MentionsSplitterImpl.java | 12 +-- .../impl/RetweetsOfMeSplitterImpl.java | 12 +-- .../impl/UpdateTweetsSplitterImpl.java | 14 ++-- .../impl/UserTimelineSplitterImpl.java | 12 +-- .../userlist/services/ListFinisher.java | 6 +- .../userlist/services/ListsPersistor.java | 4 +- .../userlist/services/ListsTransformator.java | 4 +- .../services/impl/ListFinisherImpl.java | 12 +-- .../services/impl/ListsPersistorImpl.java | 8 +- .../services/impl/ListsTransformatorImpl.java | 10 +-- .../userlist/splitter/ListsSplitter.java | 7 ++ .../splitter/impl/ListsSplitterImpl.java | 12 +-- .../users/services/CreateImprintUser.java | 10 +++ .../users/services/UserCheckStorage.java | 4 +- .../endpoint/users/services/UserFinisher.java | 6 +- .../users/services/UserPersistor.java | 4 +- .../users/services/UserTransformator.java | 4 +- .../services/impl/CreateImprintUserImpl.java | 14 ++-- .../services/impl/UserCheckStorageImpl.java | 10 +-- .../users/services/impl/UserFinisherImpl.java | 10 +-- .../services/impl/UserPersistorImpl.java | 10 +-- .../splitter/CreateTestDataUsersSplitter.java | 7 ++ .../users/splitter/FetchFollowerSplitter.java | 7 ++ .../users/splitter/FetchFriendsSplitter.java | 7 ++ .../splitter/FetchUserlistOwnersSplitter.java | 6 ++ .../splitter/FetchUsersFromListSplitter.java | 8 ++ .../users/splitter/UpdateUsersSplitter.java | 7 ++ .../impl/CreateTestDataUsersSplitterImpl.java | 14 ++-- .../impl/FetchFollowerSplitterImpl.java | 12 +-- .../impl/FetchFriendsSplitterImpl.java | 12 +-- .../impl/FetchUserlistOwnersSplitterImpl.java | 16 ++-- .../impl/FetchUsersFromListSplitterImpl.java | 16 ++-- .../impl/UpdateUsersSplitterImpl.java | 14 ++-- .../mq/msg/MentionMessage.java | 2 +- .../mq/msg/TaskMessage.java | 2 +- .../mq/msg/TweetMessage.java | 2 +- .../backend/mq/msg/UrlMessage.java | 6 ++ .../mq/msg/UserListMessage.java | 2 +- .../mq/msg/UserMessage.java | 2 +- .../mq/msg/builder/MentionMessageBuilder.java | 6 +- .../mq/msg/builder/TaskMessageBuilder.java | 4 +- .../mq/msg/builder/TweetMessageBuilder.java | 6 +- .../mq/msg/builder/UrlMessageBuilder.java | 4 + .../msg/builder/UserListMessageBuilder.java | 6 +- .../mq/msg/builder/UserMessageBuilder.java | 6 +- .../impl/MentionMessageBuilderImpl.java | 8 +- .../builder/impl/TaskMessageBuilderImpl.java | 6 +- .../builder/impl/TweetMessageBuilderImpl.java | 8 +- .../builder/impl/UrlMessageBuilderImpl.java | 8 ++ .../impl/UserListMessageBuilderImpl.java | 8 +- .../builder/impl/UserMessageBuilderImpl.java | 8 +- .../mq/msg/results/MentionResultList.java | 2 +- .../mq/msg/results/TweetResultList.java | 2 +- .../backend/mq/msg/results/UrlResultList.java | 6 ++ .../mq/msg/results/UserListResultList.java | 2 +- .../mq/msg/results/UserResultList.java | 2 +- .../persist/CreatePersistentMention.java | 2 +- .../service/persist/CreatePersistentUrl.java | 2 +- .../service/persist/StoreEntitiesProcess.java | 2 +- .../service/persist/StoreOneTweet.java | 2 +- .../service/persist/StoreOneTweetPerform.java | 2 +- ...eTwitterProfileForProxyMentionForUser.java | 2 +- .../service/persist/StoreUserFromMention.java | 2 +- .../service/persist/StoreUserProcess.java | 2 +- .../service/persist/StoreUserProfile.java | 2 +- .../StoreUserProfileForScreenName.java | 2 +- .../persist/StoreUserProfileForUserList.java | 2 +- .../impl/CreatePersistentMentionImpl.java | 6 +- .../persist/impl/CreatePersistentUrlImpl.java | 6 +- .../impl/StoreEntitiesProcessImpl.java | 4 +- .../persist/impl/StoreOneTweetImpl.java | 8 +- .../impl/StoreOneTweetPerformImpl.java | 4 +- ...tterProfileForProxyMentionForUserImpl.java | 10 +-- .../impl/StoreUserFromMentionImpl.java | 6 +- .../persist/impl/StoreUserProcessImpl.java | 6 +- .../StoreUserProfileForScreenNameImpl.java | 8 +- .../impl/StoreUserProfileForUserListImpl.java | 10 +-- .../persist/impl/StoreUserProfileImpl.java | 8 +- .../service/remote/TwitterApiService.java | 2 +- .../service/remote/TwitterUrlService.java | 2 +- .../remote/impl/TwitterApiServiceImpl.java | 6 +- .../remote/impl/TwitterUrlServiceImpl.java | 6 +- .../transform/EntitiesTransformService.java | 2 +- .../transform/HashTagTransformService.java | 4 +- .../transform/MediaTransformService.java | 4 +- .../transform/MentionTransformService.java | 4 +- .../TickerSymbolTransformService.java | 4 +- .../transform/TweetTransformService.java | 4 +- .../transform/UrlTransformService.java | 4 +- .../transform/UserListTransformService.java | 4 +- .../transform/UserTransformService.java | 4 +- .../transform/common/TransformService.java | 2 +- .../impl/EntitiesTransformServiceImpl.java | 4 +- .../impl/HashTagTransformServiceImpl.java | 4 +- .../impl/MediaTransformServiceImpl.java | 4 +- .../impl/MentionTransformServiceImpl.java | 4 +- .../TickerSymbolTransformServiceImpl.java | 4 +- .../impl/TweetTransformServiceImpl.java | 8 +- .../impl/UrlTransformServiceImpl.java | 4 +- .../impl/UserListTransformServiceImpl.java | 4 +- .../impl/UserTransformServiceImpl.java | 6 +- .../DataSourceConfig.java | 2 +- .../{conf => configuration}/WebMvcConfig.java | 2 +- .../WebSecurityConfig.java | 4 +- .../properties/BackendProperties.java | 2 +- .../properties/FrontendProperties.java | 2 +- .../properties/SchedulerProperties.java | 2 +- .../properties/TestdataProperties.java | 2 +- .../properties/TwitterProperties.java | 2 +- .../frontend/common/ControllerHelper.java | 16 ---- .../content/impl/ContentFactoryImpl.java | 4 +- .../controller/ApplicationController.java | 2 +- .../controller/CountedEntitiesController.java | 4 +- .../controller/HashTagController.java | 4 +- .../controller/ImprintController.java | 4 +- .../frontend/controller/MediaController.java | 2 +- .../controller/MentionController.java | 2 +- .../frontend/controller/TaskController.java | 6 +- .../controller/TaskHistoryController.java | 2 +- .../controller/TickerSymbolController.java | 2 +- .../frontend/controller/TweetController.java | 4 +- .../frontend/controller/UrlController.java | 2 +- .../frontend/controller/UserController.java | 2 +- .../controller/UserListController.java | 2 +- .../UpdateUsersFromMentionsSplitter.java | 8 -- .../CreateTestDataTweetsSplitter.java | 7 -- .../tweets/splitter/FavoritesSplitter.java | 6 -- .../FetchTweetsFromSearchSplitter.java | 7 -- .../splitter/FindTweetsToRemoveSplitter.java | 7 -- .../tweets/splitter/HomeTimelineSplitter.java | 6 -- .../tweets/splitter/MentionsSplitter.java | 6 -- .../tweets/splitter/RetweetsOfMeSplitter.java | 6 -- .../tweets/splitter/UpdateTweetsSplitter.java | 7 -- .../tweets/splitter/UserTimelineSplitter.java | 6 -- .../userlist/splitter/ListsSplitter.java | 7 -- .../users/services/CreateImprintUser.java | 10 --- .../services/impl/UserTransformatorImpl.java | 57 -------------- .../splitter/CreateTestDataUsersSplitter.java | 7 -- .../users/splitter/FetchFollowerSplitter.java | 7 -- .../users/splitter/FetchFriendsSplitter.java | 7 -- .../splitter/FetchUserlistOwnersSplitter.java | 6 -- .../splitter/FetchUsersFromListSplitter.java | 8 -- .../users/splitter/UpdateUsersSplitter.java | 7 -- src/main/resources/integration.xml | 74 +++++++++---------- src/main/resources/logback.xml | 8 +- .../mq/endpoint/AbstractMqEndpointTest.java | 2 +- .../mq/endpoint/AsyncStartTaskTest.java | 2 +- .../mq/endpoint/AsyncStartTaskTestImpl.java | 4 +- .../mq/endpoint/StartTaskTest.java | 4 +- .../mq/endpoint/StartTaskTestImpl.java | 6 +- .../service/remote/TwitterUrlServiceTest.java | 4 +- .../controller/ImprintControllerTest.java | 2 +- .../controller/UserControllerTest.java | 6 +- .../common/impl/PrepareDataTestImpl.java | 10 +-- .../oodm/model/UserDescriptionTest.java | 2 +- .../oodm/service/HashTagServiceTest.java | 2 +- .../oodm/service/MediaServiceTest.java | 2 +- .../oodm/service/MentionServiceTest.java | 2 +- .../oodm/service/TaskHistoryServiceTest.java | 2 +- .../oodm/service/TaskServiceTest.java | 2 +- .../oodm/service/TickerSymbolServiceTest.java | 2 +- .../oodm/service/TweetServiceTest.java | 2 +- .../oodm/service/UrlServiceTest.java | 2 +- .../oodm/service/UserServiceTest.java | 4 +- src/test/resources/logback.xml | 8 +- 208 files changed, 651 insertions(+), 689 deletions(-) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/common/MentionSplitter.java (52%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/common/TweetsSplitter.java (50%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/common/UserListsSplitter.java (52%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/common/UserSplitter.java (51%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/MentionFinisher.java (56%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/UpdateMentionWithUser.java (57%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/UserforMentionLoader.java (58%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/UserforMentionPersistor.java (57%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/UserforMentionTransformator.java (58%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java (75%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java (78%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java (90%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tasks/AsyncStartTask.java (91%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tasks/StartTask.java (69%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java (94%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tasks/impl/StartTaskImpl.java (96%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/services/TweetFinisher.java (56%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/services/TweetPersistor.java (55%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/services/TweetTransformator.java (54%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java (85%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FavoritesSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/MentionsSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UserTimelineSplitter.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java (86%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java (88%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/userlist/services/ListFinisher.java (56%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/userlist/services/ListsPersistor.java (55%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/userlist/services/ListsTransformator.java (55%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/userlist/services/impl/ListFinisherImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java (82%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/ListsSplitter.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java (83%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/CreateImprintUser.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/services/UserCheckStorage.java (56%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/services/UserFinisher.java (61%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/services/UserPersistor.java (55%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/services/UserTransformator.java (54%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/services/impl/CreateImprintUserImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/services/impl/UserCheckStorageImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/services/impl/UserFinisherImpl.java (89%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/services/impl/UserPersistorImpl.java (84%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFollowerSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFriendsSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/UpdateUsersSplitter.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java (86%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java (90%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/MentionMessage.java (98%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/TaskMessage.java (97%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/TweetMessage.java (98%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/msg/UrlMessage.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/UserListMessage.java (98%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/UserMessage.java (99%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/MentionMessageBuilder.java (79%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/TaskMessageBuilder.java (61%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/TweetMessageBuilder.java (70%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UrlMessageBuilder.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/UserListMessageBuilder.java (60%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/UserMessageBuilder.java (85%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/impl/MentionMessageBuilderImpl.java (92%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/impl/TaskMessageBuilderImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/impl/TweetMessageBuilderImpl.java (85%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UrlMessageBuilderImpl.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/impl/UserListMessageBuilderImpl.java (77%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/builder/impl/UserMessageBuilderImpl.java (94%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/results/MentionResultList.java (95%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/results/TweetResultList.java (95%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UrlResultList.java rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/results/UserListResultList.java (95%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/mq/msg/results/UserResultList.java (95%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/CreatePersistentMention.java (81%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/CreatePersistentUrl.java (79%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreEntitiesProcess.java (90%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreOneTweet.java (81%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreOneTweetPerform.java (80%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreTwitterProfileForProxyMentionForUser.java (84%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreUserFromMention.java (79%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreUserProcess.java (79%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreUserProfile.java (83%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreUserProfileForScreenName.java (81%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/StoreUserProfileForUserList.java (84%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/CreatePersistentMentionImpl.java (94%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/CreatePersistentUrlImpl.java (93%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreEntitiesProcessImpl.java (97%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreOneTweetImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreOneTweetPerformImpl.java (95%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java (94%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreUserFromMentionImpl.java (86%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreUserProcessImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreUserProfileForScreenNameImpl.java (89%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreUserProfileForUserListImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/persist/impl/StoreUserProfileImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/remote/TwitterApiService.java (94%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/remote/TwitterUrlService.java (79%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/remote/impl/TwitterApiServiceImpl.java (98%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/remote/impl/TwitterUrlServiceImpl.java (94%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/EntitiesTransformService.java (88%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/HashTagTransformService.java (77%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/MediaTransformService.java (75%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/MentionTransformService.java (79%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/TickerSymbolTransformService.java (78%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/TweetTransformService.java (57%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/UrlTransformService.java (79%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/UserListTransformService.java (53%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/UserTransformService.java (62%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/common/TransformService.java (79%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/EntitiesTransformServiceImpl.java (98%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/HashTagTransformServiceImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/MediaTransformServiceImpl.java (89%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/MentionTransformServiceImpl.java (91%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/TickerSymbolTransformServiceImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/TweetTransformServiceImpl.java (91%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/UrlTransformServiceImpl.java (96%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/UserListTransformServiceImpl.java (88%) rename src/main/java/org/woehlke/twitterwall/{scheduled => backend}/service/transform/impl/UserTransformServiceImpl.java (94%) rename src/main/java/org/woehlke/twitterwall/{conf => configuration}/DataSourceConfig.java (94%) rename src/main/java/org/woehlke/twitterwall/{conf => configuration}/WebMvcConfig.java (92%) rename src/main/java/org/woehlke/twitterwall/{conf => configuration}/WebSecurityConfig.java (93%) rename src/main/java/org/woehlke/twitterwall/{conf => configuration}/properties/BackendProperties.java (97%) rename src/main/java/org/woehlke/twitterwall/{conf => configuration}/properties/FrontendProperties.java (98%) rename src/main/java/org/woehlke/twitterwall/{conf => configuration}/properties/SchedulerProperties.java (98%) rename src/main/java/org/woehlke/twitterwall/{conf => configuration}/properties/TestdataProperties.java (98%) rename src/main/java/org/woehlke/twitterwall/{conf => configuration}/properties/TwitterProperties.java (95%) delete mode 100644 src/main/java/org/woehlke/twitterwall/frontend/common/ControllerHelper.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FavoritesSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/MentionsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UserTimelineSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java rename src/test/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/AbstractMqEndpointTest.java (98%) rename src/test/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/AsyncStartTaskTest.java (93%) rename src/test/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/AsyncStartTaskTestImpl.java (98%) rename src/test/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/StartTaskTest.java (69%) rename src/test/java/org/woehlke/twitterwall/{scheduled => backend}/mq/endpoint/StartTaskTestImpl.java (98%) rename src/test/java/org/woehlke/twitterwall/{scheduled => backend}/service/remote/TwitterUrlServiceTest.java (97%) diff --git a/src/main/java/org/woehlke/twitterwall/Application.java b/src/main/java/org/woehlke/twitterwall/Application.java index 2d0a9c8a..8d75a388 100644 --- a/src/main/java/org/woehlke/twitterwall/Application.java +++ b/src/main/java/org/woehlke/twitterwall/Application.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.ImportResource; import org.springframework.data.web.config.EnableSpringDataWebSupport; import org.springframework.scheduling.annotation.EnableScheduling; -import org.woehlke.twitterwall.conf.properties.*; +import org.woehlke.twitterwall.configuration.properties.*; /** diff --git a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java index 9236faa3..1b925e59 100644 --- a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java +++ b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java @@ -5,9 +5,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.SchedulerProperties; +import org.woehlke.twitterwall.configuration.properties.SchedulerProperties; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.AsyncStartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.AsyncStartTask; /** * Created by tw on 10.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/MentionSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/MentionSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java index 39bb8aa8..2982ebb0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/MentionSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common; +package org.woehlke.twitterwall.backend.mq.endpoint.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TweetsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java index c093a116..5688dfc1 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TweetsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common; +package org.woehlke.twitterwall.backend.mq.endpoint.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java new file mode 100644 index 00000000..93480d10 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java @@ -0,0 +1,11 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.common; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.msg.UrlMessage; + +import java.util.List; + +public interface UrlSplitter { + + List> splitUrlMessage(Message incomingTaskMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java index 3389b0b1..1659239d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common; +package org.woehlke.twitterwall.backend.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 org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java similarity index 51% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java index 3b758817..3fca00a0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common; +package org.woehlke.twitterwall.backend.mq.endpoint.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/MentionFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/MentionFinisher.java similarity index 56% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/MentionFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/MentionFinisher.java index b5aafc04..af6cde0c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/MentionFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/MentionFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.results.MentionResultList; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.results.MentionResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UpdateMentionWithUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UpdateMentionWithUser.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UpdateMentionWithUser.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UpdateMentionWithUser.java index d64ffb9c..1df9fa8c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UpdateMentionWithUser.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UpdateMentionWithUser.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; public interface UpdateMentionWithUser { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionLoader.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionLoader.java similarity index 58% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionLoader.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionLoader.java index c2c140e1..a98ba8d1 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionLoader.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionLoader.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; public interface UserforMentionLoader { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionPersistor.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionPersistor.java index c7a5d1a2..7713832a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; public interface UserforMentionPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionTransformator.java similarity index 58% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionTransformator.java index acd13f5f..7a7a1b5d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/UserforMentionTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; public interface UserforMentionTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java index 461b339c..4649b249 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,11 +10,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.MentionFinisher; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl.UserFinisherImpl; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.results.MentionResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.MentionFinisher; +import org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.results.MentionResultList; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java index f49530b3..2ef85e50 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -9,9 +9,9 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.MentionService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.UpdateMentionWithUser; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.UpdateMentionWithUser; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; @Component("mqUpdateMentionWithUser") public class UpdateMentionWithUserImpl implements UpdateMentionWithUser { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java similarity index 75% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java index e874c135..526c1cd4 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.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.scheduled.mq.endpoint.mentions.services.UserforMentionLoader; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.UserforMentionLoader; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; @Component("mqUserforMentionLoader") public class UserforMentionLoaderImpl implements UserforMentionLoader { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java index 357d38a5..d1ed156b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.UserforMentionPersistor; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.UserforMentionPersistor; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; @Component("mqUserforMentionPersistor") public class UserforMentionPersistorImpl implements UserforMentionPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java similarity index 78% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java index 8294b047..5f44cb2e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -6,10 +6,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.services.UserforMentionTransformator; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.UserforMentionTransformator; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; @Component("mqUserforMentionTransformator") public class UserforMentionTransformatorImpl implements UserforMentionTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java new file mode 100644 index 00000000..3ec374d3 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.splitter; + + +import org.woehlke.twitterwall.backend.mq.endpoint.common.MentionSplitter; + +public interface UpdateUsersFromMentionsSplitter extends MentionSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java similarity index 90% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java index 25d82145..6c4ba2f9 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -7,7 +7,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; @@ -15,10 +15,10 @@ 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.mentions.splitter.UpdateUsersFromMentionsSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.splitter.UpdateUsersFromMentionsSplitter; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/AsyncStartTask.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/AsyncStartTask.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/AsyncStartTask.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/AsyncStartTask.java index 73b4a17b..5c3cac35 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/AsyncStartTask.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/AsyncStartTask.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tasks; +package org.woehlke.twitterwall.backend.mq.endpoint.tasks; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/StartTask.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/StartTask.java similarity index 69% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/StartTask.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/StartTask.java index 91e22fd7..1e82332f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/StartTask.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/StartTask.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tasks; +package org.woehlke.twitterwall.backend.mq.endpoint.tasks; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java index 9e7b3827..09c609fc 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tasks.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,10 +12,10 @@ import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.AsyncStartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.AsyncStartTask; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TaskMessageBuilder; @Component("mqAsyncStartTask") public class AsyncStartTaskImpl implements AsyncStartTask { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/StartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/StartTaskImpl.java similarity index 96% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/StartTaskImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/StartTaskImpl.java index 6e5cfa2d..e73d9099 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tasks/impl/StartTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/StartTaskImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tasks.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,11 +14,11 @@ import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; -import org.woehlke.twitterwall.scheduled.mq.msg.*; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.StartTask; +import org.woehlke.twitterwall.backend.mq.msg.*; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TaskMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.results.TweetResultList; +import org.woehlke.twitterwall.backend.mq.msg.builder.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.results.TweetResultList; @Component("mqStartTask") public class StartTaskImpl implements StartTask { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetFinisher.java similarity index 56% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetFinisher.java index 4ed825b3..3edb44c3 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.results.TweetResultList; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.results.TweetResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetPersistor.java similarity index 55% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetPersistor.java index f1a3613f..0e3ec5b8 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; public interface TweetPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetTransformator.java similarity index 54% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetTransformator.java index db872381..0d79d4f7 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; public interface TweetTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java index 300927c6..bbfad5fe 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,11 +10,11 @@ import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -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.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.results.TweetResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.TweetFinisher; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.results.TweetResultList; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java index 6d0c44d2..37e878ac 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetPersistor; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweetPerform; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.TweetPersistor; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.persist.StoreOneTweetPerform; @Component("mqTweetPersistor") public class TweetPersistorImpl implements TweetPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java index a4ca57e5..25a1ece0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetTransformator; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.TweetTransformator; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.transform.TweetTransformService; @Component("mqTweetTransformator") public class TweetTransformatorImpl implements TweetTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java new file mode 100644 index 00000000..40dc8063 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface CreateTestDataTweetsSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FavoritesSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FavoritesSplitter.java new file mode 100644 index 00000000..cec7e147 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FavoritesSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface FavoritesSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java new file mode 100644 index 00000000..517a06a9 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface FetchTweetsFromSearchSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java new file mode 100644 index 00000000..12bae738 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface FindTweetsToRemoveSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java new file mode 100644 index 00000000..449b205d --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface HomeTimelineSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/MentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/MentionsSplitter.java new file mode 100644 index 00000000..913b8e2d --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/MentionsSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface MentionsSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java new file mode 100644 index 00000000..c71a5f7b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface RetweetsOfMeSplitter extends TweetsSplitter{ +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java new file mode 100644 index 00000000..fa26f1dc --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface UpdateTweetsSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UserTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UserTimelineSplitter.java new file mode 100644 index 00000000..0f94742e --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UserTimelineSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; + +public interface UserTimelineSplitter extends TweetsSplitter{ +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java index 3bacd879..18a52020 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java @@ -1,19 +1,19 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.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.conf.properties.TestdataProperties; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.CreateTestDataTweetsSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.CreateTestDataTweetsSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java index c4af1532..27284bf0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,11 +8,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -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.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.FavoritesSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java index a887e06e..f4ea995c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -7,11 +7,11 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FetchTweetsFromSearchSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.FetchTweetsFromSearchSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java index 41fb4099..f27e5848 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -12,10 +12,10 @@ 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.tweets.splitter.FindTweetsToRemoveSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.FindTweetsToRemoveSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java index 77607437..4a5e7d0c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,11 +8,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -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.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.HomeTimelineSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java index 9baf3c65..0ac0c26f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,11 +8,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -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.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.MentionsSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java index d2a08387..8ccf55c1 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,11 +8,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -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.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.RetweetsOfMeSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java index 16f9824f..2448e054 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,16 +8,16 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.UpdateTweetsSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.UpdateTweetsSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java index 238e3d51..29785c57 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,11 +8,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -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.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.UserTimelineSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListFinisher.java similarity index 56% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListFinisher.java index e84f200d..53e88c5b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.results.UserListResultList; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.results.UserListResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsPersistor.java similarity index 55% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsPersistor.java index bb2bd38d..df9ef80e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; public interface ListsPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsTransformator.java similarity index 55% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsTransformator.java index 9ec03d37..a88134f5 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; public interface ListsTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListFinisherImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListFinisherImpl.java index 18d3d8db..d205e7e6 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,11 +11,11 @@ import org.woehlke.twitterwall.oodm.model.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.builder.UserListMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.results.UserListResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.ListFinisher; +import org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.results.UserListResultList; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java index a07ed3df..8dfc7f39 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -8,9 +8,9 @@ import org.woehlke.twitterwall.oodm.model.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; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.ListsPersistor; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; @Component("mqUserListPersistor") public class ListsPersistorImpl implements ListsPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java index 8a87d50a..d50a6514 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -6,10 +6,10 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.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.mq.msg.builder.UserListMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.transform.UserListTransformService; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.ListsTransformator; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.service.transform.UserListTransformService; @Component("mqUserListTransformator") public class ListsTransformatorImpl implements ListsTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/ListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/ListsSplitter.java new file mode 100644 index 00000000..76605c3e --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/ListsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.splitter; + +import org.woehlke.twitterwall.backend.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/backend/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java index 9b3f4c70..7ad05e58 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,11 +8,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -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.mq.msg.builder.UserListMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.splitter.ListsSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/CreateImprintUser.java new file mode 100644 index 00000000..2e144a39 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/CreateImprintUser.java @@ -0,0 +1,10 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.users.services; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; + +public interface CreateImprintUser { + + Message createImprintUser(Message mqMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserCheckStorage.java similarity index 56% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserCheckStorage.java index ec395a33..52356859 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserCheckStorage.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.endpoint.users.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; public interface UserCheckStorage { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserFinisher.java similarity index 61% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserFinisher.java index cea04db7..1493fe64 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.endpoint.users.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.results.UserResultList; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.results.UserResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserPersistor.java similarity index 55% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserPersistor.java index e4c47799..d89f62ae 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.endpoint.users.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; public interface UserPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserTransformator.java similarity index 54% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserTransformator.java index 1b5ac220..1fd98e18 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.endpoint.users.services; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; public interface UserTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/CreateImprintUserImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/CreateImprintUserImpl.java index 7c5aec61..b0f5aa99 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/CreateImprintUserImpl.java @@ -1,17 +1,17 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.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.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.CreateImprintUser; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.services.CreateImprintUser; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserCheckStorageImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserCheckStorageImpl.java index ee2f36ec..dbf55095 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserCheckStorageImpl.java @@ -1,14 +1,14 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.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.users.services.UserCheckStorage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.services.UserCheckStorage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; @Component("mqUserCheckStorage") public class UserCheckStorageImpl implements UserCheckStorage { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserFinisherImpl.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserFinisherImpl.java index afd88441..54c4f1b1 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,10 +10,10 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -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.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.results.UserResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.users.services.UserFinisher; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.results.UserResultList; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserPersistorImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserPersistorImpl.java index 8754b10b..424437cb 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserPersistor; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.mq.endpoint.users.services.UserPersistor; @Component("mqUserPersistor") public class UserPersistorImpl implements UserPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java new file mode 100644 index 00000000..28c4d7f7 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; + +public interface CreateTestDataUsersSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFollowerSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFollowerSplitter.java new file mode 100644 index 00000000..a2af3e4f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFollowerSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; + +public interface FetchFollowerSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFriendsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFriendsSplitter.java new file mode 100644 index 00000000..0c68e2b9 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFriendsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; + +public interface FetchFriendsSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java new file mode 100644 index 00000000..2160d030 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; + +public interface FetchUserlistOwnersSplitter extends UserSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java new file mode 100644 index 00000000..dcf4aa4c --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; + + +import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; + +public interface FetchUsersFromListSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/UpdateUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/UpdateUsersSplitter.java new file mode 100644 index 00000000..b2b72787 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/UpdateUsersSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; + +import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; + +public interface UpdateUsersSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java index 1a16d69a..820d4ff9 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java @@ -1,19 +1,19 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.CreateTestDataUsersSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.CreateTestDataUsersSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java index d41b5ccd..b444f825 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,11 +8,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchFollowerSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.FetchFollowerSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java index ec68e47a..183e1514 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,11 +8,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchFriendsSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.FetchFriendsSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java index d2cc079b..cb4378da 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,7 +9,7 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.UserList; @@ -18,12 +18,12 @@ import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserListService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.splitter.impl.UpdateUsersFromMentionsSplitterImpl; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchUserlistOwnersSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.splitter.impl.UpdateUsersFromMentionsSplitterImpl; +import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.FetchUserlistOwnersSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java index a31e90a8..59531cc6 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.conf.properties.SchedulerProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.SchedulerProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchUsersFromListSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.FetchUsersFromListSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java similarity index 90% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java index 4e88f314..18141f34 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,18 +10,18 @@ import org.springframework.social.RateLimitExceededException; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.UpdateUsersSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.UpdateUsersSplitter; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/MentionMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/MentionMessage.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/MentionMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/MentionMessage.java index 1a560f76..ed4c2580 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/MentionMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/MentionMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.msg; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.Mention; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/TaskMessage.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/TaskMessage.java index 9a1c7c9d..4e71e2a3 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/TaskMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.msg; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/TweetMessage.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/TweetMessage.java index 32b8fe82..470ff168 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/TweetMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.msg; import org.springframework.social.twitter.api.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UrlMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UrlMessage.java new file mode 100644 index 00000000..13f72fa1 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UrlMessage.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.msg; + +import java.io.Serializable; + +public class UrlMessage implements Serializable { +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserListMessage.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserListMessage.java index c061eb70..cc35c046 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserListMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.msg; import org.springframework.social.twitter.api.UserList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserMessage.java similarity index 99% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserMessage.java index b9b58542..fad96a3c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.msg; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/MentionMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/MentionMessageBuilder.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/MentionMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/MentionMessageBuilder.java index a7ccb60d..ad121644 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/MentionMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/MentionMessageBuilder.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.msg.builder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; public interface MentionMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TaskMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TaskMessageBuilder.java similarity index 61% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TaskMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TaskMessageBuilder.java index fdf23e1e..a4e91b4e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TaskMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TaskMessageBuilder.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.msg.builder; import org.springframework.messaging.Message; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; public interface TaskMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TweetMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TweetMessageBuilder.java similarity index 70% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TweetMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TweetMessageBuilder.java index 12d93fb9..44063c5b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/TweetMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TweetMessageBuilder.java @@ -1,9 +1,9 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.msg.builder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; public interface TweetMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UrlMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UrlMessageBuilder.java new file mode 100644 index 00000000..285fdb81 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UrlMessageBuilder.java @@ -0,0 +1,4 @@ +package org.woehlke.twitterwall.backend.mq.msg.builder; + +public interface UrlMessageBuilder { +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserListMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserListMessageBuilder.java similarity index 60% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserListMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserListMessageBuilder.java index 7e486923..ff84e608 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserListMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserListMessageBuilder.java @@ -1,9 +1,9 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.msg.builder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.UserList; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; public interface UserListMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserMessageBuilder.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserMessageBuilder.java index 7bd20476..e71a7386 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/UserMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserMessageBuilder.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.msg.builder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; public interface UserMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/MentionMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/MentionMessageBuilderImpl.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/MentionMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/MentionMessageBuilderImpl.java index 3c5703d0..ff01f9fd 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/MentionMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/MentionMessageBuilderImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.msg.builder.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; @@ -6,9 +6,9 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.scheduled.mq.msg.MentionMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; @Component public class MentionMessageBuilderImpl implements MentionMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TaskMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TaskMessageBuilderImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TaskMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TaskMessageBuilderImpl.java index 653858e1..73ded3aa 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TaskMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TaskMessageBuilderImpl.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.msg.builder.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TaskMessageBuilder; @Component public class TaskMessageBuilderImpl implements TaskMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TweetMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TweetMessageBuilderImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TweetMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TweetMessageBuilderImpl.java index 33c75f1b..1206afd5 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/TweetMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TweetMessageBuilderImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.msg.builder.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; @Component public class TweetMessageBuilderImpl implements TweetMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UrlMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UrlMessageBuilderImpl.java new file mode 100644 index 00000000..4fe526c2 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UrlMessageBuilderImpl.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.msg.builder.impl; + +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.msg.builder.UrlMessageBuilder; + +@Component +public class UrlMessageBuilderImpl implements UrlMessageBuilder { +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserListMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserListMessageBuilderImpl.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserListMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserListMessageBuilderImpl.java index f6069eab..dfa9bd07 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserListMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserListMessageBuilderImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.msg.builder.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.UserList; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; @Component public class UserListMessageBuilderImpl implements UserListMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserMessageBuilderImpl.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserMessageBuilderImpl.java index d393329e..07188e35 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/builder/impl/UserMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserMessageBuilderImpl.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.msg.builder.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; @Component public class UserMessageBuilderImpl implements UserMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/MentionResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/MentionResultList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/MentionResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/MentionResultList.java index 488c1d0d..14032070 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/MentionResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/MentionResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.msg.results; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/TweetResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/TweetResultList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/TweetResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/TweetResultList.java index 438ffd01..2b5aadcf 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/TweetResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/TweetResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.msg.results; import org.woehlke.twitterwall.oodm.model.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UrlResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UrlResultList.java new file mode 100644 index 00000000..1ad6aedd --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UrlResultList.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.msg.results; + +import java.io.Serializable; + +public class UrlResultList implements Serializable { +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserListResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserListResultList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserListResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserListResultList.java index baa018fc..8589ade4 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserListResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserListResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.msg.results; import org.woehlke.twitterwall.oodm.model.UserList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserResultList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserResultList.java index 42e1d3b5..6efb3e55 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/results/UserResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.msg.results; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentMention.java similarity index 81% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentMention.java index 5c1f65bf..edb6b633 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentMention.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Mention; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentUrl.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentUrl.java index ad76088c..cc493d4f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentUrl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Url; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreEntitiesProcess.java similarity index 90% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreEntitiesProcess.java index 759875d6..6da7046a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreEntitiesProcess.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweet.java similarity index 81% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweet.java index e4fff8e0..28594d00 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweet.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweetPerform.java similarity index 80% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweetPerform.java index 805474a0..6d2479e1 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweetPerform.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreTwitterProfileForProxyMentionForUser.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreTwitterProfileForProxyMentionForUser.java index 41c1b663..36fb38dc 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreTwitterProfileForProxyMentionForUser.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserFromMention.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserFromMention.java index 43121480..cff370fe 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserFromMention.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProcess.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProcess.java index d3b8cbb0..c7091f60 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProcess.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfile.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfile.java index 04c5ed77..76f04fa8 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfile.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForScreenName.java similarity index 81% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForScreenName.java index 2560c0f1..9db1e02e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForScreenName.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForUserList.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForUserList.java index 6690b7aa..6db73825 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForUserList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentMentionImpl.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentMentionImpl.java index 90c39df0..50f05a11 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentMentionImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,8 +8,8 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.service.MentionService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreTwitterProfileForProxyMentionForUser; -import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentMention; +import org.woehlke.twitterwall.backend.service.persist.StoreTwitterProfileForProxyMentionForUser; +import org.woehlke.twitterwall.backend.service.persist.CreatePersistentMention; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java index f2a7055e..0acb4883 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,9 +6,9 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UrlService; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterUrlService; +import org.woehlke.twitterwall.backend.service.remote.TwitterUrlService; import org.woehlke.twitterwall.oodm.model.Url; -import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentUrl; +import org.woehlke.twitterwall.backend.service.persist.CreatePersistentUrl; import java.net.MalformedURLException; import java.net.URL; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreEntitiesProcessImpl.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreEntitiesProcessImpl.java index 24f8cd11..3e6dde5d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreEntitiesProcessImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -7,7 +7,7 @@ import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.service.*; -import org.woehlke.twitterwall.scheduled.service.persist.StoreEntitiesProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreEntitiesProcess; import java.util.HashSet; import java.util.LinkedHashSet; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetImpl.java index 3b6d8485..7a3322fe 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,9 +6,9 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweetPerform; -import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService; +import org.woehlke.twitterwall.backend.service.persist.StoreOneTweet; +import org.woehlke.twitterwall.backend.service.persist.StoreOneTweetPerform; +import org.woehlke.twitterwall.backend.service.transform.TweetTransformService; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetPerformImpl.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetPerformImpl.java index d2d73cfa..06a0878d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetPerformImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,7 +9,7 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.scheduled.service.persist.*; +import org.woehlke.twitterwall.backend.service.persist.*; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java index dbd8ba16..7bafa594 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,11 +12,11 @@ import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.service.*; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreTwitterProfileForProxyMentionForUser; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.service.persist.StoreTwitterProfileForProxyMentionForUser; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentUrl; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.service.persist.CreatePersistentUrl; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; import java.util.LinkedHashSet; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserFromMentionImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserFromMentionImpl.java index 7b3aad0a..1cb6ebe9 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserFromMentionImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -7,8 +7,8 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Mention; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserFromMention; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; +import org.woehlke.twitterwall.backend.service.persist.StoreUserFromMention; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfileForScreenName; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProcessImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProcessImpl.java index 21dd52ae..d426be6c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProcessImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,8 +8,8 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreEntitiesProcess; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreEntitiesProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; /** diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForScreenNameImpl.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForScreenNameImpl.java index 093f3bfa..d6ded25c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForScreenNameImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,9 +10,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UserService; //import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfile; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfileForScreenName; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForUserListImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForUserListImpl.java index 104d222f..1a2b1d39 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForUserListImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Mention; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForUserList; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfileForScreenName; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfileForUserList; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileImpl.java index 6fb8e346..2c6d2838 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -7,9 +7,9 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfile; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java b/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterApiService.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterApiService.java index 75097595..84a91c52 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterApiService.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote; +package org.woehlke.twitterwall.backend.service.remote; import org.springframework.social.twitter.api.CursoredList; import org.springframework.social.twitter.api.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java b/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlService.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlService.java index 3670449f..8fa0ca22 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlService.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote; +package org.woehlke.twitterwall.backend.service.remote; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Url; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterApiServiceImpl.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterApiServiceImpl.java index f06b834b..dce578ed 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterApiServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote.impl; +package org.woehlke.twitterwall.backend.service.remote.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,8 +9,8 @@ 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; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import javax.inject.Inject; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterUrlServiceImpl.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterUrlServiceImpl.java index fde9812d..1e818df0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterUrlServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote.impl; +package org.woehlke.twitterwall.backend.service.remote.impl; import org.apache.http.HttpHost; import org.apache.http.client.methods.CloseableHttpResponse; @@ -11,11 +11,11 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.BackendProperties; +import org.woehlke.twitterwall.configuration.properties.BackendProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.service.impl.UrlServiceImpl; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterUrlService; +import org.woehlke.twitterwall.backend.service.remote.TwitterUrlService; import java.io.IOException; import java.net.MalformedURLException; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/EntitiesTransformService.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/EntitiesTransformService.java index 2808f143..b37c1619 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/EntitiesTransformService.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/HashTagTransformService.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/HashTagTransformService.java index 8c51d5d0..4ae79676 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/HashTagTransformService.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.HashTagEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/MediaTransformService.java similarity index 75% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/MediaTransformService.java index b09969fe..2fe90c5c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/MediaTransformService.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.MediaEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/MentionTransformService.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/MentionTransformService.java index 922ef8b2..166b8ed7 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/MentionTransformService.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.MentionEntity; import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/TickerSymbolTransformService.java similarity index 78% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/TickerSymbolTransformService.java index efddadc2..76dc0a47 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/TickerSymbolTransformService.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.TickerSymbolEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.TickerSymbol; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/TweetTransformService.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/TweetTransformService.java index a641431a..eec5c206 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/TweetTransformService.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UrlTransformService.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/UrlTransformService.java index 3802d4b8..17d1b477 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UrlTransformService.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.social.twitter.api.UrlEntity; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Url; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserListTransformService.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/UserListTransformService.java index d0fbbef0..537efa92 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserListTransformService.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; public interface UserListTransformService extends TransformService { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserTransformService.java similarity index 62% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/UserTransformService.java index 00e74dfb..f29579ac 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserTransformService.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/common/TransformService.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/common/TransformService.java index efb1b46d..1cb8495a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/common/TransformService.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform.common; +package org.woehlke.twitterwall.backend.service.transform.common; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.common.DomainObject; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/EntitiesTransformServiceImpl.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/EntitiesTransformServiceImpl.java index 636558d8..3c9c2362 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/EntitiesTransformServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,7 +8,7 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.model.entities.Entities; -import org.woehlke.twitterwall.scheduled.service.transform.*; +import org.woehlke.twitterwall.backend.service.transform.*; import java.util.List; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/HashTagTransformServiceImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/HashTagTransformServiceImpl.java index 643052e9..3b64992d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/HashTagTransformServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.social.twitter.api.HashTagEntity; import org.springframework.social.twitter.api.TwitterProfile; @@ -6,7 +6,7 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; import org.woehlke.twitterwall.oodm.model.HashTag; -import org.woehlke.twitterwall.scheduled.service.transform.HashTagTransformService; +import org.woehlke.twitterwall.backend.service.transform.HashTagTransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MediaTransformServiceImpl.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MediaTransformServiceImpl.java index f69a01b5..587ddb82 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MediaTransformServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.social.twitter.api.MediaEntity; import org.springframework.social.twitter.api.TwitterProfile; @@ -6,7 +6,7 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; import org.woehlke.twitterwall.oodm.model.Media; -import org.woehlke.twitterwall.scheduled.service.transform.MediaTransformService; +import org.woehlke.twitterwall.backend.service.transform.MediaTransformService; import java.util.LinkedHashSet; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MentionTransformServiceImpl.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MentionTransformServiceImpl.java index 6cda5787..c0820241 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MentionTransformServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,7 +9,7 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; import org.woehlke.twitterwall.oodm.model.Mention; -import org.woehlke.twitterwall.scheduled.service.transform.MentionTransformService; +import org.woehlke.twitterwall.backend.service.transform.MentionTransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TickerSymbolTransformServiceImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TickerSymbolTransformServiceImpl.java index c60cdb4a..53945ac8 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TickerSymbolTransformServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.social.twitter.api.TickerSymbolEntity; import org.springframework.social.twitter.api.TwitterProfile; @@ -6,7 +6,7 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; import org.woehlke.twitterwall.oodm.model.TickerSymbol; -import org.woehlke.twitterwall.scheduled.service.transform.TickerSymbolTransformService; +import org.woehlke.twitterwall.backend.service.transform.TickerSymbolTransformService; import java.util.LinkedHashSet; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TweetTransformServiceImpl.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TweetTransformServiceImpl.java index cebe8d88..62f5f5fd 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TweetTransformServiceImpl.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.social.twitter.api.*; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.model.entities.Entities; -import org.woehlke.twitterwall.scheduled.service.transform.EntitiesTransformService; -import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.service.transform.EntitiesTransformService; +import org.woehlke.twitterwall.backend.service.transform.TweetTransformService; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; import java.util.Date; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UrlTransformServiceImpl.java similarity index 96% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UrlTransformServiceImpl.java index 518ec6e8..c405178f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UrlTransformServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,7 +9,7 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; import org.woehlke.twitterwall.oodm.model.Url; -import org.woehlke.twitterwall.scheduled.service.transform.UrlTransformService; +import org.woehlke.twitterwall.backend.service.transform.UrlTransformService; import java.util.*; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserListTransformServiceImpl.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserListTransformServiceImpl.java index ccac413b..82134ba0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserListTransformServiceImpl.java @@ -1,9 +1,9 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.UserList; -import org.woehlke.twitterwall.scheduled.service.transform.UserListTransformService; +import org.woehlke.twitterwall.backend.service.transform.UserListTransformService; @Component public class UserListTransformServiceImpl implements UserListTransformService { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformServiceImpl.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformServiceImpl.java index c66b79a1..6c8fd5e2 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,8 +8,8 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.scheduled.service.transform.EntitiesTransformService; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.service.transform.EntitiesTransformService; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; import java.util.Date; diff --git a/src/main/java/org/woehlke/twitterwall/conf/DataSourceConfig.java b/src/main/java/org/woehlke/twitterwall/configuration/DataSourceConfig.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/conf/DataSourceConfig.java rename to src/main/java/org/woehlke/twitterwall/configuration/DataSourceConfig.java index 8b15d9e5..17dd8f2e 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/DataSourceConfig.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/DataSourceConfig.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf; +package org.woehlke.twitterwall.configuration; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/WebMvcConfig.java b/src/main/java/org/woehlke/twitterwall/configuration/WebMvcConfig.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/conf/WebMvcConfig.java rename to src/main/java/org/woehlke/twitterwall/configuration/WebMvcConfig.java index 84f91e3d..d43ca3c7 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/WebMvcConfig.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/WebMvcConfig.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf; +package org.woehlke.twitterwall.configuration; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/org/woehlke/twitterwall/conf/WebSecurityConfig.java b/src/main/java/org/woehlke/twitterwall/configuration/WebSecurityConfig.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/conf/WebSecurityConfig.java rename to src/main/java/org/woehlke/twitterwall/configuration/WebSecurityConfig.java index 34803d6d..9802065c 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/WebSecurityConfig.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/WebSecurityConfig.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf; +package org.woehlke.twitterwall.configuration; import org.springframework.beans.factory.annotation.Autowired; @@ -7,7 +7,7 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; @Configuration @EnableWebSecurity diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/BackendProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/BackendProperties.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/conf/properties/BackendProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/BackendProperties.java index 1262c80c..3ce5ebf4 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/BackendProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/BackendProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/FrontendProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/FrontendProperties.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/conf/properties/FrontendProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/FrontendProperties.java index 8178b059..cb7b7fd1 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/FrontendProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/FrontendProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java index 3d96569a..b27c6e13 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/TestdataProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/TestdataProperties.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/conf/properties/TestdataProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/TestdataProperties.java index af9e2c1d..b45d8b23 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/TestdataProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/TestdataProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/TwitterProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/TwitterProperties.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/conf/properties/TwitterProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/TwitterProperties.java index dd85b7ca..10a15b0e 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/TwitterProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/TwitterProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/common/ControllerHelper.java b/src/main/java/org/woehlke/twitterwall/frontend/common/ControllerHelper.java deleted file mode 100644 index 6c242d68..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/common/ControllerHelper.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.woehlke.twitterwall.frontend.common; - -import org.springframework.ui.Model; -import org.springframework.web.servlet.ModelAndView; - -/** - * Created by tw on 18.07.17. - */ -public interface ControllerHelper { - - int FIRST_PAGE_NUMBER = 0; - - ModelAndView setupPage(ModelAndView mav, String title, String subtitle, String symbol); - - Model setupPage(Model model, String title, String subtitle, String symbol); -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java b/src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java index e5f6df91..28e971c8 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java @@ -6,8 +6,8 @@ import org.springframework.stereotype.Component; import org.springframework.ui.Model; import org.springframework.web.servlet.ModelAndView; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Page; 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 d30026c0..280b0b20 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java @@ -4,7 +4,7 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; 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 ecdd3e3c..1632ebb4 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java @@ -8,8 +8,8 @@ import org.springframework.ui.Model; 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.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.*; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java index 6394f913..80061fdb 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java @@ -12,8 +12,8 @@ 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.TwitterProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java index 685ec42f..3d1c7e44 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java @@ -6,11 +6,11 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.StartTask; /** diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java index ee11a2ae..2b9c97d3 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java @@ -12,7 +12,7 @@ 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.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.Media; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java index 88b3923c..1084440e 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java @@ -12,7 +12,7 @@ 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.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.Mention; 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 62a33735..a4b65e34 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -12,8 +12,8 @@ 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.conf.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.Task; @@ -22,7 +22,7 @@ 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.tasks.AsyncStartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.AsyncStartTask; import javax.persistence.EntityNotFoundException; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java index d3b51f3b..6a38cc65 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java @@ -9,7 +9,7 @@ import org.springframework.ui.Model; 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.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.TaskHistory; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java index 932ccc60..8c1f693c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java @@ -12,7 +12,7 @@ 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.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.TickerSymbol; 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 06ec7201..a301fd4f 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java @@ -12,8 +12,8 @@ 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.TwitterProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java index ebda3c6d..dd2c052a 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java @@ -12,7 +12,7 @@ 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.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java index 7a6d056e..fe29cb25 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java @@ -12,7 +12,7 @@ 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.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java index 7baa0545..87b04897 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java @@ -13,7 +13,7 @@ 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.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java deleted file mode 100644 index 72d2d34b..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.mentions.splitter; - - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.MentionSplitter; - -public interface UpdateUsersFromMentionsSplitter extends MentionSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java deleted file mode 100644 index 088c1feb..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface CreateTestDataTweetsSplitter extends 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 deleted file mode 100644 index 29c333fe..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FavoritesSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -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/tweets/splitter/FetchTweetsFromSearchSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java deleted file mode 100644 index e9fd75ff..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface FetchTweetsFromSearchSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java deleted file mode 100644 index 542da1b0..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface FindTweetsToRemoveSplitter extends 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 deleted file mode 100644 index e39a8cf0..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 21b80294..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/MentionsSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 5dedff8a..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -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/tweets/splitter/UpdateTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java deleted file mode 100644 index 34f9550c..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface UpdateTweetsSplitter extends 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 deleted file mode 100644 index b0151210..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UserTimelineSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -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/userlist/splitter/ListsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java deleted file mode 100644 index 411c591f..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -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/users/services/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java deleted file mode 100644 index ea95db1d..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; - -import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; - -public interface CreateImprintUser { - - Message createImprintUser(Message mqMessage); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java deleted file mode 100644 index d2655fbc..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.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.model.Task; -import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserTransformator; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; - -@Component("mqUserTransformator") -public class UserTransformatorImpl implements UserTransformator { - - private final UserTransformService userTransformService; - - private final TaskService taskService; - - private final UserMessageBuilder userMessageBuilder; - - @Autowired - public UserTransformatorImpl(UserTransformService userTransformService, TaskService taskService, UserMessageBuilder userMessageBuilder) { - this.userTransformService = userTransformService; - this.taskService = taskService; - this.userMessageBuilder = userMessageBuilder; - } - - @Override - public Message transformUser(Message mqMessageIn) { - UserMessage receivedMessage = mqMessageIn.getPayload(); - if(receivedMessage.isIgnoreTransformation()){ - Message mqMessageOut = MessageBuilder.withPayload(receivedMessage) - .copyHeaders(mqMessageIn.getHeaders()) - .setHeader("transformed",Boolean.TRUE) - .build(); - return mqMessageOut; - } else { - long id = receivedMessage.getTaskMessage().getTaskId(); - Task task = taskService.findById(id); - User user = userTransformService.transform(receivedMessage.getTwitterProfile(),task); - UserMessage outMsg = new UserMessage( - receivedMessage.getTaskMessage(), - receivedMessage.getTwitterProfile(), - user - ); - Message mqMessageOut = - MessageBuilder.withPayload(outMsg) - .copyHeaders(mqMessageIn.getHeaders()) - .setHeader("transformed",Boolean.TRUE) - .build(); - return mqMessageOut; - } - } -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java deleted file mode 100644 index 0ce5b272..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface CreateTestDataUsersSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java deleted file mode 100644 index b97d8d02..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface FetchFollowerSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java deleted file mode 100644 index b4a99d0c..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface FetchFriendsSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java deleted file mode 100644 index 6e2e57ca..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface FetchUserlistOwnersSplitter extends UserSplitter { -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java deleted file mode 100644 index e4a500e8..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface FetchUsersFromListSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java deleted file mode 100644 index 13565ef5..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface UpdateUsersSplitter extends UserSplitter { - -} diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml index 70c88a89..cdaf936f 100644 --- a/src/main/resources/integration.xml +++ b/src/main/resources/integration.xml @@ -25,116 +25,116 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -585,7 +585,7 @@ - + @@ -615,37 +615,37 @@ - + - + - + - + - + - + @@ -653,67 +653,67 @@ - + - + - + - + - + - + - + - + - + - + - + diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index c09b144f..cef4e3fd 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -10,10 +10,10 @@ - - - - + + + + diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AbstractMqEndpointTest.java similarity index 98% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AbstractMqEndpointTest.java index f91efd5a..c316817e 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AbstractMqEndpointTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.endpoint; import org.junit.Assert; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AsyncStartTaskTest.java similarity index 93% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AsyncStartTaskTest.java index e1a46c5f..4d2a1f12 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AsyncStartTaskTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.endpoint; /** diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AsyncStartTaskTestImpl.java similarity index 98% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AsyncStartTaskTestImpl.java index 9eb103c7..15f5c67f 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AsyncStartTaskTestImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.endpoint; import org.junit.Assert; import org.junit.Ignore; @@ -15,7 +15,7 @@ import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.AsyncStartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.AsyncStartTask; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class}) diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/StartTaskTest.java similarity index 69% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/StartTaskTest.java index 89044345..01138712 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/StartTaskTest.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.endpoint; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.StartTask; /** * @see StartTask diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/StartTaskTestImpl.java similarity index 98% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/StartTaskTestImpl.java index d88aa7fd..8636ed06 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/StartTaskTestImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.endpoint; import org.junit.Assert; @@ -11,14 +11,14 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.Application; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tasks.StartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.StartTask; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class}) diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java b/src/test/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlServiceTest.java similarity index 97% rename from src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java rename to src/test/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlServiceTest.java index d48710a8..36b0da66 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlServiceTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote; +package org.woehlke.twitterwall.backend.service.remote; import org.apache.http.HttpHost; import org.apache.http.client.methods.CloseableHttpResponse; @@ -15,7 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; 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 0f24a3bb..239582a9 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java @@ -14,7 +14,7 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; import static org.assertj.core.api.Java6Assertions.assertThat; 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 8c1f2117..b359351b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java @@ -18,9 +18,9 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.*; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.conf.properties.SchedulerProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.SchedulerProperties; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.UserService; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java index 25c91f60..1e67b057 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java @@ -8,8 +8,8 @@ import org.springframework.social.ResourceNotFoundException; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.Task; @@ -20,10 +20,10 @@ import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile; +import org.woehlke.twitterwall.backend.service.persist.StoreOneTweet; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfile; import javax.persistence.NoResultException; import java.util.ArrayList; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java index 7ab0bdb0..a4831ff1 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java @@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; 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 e430187c..51731a69 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java @@ -12,7 +12,7 @@ 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.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; 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 cc9bd692..cbc3f529 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java @@ -12,7 +12,7 @@ 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.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.Media; @RunWith(SpringRunner.class) 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 1d208d53..027de6a0 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java @@ -13,7 +13,7 @@ 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.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; 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 a774c74b..74867da5 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java @@ -12,7 +12,7 @@ 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.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.TaskHistory; @RunWith(SpringRunner.class) 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 e7054abb..7dcbeb16 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java @@ -12,7 +12,7 @@ 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.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; 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 a9991998..ac28692a 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java @@ -13,7 +13,7 @@ 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.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.TickerSymbol; @RunWith(SpringRunner.class) 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 e638096c..7803a58d 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java @@ -12,7 +12,7 @@ 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.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; 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 303788bd..f2d3e8b8 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java @@ -12,7 +12,7 @@ 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.configuration.properties.TestdataProperties; import org.woehlke.twitterwall.oodm.model.Url; @RunWith(SpringRunner.class) 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 9c6c9fdf..42cbdb97 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java @@ -13,8 +13,8 @@ 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; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml index 8a80976c..d28cf14d 100644 --- a/src/test/resources/logback.xml +++ b/src/test/resources/logback.xml @@ -13,10 +13,10 @@ - - - - + + + + From ed8f369976a0d1bf69926a3097598ace0f5dbe46 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Sat, 19 Aug 2017 20:25:18 +0200 Subject: [PATCH 26/45] fixed #271 --- .../{ScheduledTasks.java => CronJobs.java} | 48 +- .../mq/endpoint/common/MentionSplitter.java | 4 +- .../mq/endpoint/common/TweetsSplitter.java | 4 +- .../mq/endpoint/common/UrlSplitter.java | 2 +- .../mq/endpoint/common/UserListsSplitter.java | 4 +- .../mq/endpoint/common/UserSplitter.java | 4 +- .../serviceactivator}/MentionFinisher.java | 6 +- .../UpdateMentionWithUser.java | 4 +- .../UserforMentionLoader.java | 4 +- .../UserforMentionPersistor.java | 4 +- .../UserforMentionTransformator.java | 4 +- .../impl/MentionFinisherImpl.java | 12 +- .../impl/UpdateMentionWithUserImpl.java | 8 +- .../impl/UserforMentionLoaderImpl.java | 8 +- .../impl/UserforMentionPersistorImpl.java | 8 +- .../impl/UserforMentionTransformatorImpl.java | 8 +- .../UpdateUsersFromMentionsSplitter.java | 2 +- .../UpdateUsersFromMentionsSplitterImpl.java | 10 +- .../mentions}/msg/MentionMessage.java | 3 +- .../mentions/msg}/MentionMessageBuilder.java | 5 +- .../mentions/msg}/MentionResultList.java | 2 +- .../msg}/impl/MentionMessageBuilderImpl.java | 8 +- .../{msg => endpoint/tasks}/TaskMessage.java | 2 +- .../tasks}/TaskMessageBuilder.java | 3 +- .../tasks/{StartTask.java => TaskStart.java} | 2 +- ...tTask.java => TaskStartFireAndForget.java} | 2 +- .../tasks}/impl/TaskMessageBuilderImpl.java | 6 +- ...l.java => TaskStartFireAndForgetImpl.java} | 20 +- ...{StartTaskImpl.java => TaskStartImpl.java} | 31 +- .../serviceactivator}/TweetFinisher.java | 6 +- .../serviceactivator}/TweetPersistor.java | 4 +- .../serviceactivator}/TweetTransformator.java | 4 +- .../impl/TweetFinisherImpl.java | 12 +- .../impl/TweetPersistorImpl.java | 8 +- .../impl/TweetTransformatorImpl.java | 8 +- .../CreateTestDataTweetsSplitter.java | 2 +- .../splitter/FavoritesSplitter.java | 2 +- .../FetchTweetsFromSearchSplitter.java | 2 +- .../splitter/FindTweetsToRemoveSplitter.java | 2 +- .../splitter/HomeTimelineSplitter.java | 2 +- .../splitter/MentionsSplitter.java | 2 +- .../splitter/RetweetsOfMeSplitter.java | 2 +- .../splitter/UpdateTweetsSplitter.java | 2 +- .../splitter/UserTimelineSplitter.java | 2 +- .../CreateTestDataTweetsSplitterImpl.java | 12 +- .../splitter/impl/FavoritesSplitterImpl.java | 10 +- .../FetchTweetsFromSearchSplitterImpl.java | 10 +- .../impl/FindTweetsToRemoveSplitterImpl.java | 10 +- .../impl/HomeTimelineSplitterImpl.java | 10 +- .../splitter/impl/MentionsSplitterImpl.java | 10 +- .../impl/RetweetsOfMeSplitterImpl.java | 10 +- .../impl/UpdateTweetsSplitterImpl.java | 12 +- .../impl/UserTimelineSplitterImpl.java | 10 +- .../tweets}/msg/TweetMessage.java | 3 +- .../tweets/msg}/TweetMessageBuilder.java | 5 +- .../tweets/msg}/TweetResultList.java | 2 +- .../msg}/impl/TweetMessageBuilderImpl.java | 8 +- .../{ => endpoint/urls}/msg/UrlMessage.java | 2 +- .../endpoint/urls/msg/UrlMessageBuilder.java | 4 + .../urls/msg}/UrlResultList.java | 2 +- .../urls/msg/impl/UrlMessageBuilderImpl.java | 8 + .../serviceactivator}/ListFinisher.java | 6 +- .../serviceactivator}/ListsPersistor.java | 4 +- .../serviceactivator}/ListsTransformator.java | 4 +- .../impl/ListFinisherImpl.java | 12 +- .../impl/ListsPersistorImpl.java | 8 +- .../impl/ListsTransformatorImpl.java | 8 +- .../splitter/ListsSplitter.java | 2 +- .../splitter/impl/ListsSplitterImpl.java | 10 +- .../userlist}/msg/UserListMessage.java | 3 +- .../userlist/msg}/UserListMessageBuilder.java | 5 +- .../userlist/msg}/UserListResultList.java | 2 +- .../msg}/impl/UserListMessageBuilderImpl.java | 8 +- .../serviceactivator/CreateImprintUser.java | 10 + .../serviceactivator}/UserCheckStorage.java | 4 +- .../serviceactivator}/UserFinisher.java | 6 +- .../serviceactivator}/UserPersistor.java | 4 +- .../serviceactivator}/UserTransformator.java | 4 +- .../impl/CreateImprintUserImpl.java | 12 +- .../impl/UserCheckStorageImpl.java | 8 +- .../impl/UserFinisherImpl.java | 10 +- .../impl/UserPersistorImpl.java | 8 +- .../splitter/CreateTestDataUsersSplitter.java | 2 +- .../splitter/FetchFollowerSplitter.java | 2 +- .../splitter/FetchFriendsSplitter.java | 2 +- .../splitter/FetchUserlistOwnersSplitter.java | 2 +- .../splitter/FetchUsersFromListSplitter.java | 2 +- .../splitter/UpdateUsersSplitter.java | 2 +- .../impl/CreateTestDataUsersSplitterImpl.java | 12 +- .../impl/FetchFollowerSplitterImpl.java | 10 +- .../impl/FetchFriendsSplitterImpl.java | 10 +- .../impl/FetchUserlistOwnersSplitterImpl.java | 12 +- .../impl/FetchUsersFromListSplitterImpl.java | 10 +- .../impl/UpdateUsersSplitterImpl.java | 12 +- .../{ => endpoint/users}/msg/UserMessage.java | 3 +- .../users/msg}/UserMessageBuilder.java | 5 +- .../users/msg}/UserResultList.java | 2 +- .../msg}/impl/UserMessageBuilderImpl.java | 8 +- .../users/services/CreateImprintUser.java | 10 - .../mq/msg/builder/UrlMessageBuilder.java | 4 - .../builder/impl/UrlMessageBuilderImpl.java | 8 - .../persist/impl/CreatePersistentUrlImpl.java | 2 +- .../transform/impl/UserTransformatorImpl.java | 57 + .../controller/ImprintController.java | 10 +- .../frontend/controller/TaskController.java | 42 +- src/main/resources/integration.xml | 1209 ++++++++++++----- src/site/Twitterwall2/Twitterwall2.mdzip | Bin 40893 -> 83074 bytes ...eduledTasksTest.java => CronJobsTest.java} | 32 +- ...tImpl.java => AsyncTaskStartTestImpl.java} | 36 +- .../backend/mq/endpoint/StartTaskTest.java | 4 +- ...skTestImpl.java => TaskStartTestImpl.java} | 42 +- 111 files changed, 1334 insertions(+), 772 deletions(-) rename src/main/java/org/woehlke/twitterwall/{ScheduledTasks.java => CronJobs.java} (79%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/MentionFinisher.java (52%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/UpdateMentionWithUser.java (52%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/UserforMentionLoader.java (53%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/UserforMentionPersistor.java (52%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/UserforMentionTransformator.java (53%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/impl/MentionFinisherImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/impl/UpdateMentionWithUserImpl.java (86%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/impl/UserforMentionLoaderImpl.java (77%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/impl/UserforMentionPersistorImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{services => endpoint/serviceactivator}/impl/UserforMentionTransformatorImpl.java (80%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{ => endpoint}/splitter/UpdateUsersFromMentionsSplitter.java (66%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/{ => endpoint}/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java (91%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{ => endpoint/mentions}/msg/MentionMessage.java (97%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/mentions/msg}/MentionMessageBuilder.java (80%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/results => endpoint/mentions/msg}/MentionResultList.java (94%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/mentions/msg}/impl/MentionMessageBuilderImpl.java (91%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg => endpoint/tasks}/TaskMessage.java (97%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/tasks}/TaskMessageBuilder.java (62%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/{StartTask.java => TaskStart.java} (70%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/{AsyncStartTask.java => TaskStartFireAndForget.java} (94%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/tasks}/impl/TaskMessageBuilderImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/{AsyncStartTaskImpl.java => TaskStartFireAndForgetImpl.java} (85%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/{StartTaskImpl.java => TaskStartImpl.java} (88%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{services => endpoint/serviceactivator}/TweetFinisher.java (52%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{services => endpoint/serviceactivator}/TweetPersistor.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{services => endpoint/serviceactivator}/TweetTransformator.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{services => endpoint/serviceactivator}/impl/TweetFinisherImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{services => endpoint/serviceactivator}/impl/TweetPersistorImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{services => endpoint/serviceactivator}/impl/TweetTransformatorImpl.java (86%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/CreateTestDataTweetsSplitter.java (65%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/FavoritesSplitter.java (63%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/FetchTweetsFromSearchSplitter.java (65%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/FindTweetsToRemoveSplitter.java (65%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/HomeTimelineSplitter.java (64%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/MentionsSplitter.java (63%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/RetweetsOfMeSplitter.java (64%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/UpdateTweetsSplitter.java (64%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/UserTimelineSplitter.java (64%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/CreateTestDataTweetsSplitterImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/FavoritesSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/FetchTweetsFromSearchSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/FindTweetsToRemoveSplitterImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/HomeTimelineSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/MentionsSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/RetweetsOfMeSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/UpdateTweetsSplitterImpl.java (89%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/{ => endpoint}/splitter/impl/UserTimelineSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{ => endpoint/tweets}/msg/TweetMessage.java (96%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/tweets/msg}/TweetMessageBuilder.java (71%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/results => endpoint/tweets/msg}/TweetResultList.java (95%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/tweets/msg}/impl/TweetMessageBuilderImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{ => endpoint/urls}/msg/UrlMessage.java (57%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessageBuilder.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/results => endpoint/urls/msg}/UrlResultList.java (58%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/impl/UrlMessageBuilderImpl.java rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/{services => endpoint/serviceactivator}/ListFinisher.java (51%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/{services => endpoint/serviceactivator}/ListsPersistor.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/{services => endpoint/serviceactivator}/ListsTransformator.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/{services => endpoint/serviceactivator}/impl/ListFinisherImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/{services => endpoint/serviceactivator}/impl/ListsPersistorImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/{services => endpoint/serviceactivator}/impl/ListsTransformatorImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/{ => endpoint}/splitter/ListsSplitter.java (63%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/{ => endpoint}/splitter/impl/ListsSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{ => endpoint/userlist}/msg/UserListMessage.java (95%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/userlist/msg}/UserListMessageBuilder.java (61%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/results => endpoint/userlist/msg}/UserListResultList.java (94%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/userlist/msg}/impl/UserListMessageBuilderImpl.java (74%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/CreateImprintUser.java rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{services => endpoint/serviceactivator}/UserCheckStorage.java (51%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{services => endpoint/serviceactivator}/UserFinisher.java (58%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{services => endpoint/serviceactivator}/UserPersistor.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{services => endpoint/serviceactivator}/UserTransformator.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{services => endpoint/serviceactivator}/impl/CreateImprintUserImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{services => endpoint/serviceactivator}/impl/UserCheckStorageImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{services => endpoint/serviceactivator}/impl/UserFinisherImpl.java (88%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{services => endpoint/serviceactivator}/impl/UserPersistorImpl.java (86%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/CreateTestDataUsersSplitter.java (65%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/FetchFollowerSplitter.java (64%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/FetchFriendsSplitter.java (64%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/FetchUserlistOwnersSplitter.java (65%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/FetchUsersFromListSplitter.java (65%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/UpdateUsersSplitter.java (64%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/impl/CreateTestDataUsersSplitterImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/impl/FetchFollowerSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/impl/FetchFriendsSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/impl/FetchUserlistOwnersSplitterImpl.java (89%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/impl/FetchUsersFromListSplitterImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/{ => endpoint}/splitter/impl/UpdateUsersSplitterImpl.java (91%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{ => endpoint/users}/msg/UserMessage.java (98%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/users/msg}/UserMessageBuilder.java (85%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/results => endpoint/users/msg}/UserResultList.java (95%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{msg/builder => endpoint/users/msg}/impl/UserMessageBuilderImpl.java (93%) delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/CreateImprintUser.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UrlMessageBuilder.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UrlMessageBuilderImpl.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformatorImpl.java rename src/test/java/org/woehlke/twitterwall/{ScheduledTasksTest.java => CronJobsTest.java} (66%) rename src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/{AsyncStartTaskTestImpl.java => AsyncTaskStartTestImpl.java} (90%) rename src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/{StartTaskTestImpl.java => TaskStartTestImpl.java} (91%) diff --git a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java b/src/main/java/org/woehlke/twitterwall/CronJobs.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/ScheduledTasks.java rename to src/main/java/org/woehlke/twitterwall/CronJobs.java index 1b925e59..7a99d711 100644 --- a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java +++ b/src/main/java/org/woehlke/twitterwall/CronJobs.java @@ -3,23 +3,24 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.configuration.properties.SchedulerProperties; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.AsyncStartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStartFireAndForget; /** * Created by tw on 10.06.17. */ @Component -public class ScheduledTasks { +public class CronJobs { @Scheduled(initialDelay= TEN_SECONDS, fixedRate = ONE_DAY) public void createImprintUserAsync(){ String msg = "create Imprint User (Async) "; if(!schedulerProperties.getSkipFortesting()) { - Task task = asyncStartTask.createImprintUserAsync(); + Task task = mqTaskStartFireAndForget.createImprintUserAsync(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -28,7 +29,7 @@ public void createImprintUserAsync(){ public void fetchTweetsFromTwitterSearch() { String msg = "fetch Tweets From TwitterSearch "; if((schedulerProperties.getAllowFetchTweetsFromTwitterSearch()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.fetchTweetsFromSearch(); + Task task = mqTaskStartFireAndForget.fetchTweetsFromSearch(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -37,7 +38,7 @@ public void fetchTweetsFromTwitterSearch() { public void fetchUsersFromDefinedUserList(){ String msg = "fetch Users from Defined User List "; if((schedulerProperties.getFetchUsersFromDefinedUserListAllow()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.fetchUsersFromList(); + Task task = mqTaskStartFireAndForget.fetchUsersFromList(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -46,7 +47,7 @@ public void fetchUsersFromDefinedUserList(){ public void getHomeTimeline() { String msg = "get Home Timeline Tweets "; if((schedulerProperties.getAllowGetHomeTimeline()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getHomeTimeline(); + Task task = mqTaskStartFireAndForget.getHomeTimeline(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -55,7 +56,7 @@ public void getHomeTimeline() { public void getUserTimeline() { String msg = " get User Timeline Tweets "; if((schedulerProperties.getAllowGetUserTimeline()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getUserTimeline(); + Task task = mqTaskStartFireAndForget.getUserTimeline(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -64,7 +65,7 @@ public void getUserTimeline() { public void getMentions() { String msg = " get Mentions "; if((schedulerProperties.getAllowGetMentions()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getMentions(); + Task task = mqTaskStartFireAndForget.getMentions(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -73,7 +74,7 @@ public void getMentions() { public void getFavorites() { String msg = " get Favorites "; if((schedulerProperties.getAllowGetFavorites()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getFavorites(); + Task task = mqTaskStartFireAndForget.getFavorites(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -82,7 +83,7 @@ public void getFavorites() { public void getRetweetsOfMe() { String msg = " get Retweets Of Me "; if((schedulerProperties.getAllowGetRetweetsOfMe()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getRetweetsOfMe(); + Task task = mqTaskStartFireAndForget.getRetweetsOfMe(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -91,9 +92,9 @@ public void getRetweetsOfMe() { public void getLists() { String msg = " get Lists "; if((schedulerProperties.getAllowGetLists()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getLists(); + Task task = mqTaskStartFireAndForget.getLists(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); - task = asyncStartTask.fetchUserlistOwners(); + task = mqTaskStartFireAndForget.fetchUserlistOwners(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -102,7 +103,7 @@ public void getLists() { public void fetchFollower(){ String msg = "fetch Follower "; if((schedulerProperties.getFetchFollowerAllow()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.fetchFollower(); + Task task = mqTaskStartFireAndForget.fetchFollower(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -111,7 +112,7 @@ public void fetchFollower(){ public void fetchFriends(){ String msg = "fetch Friends "; if((schedulerProperties.getFetchFriendsAllow()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.fetchFriends(); + Task task = mqTaskStartFireAndForget.fetchFriends(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -120,7 +121,7 @@ public void fetchFriends(){ public void removeOldDataFromStorage(){ String msg = "remove Old Data From Storage: "; if((schedulerProperties.getRemoveOldDataFromStorageAllow()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.removeOldDataFromStorage(); + Task task = mqTaskStartFireAndForget.removeOldDataFromStorage(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -129,7 +130,7 @@ public void removeOldDataFromStorage(){ public void updateUserProfilesFromMentions(){ String msg = "update User Profiles From Mentions"; if((schedulerProperties.getAllowUpdateUserProfilesFromMention()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.updateUsersFromMentions(); + Task task = mqTaskStartFireAndForget.updateUsersFromMentions(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -138,7 +139,7 @@ public void updateUserProfilesFromMentions(){ public void updateTweets() { String msg = "update Tweets "; if((schedulerProperties.getAllowUpdateTweets()) && (!schedulerProperties.getSkipFortesting())){ - Task task = asyncStartTask.updateTweets(); + Task task = mqTaskStartFireAndForget.updateTweets(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -147,15 +148,18 @@ public void updateTweets() { public void updateUserProfiles() { String msg = "update User Profiles "; if((schedulerProperties.getAllowUpdateUserProfiles()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.updateUsers(); + Task task = mqTaskStartFireAndForget.updateUsers(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @Autowired - public ScheduledTasks(SchedulerProperties schedulerProperties, AsyncStartTask mqAsyncStartTask) { + public CronJobs( + SchedulerProperties schedulerProperties, + @Qualifier("mqTaskStartFireAndForget") TaskStartFireAndForget mqTaskStartFireAndForget + ) { this.schedulerProperties = schedulerProperties; - this.asyncStartTask = mqAsyncStartTask; + this.mqTaskStartFireAndForget = mqTaskStartFireAndForget; } public final static long TEN_SECONDS = 10 * 1000; @@ -170,9 +174,9 @@ public ScheduledTasks(SchedulerProperties schedulerProperties, AsyncStartTask mq public final static long ONE_DAY = 24 * ONE_HOUR; - private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); + private static final Logger log = LoggerFactory.getLogger(CronJobs.class); private final SchedulerProperties schedulerProperties; - private final AsyncStartTask asyncStartTask; + private final TaskStartFireAndForget mqTaskStartFireAndForget; } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java index 2982ebb0..1161cf0e 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.backend.mq.endpoint.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java index 5688dfc1..1749204e 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.backend.mq.endpoint.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java index 93480d10..f5a8fa10 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.backend.mq.endpoint.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.urls.msg.UrlMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java index 1659239d..7decaf45 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.backend.mq.endpoint.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java index 3fca00a0..b01c0f73 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java @@ -1,8 +1,8 @@ package org.woehlke.twitterwall.backend.mq.endpoint.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/MentionFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/MentionFinisher.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/MentionFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/MentionFinisher.java index af6cde0c..6f0c8637 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/MentionFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/MentionFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.results.MentionResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UpdateMentionWithUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UpdateMentionWithUser.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java index 1df9fa8c..8687eece 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UpdateMentionWithUser.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; public interface UpdateMentionWithUser { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionLoader.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionLoader.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionLoader.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionLoader.java index a98ba8d1..a78a02d0 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionLoader.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionLoader.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; public interface UserforMentionLoader { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionPersistor.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionPersistor.java index 7713832a..45ce7e7d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; public interface UserforMentionPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionTransformator.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionTransformator.java index 7a7a1b5d..1de82e4f 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/UserforMentionTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; public interface UserforMentionTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java index 4649b249..be19d4d3 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/MentionFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,11 +10,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.MentionFinisher; -import org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl.UserFinisherImpl; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.backend.mq.msg.results.MentionResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.MentionFinisher; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionResultList; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java index 2ef85e50..0d07f953 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UpdateMentionWithUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -9,9 +9,9 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.MentionService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.UpdateMentionWithUser; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.UpdateMentionWithUser; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; @Component("mqUpdateMentionWithUser") public class UpdateMentionWithUserImpl implements UpdateMentionWithUser { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java index 526c1cd4..4f8c8b6f 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionLoaderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.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.backend.mq.endpoint.mentions.services.UserforMentionLoader; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.UserforMentionLoader; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; @Component("mqUserforMentionLoader") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java index d1ed156b..96027198 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,9 +7,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.UserforMentionPersistor; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.UserforMentionPersistor; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; @Component("mqUserforMentionPersistor") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java similarity index 80% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java index 5f44cb2e..65530213 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/services/impl/UserforMentionTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -6,9 +6,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.services.UserforMentionTransformator; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.UserforMentionTransformator; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; import org.woehlke.twitterwall.backend.service.transform.UserTransformService; @Component("mqUserforMentionTransformator") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java similarity index 66% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java index 3ec374d3..37cd655c 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/UpdateUsersFromMentionsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.MentionSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java index 6c4ba2f9..d9cff093 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,10 +15,10 @@ 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.backend.mq.endpoint.mentions.splitter.UpdateUsersFromMentionsSplitter; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.splitter.UpdateUsersFromMentionsSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/MentionMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessage.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/MentionMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessage.java index ed4c2580..7a42c363 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/MentionMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessage.java @@ -1,6 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.msg; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg; import org.springframework.social.twitter.api.TwitterProfile; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/MentionMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessageBuilder.java similarity index 80% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/MentionMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessageBuilder.java index ad121644..c879de77 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/MentionMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessageBuilder.java @@ -1,11 +1,10 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; public interface MentionMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/MentionResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionResultList.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/MentionResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionResultList.java index 14032070..b7b5559b 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/MentionResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/MentionMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/impl/MentionMessageBuilderImpl.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/MentionMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/impl/MentionMessageBuilderImpl.java index ff01f9fd..5facdb88 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/MentionMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/impl/MentionMessageBuilderImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; @@ -6,9 +6,9 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.MentionMessageBuilder; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; @Component public class MentionMessageBuilderImpl implements MentionMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/TaskMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessage.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/TaskMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessage.java index 4e71e2a3..b62e68f5 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/TaskMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.msg; +package org.woehlke.twitterwall.backend.mq.endpoint.tasks; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TaskMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessageBuilder.java similarity index 62% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TaskMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessageBuilder.java index a4e91b4e..fbd57b92 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TaskMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessageBuilder.java @@ -1,8 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.endpoint.tasks; import org.springframework.messaging.Message; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; public interface TaskMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/StartTask.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStart.java similarity index 70% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/StartTask.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStart.java index 1e82332f..156027dd 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/StartTask.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStart.java @@ -2,7 +2,7 @@ import org.woehlke.twitterwall.oodm.model.User; -public interface StartTask extends AsyncStartTask { +public interface TaskStart extends TaskStartFireAndForget { User createImprintUser(); diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/AsyncStartTask.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStartFireAndForget.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/AsyncStartTask.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStartFireAndForget.java index 5c3cac35..c961058d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/AsyncStartTask.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStartFireAndForget.java @@ -3,7 +3,7 @@ import org.woehlke.twitterwall.oodm.model.Task; -public interface AsyncStartTask { +public interface TaskStartFireAndForget { Task updateTweets(); diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TaskMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskMessageBuilderImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TaskMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskMessageBuilderImpl.java index 73ded3aa..6bbbf454 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TaskMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskMessageBuilderImpl.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tasks.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessageBuilder; @Component public class TaskMessageBuilderImpl implements TaskMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartFireAndForgetImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartFireAndForgetImpl.java index 09c609fc..4adc3a36 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/AsyncStartTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartFireAndForgetImpl.java @@ -3,6 +3,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.integration.channel.ExecutorChannel; import org.springframework.integration.core.MessagingTemplate; import org.springframework.messaging.Message; @@ -12,13 +13,13 @@ import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.AsyncStartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStartFireAndForget; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessageBuilder; -@Component("mqAsyncStartTask") -public class AsyncStartTaskImpl implements AsyncStartTask { +@Component("mqTaskStartFireAndForget") +public class TaskStartFireAndForgetImpl implements TaskStartFireAndForget { @Override public Task fetchTweetsFromSearch() { @@ -148,7 +149,12 @@ private Task send(TaskType taskType){ } @Autowired - public AsyncStartTaskImpl(TaskService taskService, CountedEntitiesService countedEntitiesService, ExecutorChannel executorChannelForAsyncStart, TaskMessageBuilder taskMessageBuilder) { + public TaskStartFireAndForgetImpl( + TaskService taskService, + CountedEntitiesService countedEntitiesService, + @Qualifier("channel.async.TaskStart") ExecutorChannel executorChannelForAsyncStart, + TaskMessageBuilder taskMessageBuilder + ) { this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; this.executorChannelForAsyncStart = executorChannelForAsyncStart; @@ -163,5 +169,5 @@ public AsyncStartTaskImpl(TaskService taskService, CountedEntitiesService counte private final TaskMessageBuilder taskMessageBuilder; - private static final Logger log = LoggerFactory.getLogger(AsyncStartTaskImpl.class); + private static final Logger log = LoggerFactory.getLogger(TaskStartFireAndForgetImpl.class); } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/StartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartImpl.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/StartTaskImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartImpl.java index e73d9099..4810764a 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/StartTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartImpl.java @@ -3,25 +3,27 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.integration.core.MessagingTemplate; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.StartTask; -import org.woehlke.twitterwall.backend.mq.msg.*; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStart; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.backend.mq.msg.builder.TaskMessageBuilder; -import org.woehlke.twitterwall.backend.mq.msg.results.TweetResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetResultList; -@Component("mqStartTask") -public class StartTaskImpl implements StartTask { +@Component("mqTaskStart") +public class TaskStartImpl implements TaskStart { @Override public Task fetchTweetsFromSearch() { @@ -144,7 +146,7 @@ private Task sendAndReceiveUserList(TaskType taskType){ Task task = taskService.create("Start via MQ by Scheduler ", taskType, taskSendType,countedEntities); Message mqMessage = taskMessageBuilder.buildTaskMessage(task); MessagingTemplate mqTemplate = new MessagingTemplate(); - Message returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); Object o = returnedMessage.getPayload(); countedEntities = countedEntitiesService.countAll(); if( o instanceof TweetResultList){ @@ -178,7 +180,7 @@ public User createImprintUser() { .setHeader("send_type", taskSendType) .build(); MessagingTemplate mqTemplate = new MessagingTemplate(); - Message returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); Object o = returnedMessage.getPayload(); countedEntities = countedEntitiesService.countAll(); if( o instanceof UserMessage){ @@ -205,7 +207,7 @@ private Task sendAndReceiveTweet(TaskType taskType){ Task task = taskService.create("Start via MQ by Scheduler ", taskType, taskSendType,countedEntities); Message mqMessage = taskMessageBuilder.buildTaskMessage(task); MessagingTemplate mqTemplate = new MessagingTemplate(); - Message returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); Object o = returnedMessage.getPayload(); countedEntities = countedEntitiesService.countAll(); if( o instanceof TweetResultList){ @@ -230,7 +232,7 @@ private Task sendAndReceiveUser(TaskType taskType){ Task task = taskService.create(logMsg, taskType, taskSendType, countedEntities); Message mqMessage = taskMessageBuilder.buildTaskMessage(task); MessagingTemplate mqTemplate = new MessagingTemplate(); - Message returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); Object o = returnedMessage.getPayload(); countedEntities = countedEntitiesService.countAll(); if( o instanceof UserMessage){ @@ -248,7 +250,8 @@ private Task sendAndReceiveUser(TaskType taskType){ return task; } - private final MessageChannel startTaskChannel; + + private final MessageChannel channelTaskStart; private final TaskService taskService; @@ -256,11 +259,11 @@ private Task sendAndReceiveUser(TaskType taskType){ private final TaskMessageBuilder taskMessageBuilder; - private static final Logger log = LoggerFactory.getLogger(StartTaskImpl.class); + private static final Logger log = LoggerFactory.getLogger(TaskStartImpl.class); @Autowired - public StartTaskImpl(MessageChannel startTaskChannel, TaskService taskService, CountedEntitiesService countedEntitiesService, TaskMessageBuilder taskMessageBuilder) { - this.startTaskChannel = startTaskChannel; + public TaskStartImpl(@Qualifier("channel.TaskStart") MessageChannel channelTaskStart, TaskService taskService, CountedEntitiesService countedEntitiesService, TaskMessageBuilder taskMessageBuilder) { + this.channelTaskStart = channelTaskStart; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; this.taskMessageBuilder = taskMessageBuilder; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetFinisher.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetFinisher.java index 3edb44c3..4bae784d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.results.TweetResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetPersistor.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetPersistor.java index 0e3ec5b8..76178872 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; public interface TweetPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetTransformator.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetTransformator.java index 0d79d4f7..3cba625c 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/TweetTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; public interface TweetTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java index bbfad5fe..32751be7 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,11 +10,11 @@ import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl.UserFinisherImpl; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.TweetFinisher; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; -import org.woehlke.twitterwall.backend.mq.msg.results.TweetResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.TweetFinisher; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetResultList; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java index 37e878ac..fdf9d615 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,9 +7,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.TweetPersistor; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.TweetPersistor; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.persist.StoreOneTweetPerform; @Component("mqTweetPersistor") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java index 25a1ece0..4ec271d7 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,9 +7,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.services.TweetTransformator; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.TweetTransformator; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.transform.TweetTransformService; @Component("mqTweetTransformator") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java index 40dc8063..f6da4cc2 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FavoritesSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FavoritesSplitter.java similarity index 63% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FavoritesSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FavoritesSplitter.java index cec7e147..f186d830 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FavoritesSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FavoritesSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java index 517a06a9..62895acc 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java index 12bae738..6e9228fb 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/HomeTimelineSplitter.java similarity index 64% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/HomeTimelineSplitter.java index 449b205d..b1f3bee7 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/HomeTimelineSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/MentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/MentionsSplitter.java similarity index 63% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/MentionsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/MentionsSplitter.java index 913b8e2d..3a950930 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/MentionsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/MentionsSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/RetweetsOfMeSplitter.java similarity index 64% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/RetweetsOfMeSplitter.java index c71a5f7b..7280cc67 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/RetweetsOfMeSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UpdateTweetsSplitter.java similarity index 64% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UpdateTweetsSplitter.java index fa26f1dc..f0840837 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UpdateTweetsSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UserTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UserTimelineSplitter.java similarity index 64% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UserTimelineSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UserTimelineSplitter.java index 0f94742e..b8e2150d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/UserTimelineSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UserTimelineSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java index 18a52020..415dc5a2 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -9,17 +9,17 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.CreateTestDataTweetsSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.CreateTestDataTweetsSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; @Component("mqCreateTestDataForTweetsSplitter") public class CreateTestDataTweetsSplitterImpl implements CreateTestDataTweetsSplitter { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java index 27284bf0..eb3ac60a 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.FavoritesSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.FavoritesSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java index f4ea995c..37420612 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.FetchTweetsFromSearchSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.FetchTweetsFromSearchSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java index f27e5848..f68d7e22 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -12,10 +12,10 @@ 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.backend.mq.endpoint.tweets.splitter.FindTweetsToRemoveSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.FindTweetsToRemoveSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java index 4a5e7d0c..9364efeb 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.HomeTimelineSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.HomeTimelineSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java index 0ac0c26f..0964b014 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.MentionsSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.MentionsSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java index 8ccf55c1..e705e7a6 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.RetweetsOfMeSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.RetweetsOfMeSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java index 2448e054..2212f834 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,17 +13,17 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.UpdateTweetsSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.UpdateTweetsSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqUpdateTweetsSplitter") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java index 29785c57..62201f46 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.splitter.UserTimelineSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.UserTimelineSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/TweetMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessage.java similarity index 96% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/TweetMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessage.java index 470ff168..7656bdc1 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/TweetMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessage.java @@ -1,7 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.msg; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg; import org.springframework.social.twitter.api.Tweet; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TweetMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessageBuilder.java similarity index 71% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TweetMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessageBuilder.java index 44063c5b..28d803d0 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/TweetMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessageBuilder.java @@ -1,9 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; public interface TweetMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/TweetResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetResultList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/TweetResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetResultList.java index 2b5aadcf..6b369139 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/TweetResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg; import org.woehlke.twitterwall.oodm.model.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TweetMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/impl/TweetMessageBuilderImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TweetMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/impl/TweetMessageBuilderImpl.java index 1206afd5..9b407c14 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/TweetMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/impl/TweetMessageBuilderImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; @Component public class TweetMessageBuilderImpl implements TweetMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UrlMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessage.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/UrlMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessage.java index 13f72fa1..266c8f57 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UrlMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.msg; +package org.woehlke.twitterwall.backend.mq.endpoint.urls.msg; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessageBuilder.java new file mode 100644 index 00000000..4fef8323 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessageBuilder.java @@ -0,0 +1,4 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.urls.msg; + +public interface UrlMessageBuilder { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UrlResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlResultList.java similarity index 58% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UrlResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlResultList.java index 1ad6aedd..748aab0d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UrlResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.endpoint.urls.msg; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/impl/UrlMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/impl/UrlMessageBuilderImpl.java new file mode 100644 index 00000000..ce84fe5d --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/impl/UrlMessageBuilderImpl.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.urls.msg.impl; + +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.endpoint.urls.msg.UrlMessageBuilder; + +@Component +public class UrlMessageBuilderImpl implements UrlMessageBuilder { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListFinisher.java similarity index 51% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListFinisher.java index 53e88c5b..5cefca8b 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.msg.results.UserListResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsPersistor.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsPersistor.java index df9ef80e..4f8892ee 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; public interface ListsPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsTransformator.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsTransformator.java index a88134f5..6ed03529 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/ListsTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; public interface ListsTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java index d205e7e6..2fa9fad1 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,11 +11,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.ListFinisher; -import org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl.UserFinisherImpl; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; -import org.woehlke.twitterwall.backend.mq.msg.results.UserListResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.ListFinisher; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListResultList; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java index 8dfc7f39..c3e82586 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -8,9 +8,9 @@ import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserListService; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.ListsPersistor; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.ListsPersistor; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; @Component("mqUserListPersistor") public class ListsPersistorImpl implements ListsPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java index d50a6514..98dbbd16 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -6,9 +6,9 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.services.ListsTransformator; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.ListsTransformator; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; import org.woehlke.twitterwall.backend.service.transform.UserListTransformService; @Component("mqUserListTransformator") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/ListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/ListsSplitter.java similarity index 63% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/ListsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/ListsSplitter.java index 76605c3e..26cf7337 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/ListsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/ListsSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.UserListsSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/impl/ListsSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/impl/ListsSplitterImpl.java index 7ad05e58..33f420e0 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/impl/ListsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.splitter.ListsSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.splitter.ListsSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserListMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessage.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserListMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessage.java index cc35c046..797f61f7 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserListMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessage.java @@ -1,6 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.msg; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg; import org.springframework.social.twitter.api.UserList; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserListMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessageBuilder.java similarity index 61% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserListMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessageBuilder.java index ff84e608..bc1cc45f 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserListMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessageBuilder.java @@ -1,9 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.UserList; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; public interface UserListMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserListResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListResultList.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserListResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListResultList.java index 8589ade4..b7ec9b70 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserListResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg; import org.woehlke.twitterwall.oodm.model.UserList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserListMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/impl/UserListMessageBuilderImpl.java similarity index 74% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserListMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/impl/UserListMessageBuilderImpl.java index dfa9bd07..937c8c9c 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserListMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/impl/UserListMessageBuilderImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.UserList; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; @Component public class UserListMessageBuilderImpl implements UserListMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/CreateImprintUser.java new file mode 100644 index 00000000..1b75b639 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/CreateImprintUser.java @@ -0,0 +1,10 @@ +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; + +public interface CreateImprintUser { + + Message createImprintUser(Message mqMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserCheckStorage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserCheckStorage.java similarity index 51% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserCheckStorage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserCheckStorage.java index 52356859..25676d92 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserCheckStorage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserCheckStorage.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; public interface UserCheckStorage { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserFinisher.java similarity index 58% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserFinisher.java index 1493fe64..4d2522c3 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.results.UserResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserPersistor.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserPersistor.java index d89f62ae..24f022d4 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; public interface UserPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserTransformator.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserTransformator.java index 1fd98e18..7b9323fa 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/UserTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; public interface UserTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/CreateImprintUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/CreateImprintUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java index b0f5aa99..b559fbbf 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/CreateImprintUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -7,13 +7,13 @@ import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.services.CreateImprintUser; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.CreateImprintUser; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; @Component("mqCreateImprintUser") public class CreateImprintUserImpl implements CreateImprintUser { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserCheckStorageImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserCheckStorageImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java index dbf55095..3ba1b2b3 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserCheckStorageImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.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.backend.mq.endpoint.users.services.UserCheckStorage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.UserCheckStorage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; @Component("mqUserCheckStorage") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserFinisherImpl.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserFinisherImpl.java index 54c4f1b1..5187ccbe 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,10 +10,10 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.services.UserFinisher; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; -import org.woehlke.twitterwall.backend.mq.msg.results.UserResultList; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.UserFinisher; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserResultList; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserPersistorImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserPersistorImpl.java index 424437cb..0b9cf499 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/impl/UserPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; -import org.woehlke.twitterwall.backend.mq.endpoint.users.services.UserPersistor; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.UserPersistor; @Component("mqUserPersistor") public class UserPersistorImpl implements UserPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/CreateTestDataUsersSplitter.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/CreateTestDataUsersSplitter.java index 28c4d7f7..cc68b029 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/CreateTestDataUsersSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFollowerSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFollowerSplitter.java similarity index 64% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFollowerSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFollowerSplitter.java index a2af3e4f..e4f57703 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFollowerSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFollowerSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFriendsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFriendsSplitter.java similarity index 64% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFriendsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFriendsSplitter.java index 0c68e2b9..4727c605 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchFriendsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFriendsSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUserlistOwnersSplitter.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUserlistOwnersSplitter.java index 2160d030..14627786 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUserlistOwnersSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUserlistOwnersSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUsersFromListSplitter.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUsersFromListSplitter.java index dcf4aa4c..08febb67 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUsersFromListSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/UpdateUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/UpdateUsersSplitter.java similarity index 64% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/UpdateUsersSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/UpdateUsersSplitter.java index b2b72787..5a0e15f6 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/UpdateUsersSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/UpdateUsersSplitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java index 820d4ff9..8bd315a5 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; @@ -9,17 +9,17 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.CreateTestDataUsersSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.CreateTestDataUsersSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; @Component("mqCreateTestDataForUsersSplitter") public class CreateTestDataUsersSplitterImpl implements CreateTestDataUsersSplitter { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java index b444f825..a0e4224f 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.FetchFollowerSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.FetchFollowerSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java index 183e1514..64d4e487 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.FetchFriendsSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.FetchFriendsSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java index cb4378da..e280b39c 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUserlistOwnersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,11 +18,11 @@ import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserListService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.splitter.impl.UpdateUsersFromMentionsSplitterImpl; -import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.FetchUserlistOwnersSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.splitter.impl.UpdateUsersFromMentionsSplitterImpl; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.FetchUserlistOwnersSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java index 59531cc6..28922cb3 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.FetchUsersFromListSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.FetchUsersFromListSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java index 18141f34..6bd65539 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,17 +17,17 @@ import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.splitter.UpdateUsersSplitter; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.UpdateUsersSplitter; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqUpdateUserSplitter") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessage.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessage.java index fad96a3c..1384f4c7 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/UserMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessage.java @@ -1,6 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.msg; +package org.woehlke.twitterwall.backend.mq.endpoint.users.msg; import org.springframework.social.twitter.api.TwitterProfile; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; import org.woehlke.twitterwall.oodm.model.User; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessageBuilder.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessageBuilder.java index e71a7386..708a5a82 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UserMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessageBuilder.java @@ -1,10 +1,9 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder; +package org.woehlke.twitterwall.backend.mq.endpoint.users.msg; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; public interface UserMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserResultList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserResultList.java index 6efb3e55..cf7a4631 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/results/UserResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.msg.results; +package org.woehlke.twitterwall.backend.mq.endpoint.users.msg; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/impl/UserMessageBuilderImpl.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/impl/UserMessageBuilderImpl.java index 07188e35..c35d58a4 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UserMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/impl/UserMessageBuilderImpl.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder.impl; +package org.woehlke.twitterwall.backend.mq.endpoint.users.msg.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.msg.builder.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; @Component public class UserMessageBuilderImpl implements UserMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/CreateImprintUser.java deleted file mode 100644 index 2e144a39..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/services/CreateImprintUser.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.services; - -import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.msg.TaskMessage; -import org.woehlke.twitterwall.backend.mq.msg.UserMessage; - -public interface CreateImprintUser { - - Message createImprintUser(Message mqMessage); -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UrlMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UrlMessageBuilder.java deleted file mode 100644 index 285fdb81..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/UrlMessageBuilder.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder; - -public interface UrlMessageBuilder { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UrlMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UrlMessageBuilderImpl.java deleted file mode 100644 index 4fe526c2..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/msg/builder/impl/UrlMessageBuilderImpl.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.msg.builder.impl; - -import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.backend.mq.msg.builder.UrlMessageBuilder; - -@Component -public class UrlMessageBuilderImpl implements UrlMessageBuilder { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java index 0acb4883..3ede56fd 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java @@ -13,7 +13,7 @@ import java.net.MalformedURLException; import java.net.URL; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformatorImpl.java new file mode 100644 index 00000000..99225c39 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformatorImpl.java @@ -0,0 +1,57 @@ +package org.woehlke.twitterwall.backend.service.transform.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.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.UserTransformator; +import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; + +@Component("mqUserTransformator") +public class UserTransformatorImpl implements UserTransformator { + + private final UserTransformService userTransformService; + + private final TaskService taskService; + + private final UserMessageBuilder userMessageBuilder; + + @Autowired + public UserTransformatorImpl(UserTransformService userTransformService, TaskService taskService, UserMessageBuilder userMessageBuilder) { + this.userTransformService = userTransformService; + this.taskService = taskService; + this.userMessageBuilder = userMessageBuilder; + } + + @Override + public Message transformUser(Message mqMessageIn) { + UserMessage receivedMessage = mqMessageIn.getPayload(); + if(receivedMessage.isIgnoreTransformation()){ + Message mqMessageOut = MessageBuilder.withPayload(receivedMessage) + .copyHeaders(mqMessageIn.getHeaders()) + .setHeader("transformed",Boolean.TRUE) + .build(); + return mqMessageOut; + } else { + long id = receivedMessage.getTaskMessage().getTaskId(); + Task task = taskService.findById(id); + User user = userTransformService.transform(receivedMessage.getTwitterProfile(),task); + UserMessage outMsg = new UserMessage( + receivedMessage.getTaskMessage(), + receivedMessage.getTwitterProfile(), + user + ); + Message mqMessageOut = + MessageBuilder.withPayload(outMsg) + .copyHeaders(mqMessageIn.getHeaders()) + .setHeader("transformed",Boolean.TRUE) + .build(); + return mqMessageOut; + } + } +} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java index 3d1c7e44..dc995c01 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java @@ -10,7 +10,7 @@ import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.StartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStart; /** @@ -26,7 +26,7 @@ public String imprint(Model model) { String title = "Imprint"; String subtitle = frontendProperties.getImprintSubtitle(); model = contentFactory.setupPage(model, title, subtitle, symbol); - User user = startTask.createImprintUser(); + User user = taskStart.createImprintUser(); model.addAttribute("user", user); log.info("-----------------------------------------"); return "imprint/imprint"; @@ -36,18 +36,18 @@ public String imprint(Model model) { private final FrontendProperties frontendProperties; - private final StartTask startTask; + private final TaskStart taskStart; private final ContentFactory contentFactory; @Autowired public ImprintController( FrontendProperties frontendProperties, - StartTask startTask, + TaskStart taskStart, ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; - this.startTask = startTask; + this.taskStart = taskStart; this.contentFactory = contentFactory; } 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 a4b65e34..e361e374 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -22,7 +22,7 @@ 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.backend.mq.endpoint.tasks.AsyncStartTask; +import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStartFireAndForget; import javax.persistence.EntityNotFoundException; import java.util.ArrayList; @@ -84,8 +84,8 @@ public String createTTestData(Model model) { Symbols.GET_TEST_DATA.toString() ); if(frontendProperties.getContextTest()){ - Task taskTweets = mqAsyncStartTask.createTestDataForTweets(); - Task taskUsers = mqAsyncStartTask.createTestDataForUser(); + Task taskTweets = mqTaskStartFireAndForget.createTestDataForTweets(); + Task taskUsers = mqTaskStartFireAndForget.createTestDataForUser(); model.addAttribute("taskTweets", taskTweets); model.addAttribute("taskUsers",taskUsers); } else { @@ -103,7 +103,7 @@ public String getOnListRenew( Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); String msg = "getOnListRenew: "; log.info(msg+"START startTask.fetchUsersFromList"); - Task task = mqAsyncStartTask.fetchUsersFromList(); + Task task = mqTaskStartFireAndForget.fetchUsersFromList(); model.addAttribute("task",task); log.info(msg+"DONE startTask.fetchUsersFromList: "); log.info(msg+"START userService.findOnList(): "); @@ -123,7 +123,7 @@ public String fetchTweetsFromTwitterSearchStartTask(Model model) { String subtitle = "/start/tweets/search"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.fetchTweetsFromSearch(); + Task task = mqTaskStartFireAndForget.fetchTweetsFromSearch(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -135,7 +135,7 @@ public String updateTweetsStartTask(Model model) { String subtitle = "/start/tweets/update"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.updateTweets(); + Task task = mqTaskStartFireAndForget.updateTweets(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -147,7 +147,7 @@ public String updateUsersStartTask(Model model) { String subtitle = "/start/users/update"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.updateUsers(); + Task task = mqTaskStartFireAndForget.updateUsers(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -159,7 +159,7 @@ public String fetchUsersFromDefinedUserListStartTask(Model model){ String subtitle = "/start/users/list/fetch"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.fetchUsersFromList(); + Task task = mqTaskStartFireAndForget.fetchUsersFromList(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -171,7 +171,7 @@ public String fetchFollowerStartTask(Model model){ String subtitle = "/start/users/follower/fetch"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.fetchFollower(); + Task task = mqTaskStartFireAndForget.fetchFollower(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -183,7 +183,7 @@ public String fetchFriendsStartTask(Model model){ String subtitle = "/start/users/friends/fetch"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.fetchFriends(); + Task task = mqTaskStartFireAndForget.fetchFriends(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -195,7 +195,7 @@ public String updateUserProfilesFromMentionsStartTask(Model model){ String subtitle = "/start/users/mentions/update"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.updateUsersFromMentions(); + Task task = mqTaskStartFireAndForget.updateUsersFromMentions(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -207,7 +207,7 @@ public String getHomeTimeline(Model model) { String subtitle = "/start/tweets/timeline/home"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getHomeTimeline(); + Task task = mqTaskStartFireAndForget.getHomeTimeline(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -219,7 +219,7 @@ public String getUserTimeline(Model model) { String subtitle = "/start/tweets/timeline/user"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getUserTimeline(); + Task task = mqTaskStartFireAndForget.getUserTimeline(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -231,7 +231,7 @@ public String getMentions(Model model) { String subtitle = "/start/tweets/mentions"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getMentions(); + Task task = mqTaskStartFireAndForget.getMentions(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -243,7 +243,7 @@ public String getFavorites(Model model) { String subtitle = "/start/tweets/favorites"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getFavorites(); + Task task = mqTaskStartFireAndForget.getFavorites(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -255,7 +255,7 @@ public String getRetweetsOfMe(Model model) { String subtitle = "/start/tweets/myretweets"; String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getRetweetsOfMe(); + Task task = mqTaskStartFireAndForget.getRetweetsOfMe(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -268,9 +268,9 @@ public String getLists(Model model) { String symbol = Symbols.TASK.toString(); model = contentFactory.setupPage(model,title,subtitle,symbol); List listOfTasks = new ArrayList<>(); - Task task1 = mqAsyncStartTask.getLists(); + Task task1 = mqTaskStartFireAndForget.getLists(); listOfTasks.add(task1); - Task task2 = mqAsyncStartTask.fetchUserlistOwners(); + Task task2 = mqTaskStartFireAndForget.fetchUserlistOwners(); listOfTasks.add(task2); model.addAttribute("listOfTasks",listOfTasks); return PATH+"/start/tasksStarted"; @@ -291,7 +291,7 @@ public String getLists(Model model) { private final ContentFactory contentFactory; - private final AsyncStartTask mqAsyncStartTask; + private final TaskStartFireAndForget mqTaskStartFireAndForget; private final TwitterProperties twitterProperties; @@ -301,14 +301,14 @@ public TaskController( TaskHistoryService taskHistoryService, FrontendProperties frontendProperties, ContentFactory contentFactory, - AsyncStartTask mqAsyncStartTask, + TaskStartFireAndForget mqTaskStartFireAndForget, TwitterProperties twitterProperties) { this.userService = userService; this.taskService = taskService; this.taskHistoryService = taskHistoryService; this.frontendProperties = frontendProperties; this.contentFactory = contentFactory; - this.mqAsyncStartTask = mqAsyncStartTask; + this.mqTaskStartFireAndForget = mqTaskStartFireAndForget; this.twitterProperties = twitterProperties; } diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml index cdaf936f..991a4709 100644 --- a/src/main/resources/integration.xml +++ b/src/main/resources/integration.xml @@ -7,7 +7,7 @@ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd"> - + @@ -15,6 +15,10 @@ + + + @@ -25,434 +29,934 @@ - + + - + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + - + + - + - + + - + - + + - + - + + + + + + + - + + + - + - + + - + - + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + method="finishAsnyc" /> - + - + + + + + method="finishAsnyc" /> - + - + + + + method="finishAsnyc" /> - + + id="splitter.FetchMentions" + ref="mqMentionsSplitter" + method="splitTweetMessage" /> + id="transform.FetchMentions" + ref="mqTweetTransformator" + method="transformTweet" /> + id="persist.FetchMentions" + ref="mqTweetPersistor" + method="persistTweet" /> - + + + method="finishAsnyc" /> - - + + id="splitter.FetchFavorites" + ref="mqFavoritesSplitter" + method="splitTweetMessage" /> + id="transform.FetchFavorites" + ref="mqTweetTransformator" + method="transformTweet" /> + id="persist.FetchFavorites" + ref="mqTweetPersistor" + method="persistTweet" /> - + + + - - + id="splitter.async.FetchRetweetsOfMe" + ref="mqRetweetsOfMeSplitter" + method="splitTweetMessage" /> + id="transform.async.FetchRetweetsOfMe" + ref="mqTweetTransformator" + method="transformTweet" /> + id="persist.async.FetchRetweetsOfMe" + ref="mqTweetPersistor" + method="persistTweet" /> + id="finish.async.FetchRetweetsOfMe" + ref="mqTweetFinisher" + method="finishAsnyc" /> - - + - + + id="splitter.async.FetchLists" + ref="mqUserListsSplitter" + method="splitUserListMessage" /> + id="transform.async.FetchLists" + ref="mqUserListTransformator" + method="transformList" /> + id="persist.async.FetchLists" + ref="mqUserListPersistor" + method="persistList" /> + id="finish.async.FetchLists" + ref="mqUserListsFinisher" + method="finishAsnyc" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + method="finishAsnyc" /> + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/src/site/Twitterwall2/Twitterwall2.mdzip b/src/site/Twitterwall2/Twitterwall2.mdzip index 86bc6c09ee4c7e17c48af957f152143b332d1368..5e79b5a98a57ef51859599f0df401a319a4cf83e 100644 GIT binary patch delta 74677 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%0AJokwMR7t9*J)zAA{ zf2DQh)fKD@hkxoR?ifMuXGwDDzt?G|oXc94c`Haqt!bP|&;`GB1Xvbzb?B%Kril=|B>QFZU{+8iH120f6$eFtMSn3h1XWyAW)=WRt_Qf_7hu+a ztE$D{bGB;vB|=87?CL10K@ z4_9(@yni1-^{Wnu%oMROSlXdVB9Ub<5a0M0edbQbUzJwz1rcr*nkNwDpllCQ6NaLd z!40tTsA>d*f?Rl#f&NA+itsl+5NdA+r1U_k`~vV&_zHylyc*xX@=~p?HLI6dF4S~Op&VDuu>$i_!c0Cmr zN)9~8wqMqj5Cq5q=aLIv^OVfiT{I8kA8e^_?TrK5D(r&;$XdjVN%jL)IgGxixODRQ z$G_rDnj?<_sl`W*fJ(LPGDsg+-+*rPlt!jALlvk9feo@8)?7K3*w$JGe2)+k(0|PT zwX^L&Kmoz?1C{(*hs=xqtuDb}iZ>ti_F^Tn+2L#5?o_PO_vF;;1=U4RgQ9K%3C;qf z#Jy`FX(fFm^mb!2TJ~R(1j7g}pC5oWyN6jXz1yjs|3CJ(pbEK|Ql@@1Tj2*qkIbhA zV1>`~yaj%YC80%c94}AV7Yf3f3V-N-Kc|D~4JM$!k|B?9{4)B^E~U8asG04!HaE(!~1AEvqy?aUQ=)oC~*Ok>rt>0O0nxMUU6+D~lMX~2Gv z(w1+`64*l3{m1dA>09GH^i1M0DnZ8-GflnBmS%63Djj8tXrF+{Ge* zY|!x1CX9dzZ`s2m`k>^6Zi!P+TND)F5k$`Y>Kd+emb<|0c4Vd|7i5&XK_rOv`T#C- zT{4w&)jjchkgrGTN`D(7mh)9t1Ok_X;0}A}v$PTScvR)#!G_u|iGKCOqAIHamq+47 zB+nvn)=MW$fm#exn}?q65&0+s0C0uh2ss^Vmw7~%Fo2)sO+zqZy$p4pBNZ^Am?;`# zs{&VaIvx@C=?m0bqAhmT`AaQ(&O#a~AHa$ijLX8H$zT_^zkfZ60c44s7gHBQMd22w z+LLx2>7RxO<}dpG;j<3JoX}S*z4Cum9bL~Ta!zVKGUJRE;~BEZN_LPp4E_BtznB4B z#c(eNYd^z;soDNzdf~%|y6T75Or3?8#NpyXuO$=w?O*q<4XEF1q*S2(Hl&g(6dp1t zD%MSG{psSU*nh?Z_p*(t-`mFhsxLDI+pyugs$3Z$@%6RVTQ9W#At;H19xW+lhTb&~Jn%7woUzN`Js8S9DvMy7M#VYHi zzk`SY;(yHa8u>WV*dVMEl~9Feo?xCOIqFKdAqWw7{*`3LypjdG6VbAMMB3Q#0a$`m zKZsf<>`)NO2cPxpv{2{oxxvg#$K2o5eW>xSNVEOv3?!b1BgN7g3;hv(MfYBw-G&?A zZ&8iLv))9H4Ut96*qD7gE83DI-F#ykQ?CU{nSa{ULiv#uVoG4M4HI_AaIcP7Uep=J z1b`{b%C_iB6Yu>DRU0`Y&_U{n6$n>yA}cDUu7AHOH}J1)c(G65PXeBnCHkTd%y~NU zF%ex0XsL_5e1jd$YIt!<;E3DDihiSyKviRaNv{R*sa>K@#2c=^F0Q8kr1 zY;A>U(boyWnoeS*&ny2q6f|-0!7uUeaeo-!%#tywOxE9)2q<*ID$Vq};_7z6&Wre0 z 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

    o=++kwRXTB9tG=ygV=<3Y@7q zG#Si2)3)s%L<4GJc$&=AyNV%fOjc6B#gG1(#B@cIGX|4)QFb*j7vy%Ro(<(Z<=g9N z5{oYZ?)e@19wy$F*pqhgflwCr^sQI@E8gl!^>R;o`|v1U=u}ZiN}duE<)tfoNO| zW&_yQ3TMt*l^nC2i(Qw`$rKL-Vug7MWhLG1X-ZT+>#eO^XT@2uN<$5R(=>RAkV}e5;jln72Ro&ZSEm7b@Xk28k+rBVo*fzL2XPPZi{LJ_ZKUs zn8bBheGK+q>Lh)j*OH+ag+?r91E7{dvhGbNOfTAz0N5GDF|_VMPF5L_=1{#9w7Vn} zZ3y!*Gz?SNhq;RJvzxZetQ`!-F5pn&6+W`mo{LPP&a-PopNRL)%AjqMz7ZsIf}eF< zeR#;krIeT!DwGKKeW6SmJw)F^fEXN3pJDMcZPgs4CNbMvNa#3mOoUJs2!JT5S?fkXA|Gtc{zae^2}h@ zeT>a(O7pvBmH32PqMDu}1Q?qM613!4DDCNsOwSdheA2DXs9vMadG*JvhY0fZp2;hf zEs!gX5uGr5OMqHeEymUO#_mdc2v*e+){ruS?|vrA%!(a=RPuZVckHXT!sVCpP^+#4 zR%PhzLvr_HRxzj?u>zhQR~w!}#jYNf;<)~rsD2GUzmZR#5%yI#8Nd~b>ZXQ%T}fm( zm(KU9M`ne*w_6HRpRWi`oI!U)480(5-(?Ewytp&G4KvzHpEge9_%6Fr6+m)*ax}~? zCaC_HwLhU^ikhi+E%1QVC=ts>z*wXt?DL`h?qgdjVlvKKxQguN1-2t;X1U_iPrbH`|FZV?5vSf~6K58$T@| z!BEXdND=>OSohugQx$9G}(3}G<1MG0Y9b2TkSPwt|~ zUv|#~E1QcbV)YG`qho*R38Nw{NMdQJW+jS&6CO9F<>Am}(EfJTYJ5nws895XHp=Zs z#C;&leCmoSfi(xNH0G;eWF@~aP0gkG!CphF&=#^!QH7!tjwr^;+F6kR&*2*AM$Yc$ zcn+(uO;+`UcuN*A8I2JfnZ{Vlo}^t2v#W(h$Iivo&9&~>u)p$Th|_RN)-bVcnO8dQ zpB>`rQP}We`eg`5A%wA&(*YX&hMRxHxNMV!;FpA6F^FzbmI)x?&iA-=Vs6rn(G2z3 z#Sf}mb=4_ck_=8NHKy1`)}D7wn3kcXo*`Lv;D=-wqx}Lv-o%Qr+Vt%qx{<4!gE1^X z=YT!s3Im8k)^Mc;OITms>%qC8N$2vyZW-}?BO_*&SD#KxnGFIB0j}qZERAo%R|D$W z-AX(!z8kEF)HZ*+n;z8JCcSpUNOH!&5STihBeIO*OZ|1v(GZmyk;OJ|aQMaPh^9%0 z&W&@ZNlG1%AvZV>hbQR#{;QQk9dX!yF`ECeN4B#Zo-nxv z*^;_KwpQAr`Gbu|AQHk&Nsf+Fi)sdUc9l?vEv}NaLYkAH)g-O`qKWG3SH=!WPsZ`1_G)nN8I0X;C?^ zb6KNHO_;8Pq_KiE{*Y}Kh{+@^>|e z>(!dja{6RL!$WBXZ#;^aExTNhh}dO`JFTDjIBq>OX8)tA9Bsi^$$u;uFny?P-|oOL zAP#8e)d~8VpCC)Elap}4bE-kh( z$ykfvm0_!JF9hL>2imnbiVB%$t*3jofo1dsf;RpH>@gZ@{80G5%Ifc00EfGr&9CXNUM z60C{@&Dts(ZhNP zS-}6d95)(Lh#v`_NiYF{SpF*k83T+gRp1{wy=V$mDv&^+FK<8~&;J5V3&EDa-Y}+Q z4645+5B0?$w|WLRKEKbT{>yPlJdXt1H1dD)yS7hirFf2{e14y^{FhslfNimp!T8et zQ|^CjaJ>H)3Wsd)KA!Km>KdK%7w{HGDs%8H-*XJ))W;l?Y zse>boGF?^nFAe|hD!Bgz#Snx8shS$wI+!@J*g4ofr*g6|bySu^dTve-24g Jq33P@`hQf}X>9-i delta 32109 zcmbrkQ*fY9^sOD+b~3ST+nH!$+cw|W_QbYrV`3+hWMbRa_xpe6>YQ_VF1o6(x@uQf z?`Q4RD<~4OrwGXvyJndy3+~Zf zT;0-)_v}^4Yt%JSPRaVOq*kMfqcI>|**B`J<4v{8e$`dczIz7D`->vaW&B7cNX+J! zF|$|W?Zj<3t=ZSb3KR4dO%7R?^X0o+D~g*|guhM|c7e%O9YMU~nlE?l<(j(ZHwgsh zjhPpb?frP6=}(jROjN&@(?;lweYbqRo0Q9a+WTaY6Z`8@<|+q#_gJr1zK1P7*$@ob zA?lwUMY?dc1O$cha0tB8>!yEesxwmsH|nAS?k!g&&aL&OVvCM@6|!X*jG+1;Qd5*{ zLXC!<6o6`upN_R*!S}RX8-%?*R&|x$T{*G-ufLPFpKS7)1vg4<#UCQhKutDMX5W9_ zyYIDOZ%-Fs_jRUzH7BQ-Er;!fqi-{D%~}Jud6e;dd}Ggum)fN=-Z{F0*>+|hV_w%} z`-Ey4TV>1yY1*Q7<#T5TwE0>(ZclC?34uLw#RsW@#JFGE2Im+Zv8s+*}!zo_t zmK}P-bBZSkz0?|}CLT=!b~*OMU0V*-mmwH~!sT8oZ0W>&ob)ih(ufpJ;YbP$^Qn!0 zT=#6TA!7*P;3j0T6iJZ$9m8^^i!!=_1))D!??a zsQ?LVPApBneJRb`>~JHC4wAS)szw*0CVSX(4U~}*>V`}>i{HcM5Va5R<(1VD;<`uKK_ST@nq$dgSXyyaZZTvg}UpW4J$}F%OfG%O_RLoD{{KVMp^VnQ0 z?(okOV_x#;`5qN!XHHTcqbChUjCd2=ivnoRKe=W&@n=Gm;?OZ0iB=4WQ8`O{M74h8 zNSY(=#?v+qd;4rPyCt<=S9VG#C^xDC8>5@&0hI&?359xsMez-a#~l~(_kDhE&KG0{ zMQ@}seXX;OmhI_HVWgB$zAJQTmC|?4s`a`okXW$en27bhgck;0K5i)toFrd(C_r(; z@dR@v-{Odi4Y!QV_2l+EHh>zXBQ{r3g0L$-evIX$uBadGoun#@3r4H4*&9)2O+pHq zl7=9wKKPk|Abvd#9sG>`i&goxv^q76hwevZr={%mfP};X#u6t|p#0iQeXdrSm-pp) za@SsW6vB7`RzVd+HcfW+g_avZ9B`F86&XYs0}-AG8Vf_CABCx%M&;Cif!y$01~xlj zdGWw+K{tmoT}U<-`!$XviVSzaNP$`NA@k@4-|Q}Wj(RoWr#jn=Xaq(TJ^y`gESv;8 zIKE-_e2!7iFt?3*phvJbX0B}eQJl*Mg4JAxS_4~6X7?gDiyRS6CzwisIZ*QBDpTL! zV8j)zg&@FKOc;`w!-5{iV*D9u346~f5N-HJ3mjT=a>=>fh9R2BK`>GJPq=~Ld+jH` zyGt{}C}vYsDoof^khzz0{A$N)j6y9r>%qeSOd%!gZj>Y)q~p~3^blS1!?uhb8D6pq zmnC|rLWg6EtG?$~xJEG(V#oXycg!@b24=*0?sOwV$@$o!m zojP~-3@@Tte%E@1N2KF*-ln|ol8-bk3_6T$d7?~$ex_~Gq#^6rDL__igC^Q>WwOpQ zT34%SGJq>hoC2tuV&cnBcqKV#n1-Pm zfjTGS~*(E#}npvWnN}^*Gp;wUB)mXV?EI1CH#hFchrXZz(ev7Vi zU`_%nMnize;yyl|?BCT`W>fDnH>6*#8dC#x@-B#Zt#V30u(}+f91{o-M03U2T91H3 z*N+wj^q@G0+=4V|gtK#mzVUqJPS#iVslV8LTaSf*jtOkgW+)Q*EF+_zCl!a+jJ;tthiA@cGEH87$=Mt2uf=v_NkxBUPZF@FM|&J|;;*>i17ZyxP0l zgUxWY34hUqw(z@je)=N!k`fn&VVOqGT91@2euEY@x284rHRpN2^i=fIeUnZCu3VrY zgyB;HgB`r}SF$|f2L&@n1evsROM*s4Gg?bgeUWG0d-BR^^!2eGw@>%vo5-4Y&7s>Y_)R$oan_H%4zf=nm=4_?%m*a%cKfeo|?<>&Ro_Vqs|21lcurrdk|CC<9v5Rc(nxJ_x_{sV>5D!#HCE%* zIny9_aH6R@zt58FMcXn?IB56Wea@YBC@Qx)%~N7-Y4zj9)xOymPig%vLv(b-3WTsa z)ebu!sAV!%u?l02>S6)YAs{c?gWadR6A|8huCuO7>s<-7LRRkZG;c#Dyw71?yjeRTw^>nV3>zF+!yRu}x8u*$yNZ#`JlHlak90W! z;g*GYu05PfWaU;PMe+n~QRY_%)4Ix6XK0`W5KFA8KCkC$(#m=}ysgYE6s}(X5-|8v zpK%Dmoit~x?Vu=#B&2`Qd}=a8gx-&D%wNS0PnF9m$T|-Ui1Ij9=*4cp(gwO?5dx3)u_?UJr?zD6-DGccNTh&D*br?`er=$2=M*3vj2)CR>9 zNTECE3{od_NFa2Fkvqb255q(_$%%%a1U2GD5H}kI?O?-kqia;mY_AI%xZC;z%c#sK zD*c25QgV)I?uVp7@bXKN^m5paFov+!d-I%;B~IkMCm5BbF!2YqiC(c*W3-=eFD4~7 zveDkSRFTElENRM8c9)ox!FIW{RhjkHPJ-?A*b-s~(O79pP%;?|Kan;eYUx?T;~0GE z@J#RACCuI+*XnP2D=AeeK|`4VhV`_cT8SxFT~P0}MlX7|SPESme+pq>{m_)qa6$?x zwM&P0Fn`M91HQ`0E+Qibatm5W^pzMn%hGcET@tj#usZ5VTHI!awj7P`;r{I-44YbR zZA7?CUg8qWX1}z3I>d0&la#2~$!oA+2^bgQLM?tJaZW0n!Y>3JB5}C@@hXX!^l&k8 zld=2Lay6yq)~Puy8_$x#1H)YeZcLS&==*J2|J1)%#T;t5wvQhCoxI)FLYW4(HKI*9 zIfx(YLb)si999TpeS)(l5^>$wH}R2AcaNFf&l%1d;%&bWx5NTbj=p$jcqHAL>Azjv z?yiXchfkIX)hssuQ5WqV?f(Q+@*K71|Ieo;dYV?u|3#`J!5Bbu!+uX1#cx(a)1Ua? zvpd-z>dbNQ1riDT*k*?sDBhTsUXl&iasSUWCKT{d*S}NUT1UU0D^$y>Cgpp3DI1=R z?@1>XD&nR7Jll3osVjHpzInuNo3nkNUrrzJM2;bwzs76nTysQ@zQd?U^y68vggvW% zYiQYziqvn~OKAa(L}stNFFt}BVo_p$(pF%CP@w+Cj~y~)WiTmgr%>vx>tWdXqokTg zYDrDbv&sd%S*2##-MD;_k&s=jeiSY*ZGRUVf$A}Iu)fMV++EN_)%efDv_AH%d01Fl zqwzf&kzF^0dLknZ_x0R%N3PlK{i!9A%i5^+-T14OHJ%G3kBXZR3et#Utl-FvG9S@m zgxJL4AeX2c4UMCA#waL@D<)3+h?b+JpyA2ZhLV8!hb816by`(+bjI5mFD?Wx#L!Ks z_SL#&t?=E3N<@%qV#>&377?gMahPO>ODCt@Q7Dn^bgR7cmHXvyN&LKSd^>);m~J|@kDwTHrnk6&wLL*485E=L=xgD1OEJ>`P@$!g>rA}$}MSuHQo@Y zOZNqw<~MV->Rh^NXa6mQ&-9H)!C<}mc4fB-V&uqi{!{u{0R4m$p>z`?>~p|F*k^OO zGuZ#559#SINLi0d{fE8Xt4B)Tv#67cNliR{b7I-`FJ1e;#HYx$HC6ZvR=YLg8qJPa zq|711x`qrCL%|ZK0FQ2&S8L;~QsmAahGQ(iIvs+MG9*WN(m|R7dTqhCH!ad#yw#*I zY*vfEKu84P8KeTs)umbzN7kvj^#rD@aqDenf|=ZdYVj&X?ym% zlGhMl*<*2lYJvCmA4rX=t(eX6i(*j;OrcUhf+G?f_1rFhji43Mz9B3@CBQhXdP6&{ z%*?LJ%-YJ@TF=U%?&yw)q|D69%zg~^pA?3MIgm6jBKuDk|MXJ%8 z)>!R@d|J-2ca*3CEJlw_Ir*FqWlt8&!&Vmg{prZNhFn01J?I`e*?4~RU!S^1iQIdG z?{@(tplia;;rKKU2>%BC{B$@>nU&yM{{G)e zBd2Vta|0it@AcOI7`t;IdHMAJW{H0kI;w#p6MHq# z`>H$tCf+Rbl0WDCmJ*ELX$}VbXj&iOkM7ljzWpg*t}TLY`mQ#( zs5-X9t*Jm{4R{2rL@BwiJZlqXyxFa^?$?{8DBsRUfe=dmTah)am@Tr6F|dOuu!+O- z8mOgQ22PSFmIB%kUp}(j4QwGCse9iyy;OX%!lL?RY>$INMy#8>HDuZ&92C~U?Cj&umnTm@Q_tct|uw$cwjJ(2!O}m--*ESc9RIp<3 zoYM$>!?)-_^&}DwSerH#bh(62<%uUuHM|^lj&WXuwLC^ofNZDxoWy{AF*JGv4pP*U zPr`xwBFC}PwDI^C1na=3QSxRcfy_re%pF%U4(^PKs}ja%Eu-CXI&j+ zCHOBME0F}18m2{%MJueK@&SFAXG(@wmh|I6MqI)Magf1MV63tvJ*dSsxR&hIMqLEG zmZpvSMhTf1&f#w>$iT*llu#|tj`_Jeyuxh;;xG9JkDUp@v^4Q-Y2^ED>HeAM^ zsXH=kRIzHlxs<{fhF0rs%HHFMw7MfDlI=ohBbRx*u~V9~eq3u|yRi7|Pgnf5L*?lXoS>jH9!&mYOsMK0z?0Xl$}Q(6{ieB{PcnP`*(uBj z(MpQ3b|U?5XDum8a!HW95D9VQ^9oIedx^evtF)4`I*_;jab)%4G$!D!!wwM~ zU>qS*tP7;iatyxznH;Gc&hyD_kP&tz{(7yss&zHxQ67YVgZ~!&WKrUz$D+|}LlUm0gB*LtQ&+)S6D#HO1Wm}Z}~A15G2r=B1- zZM!s`q4=xSI6gBDXxZllcRdCNpZ=8dA8<5VM$AmKh-R0UNiH0eUU_7>RA22Cou!b# zXn&WO2CvR%V_DSn(=DW_*bVu#24q$u6jZ(nW*H{aK}|{|vGtp#Z91E(V!N9{O9|wR zHh*W%Oiaiij2rEHkB|8Z{@9(gw3N zqI=jliy=KduX!a8!OEp1n<&$s(NP&7q4JbvTDQX*LEBd!{DMdYtF<~>gE;mtGqua- zlw$UQ65G>H)~9BTC}4t!Bamr{g;|W9mQDJR$9OlE%i8dnZ0{uW^dhpfwX8`gm;+8Q zy@E(?+qaFj@OQrIQMo;+Kjb{ou?QMqvv6!aXY2pr$}jA@Vn2Z^*$gc+>v{mNwSQ3S zznO}h=uNNf2MHIA@i^h0Ht{FS{LOd<+W-cHVi8Ld1=k0e6(FqO>o!D87TAE1Vt{|AP)0F{{6B?v03HX`#Ph^ za}vIyzR?J?{=#Z8Qsz=WUV_*`Dy&PgqIOmO?*e^s{0@~HFy%gqXj+?dNG(#+ZY*y= z-B5_AK2aC)pUx)p^9dd5#yj#Z9_G(8PVc-TFp5Q}uXe~;XoBL!Av1x~Jh6)(4Rm=z z?x=+HEw}6s+m_cHV&^}s&DCDIdQ|M`Y=4K4k|)hDqD64Lelg0|j5ff=6TSD|SAH^Z zMuVI&H|Cs_(Ynr`;gLW!IZX(4Ln*A>p3;G=tca+$oyT)1FP{WE!=4F1E*#O4mx&%= zc&Z$O3>bdF!N#dc15ljL5Emyy4DO42c}DH24wWKq*;afCda?veh%7%CYMjk0?$QDM z1KVoE7hTA-g04@JYNL-;uYQ^{`rniOzn^|yVjxy=AFBps_j@fU{LpSbQCt3Za#Vlm zZCsy{#5WPJRRYC<%=}a+7+xG~s?19gn%Vuk#wS#6(-H|V;^JT|Gz&P}b1ie3YWdq+`ohTj>%a|CDjs=cQcP`NpeVbH@xSi!8;9TJV;Gv+a?;Yzui zPeKL{pNR!11N^jZox3XVCH(yN&AD37Jm_;9@=W4>y=m_*q;^1387*jDIG;b-%aRn3 zg(^5|K$Ucz94x~NB6_YJsXq|>K0v@osc;# zpHMZi->q9L8E^NJExuS0X9aICLG`f)z1-xof~tSd1Tw6ThWTm@{#KAYQ2W!qY>Dxz z*?D-4>2X)ul#H-dRs5w3bvZb&_&oc<-f!DRD6r0zKv10`EX_OOaLT%(Mu!@36a_63zJkEfH%mdWMsX35}!TA(g^4M_KhM|H$|tG)ZYy=gZT2t zIvw{xKb2U-gPX(LWT(6}Up%#`cg4$=M+ftEkRU%IZxC|6G>?9)FtMKo;v!WK;0U)Y zt20Zya%VE$a4W+;`3d9S{hr!UkV;70D+&kTMrgkDNsP`BYA*k}CC7?i>GAx@ZXFc% z(4dh06r=AjaRa~6mS%&ygBvh^%f%!o(fR{A&AtA~miB zsozH^b{DLNm65Wk3gNl>$!Y&gQA$HYr^V)<=0SGpX-_*>`Mh*mkMS@PV;E4NOJ0~T zOv;Q17dFjJmf6a#%y(TfbpH#rR7Rtc;w#;yc&9^izX10N5IJ~%D1*9UqsE$s{vK4x ztZy=*y8q3Z9#FT|kRU2sKo9nI(O3%fFg+-_xc}5&hN+GJKEpt`19GBgBBf0SxC*YMncJJy&Y8(5comT2GR;wsaW_izu z!cPkd6NOnyzz8G!>-?MjjI}JIY&>@y+Fnk9q9q`=85Sp$5V3PuwTYSbnl1;hU>1lf zkaF037ZmtW+rE>{E)4m5^B47Nm|sG6X42GMfwa=y!}&PJ7%I)cRwYZ=&hhqN0+^7B zA*LZ~tt>=Q-=(1fWWArd#J`_p|E;UlN~tv;Xu?p_6`#^pkUw{)*O=|ynvi$pfIAbu zr1bRcEebPgAJn2_pfGx*VITnK2d5M^TeJ&Fl2TJ>l4**iSIE!oV-2FN-QB?lOVjuGjrP zicrX|E?RiQ)HR>vsbu%aQ#`>$U25Ttwip%IHjl4Mm4y$JvlTG0d#KRaob zM-fef#Xx_VFQm=Bb@N74qAI(2GDg!2E}P2jJc8{q_#5)n4`aT7imYf@N=jSTO(cW6 z8!$_k&eGO2)`n20R*FKqRW`q=B;>riSeY8?RAPN2r z1)x_DcbdAm{W|91Hq*fRK=N&jB@;1QvTe&$=UwSGWGUpR`&pyO-KeXL_{FkCO-vc= zK%1bt!MuB42P;ZN7fr@E^9R8a!ah9TBs(V=Ys?@EN3d;QT~~@ppCIv;IgV(|_t0ZW zA7|pS*86t+2EwG{-;JGeq2rznq3^FYC&md8oQZ~Pq-W2tyKle;mu|c=MhSO-n(j?) zu#J_UlbYos;$q{UR2^OD8uAc0!Ljm(zqbqpK}BaJ}aTOHpszE4$*<_Ed4YWR-0x? zLC}?|=~hGL3j<+)p=*2ERq6QSU-dEY7sh0S_fn zLB@-|rX$>VY%U#HjY{P=o;^}WP~8uJO}7)@6)jN9JjYiY<_N<7MR5J zc~1>+70m|M{9?M*g^Z+u)wZ-K@=3X$dP#PXLqouBeR#8{pQP{)BW^{*HP-}0Wy%zA4&H`^}8W5h1XDgY3K@wMp!!ODG+}s>A<) zCIS2cRuI)moC8ljs-j}yyk02$2=lDLsnE=YQ^=JPMyWAA1925~S2H!z%k;qE z&gj+jOdrT7QI0X;fM`YD;h09`(r_r zp#~H=YT#i(@L{xB-6p^ZgO&q9HN3$M@qt|nO*RlvqG5{f@~V@Gz^_s=pO#Hn^adqyV_E!Qs=@wx;Ejp#PwIEy~)pOqpYu0U#Q z=Lz3VJz^;4O;UG63{$2+MAp3V=tBBG3ap#qgL-u#pNA=Io?gR|Tq^@tYMi^^M_IGi zt2zl03Qw0cheo2yUdMvek76 zp%0o{KCKl?S>nZCiH4i`89jb`Y(NllG6?P0rHz6mtTu%7Vc2X_zm04!MC`aUSdtCQ zQx*?_xuTu5HN`kG_V5fDM$uhy^>YXfI(_nLOdDk&dwjHj^%ZF3of>*+DZwnPdEOC6 z5b9Zm@u+yOn6{h&!`gZh}BYLctVBD;aOeDf<#^c@Sg?cMF0X zS-!7kR!-I*?Z6Y571gfW0YFKFN#nEq5%nB;9;^9hPkA$;)t+FzrzcbE$DiUY3>)hU3H413on&*?j+Os%%)$yN@InlhL8W_@Lv9mB9~WCDB5IOOO2lR}+3 z&hpd`{nDG&<=}i}SnQ0eJi5ihcW=GJQGs^74Foj?YHl;53m*Si<BZAUlJE1y^s>Cus^Zo0}9kZY0 zHb~jUki<`=odDA#OAfH(!Z)m@Qde8JV-Hw9& zrh`U5clI>?3_s5;`N|#^hD937<2TId@z4?CJ@!$3#*)EC@;Vv+a#CKf4eZ-sDRV0p z2NR;%w{ zQ!%0U2KzCYJe_}(>OVxtEei`&Lng~B>*UaiN6&_Am;v8uCB`MfRbfurSNKXCRR(9A zlmiIfrGyw0ZS8Bm!=j0>8Bv2OVmx`JMzP6q%!lcDm-L-FP|zadgDkeR(b$4XfkLC_ zIuk^oIJUd}nyM4%SZbIx$XUiY>Sv3+*{P#@Z*+SstsH}$887`EvW0I+M-H#-i+GV| z8N&;H)WGkR%H38$ZQNtf7b(13^-@QYxqK{>K;~arp8ho2vr5}8vWT~$&C5~4{&QeM zb8HQmm-+)o6gi|Nr4*Yhj!?$U?Ni9Z3REO3p%HZ;d)K&s*=nr+E+?zFsOy}vXdgLV zI)vT_+N6&#g)zfe5_33fIM%pA`z%UpH@1C*DFCkCRR1!|-y;P8iHBJYNh2q9EmqlQk@W(;sTWynBhhdwQAzsfG{ zcs%VTue(ZJhTZfsE6h=fOw?VyDYq*Xc1D|s{dOW7W+X$fMomC~@B#|sksuSQZgV;H z$e~c@n8Fv319?iPcb{kTJ$y^y5an9wfnvS4H481Z0DfY^KIC`9&c5wikV6)A%%b8= zb+NU79cj*eWKsc4^u;NxC=B}71$JbArL`ZjAv}u|&op}HOX`at-}0xNpVZ>(8` zDOem?g82thkIKdxl3D=$qA55ixz=yxSl`-nEk{-R>ViWjF=ahfP)b;PHMLa^z*!9h z{ZwW*dm4(=$wA40)aD8W7Fm4KEqp(@e>yE?+cx@yv4H0#Y(~bd!MT9CQO`L4 zEPP(?s>4t+Go8m3w_}mUl2(rfhJeb)WOk_Lu-#V~dk#4|zSy^-^dr+R?3ORjkv*9PD7PC~FiA4F z3Mm>J#u;8a?|a+107py8cyt~7V0`Y)*0Yg}fjj0E5^l)+gSH%CXY-VfzWVm^Aq~}#X0AkUvd#$D z3<0U$3ov*hIrbeEvemZo3Ei=I8DIK)Ipi^hFNHm^oqd{+;UMvLx(IprOI%A?U*+h~ z&(qaGLzDDreZAa22UPSfrYZIKXH80gbl!BdWZV`koruc=$9D2EAkwD)mY*xx#w#P| zMO(z=9&bR~+XZU2KI3Wy^!*p>uu1h}+zP<_ZQb>V$mlu%s8Yx+u!9VBBw8UWD)X$2 z2X=Dcdi)CJ6+Ti*LQ)kjMf;VmK5%`kPm{V7v9y>VzEtj`OaY7LE22O8$gS&eDZm?% z_(@JD#I@q}qm$VlV6^jiFI?(FEXjp#jCV_D%f`GKA$f5{S~EaDW80#+g?k`wF;p_J z;mE*0F6N%^##JBZa_6&y`uQw`qzCvRx~x;~=-07BkN<*i>pA@|%JYNjrS2aD6xN5E zZ+g<=jOomRqxo!V>UGIG-we0S%le1=ZOB$$aB1TCl!KH4@PK*1x6$=^+;lA71^=R* zo718!CV_kL6WbSXKYCsuHkcr0%pvS@X;-_!eBrx}L2)c)8fodFa;oJ}`BSlZ(M^gA z+QJS8`AqS(?9sj<&R3jhClZh|wyt4RS#et5p?nD5slVku9jy~ku9UpT@+)X#Vqip- zjq(6DQ|Fr+sJvAkGHl%E!l5YH6u`UZn;DxoFF&LD-c<;G%y~rxoe#0lSHM{7V-jZr z!;_$hH@RL0F7I;>bftIh6_I6z=s`_6eIH@$-Z?V)Yl{c@6yYi8EE?CU&s6V?`wW6+ z%)-Og{UghKn?DZww#O=+=Dqa#{2}}-4ji5sf4}kpCX7oC<5P5`$I~w|JFBpP`+VKK z!{&ItG-PACA;HrIVKv4Luvz`iY8^Z)VeJJWAi*vQA^61T9!}ncpnKjGMA;VmwqvV< zGc50Xa^Tg*DRk2j1oOzxWT#XJ?7P{=8jqHaX-F0GJZNiTW)|*XT6NieVI;fEpaOIB zNN|k6DV)x3_LFA+7Dp*-7GHzW>?nd&v>Ze5VB`Qyp<b;6g=h(HvC`(qgwIR6p+osxoeb?Y&#xqCjx2PJ>7J z0%ch;Uyn8LsHgE%Ww2%|Mn0<77$o>2ebmnZJ&b!d1oKt-8TXf7%6AD%^nc9z2-&ZM zGjlPhTJoB;ab0|R1DPH@dyhNvQm(EPe_X_-4Tzd<7BhSlR(sjOEG8;v*yf`Yc~9Fc z3oF&;UuZamTjDdpCwlDEd$A!=%CPk3u2U6Mo(rP!q~Ak#h9s=BvCd9CV({vF#J)a( zv?VzQwJu}C@Nrz(cF3nmKwuyZH=09b!kncyE#pZwU4DuN=bgGYfk~i!8dU{st=|rI$rl-;gf6;2-~^h`A*0N!yJWb51?9Ow z4bJtV1ip*qW88FH_1JD-%oXoE%O3-HOk9#>2(~e+TCFSIW~Pdwg5fviI-~4MMs7)j z$$ZX&seSb~R01!I9qc{wbbtw&*DotRf)6@ao&Gs$4MdBIe3*#bBGvF8-9+ja*f-G={`%e2Y_}-L33W_`BI_sVYVDhxz zzUxK(;2}C>)e8MnAj!K`PMisd+w~6`YJwkMS|}I%>v6*W0D*7C@xj3HoPF_p{%N&J zM(4~omy@_EmE=C>JI}4Y!NIXw_Ype9Y0+yHQu`E}*#+_T5`Isngu++7btrL?Wff7# z?HP6uO%JMGIrRb2B>OEbZcrO9X1Hyc!f;&`f8(L(8!|<^NZek$&~gvVjJPBZc9y6J zt#UrTdz&LtBg$QWA2ds*0nXY4N}pW&;e_~q=iXQSPb-^Vww^`_e!O;Ow(O>BXVp!* z2^n!0uUQP0W%Y=7EI<}bk?QpW=|2un}6D}{@MH;)Y6iW5GeLaFely>7y z?jyMKC5n4@oJl2awTK56y@0M(IzSE~a3Tq@AdJH|&BJ$hoj8_Eu9juZKzOcib$gG> z-Iki12&TRy-59!TIRv)P*Yq)jB3fDFjmCimt|b|b#Zq1QEt#mZY~U)_%7p-qR_tx6 zprreuyed6CmxdwZeC0H|59>9$!D@l%iS**>zc1F=`&iQ&(;>j02^J}riRmtLz3#c! zeOsNBr`Ml#T#;+Hu?Tg4cf=u#ZzJT>?>mt}RO4f^)jyN8M&ka_3bkr&riT^9ol50o zq;Tx_ilE9@((^vw95@s-ZV{x-$<)*HAkNE_=)?^c;}v}}EzGJ9d9&+tF1qX>PDt7) z#^aBb-N3M|AO(OrHv|p~!`>qmxiClYI~gpdl1wCARD%KGz8r&Z7P*lS37{ERa_avyto`cJ17@Sjan zL;V3OJ7J$JEVDJ27;m_Q;-pJll0X zW8gF3LY@%Q4{Eu^uZcWDZLlCzM-u#VMtzLdt4!aRX?1FZ2-o1AdwqQyj8>?3@XV z3;|wBHj12rvsu4Cu7=c$^J=^c}7bituOvp{XTf_*mi-+qe=<|r(SW~ga&j+fmmPUAZvs{#W3sgpmGf{RzN{H z;7>W#BManOW4r;)JHhq@Q7oc>JskTEU0ne#gGpp+Z-($PzZ3C8K$00-lFL)zp)?x! z8Xci?NdLu;Rn?jakax#CD(64jb6Vb%+6~t)aakpi?u=|@Aa9Ft@Jj+A=# z9Ri;IQx$&-L+cqvIs6IZ^!+CuLAN5t7bHr>{$MpE{RuBLa?oO5umU>%8<#r9$97LS zr>y8%DjtV2e=X-g@ms`9lLRU?-K3AQV8du>hAaP&F!#D|;S1^gMf~2vXH=ercw z8y)7?6~z7lMc%K1jkK4sd8?(L(mUi4#u#c2{O7v-bLsS%t}+F0h&={h8E|>o80FdP(S0M#UaJIyx;)7izUKvkEK=5DiS>=@Qr#>h$7X zHgDI}A?9s~$5s`i;Th$splNsyS*}(y}%vI6d4ah z)}K8Q;p*IR4y}OT6RXSQ^x&I08~pM*qq+CLV?U{s#T4lA434(+A}O7}XYcy^ehE5l z8IN#CF_4*p@lUfs`ma{Rm7LTMlGw{CjbN)pI!;8&PkMwk7D5J*(tz!WCYInRuQR73 zbnt`$FH+=I0L-j%DpB8q5pqJro?jb$`SyYJj9p3D*$)848nu`KJeJY zR~2=>%Nq+uSBs{BNLs>WhAYxahka2aM^G_YqEbjYzgcsRB1}!&81|PZtT-@O z$ehV9s)sn(AuSn}Z}^QyA%WvdMDI9_QoG`W!4N-p$FK{=ti8a5&h)#;U67#pBC=<+ zx(MZOM1biYeNz2$g-K@xgMd`0iz$xw1^7hzL1w|1<4>%SxV+j_5B%T&GG| zEd|^q)iO*|ygqv4`>|2%`k;-Py?$jg+J%0`eXB&f{%-I(B-vFo%_v@W8xhM=^F}+YruITnh9yY*s{Hg=M>^WKk2C6D)$K8ffu0R z@t^jE$EvAy67^Kg&4ZcP&%v(Xt`_r=Ysv!)5Y<+z38-B`L45J#V+E9NTG*5LVu=es zGP+`?cEx)$ac^kN{YU4r>z>wSKz<9G^zYV{s;J< zJ97}&fQ%!eZ(ze@JP~$mN`ItNX|$7FzmUDfB0e*{c8|tQcU|j4k4nyHoc>ZJf^W?M zJ2l5!0P%+VHvM`<$9@F2EjQc!lh!k(eTWtw3pNze=TYz3^~d6!GMSM1ul|4jcjk0o zNf^cW1LZ5@t&o+#p`qGSHa-H(FmPcw^x=M1K8pCi6j?^rF0GFR}{M6p#8oNj*gxBX8209#H1i=j| z4aTO6Kr2?DnX=dVmw4^dGP`ihj?8xxNTdB1+FwFb{D3c#2_5oov8Q;|5|pu6ZN4ZY zsX=2+9n90H@=q2z#iLqY%q1SDFoH4NG}r(H@>;jVTTnRr3ATTRoGma%cEAo>r^Cdr z6O&TpEBODF^$tLq^=#K@+qP{_+qP|E+BWaDjcL25ZEM=LZQJHQ&-0(}ocBFnYFAxV zJ1ePFQmNY4&dOS^HM4HEZ*6Km;@Z9N&mvdnm)c+#g%xqjM;+m6Dr_i>SQq_O#d2H~ znz@DIQ-^I*=S5$vhPd%zNKOGuJt zAW!x_@K)s?Q1YfAk=EI8bhp3smn}XwuYMmRP&-}HCi%1tAMq}EXskNu8qfOv(=ORc z#KQ~F_vCM_3cK2=&-?8%Ug?p<`|pp<`a!iY!-tt?&y>?IrsnL|q1p!Gk0stvZp7Me zs)Y|6--5P0nf&_HhD%-m2h*~ih;2(N*Yh9=(Wx`0cCm$MQCT|skHZ=_-bQ25s z95^yiTJs7 zG7VbR1!9IOC@p{cUFqE1&FD4p`kfpaIWu>&oLLIko=h|;=YL4Tk><1}(wV2#y& zY9Wi=VcTko`ec0X?ves2*>w|CZ_#uNb|PI)Oi;npekf7shkY^uSn5xHgl9RAGfk~z z%2w&me#<4Bjw5pb(o5=x=|)MWu&0nkF8^|plVQqWq?x{#9cSuq1e15~K?01^Z2WO+ zDDGhm$=rveI+Hfn6Qea!d{tbr6mNw^uToaVt-9+eg{6{i0qYC>>92AKd>*x_(*WWT z$EW#(tCxBeKQrh=8COU|3|CG?c(&}0DapOa7j>c% zkq-X0%`|MJ66M9_U8HHd7-je?EJLBe-I7_i6l)1m?gGeF*C9kWH|R_&XjZgE=sts! zEN3@vl9>j<0R)dO1SNLA>0K^K*yRuN@g`;{ZU7L?#svSu1XPZJyWG{54bsonvUfHj zGHcvkAn`jui8)ctu;FiQbT{_C(Qi@PsEkokd4i(cI1<85_q=HDoT?2-vw0Fa+1Qo$ z%#z9ClTWDey&<2YM!(}%<3C6E?0yBMdWOWqSpDG+oQ2Fo9F-5*`|)${+KkrB&4jpE2+LxM za^wyKU|z5{9uW8xO2ii}seL&o@6VL)yf8NZio?|#*ErnT?q@v(0^`pLR&Yxon;4cZkrw|EtREm|Pt6YlhzGadI9SFUp`)9&tAy#H*)KdVl+J1C zivmZ*skl%r(8+g}2o~uCdM*GKo73!VBRTd$M}}E^Y!x?yHA8!C)8$Mc1hX-PETx9E zY|bO{fa5!%cPZLOd+X1Q`~*&$%7?^nG#3>qc(6cFFr(#gsS7R3~a-;S|dP zaGFZ5;CO$Jt8%_Dk@-c3*xVlM#WADzSZ&^04${OW|3IY1IhiV@&1>&CP~abwOAN*( zt$V@^QRtiv1!@2f#z@{WSVrs~;1_dm=xo?~KeO{v4Y9O|D{WfM6R>v!?HwQeX$(tj z&H*Z`^O#<`^3%OKJ+DGwcB~Jqxbu)7P$cLfSl=&kZwH0}>VYIOR?F}OCr9UoVpQK5 z%g_3uE;$qKBul7zQB(_@qf8zZ9;#@uV(#Y|aP&edH6&~|Qj2_R&oA)eFlt0b7Ry@0 z={RT8$-bWFdhh!c`@&|9RIdg6>nmP+8Gl2t4_0C?bqfE+1c-+H=t&Wt*=5)U;CCV` zViAw*@aM=#fk9Bfo@kDd0V2fm+1vZPvp9O&N}`KUkCdKvHujxF$_#|YRN$9KLr^+^ zw=}InmMa+RapXY$*ONQDc-7><`4{U2Q)S*PJPc_N1ekLdaAazNWb9~S$U|%;Xq-V9 zc+>d{qz^b`^x>oElo1Twt~WtDAo`NVbH~ey1|xf_6lNUP%S9x>P^DK1DOrU$+<_w< zg8r?wp90c!YcxM)zL@lmL!;9$HpK)(>v32)BuxL5a5&lgP9c*rsyvuyH66oAkYpbc z*QF;O@XKi9eqibfr8!fE>xy#v@$tw3BJ8s<&qDG!R^^=RGge zv#*1CiQoq%M)#+Szc#>j0Q7{BGDQ^Euk2yrVF7Agn}K>Z$J9xypYeUNlb0YIe7glJc1SkFd{ zT47;5$L#OM$F3XO@D6FXc~XU0Shu1??2+oINr3u_$NUd7vqsja{mWOYvrQG9nBUf9 ze58SW^*P!MRu0sxSo0Dy?T#D7HLus6-BSayFPY8*o2rgZ=_|pGQG>;6$*V}x;Flgg zc4c!M5%QFaunA>-fF|C6iI>YUj`OtA6q{-=5?>c!RIuNMiB(Dg2~l|!%iL_y?H6ar z%xk`Eso8C?@py1uygw4X_UlMmbgc(;ty{TWMs#L+pH>aTkA#+GsHa{XcIYco@%!(r z?zWB0Y?O$+)F|kD=*RkYnwbrgh$Gf_*kiBH6BmiIc{y-70giO4+m>Yh8Azv~x2D)H zZ^O6WDc)!Kx9?OnJSO5ikm%Wc8KD4i-;_r-o8#i_1qBn4V7=Z5iQ#qwENE7TtQw=; z6*wAKoP8K~zSgG|4)0)^*3YS4_c*DRIGl}s6SUKxTd?!2S^9dX1j=JTlR(5pU_QAmpJUjzR;%C_Cykx-(Dm?y=yKm~x}4T}^K| z1|2u=sa1RL&o^g?34|_&3wzkE_Pzwwfu`fOnlNIWBy0Q7>4cBpUK27uHn_gYz%k*2 zd?t%>CG2f4-BL=?m@{Qz=z@F0qPmQ7{NewA)RL#x0W82&!60|a*aFZ*yT%*&YBh)R zO7nfv-wmk}0<(m_*K|VnB0L7fCi&Hm;y;LCvwvaxeu{N^2w z21-ZTTVxViE6a=4f*as%=Pqz?tH`a`f8wBZt8~RYgpdiM+hgPsDIu23G>Zwm z!rJHTCW~IEC!Nz6l`&has%gnjb`yY(O~k_E0K5l=$|~EhQG+|o^O2LZqOombN*^mZ zXhg?&&urF?mm1nk-^n@{P}b)wAMht!3$<>CSQEZNNnmD;BAR2EQ(W|*K|j*=);0dJ zDZ!YlHQq9N!NMWp))%i0ThlBO`#H(t?KltlLQrPWC)fvkAgfvvVjdpf-x`x!FZ7QY z0FF|FPSHBJ9JGDQ*ev}%ehM@bv|%Rjm%EA4YMy3o`1N#OdDz3vz>UOHU}?;SCR608 z8rlz+4D3!HuWL?8RFpIWKaTv+-^1nCkz@6%909ffd_uTx4OS|`T;_M8v?SmZF)B1mo8W$7{NZ56fQ3y%0QQZYtP!e?^(I;VzGTzD$Jua2W4*eEl-t^y z{9YZ!Y5YNw()@z?@3C{XCD2@bdnbpAcIi!Qev00ePbjaC)TkU#en~&?Zb6@H)Cy=sc$?@(dANA`deQ6t*Y43;-8; zZsodk_?e(?^h9P(uNTOj$7Wn+yO))I)opcTACSJWP!mht!7jmehLvh{0KoRoMRg|B zS+-_6f|wy8!NZM{e!=7Tw-yDyH(Viw+ z=eN@HG}Nt!PqsN8sdJy>KAPZ`{F-kfK2ED5b+XB`#l)Z}fQnWg5KpkAuecT<_ahJ zfYb=^_G`b9-p?;^L_dVS%QfIe^345X229NII0}ys>DSrGuH+=}wjS>QNE0N)`&Oz7 z?elf6t#ZQcPe(UQfWoW1)B?Yg3t}KU%J>|)H_q7w1Z^OxJ zRgdg6ad@4m9a_~T8wH7A*e#6NZuoGx!Vm3&XU;?YZkWqifbpiX(r$ugxF#`t>-MJWd#LlhwzoY5uN?g5XhIZtj(5VtfURqRo@D z2u*oOn*wzZKx0^I(LAA+YHR6WYJ9;D2#PMR2B12(Wik->S-+vqY+q&7?c z+2!;Uk>%gW@YYMdT147D<32>Hn8Upzn``1ZQg`80W19Xx9DL5$B^<6Sk4Ug8vzF^l)q zdC+>Zde7WW&>@YwhwNeQCOo6ZZaNQT8Gx^%J+XtbDI-j{ayiPuvfRKn zx1;nf=s~$W4mdYy3(bL9=PR`lS;Ed~;P5tjU7qXoBeoPqE1DAJL$Kwbr-my!DMX05 zeW0qRD5wJi44bL(x#`I>5cya<)%7RE1=op1W?F}TZUy&^#t!>PEl20TH^cqjE#O2N zFHps#-5|(yX3MbXs#*2xLKVHkT8R1Q8oc8(SWxrQBC2UA<_efKQAkJdl_ahu5zd<9 z@R0-hSB^=Wj~a9VbPN6OwuJ9H&ub%gw`c29xk%Z^s>(kh#S_2uzsd%IbN4pj`+FkT zpZPT4tCQT?bt_7mCtSDG$l~%p+yOO^oYtyU(^J<9zYilegM|@elmT7IHL3%LJFY1v zck-W^p!ud*r#i0Yygq6jb8c%*dB|UxxQA40z0)C7A=OO4(Z{)c{`YA|I?EU>Gu1Dq zV}|CR3hKtFuh=5_V6NRQ&rH7aOk;07BGuk%5i&k=x4h;{0a4q{{Wo(dM1W$*wPSO$ zGOsInBoi1eTWJuK%_TuE_4m^pUU`EGWZNtD`8Ic z!bEObY=QTTxj($RYIwY_5&=)8!vdDdnqGDsN8@uha%ZyJ=fpDRK3mKg{KtD$AM{4) z9X-ff+>h7CUXOnUx^a(FzT}_s;o7W)1j_7EI30d_x+$Qr*=`9hnw|{89y2{ z3w^H^`j%m;PS!h#T(~{E+E{QBdYK5*e8XGmHbZ4}4Qs4Ly>vT;SpeAh*B*a-?y=sY z+&(Jw0bTtAUE4PLxNk!~_ltz_UzvWE>s$Jr>LLkwLB*-nAK)VfTNZt?x}=+W(V5Hl z->8P4_sNoAAD+_eMCp6}7)F~r&okBfLBwWe#euf9UFFpPkV=pY2ab*l>xobp6Y#r* z!R^07uGHub;>hCFJpf?&(+y1;nXcQWvpYFwG|{=-xW6r^TXINlFb&Nd>f+UKcKln$ zrEPp`#G7ARbcgHt)hz|&I{53PPPK?;Pbe?Dh^(wt^nH#VOSM1SEBK!Bxc#7dmM%-;5dCdDN*TGvEn)KrM7Qo%m_5ISi!VPE7vA0lvOHrg@HQ6cqgaicr1Q$#N%z%N@Y zg9|fhOEsI<0G&W94vNbmH`QM&^zMx~2Gj(}i5%|TdR)u!aFtmuY&MC4V9lv@#nXO! z&hh!ppAK<^ucAg#tJ2UWe@53J)=m=gK1=(q)6x~j>jF05KwfPTP|ILMH+mb$1O)Q} zRdqzlKqod?;HBh`qxGHM&GJ!`%tdxQIV-oNt`&`v0N2TNl8y$H7RW8L#FF^S;*K>} zX3D}I9bUe0TonT5y|8=&hV*ZHf4jB0V zk_Q?`0Ti&JvybU@=Vf+N#i-wPXQ8A>-n(ztG6L$6*?k+m8FX%n+k1^6Ew(8!RGGcK zr!Tj?Wvo7$fy`>r6EWQEz1{jX5MZjH4fCw0ET|T+)1U9hU0mz*m;;|a7o&g@Zc6yg z6fF}L`EXRh$d1v|f;4p}R~QvR0vT@Li9f5>0U^+zAI!6tt7>%8rHPl@Bz{JAXUEqO zqIL9eBTJ+nj}<}y|5)_*3x8XIS*z#e#~=luhQSndc%>`vygfT$SmQ z9*{A&E62!0#np(?_?~QiL{;>Jr*KaoZNEF1j3hI}+DoB}Lu;_*a11!JY zZGV4DRn#rU+|!c=I~4R zn$5E*lZl*mP_Fn=SDGC*bm^#rm?*$9Ga$`# zDIa&NID{&(LN9ZD?jm<9Fqjp#101}Jzuixn>)!A|voDD)aFY@qwP|k49}pL}1K>-! zIObq3z!2ULo)HDl)*)S>(2k9IYS=56F&0x_F3yslxaAJc5pv+32GXa26iuYjBp^=X zVo5`zaj|kM_Pl{u@krY?WS7Ca3_jf^XkolQW~S|Hsfc=lG_KdwpVcfg0m=L;iMyQ{+8eqzBo%>D$}xFsD6TZWH?}TWk2;Go^zWt>`3BazY65kIaPz1p=Z#UmrNM zK#3XCXobV3$6r2Dy0;k#ztAQG>pxhE0oF_@_H4f<^H?ulTzk=xA(|UucHo?&e0?im zr497&kP)z=ms^)t!LTI95Qb-zAuws-**M?jH}r zw1q3~I(V2NSkt|Fg(^oBDaNPxj%C7SKZs00=Rb_?clH=cXWS+QEb54%3Tz7Xfmc`- zqOXe9dTL|}wsJ*R)Hz9ujaVC+?{`5q1U!G}{s`%o1#&x&8LFmbTu7BFbI7YX`Lr)F zW`G=&8YpRZ>_13*22d$}{N;w&7+Q{dzK=^EVp@qYfGZ&kA7*Q;DXQA&7kPY_if|geDx>Cqm(M-^(qWRB=Rltg{<+$gs zi=QFhQD$~DE&47;hapDG(`9(Yy)OtsovoDoX-;nNFy3@xFN=4IM0Sr3-AqA;Ap58( zMCfAm7_BW47vvd?#NY$B;Pc$iUfmBQ(RW~i#F3scmnpgXNw(eK#SuXuO-w7y@&@oRfi*{wp4RYboD$sg#nx4F(g`C z)~<2e_nvzJP`^EhJdFW%B^z0MxZ^u7%rr%cc#;J$6))=Dl;O{^x$ z!!0#fr&N%V&Cnc{t?OuD$tp2PeCSE*c_|`D>@K^o2Y5O8rE4DFs=s~BO)iF(iI-u| zBFi%x`V21Wh@cbp!m#z@6{0 zY`@s$)OPBxCxfqPS#s*eem!)rCAl1jSyqsviis;$HoEzxP$X$SjS^C+1sOP7aCRs~ zk|O74u>@iF_NmK#YpoMT$)PUcSw!zfdC>}+76R%~2Yegz!9~E7QEPx0r;s0;S>(zE zN&U1*_&u>$)UkYX@J`#!d)2_%kK0qB{^X{0H6vR&17n>{D=W_(lzR2iNh>3mNy1Xh zx}>vQ;hPQizO=UPTktv>^10=w?=6pp-Pv99flYM`PMRM7wGJ13zEdFu zsfJBcB&3B^tG}wn#BV}biZ#YD#NIq3PXR!Rh_ixST29d)iFadrE6?6VbdlgVxH?$W z9gy^?2daEt@wofwfnW^JuFon6>{knzxUBIY^o?w$(12-WA1%S%M*LAuhMp+%j+>%JU8cCqb{A|j^i8&L z%)*vS@k5%aqm~;zP5~XysVX0dky8Fw(<3!qw)3e~nzCe_S)Id^9d9+3ADn<_%+oU` zA#|W#zqM8{%TfpPgse5Z7mto8$Ku&$lDKl}&BbEdx zBX5Nnk|u{fFS0t`BJi`L4#I+7ZnAva&2uk)c2Kb_aa)6ShJqUv@7om5bbtX#txJy-wuxIznHflv4H?Lo@|tX+{G#8UwJ0fmj!&z14L#Q~L^~ZXezA6V z&^!DCeKIbnQ;w8@ge-!>GJly%tR$L}K2m@=q4}`R5sd%Yb{fKyF2o~r+Y3C<`?S+S z6hut#|Bf_oF>70#D+b_Oz8VBjeXezH$JIr56$|=}`fzeVs z#d*f{)EDJ*FWxHg5un6uvwdSB6T&~Hyq`S(*`sn^KMvh8{$V)8y&R&%^~#NOFn|_@ zl!4=6K!1i+8`?6kt;@Sq6y5yA#}7MO!5uhR=!c0zepHmQ2Losy7MZk`LAI(^by7(( z0V25gX1jL84~Ce9rTqwY%w7Ave;+{Mv=rv!v17T}>Ht(Aqt_C9rgkA%U>f*JkR7VT%g@%ZB<+#sAuF+k`P+& zAR<>KJm2)kn>JXSsA+%~maP*TzY=nmz=T>Q(ouyBo5s!Djt7vC5zic~P{4fNsv+rL z2K|$9ZxSIN>qUk#8;s4aSyGIk{KxMxdh=*pCF@RM(mE%B8;M7 zx2R+PBdfv}1gbpe(B0T$XzIMggw-of{TwbTyiK=wMAZBQeg_-FuV_Cl=CzoLYozD$ z?!BM85GH^%HN{jCLYeZk*sGNsX)~2=erf%k55o0w?|Qa(V{UJ;)Qlw0^ku^$GriR& zQfFpLnX?u7YY$t40l)L#J!~u#ckG@^d`l>y^&w!1O~Aj&t!3I*WUxqrJ{L3dRRR^mZCf7;5>f!sF$7JA!*tk0 zm+(yBt}7M-7AZ{+=0_x4^Cr!6bI zdyd0*@sZn5l93)I9V1lW5og ze((Vn?kHy~H<@g8C>WRr8Y->@A#_ghl*a^>!_bd|(x8Wti>{8-yHt(PXBma}8FD(? zR*K>>^?+9`owWIcwioa;YdP^1{Ws+guB*`^C3@!%plhgO^!tnGifsU71{7M5_J-RT zQJZ}sU!M1%TKe{WX72*$N>4?<;jEHp8y5j>L{J1^O7srCM%zEX=6ov8)7VqTf8te& z(d$tBU{ z3OMcHh#Vtbm{+$ZZQML~oMGX$=bpQu<+^Mfzv(2ou-a9a7;6G%yo=lZvZ~QI!zlo= z?H5fF48h7F1RIWB3AqyV{q>u8ZSOc^FtAmVS#{+0Q$4a~9ozwp$+>d~MW>h!Gx&uW z7vkMN@CIJvMT4VUVLy#E2BeS>*#gOb$nLE5xFuV9HbWx|NWhf~vGH6{MxK`wVM9VN zc26E$r7)4eW`wRl|A`@^VNccs<-!B_n=>QkY?LPWD|YZq+C3zl25x4a$@Iy}c(Z;d zetd7Z5f{~bAMw)q^W&yCCJp8tavfNWa1R%fw~htG;YGj?1I{-gdzH+QzjmUuqX27;@m-&8v^(_E-?Ct*)u77JDmAW+n`rxG zE4?|m#A`NAFhsN5yLE%{6wb`lm+(fd9+N@DmnlL!4+xCbbIeYK?zNymhK|FblUYeX zPu&x}jylLdg{w%~xnS=yH{XDB62(cf9zP;7{hbT}LTCi+DL)9Wqay2NiA-X`u<|G` z^?vXitQLl2y#7$teML*Nx#l-ptT$E-?T_iTW0b`djFs+cduUx~bm*f7++*6<3>%zi zoGGJ_$$?}xPI1)gKq=i#2YIbY;i=JI@c+kal zQI^f^8!yH5i)Id^9G%V%lFn_Oz&$nQv=S*=-&jii~poxgbLp;$ZaB-Ob?92zWu9siR+kHkn6?7yf$&HFwkZ)@TFM7L816P;ep z=bS?zWX1wdPmUL5MrUq zimeVf35wpMsi_0BM3faj%NETUt%5x#V@aO| z75l#jk9Ytpg)NZ~c=)q`56j{HFkq;? zbbF6LJl9PD{)QKW?{NU=KhntpkromZnm|B!?*D($_P<)n|5H+}>46ph9)clUipOp~ zYhc;a_C#v*TDXgFozoadWd=AQXlT8?C4BONKID1-Xrif;#E3-m^!WOkZn*Yaz4t5| z-hC##shNp0xFg1I@S*~I3-MIaeZL$Fd_6r|5@hn~0q{#6m2~~?fBCQj#*WD*!vuI3 zH`8%8v4~9g$9Ny(D1V<|z?ROpx_S5a3uA;Qd?S*R&y@aR!S4z>6ROYs)b7S?*RT6@ zf^G*mlUX{wvBq0+DZircO_C25=`!&Bu;mV{AiRUh0oZ#4=mUVvt@=snjx6~xM~}A* z<2wCpoh=&%@ER~tMzRynXa$N%RoG3^PPYYGFcyP})DC>^p6y|slZpN;P>YrnnIH3# zo^Ia2=8oH*=dLx8Lp~k|Mz0gc4+GW(ZzR1N|1;)oJXRjTB#|rDmy==KTz+NV49KC| zrUvI8_@fziX=nfg)&qW~7~`@V2%T_jEF-CKZ448)WNKm;|GR33qB|juRJdK&)k6bUI{_we z#r2=q?0ZAXK#Y@78`1417QB%Ph6b_=(|a>;pGW8 zV@EF7tL*?)2+uaIi@6&APe&U=Y`u2~&CiS?{cHaCJ z=d`IE%*5Msr>e7U_hUcIP@+p^K~;saW%hZgym3n5uxi(rN|F5S=WRg=4%})Z(L9-h z55eGvmqaVnJL^m}F0VIh!Zz1X0I?UFw>OSAPtXCFs3vNNT%e2+Q;rpBP!C%y7Ta#) z!7>{^T2ouCc_-4JZYt0sx4)mKeLy{3-1lBfrt?^8m|VqmG@ciV%6tKpud9)BTvi-g z6d7nyqOT)U@A12fL?Q22#>!%}NI(seYh}?S6CKIwwbCrIejEl-zHXOdFPEH5oKYdK zv0wx!XIQ)cuqmu^sqJ_{0Hy6xne>S&OQu|>k<*w_<#c**{E5~&KyLjrvOR(+D1JYc zxtOuXJzpumzG<;m8J-$hVQd;28MW_#c9_QARI+1$l!|hop}l*FFD!iM@dIL`v^jFs zp%_c-rbQ=QX@Y>qP!K=6si>gtmO?9GOvN5>@(Me!`iS+(_C(O}>RqxSDJPDHNbdI2 z&Km!4mv&xeXUae&fQ-p_*voM^nJ@@Vi#4~_K<17@WR6lhaKeGedms10JtJLYxqj{5 zN*Ar+y61iX!Cy`FH*>l@H&3d~j&X>GSPx%y)}O8C z=A@-Tg?YfwEuqlz^J~s>i}Yc?p)TKJFd-5k!wEzG;u1Fqq=*4sZ3deFn!|!lgT-6249q9tQxC)CO zRG?)h)Vjtb*#3rYxKHh-Q1U$`AisDjMHW zBBQO{$RBXJNO;bci5+-kNKF0V%D4xf&_6LgXyLSN-NmG%6MIJY2rNOV&VQRCA8ac1 ztn>nwuaGa%3tiL<4P!jf)43%MP?pg4akruX8<>~xl@?M!bDxk4tA;c5(36@(NX-Jb z3GDRHLr`z`Z;E+imn49D#bjQ}6W{Sb&Ie|Cf<$KMX9ZquA^e16In3mnw2>7}R$HW+ zY3L$5`&=@qnbTfQR&c7I0zUoGy%h8a4}Wff9nWua9~}vCqRq`&cK*N&@W{o>0Bw)_ z#faX3y2KRZ<#NFD=&JR3jCKC%O`v>6`M!rX0|CGuZ9ZjBKLBmkiU)zjznhMWgMc9a zL-0{_xmJoLTm1wtwcU<8!=EiwkSHWh|0lE;8^bV7bWP^YyF+)SU&L8|O6c58!CyhY zjnC2QF(>$A{Ffh4xI+$%p%(YYL3y5D&0(!R<2YW+8#RzN zpMDIKEnV?)@df9842KrrS8 z9I;aCDl+YrJyf&GRzI3^Lrp zDSa z5%UZwX!)yO{vziu*_<+}xccTnGVR)71ceiK#~siXVAyuq8v)AIcD-b25cGctHht2@ z)|VfMz1mY1oe=?!q}9LMD=V9YtLa6nK6-+1zhfWMi9LO&Tc< z;1uhobHlO`@Y}F9>RpZd-dF zhR=Eb89jlHe{Glm=NZpr{zekjDS||25aB-6|z?Xt(JCYf`EaKvz35Yu_;1Zfu$(qX#KwG1g^ONg}FXRzLa}!Z_ zd>;7u0W|Lv>srOqs$fRnMs_vfJt0V)i&kn*pV?)((R|Ip}BK*T^q}=IXugRY$I6% z;L^y%cdk(qdlP&-?W3!=_vQGio8_%Aw;g~R4u>`cg6Nq5AbcAra~i;sdHwW|`+NH; zA2&#EO>jPjqp$=u2iai&`9cF6*nGXZK>62$^?m4MLwV;##aW0bx>oh|Bo)5~d$D&E zj5(05eoC? zwW4fMCs2ss0>LxS11v(({9nf?SeLzxx!zGf zEuIkdnm_ulwElkVlUM9J#d>#7A)5bb|M(t%Yq&A1PxFyL5JbB(@{@6>E9%X!aab$lZf|(gxeS&E-C|9XPl%m+&I0JxtVX zFzHI=C2i6qrmi_U=^upL#Qb(b)P3t%0TLfE)@q6>=2sdtW(L{_E%G1q*dwY-^j$!` zF$Y3AH&?Zkc{%|^OoRQt<8OKS$~SHN<|2(taQ4`n=KGdVZx(QKcvZOr{TSZ(>D}u%BWr;4h z-+sVjBD~FN-nw+lulzhu$Hgq_W`mWQ;le91adT%e%jt`Axl17m?|x`;d%IK-pSPy$ z&xH*59_UtuWVFK7(j;o5>VZkw;FDWW8aPtF7h#=bRLw#XL-9D}I-vpP-Kk?d(>>tS zv-Qfr7?6HX=sV0ou-*3I36;#&X3%-N+N$cOEX%q-KQTtv3tlxu|e1q>R~)bXPpp%>$j)kDQA`HvGideR!o@YpL*6nAZ7z(65gg-VO7)UIN)# z>-b4Wtb8%wh#PiFauxc=C45SzAf6jEh_l!~z6p3cy~oY%J=L7b{QAK&;Ew-a*P^(& zn8q+*AfR&ae^PH?5CNe7&yPD5P5?L+;a_L&|JTekwN3z7jOd?t|7iuv`#(wgzY!EZ z6+;kM`d<`2AHRk3-~Q)7fPh&43q^>K>MsZ^{4eT%Y}@{EZ6o?G)B|Gbo**#8zo>sI z{&w?kq5FU0{|!|bsZ2t^-2a-orP>Jr_p$ zDw{Ac_rJjZv~fcHFQEC4)Hq>a;{S!h`!Ce^kJK4qV48nX|M_1-;J;9u%>NEAjvg32 zRYC-qi1?ow{m*?P{a^6$NTAeR5nzpfVgI>gf9LBz%4ix;s+K4)E&@CdJP_vJ6^+mM Hr}qB Date: Sat, 19 Aug 2017 21:10:51 +0200 Subject: [PATCH 27/45] fixed #271 --- .../org/woehlke/twitterwall/CronJobs.java | 2 +- .../backend/mq/common/MentionSplitter.java | 12 +++ .../backend/mq/common/TweetsSplitter.java | 12 +++ .../mq/{endpoint => }/common/UrlSplitter.java | 4 +- .../common/UserListsSplitter.java | 6 +- .../backend/mq/common/UserSplitter.java | 12 +++ .../mq/endpoint/common/MentionSplitter.java | 12 --- .../mq/endpoint/common/TweetsSplitter.java | 12 --- .../mq/endpoint/common/UserSplitter.java | 12 --- .../UpdateUsersFromMentionsSplitter.java | 8 -- .../CreateTestDataTweetsSplitter.java | 7 -- .../endpoint/splitter/FavoritesSplitter.java | 6 -- .../FetchTweetsFromSearchSplitter.java | 7 -- .../splitter/FindTweetsToRemoveSplitter.java | 7 -- .../splitter/HomeTimelineSplitter.java | 6 -- .../endpoint/splitter/MentionsSplitter.java | 6 -- .../splitter/RetweetsOfMeSplitter.java | 6 -- .../splitter/UpdateTweetsSplitter.java | 7 -- .../splitter/UserTimelineSplitter.java | 6 -- .../endpoint/urls/msg/UrlMessageBuilder.java | 4 - .../mq/endpoint/urls/msg/UrlResultList.java | 6 -- .../urls/msg/impl/UrlMessageBuilderImpl.java | 8 -- .../endpoint/splitter/ListsSplitter.java | 7 -- .../serviceactivator/CreateImprintUser.java | 10 --- .../splitter/CreateTestDataUsersSplitter.java | 7 -- .../splitter/FetchFollowerSplitter.java | 7 -- .../splitter/FetchFriendsSplitter.java | 7 -- .../splitter/FetchUserlistOwnersSplitter.java | 6 -- .../splitter/FetchUsersFromListSplitter.java | 8 -- .../splitter/UpdateUsersSplitter.java | 7 -- .../serviceactivator/MentionFinisher.java | 6 +- .../UpdateMentionWithUser.java | 4 +- .../UserforMentionLoader.java | 4 +- .../UserforMentionPersistor.java | 4 +- .../UserforMentionTransformator.java | 4 +- .../impl/MentionFinisherImpl.java | 12 +-- .../impl/UpdateMentionWithUserImpl.java | 8 +- .../impl/UserforMentionLoaderImpl.java | 8 +- .../impl/UserforMentionPersistorImpl.java | 8 +- .../impl/UserforMentionTransformatorImpl.java | 8 +- .../UpdateUsersFromMentionsSplitter.java | 8 ++ .../UpdateUsersFromMentionsSplitterImpl.java | 10 +-- .../mentions/msg/MentionMessage.java | 4 +- .../mentions/msg/MentionMessageBuilder.java | 4 +- .../mentions/msg/MentionResultList.java | 2 +- .../msg/impl/MentionMessageBuilderImpl.java | 8 +- .../mq/{endpoint => }/tasks/TaskMessage.java | 2 +- .../tasks/TaskMessageBuilder.java | 2 +- .../mq/{endpoint => }/tasks/TaskStart.java | 2 +- .../tasks/TaskStartFireAndForget.java | 2 +- .../tasks/impl/TaskMessageBuilderImpl.java | 6 +- .../impl/TaskStartFireAndForgetImpl.java | 8 +- .../tasks/impl/TaskStartImpl.java | 12 +-- .../serviceactivator/TweetFinisher.java | 6 +- .../serviceactivator/TweetPersistor.java | 4 +- .../serviceactivator/TweetTransformator.java | 4 +- .../impl/TweetFinisherImpl.java | 12 +-- .../impl/TweetPersistorImpl.java | 8 +- .../impl/TweetTransformatorImpl.java | 8 +- .../CreateTestDataTweetsSplitter.java | 7 ++ .../endpoint/splitter/FavoritesSplitter.java | 6 ++ .../FetchTweetsFromSearchSplitter.java | 7 ++ .../splitter/FindTweetsToRemoveSplitter.java | 7 ++ .../splitter/HomeTimelineSplitter.java | 6 ++ .../endpoint/splitter/MentionsSplitter.java | 6 ++ .../splitter/RetweetsOfMeSplitter.java | 6 ++ .../splitter/UpdateTweetsSplitter.java | 7 ++ .../splitter/UserTimelineSplitter.java | 6 ++ .../CreateTestDataTweetsSplitterImpl.java | 10 +-- .../splitter/impl/FavoritesSplitterImpl.java | 10 +-- .../FetchTweetsFromSearchSplitterImpl.java | 10 +-- .../impl/FindTweetsToRemoveSplitterImpl.java | 10 +-- .../impl/HomeTimelineSplitterImpl.java | 10 +-- .../splitter/impl/MentionsSplitterImpl.java | 10 +-- .../impl/RetweetsOfMeSplitterImpl.java | 10 +-- .../impl/UpdateTweetsSplitterImpl.java | 10 +-- .../impl/UserTimelineSplitterImpl.java | 10 +-- .../tweets/msg/TweetMessage.java | 4 +- .../tweets/msg/TweetMessageBuilder.java | 4 +- .../tweets/msg/TweetResultList.java | 2 +- .../msg/impl/TweetMessageBuilderImpl.java | 8 +- .../mq/urls/endpoint/services/UrFetcher.java | 9 +++ .../urls/endpoint/services/UrlFinisher.java | 13 +++ .../urls/endpoint/services/UrlPersistor.java | 9 +++ .../endpoint/services/UrlTransformator.java | 9 +++ .../endpoint/services/impl/UrFetcherImpl.java | 25 ++++++ .../services/impl/UrlFinisherImpl.java | 32 ++++++++ .../services/impl/UrlPersistorImpl.java | 25 ++++++ .../services/impl/UrlTransformatorImpl.java | 25 ++++++ .../mq/urls/endpoint/splitter/UpdateUrls.java | 6 ++ .../splitter/impl/UpdateUrlsImpl.java | 27 +++++++ .../{endpoint => }/urls/msg/UrlMessage.java | 2 +- .../mq/urls/msg/UrlMessageBuilder.java | 4 + .../backend/mq/urls/msg/UrlResultList.java | 51 ++++++++++++ .../urls/msg/impl/UrlMessageBuilderImpl.java | 8 ++ .../serviceactivator/ListFinisher.java | 6 +- .../serviceactivator/ListsPersistor.java | 4 +- .../serviceactivator/ListsTransformator.java | 4 +- .../impl/ListFinisherImpl.java | 12 +-- .../impl/ListsPersistorImpl.java | 8 +- .../impl/ListsTransformatorImpl.java | 8 +- .../endpoint/splitter/ListsSplitter.java | 7 ++ .../splitter/impl/ListsSplitterImpl.java | 10 +-- .../userlist/msg/UserListMessage.java | 4 +- .../userlist/msg/UserListMessageBuilder.java | 4 +- .../userlist/msg/UserListResultList.java | 2 +- .../msg/impl/UserListMessageBuilderImpl.java | 8 +- .../serviceactivator/CreateImprintUser.java | 10 +++ .../serviceactivator/UserCheckStorage.java | 4 +- .../serviceactivator/UserFinisher.java | 6 +- .../serviceactivator/UserPersistor.java | 4 +- .../serviceactivator/UserTransformator.java | 4 +- .../impl/CreateImprintUserImpl.java | 10 +-- .../impl/UserCheckStorageImpl.java | 8 +- .../impl/UserFinisherImpl.java | 10 +-- .../impl/UserPersistorImpl.java | 8 +- .../splitter/CreateTestDataUsersSplitter.java | 7 ++ .../splitter/FetchFollowerSplitter.java | 7 ++ .../splitter/FetchFriendsSplitter.java | 7 ++ .../splitter/FetchUserlistOwnersSplitter.java | 6 ++ .../splitter/FetchUsersFromListSplitter.java | 8 ++ .../splitter/UpdateUsersSplitter.java | 7 ++ .../impl/CreateTestDataUsersSplitterImpl.java | 10 +-- .../impl/FetchFollowerSplitterImpl.java | 10 +-- .../impl/FetchFriendsSplitterImpl.java | 10 +-- .../impl/FetchUserlistOwnersSplitterImpl.java | 12 +-- .../impl/FetchUsersFromListSplitterImpl.java | 10 +-- .../impl/UpdateUsersSplitterImpl.java | 10 +-- .../{endpoint => }/users/msg/UserMessage.java | 4 +- .../users/msg/UserMessageBuilder.java | 4 +- .../users/msg/UserResultList.java | 2 +- .../msg/impl/UserMessageBuilderImpl.java | 8 +- .../transform/impl/UserTransformatorImpl.java | 6 +- .../properties/SchedulerProperties.java | 2 +- .../controller/ImprintController.java | 2 +- .../frontend/controller/TaskController.java | 2 +- src/main/resources/application.yml | 2 +- src/main/resources/integration.xml | 76 +++++++++--------- src/site/Twitterwall2/Twitterwall2.mdzip | Bin 83074 -> 83301 bytes .../TaskStartFireAndForgetTest.java} | 4 +- .../TaskStartFireAndForgetTestImpl.java} | 8 +- .../TaskStartTest.java} | 6 +- .../TaskStartTestImpl.java | 6 +- .../controller/TaskHistoryControllerTest.java | 2 - src/test/resources/application-test.yml | 2 +- 145 files changed, 709 insertions(+), 488 deletions(-) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/common/MentionSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/common/TweetsSplitter.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/common/UrlSplitter.java (59%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/common/UserListsSplitter.java (50%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/common/UserSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FavoritesSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/HomeTimelineSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/MentionsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/RetweetsOfMeSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UpdateTweetsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UserTimelineSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessageBuilder.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlResultList.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/impl/UrlMessageBuilderImpl.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/ListsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/CreateImprintUser.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/CreateTestDataUsersSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFollowerSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFriendsSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUserlistOwnersSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUsersFromListSplitter.java delete mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/UpdateUsersSplitter.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/MentionFinisher.java (52%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java (52%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/UserforMentionLoader.java (53%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/UserforMentionPersistor.java (52%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/UserforMentionTransformator.java (53%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java (86%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java (77%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java (80%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java (91%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/msg/MentionMessage.java (97%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/msg/MentionMessageBuilder.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/msg/MentionResultList.java (94%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/mentions/msg/impl/MentionMessageBuilderImpl.java (91%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tasks/TaskMessage.java (97%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tasks/TaskMessageBuilder.java (76%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tasks/TaskStart.java (70%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tasks/TaskStartFireAndForget.java (91%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tasks/impl/TaskMessageBuilderImpl.java (82%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tasks/impl/TaskStartFireAndForgetImpl.java (94%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tasks/impl/TaskStartImpl.java (96%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/serviceactivator/TweetFinisher.java (52%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/serviceactivator/TweetPersistor.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/serviceactivator/TweetTransformator.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java (86%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FavoritesSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/HomeTimelineSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/MentionsSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/RetweetsOfMeSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UpdateTweetsSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UserTimelineSplitter.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java (89%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java (91%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/msg/TweetMessage.java (96%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/msg/TweetMessageBuilder.java (76%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/msg/TweetResultList.java (95%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/tweets/msg/impl/TweetMessageBuilderImpl.java (83%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrFetcher.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlFinisher.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlPersistor.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlTransformator.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrFetcherImpl.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlFinisherImpl.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlPersistorImpl.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlTransformatorImpl.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/UpdateUrls.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/impl/UpdateUrlsImpl.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/urls/msg/UrlMessage.java (57%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessageBuilder.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlResultList.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/impl/UrlMessageBuilderImpl.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/endpoint/serviceactivator/ListFinisher.java (51%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/endpoint/serviceactivator/ListsPersistor.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/endpoint/serviceactivator/ListsTransformator.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java (83%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java (84%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/ListsSplitter.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/endpoint/splitter/impl/ListsSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/msg/UserListMessage.java (95%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/msg/UserListMessageBuilder.java (67%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/msg/UserListResultList.java (94%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/userlist/msg/impl/UserListMessageBuilderImpl.java (74%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/CreateImprintUser.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/serviceactivator/UserCheckStorage.java (51%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/serviceactivator/UserFinisher.java (58%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/serviceactivator/UserPersistor.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/serviceactivator/UserTransformator.java (50%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java (85%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/serviceactivator/impl/UserFinisherImpl.java (88%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/serviceactivator/impl/UserPersistorImpl.java (86%) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/CreateTestDataUsersSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFollowerSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFriendsSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUserlistOwnersSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUsersFromListSplitter.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/UpdateUsersSplitter.java rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java (89%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java (84%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java (89%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java (87%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java (92%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/msg/UserMessage.java (98%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/msg/UserMessageBuilder.java (88%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/msg/UserResultList.java (95%) rename src/main/java/org/woehlke/twitterwall/backend/mq/{endpoint => }/users/msg/impl/UserMessageBuilderImpl.java (93%) rename src/test/java/org/woehlke/twitterwall/backend/mq/{endpoint/AsyncStartTaskTest.java => tasks/TaskStartFireAndForgetTest.java} (88%) rename src/test/java/org/woehlke/twitterwall/backend/mq/{endpoint/AsyncTaskStartTestImpl.java => tasks/TaskStartFireAndForgetTestImpl.java} (97%) rename src/test/java/org/woehlke/twitterwall/backend/mq/{endpoint/StartTaskTest.java => tasks/TaskStartTest.java} (54%) rename src/test/java/org/woehlke/twitterwall/backend/mq/{endpoint => tasks}/TaskStartTestImpl.java (99%) diff --git a/src/main/java/org/woehlke/twitterwall/CronJobs.java b/src/main/java/org/woehlke/twitterwall/CronJobs.java index 7a99d711..ef736344 100644 --- a/src/main/java/org/woehlke/twitterwall/CronJobs.java +++ b/src/main/java/org/woehlke/twitterwall/CronJobs.java @@ -8,7 +8,7 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.configuration.properties.SchedulerProperties; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStartFireAndForget; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStartFireAndForget; /** * Created by tw on 10.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/common/MentionSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/MentionSplitter.java new file mode 100644 index 00000000..ea56ddad --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/MentionSplitter.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.mq.common; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; + +import java.util.List; + +public interface MentionSplitter { + + List> splitUserMessage(Message incomingTaskMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/common/TweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/TweetsSplitter.java new file mode 100644 index 00000000..fae0d0eb --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/TweetsSplitter.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.mq.common; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; + +import java.util.List; + +public interface TweetsSplitter { + + List> splitTweetMessage(Message message); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UrlSplitter.java similarity index 59% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/common/UrlSplitter.java index f5a8fa10..16c2f441 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UrlSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UrlSplitter.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.common; +package org.woehlke.twitterwall.backend.mq.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserListsSplitter.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/common/UserListsSplitter.java index 7decaf45..71292380 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserListsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserListsSplitter.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.common; +package org.woehlke.twitterwall.backend.mq.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserSplitter.java new file mode 100644 index 00000000..26d7bd6b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserSplitter.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.mq.common; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; + +import java.util.List; + +public interface UserSplitter { + + List> splitUserMessage(Message incomingTaskMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java deleted file mode 100644 index 1161cf0e..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/MentionSplitter.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.common; - -import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; - -import java.util.List; - -public interface MentionSplitter { - - List> splitUserMessage(Message incomingTaskMessage); -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java deleted file mode 100644 index 1749204e..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/TweetsSplitter.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.common; - -import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; - -import java.util.List; - -public interface TweetsSplitter { - - List> splitTweetMessage(Message message); -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java deleted file mode 100644 index b01c0f73..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/common/UserSplitter.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.common; - -import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; - -import java.util.List; - -public interface UserSplitter { - - List> splitUserMessage(Message incomingTaskMessage); -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java deleted file mode 100644 index 37cd655c..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.splitter; - - -import org.woehlke.twitterwall.backend.mq.endpoint.common.MentionSplitter; - -public interface UpdateUsersFromMentionsSplitter extends MentionSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java deleted file mode 100644 index f6da4cc2..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface CreateTestDataTweetsSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FavoritesSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FavoritesSplitter.java deleted file mode 100644 index f186d830..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FavoritesSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface FavoritesSplitter extends TweetsSplitter { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java deleted file mode 100644 index 62895acc..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface FetchTweetsFromSearchSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java deleted file mode 100644 index 6e9228fb..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface FindTweetsToRemoveSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/HomeTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/HomeTimelineSplitter.java deleted file mode 100644 index b1f3bee7..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/HomeTimelineSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface HomeTimelineSplitter extends TweetsSplitter { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/MentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/MentionsSplitter.java deleted file mode 100644 index 3a950930..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/MentionsSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface MentionsSplitter extends TweetsSplitter { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/RetweetsOfMeSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/RetweetsOfMeSplitter.java deleted file mode 100644 index 7280cc67..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/RetweetsOfMeSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface RetweetsOfMeSplitter extends TweetsSplitter{ -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UpdateTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UpdateTweetsSplitter.java deleted file mode 100644 index f0840837..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UpdateTweetsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface UpdateTweetsSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UserTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UserTimelineSplitter.java deleted file mode 100644 index b8e2150d..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/UserTimelineSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.TweetsSplitter; - -public interface UserTimelineSplitter extends TweetsSplitter{ -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessageBuilder.java deleted file mode 100644 index 4fef8323..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessageBuilder.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.urls.msg; - -public interface UrlMessageBuilder { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlResultList.java deleted file mode 100644 index 748aab0d..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlResultList.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.urls.msg; - -import java.io.Serializable; - -public class UrlResultList implements Serializable { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/impl/UrlMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/impl/UrlMessageBuilderImpl.java deleted file mode 100644 index ce84fe5d..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/impl/UrlMessageBuilderImpl.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.urls.msg.impl; - -import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.backend.mq.endpoint.urls.msg.UrlMessageBuilder; - -@Component -public class UrlMessageBuilderImpl implements UrlMessageBuilder { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/ListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/ListsSplitter.java deleted file mode 100644 index 26cf7337..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/ListsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.UserListsSplitter; - -public interface ListsSplitter extends UserListsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/CreateImprintUser.java deleted file mode 100644 index 1b75b639..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/CreateImprintUser.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; - -import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; - -public interface CreateImprintUser { - - Message createImprintUser(Message mqMessage); -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/CreateTestDataUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/CreateTestDataUsersSplitter.java deleted file mode 100644 index cc68b029..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/CreateTestDataUsersSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; - -public interface CreateTestDataUsersSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFollowerSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFollowerSplitter.java deleted file mode 100644 index e4f57703..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFollowerSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; - -public interface FetchFollowerSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFriendsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFriendsSplitter.java deleted file mode 100644 index 4727c605..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchFriendsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; - -public interface FetchFriendsSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUserlistOwnersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUserlistOwnersSplitter.java deleted file mode 100644 index 14627786..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUserlistOwnersSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; - -public interface FetchUserlistOwnersSplitter extends UserSplitter { -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUsersFromListSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUsersFromListSplitter.java deleted file mode 100644 index 08febb67..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/FetchUsersFromListSplitter.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; - - -import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; - -public interface FetchUsersFromListSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/UpdateUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/UpdateUsersSplitter.java deleted file mode 100644 index 5a0e15f6..00000000 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/UpdateUsersSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter; - -import org.woehlke.twitterwall.backend.mq.endpoint.common.UserSplitter; - -public interface UpdateUsersSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/MentionFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/MentionFinisher.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/MentionFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/MentionFinisher.java index 6f0c8637..adeefe5e 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/MentionFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/MentionFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionResultList; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java index 8687eece..f8ffb5c5 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; public interface UpdateMentionWithUser { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionLoader.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionLoader.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionLoader.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionLoader.java index a78a02d0..9081e413 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionLoader.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionLoader.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; public interface UserforMentionLoader { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionPersistor.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionPersistor.java index 45ce7e7d..c07fb6ed 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; public interface UserforMentionPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionTransformator.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionTransformator.java index 1de82e4f..871706f3 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/UserforMentionTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; public interface UserforMentionTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java index be19d4d3..c9e84e0d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,11 +10,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.MentionFinisher; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl.UserFinisherImpl; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionResultList; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.MentionFinisher; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionResultList; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java index 0d07f953..f877d591 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -9,9 +9,9 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.MentionService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.UpdateMentionWithUser; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.UpdateMentionWithUser; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; @Component("mqUpdateMentionWithUser") public class UpdateMentionWithUserImpl implements UpdateMentionWithUser { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java index 4f8c8b6f..34cd3bfa 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.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.backend.mq.endpoint.mentions.endpoint.serviceactivator.UserforMentionLoader; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.UserforMentionLoader; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; @Component("mqUserforMentionLoader") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java index 96027198..28a0e48a 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,9 +7,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.UserforMentionPersistor; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.UserforMentionPersistor; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; @Component("mqUserforMentionPersistor") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java similarity index 80% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java index 65530213..827c7f2c 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -6,9 +6,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.serviceactivator.UserforMentionTransformator; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.UserforMentionTransformator; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; import org.woehlke.twitterwall.backend.service.transform.UserTransformService; @Component("mqUserforMentionTransformator") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java new file mode 100644 index 00000000..10158b39 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.splitter; + + +import org.woehlke.twitterwall.backend.mq.common.MentionSplitter; + +public interface UpdateUsersFromMentionsSplitter extends MentionSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java index d9cff093..1b2f3414 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,10 +15,10 @@ 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.backend.mq.endpoint.mentions.endpoint.splitter.UpdateUsersFromMentionsSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.splitter.UpdateUsersFromMentionsSplitter; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java index 7a42c363..f14bc72c 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg; +package org.woehlke.twitterwall.backend.mq.mentions.msg; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java index c879de77..aa37c69c 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg; +package org.woehlke.twitterwall.backend.mq.mentions.msg; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; public interface MentionMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionResultList.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionResultList.java index b7b5559b..6659903e 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/MentionResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg; +package org.woehlke.twitterwall.backend.mq.mentions.msg; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/impl/MentionMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/impl/MentionMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java index 5facdb88..9a4765e2 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/mentions/msg/impl/MentionMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.impl; +package org.woehlke.twitterwall.backend.mq.mentions.msg.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; @@ -6,9 +6,9 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.msg.MentionMessageBuilder; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; @Component public class MentionMessageBuilderImpl implements MentionMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessage.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessage.java index b62e68f5..254c3b73 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tasks; +package org.woehlke.twitterwall.backend.mq.tasks; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessageBuilder.java similarity index 76% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessageBuilder.java index fbd57b92..bda3d5bf 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessageBuilder.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tasks; +package org.woehlke.twitterwall.backend.mq.tasks; import org.springframework.messaging.Message; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStart.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStart.java similarity index 70% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStart.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStart.java index 156027dd..3cfd7422 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStart.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStart.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tasks; +package org.woehlke.twitterwall.backend.mq.tasks; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStartFireAndForget.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStartFireAndForget.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java index c961058d..4abab1da 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/TaskStartFireAndForget.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tasks; +package org.woehlke.twitterwall.backend.mq.tasks; import org.woehlke.twitterwall.oodm.model.Task; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskMessageBuilderImpl.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskMessageBuilderImpl.java index 6bbbf454..b19b22e2 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskMessageBuilderImpl.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tasks.impl; +package org.woehlke.twitterwall.backend.mq.tasks.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Task; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessageBuilder; @Component public class TaskMessageBuilderImpl implements TaskMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartFireAndForgetImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartFireAndForgetImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java index 4adc3a36..52787657 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartFireAndForgetImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tasks.impl; +package org.woehlke.twitterwall.backend.mq.tasks.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,10 +13,10 @@ import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStartFireAndForget; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStartFireAndForget; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessageBuilder; @Component("mqTaskStartFireAndForget") public class TaskStartFireAndForgetImpl implements TaskStartFireAndForget { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java similarity index 96% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java index 4810764a..9bcb0480 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tasks/impl/TaskStartImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tasks.impl; +package org.woehlke.twitterwall.backend.mq.tasks.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,18 +9,18 @@ import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStart; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStart; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessageBuilder; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetResultList; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetResultList; @Component("mqTaskStart") public class TaskStartImpl implements TaskStart { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetFinisher.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetFinisher.java index 4bae784d..766473cd 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetResultList; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetPersistor.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetPersistor.java index 76178872..372af5e9 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; public interface TweetPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetTransformator.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetTransformator.java index 3cba625c..15a4872a 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/TweetTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; public interface TweetTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java index 32751be7..dd27a1c0 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,11 +10,11 @@ import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl.UserFinisherImpl; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.TweetFinisher; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetResultList; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.TweetFinisher; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetResultList; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java index fdf9d615..39e0d5fa 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,9 +7,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.TweetPersistor; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.TweetPersistor; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.persist.StoreOneTweetPerform; @Component("mqTweetPersistor") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java index 4ec271d7..70dec43f 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,9 +7,9 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.serviceactivator.TweetTransformator; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.TweetTransformator; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.transform.TweetTransformService; @Component("mqTweetTransformator") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java new file mode 100644 index 00000000..09d9a67b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface CreateTestDataTweetsSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FavoritesSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FavoritesSplitter.java new file mode 100644 index 00000000..2342d23f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FavoritesSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface FavoritesSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java new file mode 100644 index 00000000..16cf0ece --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface FetchTweetsFromSearchSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java new file mode 100644 index 00000000..772b017c --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface FindTweetsToRemoveSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/HomeTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/HomeTimelineSplitter.java new file mode 100644 index 00000000..16287cba --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/HomeTimelineSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface HomeTimelineSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/MentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/MentionsSplitter.java new file mode 100644 index 00000000..4c7ea121 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/MentionsSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface MentionsSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/RetweetsOfMeSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/RetweetsOfMeSplitter.java new file mode 100644 index 00000000..b15916f6 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/RetweetsOfMeSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface RetweetsOfMeSplitter extends TweetsSplitter{ +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UpdateTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UpdateTweetsSplitter.java new file mode 100644 index 00000000..7f825768 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UpdateTweetsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface UpdateTweetsSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UserTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UserTimelineSplitter.java new file mode 100644 index 00000000..01c1b04f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UserTimelineSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface UserTimelineSplitter extends TweetsSplitter{ +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java index 415dc5a2..fcd61fb5 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -9,10 +9,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.CreateTestDataTweetsSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.CreateTestDataTweetsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java index eb3ac60a..079e991d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.FavoritesSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.FavoritesSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java index 37420612..8756b575 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.FetchTweetsFromSearchSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.FetchTweetsFromSearchSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java index f68d7e22..ec53bb6a 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -12,10 +12,10 @@ 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.backend.mq.endpoint.tweets.endpoint.splitter.FindTweetsToRemoveSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.FindTweetsToRemoveSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java index 9364efeb..92cea047 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.HomeTimelineSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.HomeTimelineSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java index 0964b014..3874ea92 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.MentionsSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.MentionsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java index e705e7a6..65a44dc6 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.RetweetsOfMeSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.RetweetsOfMeSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java index 2212f834..5c126a14 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,10 +13,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.UpdateTweetsSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.UpdateTweetsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java index 62201f46..ec92babd 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.endpoint.splitter.UserTimelineSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.UserTimelineSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessage.java similarity index 96% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessage.java index 7656bdc1..64cb4bda 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessage.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg; +package org.woehlke.twitterwall.backend.mq.tweets.msg; import org.springframework.social.twitter.api.Tweet; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessageBuilder.java similarity index 76% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessageBuilder.java index 28d803d0..8f3728f8 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessageBuilder.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg; +package org.woehlke.twitterwall.backend.mq.tweets.msg; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; public interface TweetMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetResultList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetResultList.java index 6b369139..ce70cb9e 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/TweetResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg; +package org.woehlke.twitterwall.backend.mq.tweets.msg; import org.woehlke.twitterwall.oodm.model.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/impl/TweetMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/impl/TweetMessageBuilderImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/impl/TweetMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/impl/TweetMessageBuilderImpl.java index 9b407c14..221decc0 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/tweets/msg/impl/TweetMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/impl/TweetMessageBuilderImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.impl; +package org.woehlke.twitterwall.backend.mq.tweets.msg.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; @Component public class TweetMessageBuilderImpl implements TweetMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrFetcher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrFetcher.java new file mode 100644 index 00000000..31bc3907 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrFetcher.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; + +public interface UrFetcher { + + Message fetchUrl(Message incomingUserMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlFinisher.java new file mode 100644 index 00000000..ee8ed6d1 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlFinisher.java @@ -0,0 +1,13 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; + +import java.util.List; + +public interface UrlFinisher { + + Message finish(Message> incomingMessageList); + + void finishAsnyc(Message> incomingMessageList); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlPersistor.java new file mode 100644 index 00000000..030f5d95 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlPersistor.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; + +public interface UrlPersistor { + + Message persistUrl(Message incomingUserMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlTransformator.java new file mode 100644 index 00000000..19e8cfaf --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlTransformator.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; + +public interface UrlTransformator { + + Message transformUrl(Message incomingUserMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrFetcherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrFetcherImpl.java new file mode 100644 index 00000000..a3229b11 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrFetcherImpl.java @@ -0,0 +1,25 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.services.UrFetcher; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; + +@Component("mqUrFetcher") +public class UrFetcherImpl implements UrFetcher { + + + @Override + public Message fetchUrl(Message incomingUserMessage) { + return null; + } + + private final UrlMessageBuilder urlMessageBuilder; + + @Autowired + public UrFetcherImpl(UrlMessageBuilder urlMessageBuilder) { + this.urlMessageBuilder = urlMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlFinisherImpl.java new file mode 100644 index 00000000..36f1be0b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlFinisherImpl.java @@ -0,0 +1,32 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.services.UrlFinisher; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; + +import java.util.List; + +@Component("mqUrlFinisher") +public class UrlFinisherImpl implements UrlFinisher { + + + @Override + public Message finish(Message> incomingMessageList) { + return null; + } + + @Override + public void finishAsnyc(Message> incomingMessageList) { + + } + + private final UrlMessageBuilder urlMessageBuilder; + + @Autowired + public UrlFinisherImpl(UrlMessageBuilder urlMessageBuilder) { + this.urlMessageBuilder = urlMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlPersistorImpl.java new file mode 100644 index 00000000..348ef8be --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlPersistorImpl.java @@ -0,0 +1,25 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.services.UrlPersistor; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; + +@Component("mqUrlPersistor") +public class UrlPersistorImpl implements UrlPersistor { + + @Override + public Message persistUrl(Message incomingUserMessage) { + return null; + } + + private final UrlMessageBuilder urlMessageBuilder; + + @Autowired + public UrlPersistorImpl(UrlMessageBuilder urlMessageBuilder) { + this.urlMessageBuilder = urlMessageBuilder; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlTransformatorImpl.java new file mode 100644 index 00000000..381c2959 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlTransformatorImpl.java @@ -0,0 +1,25 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.services.UrlTransformator; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; + +@Component("mqUrlTransformator") +public class UrlTransformatorImpl implements UrlTransformator { + + + @Override + public Message transformUrl(Message incomingUserMessage) { + return null; + } + + private final UrlMessageBuilder urlMessageBuilder; + + @Autowired + public UrlTransformatorImpl(UrlMessageBuilder urlMessageBuilder) { + this.urlMessageBuilder = urlMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/UpdateUrls.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/UpdateUrls.java new file mode 100644 index 00000000..b6508b47 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/UpdateUrls.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UrlSplitter; + +public interface UpdateUrls extends UrlSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/impl/UpdateUrlsImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/impl/UpdateUrlsImpl.java new file mode 100644 index 00000000..7031ac7f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/impl/UpdateUrlsImpl.java @@ -0,0 +1,27 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.splitter.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.splitter.UpdateUrls; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; + +import java.util.List; + +@Component("mqUpdateUrls") +public class UpdateUrlsImpl implements UpdateUrls { + + @Override + public List> splitUrlMessage(Message incomingTaskMessage) { + return null; + } + + + private final UrlMessageBuilder urlMessageBuilder; + + @Autowired + public UpdateUrlsImpl(UrlMessageBuilder urlMessageBuilder) { + this.urlMessageBuilder = urlMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessage.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessage.java index 266c8f57..4be8fb4e 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/urls/msg/UrlMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessage.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.urls.msg; +package org.woehlke.twitterwall.backend.mq.urls.msg; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessageBuilder.java new file mode 100644 index 00000000..e4061ba0 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessageBuilder.java @@ -0,0 +1,4 @@ +package org.woehlke.twitterwall.backend.mq.urls.msg; + +public interface UrlMessageBuilder { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlResultList.java new file mode 100644 index 00000000..1ea64630 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlResultList.java @@ -0,0 +1,51 @@ +package org.woehlke.twitterwall.backend.mq.urls.msg; + +import org.woehlke.twitterwall.oodm.model.Url; + +import java.io.Serializable; +import java.util.List; + +public class UrlResultList implements Serializable { + + private final long taskId; + private final List userList; + + public UrlResultList(long taskId, List userList) { + this.taskId = taskId; + this.userList = userList; + } + + public long getTaskId() { + return taskId; + } + + public List getUserList() { + return userList; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof UrlResultList)) return false; + + UrlResultList that = (UrlResultList) o; + + if (taskId != that.taskId) return false; + return userList != null ? userList.equals(that.userList) : that.userList == null; + } + + @Override + public int hashCode() { + int result = (int) (taskId ^ (taskId >>> 32)); + result = 31 * result + (userList != null ? userList.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "UrlResultList{" + + "taskId=" + taskId + + ", userList=" + userList + + '}'; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/impl/UrlMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/impl/UrlMessageBuilderImpl.java new file mode 100644 index 00000000..9abeaa34 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/impl/UrlMessageBuilderImpl.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.urls.msg.impl; + +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; + +@Component +public class UrlMessageBuilderImpl implements UrlMessageBuilder { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListFinisher.java similarity index 51% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListFinisher.java index 5cefca8b..89ecba81 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListResultList; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsPersistor.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsPersistor.java index 4f8892ee..6e39df39 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; public interface ListsPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsTransformator.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsTransformator.java index 6ed03529..e6a2afde 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/ListsTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; public interface ListsTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java index 2fa9fad1..e7cb926e 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,11 +11,11 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.ListFinisher; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl.UserFinisherImpl; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListResultList; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListFinisher; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListResultList; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java similarity index 83% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java index c3e82586..2a573ae4 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -8,9 +8,9 @@ import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserListService; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.ListsPersistor; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListsPersistor; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; @Component("mqUserListPersistor") public class ListsPersistorImpl implements ListsPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java index 98dbbd16..37d4d505 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -6,9 +6,9 @@ import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.serviceactivator.ListsTransformator; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListsTransformator; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; import org.woehlke.twitterwall.backend.service.transform.UserListTransformService; @Component("mqUserListTransformator") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/ListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/ListsSplitter.java new file mode 100644 index 00000000..72e05e14 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/ListsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserListsSplitter; + +public interface ListsSplitter extends UserListsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/impl/ListsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/impl/ListsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java index 33f420e0..6260c95b 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/endpoint/splitter/impl/ListsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.endpoint.splitter.ListsSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.ListsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessage.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessage.java index 797f61f7..36f3ae7b 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessage.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg; +package org.woehlke.twitterwall.backend.mq.userlist.msg; import org.springframework.social.twitter.api.UserList; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessageBuilder.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessageBuilder.java index bc1cc45f..f463babd 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessageBuilder.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg; +package org.woehlke.twitterwall.backend.mq.userlist.msg; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.UserList; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; public interface UserListMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListResultList.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListResultList.java index b7ec9b70..bc24b36a 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/UserListResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg; +package org.woehlke.twitterwall.backend.mq.userlist.msg; import org.woehlke.twitterwall.oodm.model.UserList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/impl/UserListMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/impl/UserListMessageBuilderImpl.java similarity index 74% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/impl/UserListMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/impl/UserListMessageBuilderImpl.java index 937c8c9c..1dbc6454 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/userlist/msg/impl/UserListMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/impl/UserListMessageBuilderImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.impl; +package org.woehlke.twitterwall.backend.mq.userlist.msg.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.UserList; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; @Component public class UserListMessageBuilderImpl implements UserListMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/CreateImprintUser.java new file mode 100644 index 00000000..73400813 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/CreateImprintUser.java @@ -0,0 +1,10 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; + +public interface CreateImprintUser { + + Message createImprintUser(Message mqMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserCheckStorage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserCheckStorage.java similarity index 51% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserCheckStorage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserCheckStorage.java index 25676d92..41d6d488 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserCheckStorage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserCheckStorage.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; public interface UserCheckStorage { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserFinisher.java similarity index 58% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserFinisher.java index 4d2522c3..4671b35f 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserResultList; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserPersistor.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserPersistor.java index 24f022d4..8a566888 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; public interface UserPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserTransformator.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserTransformator.java index 7b9323fa..cb5eee40 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/UserTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; public interface UserTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java index b559fbbf..610035d0 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.CreateImprintUser; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.CreateImprintUser; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java index 3ba1b2b3..96b1f4ad 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.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.backend.mq.endpoint.users.endpoint.serviceactivator.UserCheckStorage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.UserCheckStorage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; @Component("mqUserCheckStorage") diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserFinisherImpl.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserFinisherImpl.java index 5187ccbe..0f078e16 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,10 +10,10 @@ import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.UserFinisher; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserResultList; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.UserFinisher; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.msg.UserResultList; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserPersistorImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserPersistorImpl.java index 0b9cf499..3840b1c9 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/serviceactivator/impl/UserPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserPersistorImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.UserPersistor; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.UserPersistor; @Component("mqUserPersistor") public class UserPersistorImpl implements UserPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/CreateTestDataUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/CreateTestDataUsersSplitter.java new file mode 100644 index 00000000..2402d1f0 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/CreateTestDataUsersSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface CreateTestDataUsersSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFollowerSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFollowerSplitter.java new file mode 100644 index 00000000..0ee7d3b9 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFollowerSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchFollowerSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFriendsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFriendsSplitter.java new file mode 100644 index 00000000..46a5a21e --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFriendsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchFriendsSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUserlistOwnersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUserlistOwnersSplitter.java new file mode 100644 index 00000000..baee7936 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUserlistOwnersSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchUserlistOwnersSplitter extends UserSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUsersFromListSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUsersFromListSplitter.java new file mode 100644 index 00000000..a87ef53b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUsersFromListSplitter.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchUsersFromListSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/UpdateUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/UpdateUsersSplitter.java new file mode 100644 index 00000000..a564a08f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/UpdateUsersSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface UpdateUsersSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java index 8bd315a5..bab673fc 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; @@ -9,10 +9,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.CreateTestDataUsersSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.CreateTestDataUsersSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java index a0e4224f..c7f770e4 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.FetchFollowerSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchFollowerSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java index 64d4e487..1904263b 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.FetchFriendsSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchFriendsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java index e280b39c..87dec23d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,11 +18,11 @@ import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserListService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.backend.mq.endpoint.mentions.endpoint.splitter.impl.UpdateUsersFromMentionsSplitterImpl; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.FetchUserlistOwnersSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.splitter.impl.UpdateUsersFromMentionsSplitterImpl; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchUserlistOwnersSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java index 28922cb3..a2de5bab 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; @@ -8,10 +8,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.FetchUsersFromListSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchUsersFromListSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java index 6bd65539..f6ec0f91 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,10 +17,10 @@ import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.splitter.UpdateUsersSplitter; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.UpdateUsersSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessage.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessage.java index 1384f4c7..66826221 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessage.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.msg; +package org.woehlke.twitterwall.backend.mq.users.msg; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; import org.woehlke.twitterwall.oodm.model.User; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessageBuilder.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessageBuilder.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessageBuilder.java index 708a5a82..d1a9b568 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessageBuilder.java @@ -1,9 +1,9 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.msg; +package org.woehlke.twitterwall.backend.mq.users.msg; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; public interface UserMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserResultList.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserResultList.java index cf7a4631..86094206 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/UserResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserResultList.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.msg; +package org.woehlke.twitterwall.backend.mq.users.msg; import org.woehlke.twitterwall.oodm.model.User; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/impl/UserMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/impl/UserMessageBuilderImpl.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/impl/UserMessageBuilderImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/impl/UserMessageBuilderImpl.java index c35d58a4..86c8814e 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/endpoint/users/msg/impl/UserMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/impl/UserMessageBuilderImpl.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.backend.mq.endpoint.users.msg.impl; +package org.woehlke.twitterwall.backend.mq.users.msg.impl; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; @Component public class UserMessageBuilderImpl implements UserMessageBuilder { diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformatorImpl.java index 99225c39..9fb6ee4d 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformatorImpl.java @@ -7,10 +7,10 @@ import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; import org.woehlke.twitterwall.backend.service.transform.UserTransformService; -import org.woehlke.twitterwall.backend.mq.endpoint.users.endpoint.serviceactivator.UserTransformator; -import org.woehlke.twitterwall.backend.mq.endpoint.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.UserTransformator; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; @Component("mqUserTransformator") public class UserTransformatorImpl implements UserTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java index b27c6e13..ff89dce7 100644 --- a/src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java @@ -9,7 +9,7 @@ @Component @Validated -@ConfigurationProperties(prefix="twitterwall.scheduler") +@ConfigurationProperties(prefix="twitterwall.cronjobs") public class SchedulerProperties { @NotNull diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java index dc995c01..c751b796 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java @@ -10,7 +10,7 @@ import org.woehlke.twitterwall.frontend.content.Symbols; import org.woehlke.twitterwall.frontend.content.ContentFactory; import org.woehlke.twitterwall.oodm.model.User; -import org.woehlke.twitterwall.backend.mq.endpoint.tasks.TaskStart; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStart; /** 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 e361e374..5c731356 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -22,7 +22,7 @@ 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.backend.mq.endpoint.tasks.TaskStartFireAndForget; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStartFireAndForget; import javax.persistence.EntityNotFoundException; import java.util.ArrayList; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 143679d2..a7719e59 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -115,7 +115,7 @@ twitterwall: updateTweets: 43200000 # 12 Hours updateUserProfiles: 43200000 # 12 Hours updateUserProfilesFromMentions: 3600000 # One Hour - scheduler: + cronjobs: allowFetchTweetsFromTwitterSearch: true fetchUsersFromDefinedUserListAllow: true fetchUsersFromDefinedUserListName: ${TWITTERWALL_SCHEDULER_USER_LIST_NAME} diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml index 991a4709..6fff9bde 100644 --- a/src/main/resources/integration.xml +++ b/src/main/resources/integration.xml @@ -30,206 +30,206 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -237,39 +237,39 @@ - + - + - + - + - + - + diff --git a/src/site/Twitterwall2/Twitterwall2.mdzip b/src/site/Twitterwall2/Twitterwall2.mdzip index 5e79b5a98a57ef51859599f0df401a319a4cf83e..3dc497c53c99a8d5dc4f58e58880421c995b2622 100644 GIT binary patch delta 68263 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

  • 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 kUvNGYW!eaI%-lHVRzyYBpNz~%J(*ci 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%0AJokwMR7t9*J)zAA{f2DQh)fKD@ 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 Date: Sat, 19 Aug 2017 21:50:41 +0200 Subject: [PATCH 28/45] fixed #271 --- .../impl/MentionFinisherImpl.java | 4 +- .../impl/UpdateMentionWithUserImpl.java | 7 +-- .../impl/UserforMentionPersistorImpl.java | 7 +-- .../impl/UserforMentionTransformatorImpl.java | 15 ++++-- .../mq/mentions/msg/MentionMessage.java | 25 +++++++++ .../mentions/msg/MentionMessageBuilder.java | 2 + .../msg/impl/MentionMessageBuilderImpl.java | 49 +++++++++++++----- src/main/resources/integration.xml | 2 - src/site/Twitterwall2/Twitterwall2.mdzip | Bin 83301 -> 83323 bytes 9 files changed, 81 insertions(+), 30 deletions(-) diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java index c9e84e0d..e36169f0 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java @@ -36,7 +36,9 @@ public Message finish(Message> incomingM List mentionMessageList = incomingMessageList.getPayload(); for(MentionMessage msg :mentionMessageList){ taskId = msg.getTaskMessage().getTaskId(); - mentionIds.add(msg.getMentionId()); + if(!msg.isIgnoreNextSteps()){ + mentionIds.add(msg.getMentionId()); + } } MentionResultList userResultList = new MentionResultList(taskId,mentionIds); Message mqMessageOut = MessageBuilder.withPayload(userResultList) diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java index f877d591..02cac49b 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java @@ -19,11 +19,8 @@ public class UpdateMentionWithUserImpl implements UpdateMentionWithUser { @Override public Message updateMentionWithUser(Message incomingMessage) { MentionMessage receivedMessage = incomingMessage.getPayload(); - if(receivedMessage.getTwitterProfile()==null) { - return MessageBuilder.withPayload(receivedMessage) - .copyHeaders(incomingMessage.getHeaders()) - .setHeader("persisted",Boolean.TRUE) - .build(); + if(receivedMessage.isIgnoreNextSteps()) { + return mentionMessageBuilder.buildMentionMessage(incomingMessage); } else { long taskId = receivedMessage.getTaskMessage().getTaskId(); Task task = taskService.findById(taskId); diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java index 28a0e48a..9b5a1d50 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java @@ -18,11 +18,8 @@ public class UserforMentionPersistorImpl implements UserforMentionPersistor { @Override public Message persistUserforMention(Message incomingMessage) { MentionMessage receivedMessage = incomingMessage.getPayload(); - if(receivedMessage.getTwitterProfile()==null) { - return MessageBuilder.withPayload(receivedMessage) - .copyHeaders(incomingMessage.getHeaders()) - .setHeader("persisted",Boolean.TRUE) - .build(); + if(receivedMessage.isIgnoreNextSteps()) { + return mentionMessageBuilder.buildMentionMessage(incomingMessage); } else { long taskId = receivedMessage.getTaskMessage().getTaskId(); Task task = taskService.findById(taskId); diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java index 827c7f2c..17691908 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java @@ -17,11 +17,16 @@ public class UserforMentionTransformatorImpl implements UserforMentionTransforma @Override public Message transformUserforMention(Message incomingMessage) { MentionMessage receivedMessage = incomingMessage.getPayload(); - long id = receivedMessage.getTaskMessage().getTaskId(); - Task task = taskService.findById(id); - User user = userTransformService.transform(receivedMessage.getTwitterProfile(),task); - Message mqMessageOut = mentionMessageBuilder.buildMentionMessage(incomingMessage,user); - return mqMessageOut; + if(receivedMessage.isIgnoreNextSteps()){ + Message mqMessageOut = mentionMessageBuilder.buildMentionMessage(incomingMessage); + return mqMessageOut; + } else { + long id = receivedMessage.getTaskMessage().getTaskId(); + Task task = taskService.findById(id); + User user = userTransformService.transform(receivedMessage.getTwitterProfile(),task); + Message mqMessageOut = mentionMessageBuilder.buildMentionMessage(incomingMessage,user); + return mqMessageOut; + } } private final UserTransformService userTransformService; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java index f14bc72c..b15213ec 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java @@ -18,6 +18,20 @@ public class MentionMessage implements Serializable { private final long idOfUser; private final long mentionId; + private final boolean ignoreNextSteps; + + + public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName, boolean ignoreNextSteps) { + this.taskMessage = taskMessage; + this.screenName = screenName; + this.mentionId = mentionId; + this.twitterProfile = null; + this.user = null; + this.idTwitterOfUser = Mention.HAS_NO_USER; + this.idOfUser = Mention.HAS_NO_USER; + this.ignoreNextSteps = ignoreNextSteps; + } + public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName) { this.taskMessage = taskMessage; this.screenName = screenName; @@ -26,6 +40,7 @@ public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName this.user = null; this.idTwitterOfUser = Mention.HAS_NO_USER; this.idOfUser = Mention.HAS_NO_USER; + this.ignoreNextSteps = false; } public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName, TwitterProfile userFromTwitter) { @@ -36,6 +51,7 @@ public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName this.user = null; this.idTwitterOfUser = Mention.HAS_NO_USER; this.idOfUser = Mention.HAS_NO_USER; + this.ignoreNextSteps = false; } public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName, TwitterProfile twitterProfile, User user) { @@ -46,6 +62,7 @@ public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName this.user = user; this.idTwitterOfUser = Mention.HAS_NO_USER; this.idOfUser = Mention.HAS_NO_USER; + this.ignoreNextSteps = false; } public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName, TwitterProfile twitterProfile, User user, long idOfUser, long idTwitterOfUser) { @@ -56,6 +73,7 @@ public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName this.user = user; this.idTwitterOfUser = idTwitterOfUser; this.idOfUser = idOfUser; + this.ignoreNextSteps = false; } public TaskMessage getTaskMessage() { @@ -86,6 +104,10 @@ public User getUser() { return user; } + public boolean isIgnoreNextSteps() { + return ignoreNextSteps; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -96,6 +118,7 @@ public boolean equals(Object o) { if (idTwitterOfUser != that.idTwitterOfUser) return false; if (idOfUser != that.idOfUser) return false; if (mentionId != that.mentionId) return false; + if (ignoreNextSteps != that.ignoreNextSteps) return false; if (taskMessage != null ? !taskMessage.equals(that.taskMessage) : that.taskMessage != null) return false; if (screenName != null ? !screenName.equals(that.screenName) : that.screenName != null) return false; if (twitterProfile != null ? !twitterProfile.equals(that.twitterProfile) : that.twitterProfile != null) @@ -112,6 +135,7 @@ public int hashCode() { result = 31 * result + (int) (idTwitterOfUser ^ (idTwitterOfUser >>> 32)); result = 31 * result + (int) (idOfUser ^ (idOfUser >>> 32)); result = 31 * result + (int) (mentionId ^ (mentionId >>> 32)); + result = 31 * result + (ignoreNextSteps ? 1 : 0); return result; } @@ -125,6 +149,7 @@ public String toString() { ", idTwitterOfUser=" + idTwitterOfUser + ", idOfUser=" + idOfUser + ", mentionId=" + mentionId + + ", ignoreNextSteps=" + ignoreNextSteps + '}'; } } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java index aa37c69c..c86e31be 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java @@ -16,4 +16,6 @@ public interface MentionMessageBuilder { Message buildMentionMessage(Message incomingMessage, Mention mention); + Message buildMentionMessage(Message incomingMessage); + } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java index 9a4765e2..88e8def0 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java @@ -30,18 +30,34 @@ public Message buildMentionMessageForTask(Message i @Override public Message buildMentionMessage(Message incomingMessage, TwitterProfile userFromTwitter) { - MentionMessage outputPayload = new MentionMessage( - incomingMessage.getPayload().getTaskMessage(), - incomingMessage.getPayload().getMentionId(), - incomingMessage.getPayload().getScreenName(), - userFromTwitter - ); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingMessage.getHeaders()) - .setHeader("twitter_profile_id", userFromTwitter.getId()) - .build(); - return mqMessageOut; + if(userFromTwitter == null){ + boolean ignoreNextSteps = true; + MentionMessage outputPayload = new MentionMessage( + incomingMessage.getPayload().getTaskMessage(), + incomingMessage.getPayload().getMentionId(), + incomingMessage.getPayload().getScreenName(), + ignoreNextSteps + ); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("twitter_profile_id", userFromTwitter.getId()) + .build(); + return mqMessageOut; + } else { + MentionMessage outputPayload = new MentionMessage( + incomingMessage.getPayload().getTaskMessage(), + incomingMessage.getPayload().getMentionId(), + incomingMessage.getPayload().getScreenName(), + userFromTwitter + ); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("twitter_profile_id", userFromTwitter.getId()) + .build(); + return mqMessageOut; + } } @Override @@ -82,4 +98,13 @@ public Message buildMentionMessage(Message incom return mqMessageOut; } + @Override + public Message buildMentionMessage(Message incomingMessage) { + Message mqMessageOut = + MessageBuilder.withPayload(incomingMessage.getPayload()) + .copyHeaders(incomingMessage.getHeaders()) + .build(); + return mqMessageOut; + } + } diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml index 6fff9bde..5fc12bb5 100644 --- a/src/main/resources/integration.xml +++ b/src/main/resources/integration.xml @@ -835,8 +835,6 @@ - - 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 DVdv2! delta 35662 zcmZ5_V|1p$(rs+pwr$(?#I`+2-q^OCiEZ0lY{e zxbSoeQLkkRImJh%d%vs1rP0X!8=yqaWsQ~hJB;)Kz<2k<7#q)aU3BOge7=38X2%@k zXGY)1vH(5;pN9YJ)IqJc)!PpK zX4N!PJ`ttO6(oDl2G#S*HhWeg>aNr^l}_SW)}n6==g=)a2TZ5MM^WY;7V7wnp+%+=J^qOCE79epzKHZX5G5bGQ5?*@}s1dZ=Qcj0~WR zS%ekEMLc@GewPmi!Tw=<^<)qe@u;+mi;-~l`+`^I`>sJMi6tjn)m>r0Qi@r{r1?rC+giGni=?QBawRT4d~h@xmY>BIEX;@$~&J@m~W zb?2Iia1pAn)Wi^vi#?f%A|l+33?8sopRe4M%5-}1*Cf|3^E)FqB~BZ9@FQKWlvX2f zcO{S+RkaArBK%ji(+>Jum)uDbc>~iLoU+*d8VyE2Ao`ZQg+wozRxUt^nSnh{TdbHZ zT&7AHc&KV>Vc1y?bk8I+2qcK8nK+SHpnW85b4Rh!$;>Z68AduJ(oM`Wq#mGwdn?tr zJ4Rwe7QyZljig;o**IZW<)|0!?iiv<0FihUI0SborZG{ZN7hCSRj87TB`$884rY{J zy##jnW{R<(K=vwbZ)~V7PGnb+Qql!Hia{@iLog^RgO-n~u%&0@19LQK)u6=}poEQ7 z5?C7DA0GHotNucv{rRQ}0Sst*)wythipEJdWiyB13lfg5h;TBYvHyZ6HJ{EvQl63y zRz|dB;)TFXG(g5CHUUpS-y)0|!&!~m5Z5LsK=k0kDmv_zjh zWw_2Vqx*DIH=0cGuwz^u}^CM8ut;~;~3 z8fdJ7CiiRfU(8jRH2}X>1%pt>>v85xJ{$tHKCO#@VK>qEu$mokxoMg%3DHn zz#%Ka!riIZ*2y=J(ba?(Ihd<}5DckjjVq4tFUsH7*IMBf^9G9H1tL>bNrZ~$EOuR| zQxFEnID?lbDMz!qCK#iJ5H2>sMMhFVtN=|}sWWSoVi98CjskuU`Jl6FgE=CVzcB1!p7xNtCJkY7CnZ$b1Q?~R|S!Y z#}cU|O6SEsKfVeV2IC_b3RuLWgQIr`7}f~y zWT;tAO5o3?q6hOEN?R$+6_?MCHk*Y+AjhG9I?!zEd@eDo{}MNxFr3WasmkOd<{iP) z7>M_9#+HPuP!yAhvzNrFAPDDyxyRDG8-3rHXD-#?vIOKrpqoNeRODEv^kqDa53<4Y zAWDN9f#BgTje)5$ipN?_8jj;h5bAc2oKC1;E!yvWO{3XRx#Fl0Qb8uGfUy#y=WKVS zM+hAmS95vF7aOrwXGbSV%qf-r!M0@A50%P_7gr z28d9_#>a;8M-znOiZ?9aK!^{KQ*U&rs63Gicpt3r7lhQLZo^@EP~vw<(W|3iB;)WP z)x4AfElUD)$H>tr%&b|LEvq|%g-V^O5m?A4!~jPt9IR2&8M-Hk!(6@@vo`}qrtwMr zE(Opvq97wW@CF!fpLuUr`%JouF+F6vVkN=0sF4WS&gI$ZM7#;-w$FKPcoIUjy~$^I znpu$4-|W&+Cxg}Mm%ufOtNl$nrR6*2Pc1rXzA5B{QKl`T&*x{VrY=&o`5K86YJW(r z=>cu;JHW{wL22V8dT`&krSF(Otav^%7=P_JrYCB5a|rE)6+=PE3OzkqMLgSlI27_b zg>I|IQT9F_d!#U@xBYVntHkTS29MOvckk6ZP1y?SMGWXQRrhH9SC3Y$I&Q?rbc|hP zmtkW3F&nvGyG`FA^c89wdlxR6#0-9bbO7qbKVD;zuJ;u36Ja1=KZv{R`kWd|)i{mg z27kYP_B0*zd)wY_zn>iI@GhQ+;Lm}>=6kK)Dpo=m&A%C)y&hh9LWA6B$7f}6t~nk||<#bm_!97XaJh+QsbsWeI}%-=F(mgtIEQjV4Z61B9sGa#X2& zi)wPY@><3Dd>j(HD6*hV-y&^IM)l8BvQ;Om=slCt=wrR#YeZ(KW@)AZbPMD6S;M=k z%Ov+XlR6|NF#%JoiO9()_2FPoA!xv1N>JFL)y(z&$t#E|U}wY!xKzD*#>Nn3av3oAQ9e_tf|lW{E6BdhFZvOc7tYT+`(2;~kt zsVlynb4BB?uKgM&rojd^DFvjwtTEGjHXlypKMw$WiKVU3w4(YPp`Xy=e5%P=WMuys zE5LI^P#xXC>?S2LN2L$JfEha~4x7TU$YAjh`&uo)!T!RwG45;6r@h5MCBs4in`XA<||0;W&PpL5u_h*(roYG83*+>joH z9W{-JM0e<<=Nj5n3_GAnNT^#&JIbQ%S4_?bxnC?agy#3A@)(n20uu?7>(q``6B2TK zF?+cNJjv0`@A_Jyp`1UTn}KW^!Lh83&+)Rfio--xH5!gw#h23K~E?CwuhkyGG_7idDU$uIfRZ z61tp-BA9vUNJV8T%ZER5MBip?keUqaG^@|FD<@kSYlM85T0I{1Db|(gIbXD%8IR=z ztJTqS6`~ClWRL;8HYy5~AFi!J({XuH?J2T0n@ts2O}RdhxGHp}R~Mj-5iYU639gev zDg7j;)vORv9^&x^s}Jq!KLS_5L&rjLT&+;KuOGOJJ>s;JQKvow>xYm9$E5lcmq|;m zR8?`uY<4z|Kb#}IycF^iz1L6$y2ACWfOVrSSEd+0jI{(k$Ygr3jZ$m=y8tU_020)3 zsGF5CA`>i=I=l}S{ljg2u@M4Vkdmd-yVbp+IS-MD9^M9&_7DsCcl_465)cR z^ha3awXJamiI5R@;#m59*rx?YVFVV6;0hF4W1-Mjp-m|V^SRhwf*^#hXZIZ*Udmzg zUIlG$NQ6|VgznQ=$DePHnAMbiUnz_}lR0o6KQ9SP zradn8Y&F;W?E)^%Ui5GA+$cg#De!{6Cc*Stp%Y_=$&x<<%;@9b^mpq)wP>7lrEaF?z<99QV{a zdt7&wzUin-r)%|SJD*z-YIvy5ZVqQ=!tdAMJQxbU+5zaqz#KKFkHUer{cLjC|82%5 zHhXG5odzj2-0BSmVygLTQTMAbYl|0+Y}M{D_R+Ppb28niYsWl+f9%#CLlP8C=hxy0 ze^A!435KaF?&Kmc%vtqOAJ9tYvOiAotzFY1m^23tEFAyd6@vj}M0X5EL(h!0huI&C z661UO~I#Iie34OW6?V6s(<(XWy`wr7$cvfyd(RM|>()_>3 zG_r@c?zj>^Rq<7YT;}dKc1Q)9cEqSh6U{W$PZpir>fqDxcLy|6l1MRGH#NLuw>7vI zgDIbk%)}728x)cAOVRXbC&A}4{HjJ5rU=D}0zC3>1vFz}kYTZR+<{KH*weSXOnp_E zALO3f(knogtKrJl3Kt&zN#G9W;cQ6+yPJuD*e7~OjB#6X_rxs9`O1o6ytsM30^k1Z z`SzOJ-aoqAeRjW8b`ktHatx0(du%}OMZ}ykj+p85HRo+y+qgJ*15o}NC&V=#5d-~J z26Q}+S8L~$G;TC`^5<0%snH(mZOC?rI=|S}mrdeiqqOrvl{z>K zAn8?%y1yU>t&=}_7Wg9h$WA`<9()b3+Hs7xRolHSK%7)n)zR~EUKb(E{fw33-HgZM z#qY@K%biKOR?_{5%5TqQH$AEH03dU=;K#3td4$fMZJnV9|5;M96ualf+Dkn{ zXd|LpIuu^R40i($NIt#H9YR-!wB*WIEdKo)j|blqMy2<$eTu|qCwrk5x-_vk4?n)H zeryDM_2JMd;&jvZJpakh<|SfNP+dCn*VVn1^use$)V0P<&j!pBJsSSK{&i4`CnhZTxWzWJXjkL+qi^I@I(nyOaC+}m`Yyp;cvxXss{4O z<-1{edJxr^82PaE=8!oUDlB+cWQ&_y&^lj!af=<(bW~Tfm8pt zCE#Obt43*)chmRL4^cjMPRH`1+=U}&>uO8@^bx7VX2*pvu++{f2QU$@6CL!4)YL$YcEChqdAbj-cdlXs<@Z?2hw5EiS-8SDud*kud-9+d>a zi*8sps3#k?%7sC2^!lT=mY}q;C;RdVvq-*LQ#F9$r)Bio7gVKk#BN4!ezt2K2aZ!5 z<`;t0CH%+>pShU?XTkr$YJ{=^Pv;0#DKI~J(X+laa_E2Xfa39T=Q`DP!S&LJ3{@H< z`#A6_`*FIc2WaQY_^FGleX09=4x0W~PWbJoCU?Ir??aD^t4pi@q49+fA%v%I1+ebG z0QDc#m);Xr^WiT8)=Ix>9Eyi7jt0#aYW^ZPx%{Uoz>;D8ohC=z z!b8;g@bX_>U#R~M@U)h?Fb!QA`A=Q(=;T1YtuN6h;UuiHv5~;)IR>4)2v}3JfRMnUFnp#n{5=0li^* zXR$j2d67DSUh#59_mka|rQq1olBr4i03waZ+k3>7Wg77Vq1DZhRLB?7ca^kwPTpdS zqp~|A8{Cq1g1i^8pK>tMeVt%F%dZB|D`>lcyANmju)Ggm5&0#!bDiH<lQ`qxt_Wbv9HdnILblxv1WoOy6&QC=|NQk+yB4Y=)W#XOT~*OQ0)?%fH?WD>rgfn zx##j-osJJ)>87n$4em#U-J>2Gni#sXyrPr&&mml}@q;zGtpe0yJacDzXYRwqHH#rT z;YUL@x8S#VI2J~2)+pIu>L2*Yyg*$NS7rxnSrpNHUUY{DLQDSCDIBt`dpYyQq?Ud) zdTsj1uZDF&-;z%)#hf4b_@(*!P^FG|#k2QjgWM<*N0XuUb*ikLf?an!6Ze+1uAaRX z0PXcwITD_VA^-*|(nf=Yd5(ywM^hy3CTaq}A&=#VMg0`;Ls@_Ghym>;=p0tjW#Aq&r zcqaOE`Gknd8{fYVGqze~u-)!C7ZK+x;REW^skOVG_P&nJisvFaV(-h|afMU% z$65Mnz*LHeBV8_WSKF-QoI@m2>KCJSp}l!nV#c}6*AVQ{8DMEeoHhtepO6YqcP6T% za$`3GZ^o|cki3l3V|GQHM~n@nWS%)$uM0~_4;+%jv1e(nfk&@aL%SvGYo?^*P(ezp zqTAN|EKslfpg#MGw{iS{i&^90>#JCLd7be6*JVH=(4J~f<}kg!hs!ZdbS{h2=1e;-Y_cK z4L={tM=w8!O0tkpl-e zws$mo=ZX^>iV5m)I8tk;xyjX?gx?hcpI$M$v^%=us)Fm-FIpKz8pYS(-Ek*Q$T;Y> zY6pnq+P-;7u)7%R;OY5b;xER7$v(v1n9!+|`pdx~pwR%1TPYEAwjV?^0ysYv(KMsF z*4P>Sc7C=8xmk|Wwi94HRdmKhU<@?eH3YADfm_Dw+TsEK7Js!#)LUL0z5?6TXYAGM z|D4pUM+Ciat&XupNF4Uj35`*2px)1Vdji<9d_RV=rvAZm7CD76(J3hdiO`g0s2|`W zY`3uc%js-;epZ#eDY?;tys@G&C+0_wuQuCCxk}knoA#2=BZwv|L?x_cIFtxxmi`cZ zNFt9lSx*%7YA|l26rB*w91M+_y+<|)CIFiP`xrPFPAY@C-6;#MfP5sE-{{DN>SGO^ zgQhDj=BY?bO`2@ZHX00*s+wv}Qt*g(?sU2DblH>iC$RX%;GsjnD=M3U zO&$vQ%R)-^eh2s)U*LPhZ+>6XZvA$j^FIIqok*;m1qK3Y2mJ?-|AmjnAEHIz|D=71 zgafcIh2)oKFn=%g0pWfCyGC3jM}%r2ZP<3~S&!FAG=r7ZEH8C`(fVE&FhnNSxj>U> zrMY^yJgEJ;qa1@=lcy-)qf;`D|LXOd%5Qv- z#Wqa^o+8A1zbfW2);a5>vZcbFBg?x%cL|W>TJYWG41-Z_9Y?Q_x=r$U;n$#cAotWw zPF6t}f^<@Gs99cz(lVG|)MoIJw9@*Jw?&Z6zisX-=z%9Hs4fMRkr!H-4XO%tfFBEy z*4-!#Po>pVa@M>OQ?necf$C_+VU0!@P<_GXFU0*OG*)VgD#|2LR7Sp0&z-K%Nei$Y zfod(HO9CPZnd+Zhr3Nz~XdhZz)|V-()oy4&0E(i$P#^D~DTx94a3t9koAt}+ z@{!}Ce!v(a9McFc-dJ6*Q3jH8_Y>ebP{>86XT{!pBCj1nMUuA!8w418` zX}0le@D>X^r=-TSa7r1#TWE4M1*;^3eIWDA=Bx3?->15}wal$?xkTaS!LZx28~Aij z4}F2EgQX1zwbds!bs;Yl##>0fnmvHfH$tPCbkFdRfJdfUB@Ri~>)WAfA|DfYBdMQWcMyuT>qp#2767=I+G!4Nv}Cxy zI&dOZ&J)EOn!UwmMcD>c@dpJ;vktY=;#g+OIcHdw7j50t6Kk-sx7jQAc=O$p>wN;c z9>_BA#q#|*Gd_8R*Sg$b-9KuDX@4nXH!t2|n3UZrXOtc=G%TGFU88L)9iEL0Jdjvp z&WOm+&&;3pj_6P+S_D8fSIi8tKSNrS`f5UKxOJ4QlU|5&h`ZI&Iw#Vdb?@nNTOU!a zm3vE!)uj*nbHyuhPqku_W^D<$cf1yK0#W!sOrEDMycEK1tLQit?8)TyS6ad@ z%L~uSpCHXu3VW>I#B9~D;-ta+gx?EBEx->v26sP5VilPvt0^Xt2~snnLAJb=Uxjg& zr#0+z!OcN^v;&kA5D?ts~mOgui!R4Sf)K!E4NrEPQ8;C0#k zwRq}}hhScD4%Z8Z8X}gBJEdCLjWgsxj^f9P;U(&W+r~YoC@^i2LAkSZO=ra6sBOYS zX2fn&&gNh3qj14lI3r?b{a@ulIOcr|cjEgf;1T}bz5x)|nfwo6+jv0BoBG}9;}Yzm z_;JhTPIUY5`ZbeGFxW{01x&CALn|EX?*pEPOO%!X<#24m4T*;u05E>A1nU>=c#lw)_Og-^G#Fb0{Ijwwc$ofn) zUS+6k=$bjj#jtJ7j&4$ES>4^kivve-JzVCY-;x2sN%#%?U&eyUMe~OM0zyUoe;F$&pIYZ1VKshIx1s-MZ4uOh_z!_0NpONQ zHLE4p#~}Zh5E2SC zsujo%2nfjK-}k?nF{xKVi2lDDI=aInC^NAzv7P*nh2;k54C%kWiT{6#XLWTzvr=l# z%@VQ zS@r1N4dCk&{{6z>o*2K;o9gFVbKRW$toG*t@Y(t!KyQ*%y0J52^&7J0XCT&B5aC#` z73XL3HLbGt=jew3=G&$0W%mZK>+!Mkqhq)6$VlXwd$Kdq^SRNMY?v?oV=>mt``wEz z5bdkGa<;Qj4;hC3IV#gKM428di|~DsyW4vW?f31q{cdo6`R^hIBtfB6gnsSW-IeO{ zoYEr5@3nxp)%oX^&jSfP`!ANMIP)`=!oR-{^HaX#Fa|mk;nGC?`aA%2&f|0gANBZ6 zR9Pqau2uD$*nheOcjGjadl9Mw#3}y{l?}0F?96r!+%0_hK7GcF7DkCsF<~meFd%VR zlr5Ii!kgj}ZQudG>el0gNg9u)i@431jNp_VdV4|h|_Ki&Zy zlpQU zmC+3;$LIq$HcvJX2*710{o8^Myccp#Fa#zhX9M8_I{_cwIf@K;qHsS5=K~5q$?gl7 zG0{YTm7?+{Y7NKNn?ZHw*2AH1Rt%N)fktIvg8DZ|O1_8*Hpv6Ix`{XU+~B2EW+;Dj zw&DN!3Ab$q= zdshRHax&L#M4}1sp6%Ro&8WVr>&pz)vQzvh(k0qLG?i|~$B5R7u$Se(R6E_m z-VM)Ajf60`=SW(QJ>iq!CUb{anzN8}%5?`z0eZMbjrC^lt8(ZZg!f6^Iur4FS8@M# z+y&+`l#x}EpwDXg8x^4FJ+I7%FJ+sUT0Q=dpGTBi^N|a%jf~7E(GPtz(EP25-d7hP zzpd->ws!#3(B(1mgtEKSXfd|(woFeQz+nf{Pv%DL79t7O>07H;zH@fEdKZ+x0>k_j zea08W<@C*9RD-4r@zl_o_^ne3N^wlwN&~LRRn1;-p@Y>v}g}``*mFc(53`V~N7?9=&PE(jx zdce)dNH!JoJ}6nzHGidTnwD!7PZX zc-mrji`$;c%v2D6<$jt}^A4*~hOxJT9k;+gtid1e9+Nb87tk%iGmA-9RXB^-q2B9+c&*-WTMr zt_gcx2SPMvDEP#hc^xpObIWEn8(cAZ%83&h#M9RJ_aDI)6$G1*v9q2>8<>NUo4CR^5)$hueBmur)^6yFh?E%I zipM_ub?Hdof;zP(KI{iIxuy@|vX*b&>!d#X+WRaoq9o0?>=b7E%XUureq`*qoq;K2R{{Cm z>n~w9)|DhD6}EsA+@*f0e(v0X)5(!FPY+y?R(g9+!5u|18cnM?R(^eG4Z|zI7*>H| zg#;J=XXPHHUQlj8VxIbBz*|#EEzvR+BjGPBF8MdtiEZo(YW(aQoXVc<9mKduN$#K5 z#-D1FHyB+>2T0o09i{WTb>p$I&rsuI#mI$}$mo72eY-<>5Aek?cR$Y=JlPa9U_k?a zy_4KA=RrZ}Y8Lj0`@5Xx2lN;K-0X=f94_UYsHYgIwMVP0w~=vUXWLbcL?e>F%Iao2jPTt3eX+}z0Qg1p^t&)A#Yzvr>*cyh=%8!d zA6)`R)*WD{zvBHUW%sigd_O1kEQ?_o4r|Wk0+GwBl2dV#u{Ky(;{9lkOvUp$?=h;m4x53QW7L+Dbj2 zr=!aBR@@a094&u`;V5T*UmlB&_Wp*FCj19kI}k^MQ82dqdVQJC2jj}$hOuDDMSVhj zk_&Y;LB@>Ts+BOnAHh9ilWP^SJR#RO?yJdeomCexVJr<=qQX0LZ$|Hpsq=iQEFj0r zlk5~&M9m}l{N_CwiE=-)ON(4{y{H}rS60}7)d!OfvRj0zWecziPzMaBz*)j>T6I9G z1Gef^rYmJ7#CgUQUo)14-(ULy%VyA(PKrh&SZU%%l8*=gC%aN^Rp^`pc?{6WDxBlO zw}mgS^iR(wd^&4{cye{A&L|i!-K22(0_To>9zE8+$ytKucmu)O0 zS}C^VALEe`8k#7Rd$}zPrp)6PnnfZ3<69qi5Oqs79pEafse6r88Z%wp+wtLQ3j4)} z>I>)yW-JZBi|*rD=ca_zGlr2V)F1X z!Jmf-=6^bTFJAoxvxuaL7c?tdYYbHQ2r`4+MVZ%FG*wlY(G%y z!`?ewY^zz-j0s{`SPe&V2#7>@)?Em~kU$ubh~ftz+|Q2?Bzi-gIR{1>&3#_()|zZq zY^_Hazt|3kJ-VoR1ZLkk0O(!e+Ds(2D!FZtOp?%*n`(&WHuaj6W&TSYa|LQCxf0*1nTAufGrUmk;A0Ue%R^3!}Tz>d5cae4j;9NS4&sgh_hcMog zOl#F+96wTP-g2Tp?`AagEK}c z1X<$(r@v|xC$YN%x)6TX^QL++XT}Y`<0k`1n~*-3Z1|&#Wix=nThWU#;`B9qYBrCs z0x@6=wJtLh-!`eXoO-kN^#fC|XXG z#IFHNY-Fbrdm5ZhHnhUU@BON^XCKB~oFRWHt%xTULm(#Olik&qM?lNL9=Pzvu0{ly z#lMSdDuH@eF#tP_;s!P>9CuKa*Ezs+!U_2Y2`K)sXx=$ZlWz@9;kOT!K#^g*Fp04g7wEa6~B62OJQR9U(4 z#*TA>c~!or?L}h(FnHP=9hz?V%ORO3scIhy>oQJ#A5nGNJy^8?{%x3eV2&-?xD76} zu1izHPdHw&(JhQ`F&w|Z@QA}*NmxA~n7R4RB<+w8eSr#s9Cd011j4GL5M2PtQCrmo zNMT$esxbPg<3jI;!mm1gYxzdu{<{zje1eY zR@pV4T=-JVd@-#_bZHi#dTuH#f1%#PpSTtrJMc%?K?IO};VlW6MU}-dR@yL($EzSJ z_@hJ~QatwQDQt2kRNz#@eSZLZ`|$#0F^J)Nek@?htb~$z6rLvUA~lF=D8FrYgJT-n zyA+qcxQW{&O~v?GUCWUUwq~DA_NCr-MY8DZa{DDybk6{f>d_&h?bQ09mP6Ub8Y(|eMto2=huB?qpgQSz2oJuxzsCWMbK>Zp2LqV# zwis%M`H`5UyfCqaYkU3?8^>IsIv^t@poRhD=fSgLYBOWkm%tcEN_X1E8leIs*nWay zFxDYg@Wc8=@0=jpykj_Yl2=Cv3!FC7@leELt)^^D9H#zpYHDfXsdL7P#qF=&HnW%w zVQhyqEyEIGinr7?zpVjMMh1y-!lg{Q{E5&ehowY4gPKuTs>KO)Uu5lR%40!H&&Gao zB(F>~E*id_xEc>Zmg{9cndW}a;VMV0f#9ClD=Y+v}@_kup%k8#6C z8o6&4f})Ff)!$Z?mEW`5y+2>IfU{A$n>L1<2cyQ;&dHz2+Im1?v6N%RaZ^{mKD!U? z;1?)(=GmSb_J+TOe3@OH-7iE=YH~NxzrbSohKrG>>-e35wz-m`dPV->K(;4Yz1r;V z!FQP)xR+$pjVzy(a8Bp>e?LiSRb_n&f!hHZ6qmMAlGzwwvSw({+wRd_& z1SsAi9se_d1QS_DDVRAiZP;a!s-iH735A4J{L`h1N{(*xu~P!q5!5BNhr6(w=+<@_ zy4j*};)M%)L2=whqS>sCn+~_mW2T@Tj_h0BukP*Ob4;OVwgo*7@LqJq^+qG3#!kI_&0KS|LnBNO6XNg883Y+VFz zIz279)=r(d?eiz&AAe<* zA4c$%PQ{UH!u}rvKt!eAHe_#+9qOKBE;t$@<{5w#N$9S;vqLy(W(mE|Q6x~GLu^~uG zXM7S=xJhB8$#FazQFwYaJT@m|SfTabv?wGDX#P~V`A9e*YTt_8TPU$@#1dKp=K>m! zULfiY1&0VH(*h>E6LCcTb!2~mnzTf_T7?X0ud8t=p~ll=;~-t3y5T_#XyA~tS$Y9; z#Fwp@O?5hgJ#4`-vHFni2TttyMrf6i#RYFb0B2*8*n$Sn6fZKjpEjc&=YtZr2u_p?%=NL@5EE$QDGN zLMU2@K%ns?Kv404mJ+{fenLI)R(Cw1m*%<6;eF0V02(Zy;4L1)_BPK2YC3<3JoB7YNQRwVCUq&G?iZH(75n8wmgRkZm2C3lo z%;Usa-2oa>ouKA)`4qN&wf;(Mg?v(>Q}C2ohM3z^w4cJVZ}SF1ftiO`5qhX@h2Z z&2O7mTKIOs5AmH_CCADLFE=-^-wMaj0ys)Xkh$t4G_ftvC$#J*-dunwMO}nng+~TH`y-WUn|PO_sy*nNceGhCkr&+QUROS{XgA6% z$63+D*I0PZ3@w>!j!Y2e{+NfA{sizqnh`r?;P}FO>!d7v0nUZ!YqL&V2#9?rs~;i( z^YM9@Gr0?gQ_OJU^`c%dAMu{6q^Y1o(%vL-LGGd+|JwGc`b;Y?Zno-^9p8r^<>} z0fl>gS(0&r7%hMr2&cUx^R>SNLjt)!I*r=>hWrZA(L1@?`eL<4Qu}#X*TeW^2DaiGUT7OPcBI;#p8V4Vvh36Q`2}#7 z>r0JdFC`v{it8&al&}|(jaXNtsK7h>tns3N<}{)#)o6WdGmK^z6A3{RM&Kc8;4fZA$4uoxw15_H(rz zYt8B3C+sjipO-HgPaROJtz(5iQb?*bsGlJp5~Tk$EWxWY$n-jb71sD>DJy17CPo1% zzcQ!c-w`iwZSD?hQ(Zk;sXmP4l61%#2T$xC&Il(`ewbTX@r1Z(SOmR~5WN@SJ>1q@_NmpK=& zuEhcD_{!!=p+%AG6TZ``ypu$?SApEAZqr{3cf}q4&D#-FCVfQdIht*aY%r~4<{^uX zwu>gCd|53#&0{*Oy6|iMF2wtDyHY>7g>D9U4qamPbeO%!c+!2RX=1!B=_Kl^6qhYy z!#qu2Lha*0H)j&e@)@I&IMaq){BE35>#hJUL>LKQxw8_%fHG!lv{FC9VM$&FRuF!_ zNQ|fuw@jFDOL2KcXC);IJkDs?la{aPgVIcM>{pInDg=W)AroF^Nf@Meokad@n|ZLG zg?DAA%#pvsG}Q9*lPnkB>>u~k*Lu-6ErZEXe15k38diui;1c8-C{wqBzlSS2T15co zp-Qyg51YP1Z@8+N>_a_Au|mss`qX=%Y|oPoJ9V zfF47~Xyrk&tAKGjpfjr@3MG-BE?{1ph~@6cB#dyYmB z7!{w3f&)2WmhjD1=JB;RAX?OO*vYiZ*=17F^6Zhj6Nb(GWpCZ=KC>~A>Bvq$%W2uq zERgE458%ff3c!^ETK+R+hZeDc)k$pj)n<3B>tN-*hTW~u?;$<&f}?fkK=FX=5JRL# zb|`hCV6Ty7h;f@g2xCxVK?FO3#U>QJch7>g_Pj~-qgr(5R>l@D>R?^7;;NJj~9yn}blgug5&A zOgoXizD_x%Bl8tj=HNd%--3WEMVVp#*yH^iO4z!-=R)74fJeGDA9N^eJoRs z5@fvqivH4|QT}OrItkCIPx&SA#HTP!7gNKB-9*U#NC{}gH;02GQfz?S10GMAJFo7# zeeBWkz~!^dfqurA4WAnrx>1#Ppdbds$zni|pTsc13B7>4uLP_*q5&xc4f_VHXAGE9 zvZwjuj;Zu9HqDl*Aok(!_z@7}9k{>04tq{je4e@`N`Dz&$w);}Q<*nWdKRFO?G$Q} z5IJBYw0h#C5}Z*1!5OF$Q8;*!&ytmulGpSX9ze8fh=R^4$#A2Uda6pe(e= zZ0>8LmWU7~<&}U_tbjijUGKkZ%)R&HtpZX9x5DN?v4|2So-Li##Z9;q&v|$Up#GGxV40pcqj+LA|X8zqAW} zDV4Z;WokZ?vgi>9#vP*Xb;*6UmzWi5AbFOgaaHy)GAWbt5T{WWrqq!fJ@(GRUPS=I zd=Pbxlo^uAUMIHQ7;$IhnCTXq0`VlNjy*MsBG!9i{Lux;fk#08!*YnD_7x~cNR1un zdnN-iD@+Fnjm7*;3x1u0AGX^Xec|^&x-Tx$?aC^uM>F1Z^heFUR~cUQLm_2>oaCE@ z^_J!N@(OxnkiX=_YXUoLDz8D6#8F&;;0I>_O`UoGO7PQ3{G`T6*#xx=M{4*uZs`I6*Kc{FY=ipulp5ZqqJ+|sBtNwZd%8Hl16to#;E4^EtjFxAI|4Qc1i>L;p(=Um8UKdRJ{yzXYK*qn6 zo+5s7ZP`rwy3Mx6*&pG>UstRB$UiV@EhrR7oU1TjAQiAHi)$a7D?zK>OYdSuH)Gu! z)(U`2quJfu@`*<{P$^)WYBSr7MIJ`%3vs^v7|&pDvwwlmb4#pNa=w6YO2`h;w32Xv z>sy&NiPU@s*eW)<1~zfxBr?g$wjC)nmX>fWXw9*D1}P%J1Ou0;_9=Qes+G82Vjubj zA_^ke*(KTs0N);MeL{GuKhYX-EB@S!x21aE#TH!gMf(_{U=&g6t_FqE?jGrc`|V`> zYDTCQjDPm?131!oFnpN95>*vt&es_*PDdkCBj&PSo8$qVVX=~`#RDfi!rN5y*j-HC zph&?Z6+;N-Q9)7osqKAFt8zuZED|gw#`_1=R|I68Tx1#2BGt6FY+MdPe$0%BYw0gF z%sgCNqESpq7#CtL!rPffBdJvg6-u@bC-J)OH-8^+8~kO|%?o5p3OkNjdqNTLFrDqiYqKF>l>}_qHY`W$mM6|M;DcTo_4N&Rb5b$= z7NpYtPgok$V4N@XwriqrnRhJX_r~8C5A6R0-C&~|DeG@Y8d52L@20cJ2HTYo-F6x-n+s5xzc$L04Rk%=9(pAiUI(EqJ$ zJ0l+6cX8Aq>xT3EYm}j2f`9Nl^)Hio75(d>L$%@R)6pLbgr)uoNe;7(*HmoH#X0fP zcc)ArWoFg_^c5=3oQdm1gUw%1$!eUA#$EiLnsz2c)~sNGo>qj(20ghswcdxe{8v9QB*OJ3{u ztULN;V!hWn=(+ewL1Pa)Z3p1aJ^ub=+6U4J{pDz+VTm`An-z&bgKN&6J?xj^Bc5BB zpgwVe`DA%(Wckio78*Q3xkRD8!+%r_aqds-!AyLPbJcD6VRaJ%lKM_R39yQ$m{#3x z?GmdXjM0i&CcCxPd`Dz~qu)0ijf?s@VC`%l*Azo#5BdCFR;T?oIqOcmuxN_}W_TKE zhkJ`tZYaG{m6sV@k|oBXe!q4+#SpG)ry*$tqaMZxeV}O5(R;AjOi8G|A%BXjtGc;N z{cah&px(G6?OdKu@?H1Q7wr9sQf)W2H=dPXIeL^^Q-bZI3LM|u9xwUja(ng|(KP^S zQ5gw`;x|xDz6O5e>9fcY_Kn@C>$r!Ohiuyy(Pr`z84!dQU1ri~UZU+$^OkcQzrVOU zV;T|+@cO~+snAg07~FSCg@00KYL^*JJJgizKoC7XCC9Ai+2VnIz#|Wbc7oTL4*qQ- zPDqfaO_mABd8xJBmzGqt1z6#q{6d`v!fyT%akPszJp0x3mvryS-OR1eG} zCG8Kw=ZB1l4`Z zTiT7U2-9xp9%8C4iiH&}MdWELi&Z {5pcg^~9;~hoT0{>`eN1qS!dDb#lI?ND{ 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 D9B3tP From d730028eb401bfbfe18963e430347be41160cd0b Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Sat, 19 Aug 2017 21:54:48 +0200 Subject: [PATCH 29/45] fixed #271, changed UML Model --- .../resources/templates/layoutDataview.html | 9 --------- src/site/Twitterwall2/Twitterwall2.mdzip | Bin 83323 -> 83323 bytes 2 files changed, 9 deletions(-) diff --git a/src/main/resources/templates/layoutDataview.html b/src/main/resources/templates/layoutDataview.html index 46b9c85b..75f321eb 100644 --- a/src/main/resources/templates/layoutDataview.html +++ b/src/main/resources/templates/layoutDataview.html @@ -182,15 +182,6 @@
  • Controller:
      -
    • - - - - - - - AddUserForScreenName -
    • diff --git a/src/site/Twitterwall2/Twitterwall2.mdzip b/src/site/Twitterwall2/Twitterwall2.mdzip index d1b58970897c91c3da3172a213c76e1c1514b175..8fa5e8fda1c8a6cc59d11fac1f67e80b9a882ae7 100644 GIT binary patch delta 65589 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 delta 65587 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°Q6!ee@2TYb%CUy_?qk5eC$rQ%5@Y*A9<#) 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 From 8eab7c7373616d0bb657682b80149d5f5d029ec0 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Sat, 19 Aug 2017 22:48:37 +0200 Subject: [PATCH 30/45] working on #270 --- .../org/woehlke/twitterwall/CronJobs.java | 19 ++++ .../backend/mq/tasks/TaskResultList.java | 51 +++++++++ .../mq/tasks/TaskStartFireAndForget.java | 4 + .../impl/TaskStartFireAndForgetImpl.java | 9 +- .../backend/mq/tasks/impl/TaskStartImpl.java | 61 +++++++++- .../oodm/model/tasks/TaskType.java | 1 + src/main/resources/integration.xml | 106 +++++++++++++++++- src/main/resources/templates/mention/all.html | 4 +- 8 files changed, 250 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskResultList.java diff --git a/src/main/java/org/woehlke/twitterwall/CronJobs.java b/src/main/java/org/woehlke/twitterwall/CronJobs.java index ef736344..e0ec4c4d 100644 --- a/src/main/java/org/woehlke/twitterwall/CronJobs.java +++ b/src/main/java/org/woehlke/twitterwall/CronJobs.java @@ -153,6 +153,25 @@ public void updateUserProfiles() { } } + @Scheduled(initialDelay= TEN_SECONDS * 16, fixedRate = ONE_DAY) + public void startUpdateUrls(){ + String msg = "start UpdateUrls "; + if(!schedulerProperties.getSkipFortesting()) { + Task task = mqTaskStartFireAndForget.startUpdateUrls(); + log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); + } + } + + @Scheduled(initialDelay= TEN_SECONDS * 16, fixedRate = ONE_DAY) + public void startGarbageCollection(){ + String msg = "start UpdateUrls "; + if(!schedulerProperties.getSkipFortesting()) { + //TODO: + //Task task = mqTaskStartFireAndForget.startGarbageCollection(); + //log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); + } + } + @Autowired public CronJobs( SchedulerProperties schedulerProperties, diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskResultList.java new file mode 100644 index 00000000..1d55c35d --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskResultList.java @@ -0,0 +1,51 @@ +package org.woehlke.twitterwall.backend.mq.tasks; + +import org.woehlke.twitterwall.oodm.model.Task; + +import java.io.Serializable; +import java.util.List; + +public class TaskResultList implements Serializable{ + + private final long taskId; + private final List userList; + + public TaskResultList(long taskId, List userList) { + this.taskId = taskId; + this.userList = userList; + } + + public long getTaskId() { + return taskId; + } + + public List getUserList() { + return userList; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof TaskResultList)) return false; + + TaskResultList that = (TaskResultList) o; + + if (taskId != that.taskId) return false; + return userList != null ? userList.equals(that.userList) : that.userList == null; + } + + @Override + public int hashCode() { + int result = (int) (taskId ^ (taskId >>> 32)); + result = 31 * result + (userList != null ? userList.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "TaskResultList{" + + "taskId=" + taskId + + ", userList=" + userList + + '}'; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java index 4abab1da..37c8f2a1 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java @@ -42,4 +42,8 @@ public interface TaskStartFireAndForget { Task fetchUserlistOwners(); Task startGarbageCollection(); + + Task startUpdateUrls(); + + } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java index 52787657..a6e00ab4 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java @@ -131,7 +131,14 @@ public Task fetchUserlistOwners() { @Override public Task startGarbageCollection() { - return null; + TaskType taskType = TaskType.GARBAGE_COLLECTION; + return send(taskType); + } + + @Override + public Task startUpdateUrls() { + TaskType taskType = TaskType.UPDATE_URLS; + return send(taskType); } private Task send(TaskType taskType){ diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java index 9bcb0480..ebd18bd8 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java @@ -10,6 +10,8 @@ import org.springframework.messaging.MessageChannel; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskResultList; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlResultList; import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.model.User; @@ -135,7 +137,64 @@ public Task fetchUserlistOwners() { @Override public Task startGarbageCollection() { - return null; + TaskType taskType = TaskType.GARBAGE_COLLECTION; + return sendAndReceiveTask(taskType); + } + + @Override + public Task startUpdateUrls() { + TaskType taskType = TaskType.UPDATE_URLS; + return sendAndReceiveUrl(taskType); + } + + private Task sendAndReceiveTask(TaskType taskType){ + TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; + String logMsg = "Start task "+taskType+"via MQ by "+ taskSendType; + log.info(logMsg); + CountedEntities countedEntities = countedEntitiesService.countAll(); + Task task = taskService.create("Start via MQ by Scheduler ", taskType, taskSendType,countedEntities); + Message mqMessage = taskMessageBuilder.buildTaskMessage(task); + MessagingTemplate mqTemplate = new MessagingTemplate(); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); + Object o = returnedMessage.getPayload(); + countedEntities = countedEntitiesService.countAll(); + if( o instanceof TaskResultList){ + TaskResultList msg = (TaskResultList) o; + long taskId = msg.getTaskId(); + task = taskService.findById(taskId); + logMsg = "Sucessfully finished task "+taskType+"via MQ by "+ taskSendType; + taskService.done(logMsg,task,countedEntities); + } else { + logMsg = "Finished with Error: task "+taskType+"via MQ by "+ taskSendType +": Wrong type of returnedMessage"; + taskService.finalError(task,logMsg,countedEntities); + log.error(logMsg); + } + return task; + } + + private Task sendAndReceiveUrl(TaskType taskType){ + TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; + String logMsg = "Start task "+taskType+"via MQ by "+ taskSendType; + log.info(logMsg); + CountedEntities countedEntities = countedEntitiesService.countAll(); + Task task = taskService.create("Start via MQ by Scheduler ", taskType, taskSendType,countedEntities); + Message mqMessage = taskMessageBuilder.buildTaskMessage(task); + MessagingTemplate mqTemplate = new MessagingTemplate(); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); + Object o = returnedMessage.getPayload(); + countedEntities = countedEntitiesService.countAll(); + if( o instanceof UrlResultList){ + UrlResultList msg = (UrlResultList) o; + long taskId = msg.getTaskId(); + task = taskService.findById(taskId); + logMsg = "Sucessfully finished task "+taskType+"via MQ by "+ taskSendType; + taskService.done(logMsg,task,countedEntities); + } else { + logMsg = "Finished with Error: task "+taskType+"via MQ by "+ taskSendType +": Wrong type of returnedMessage"; + taskService.finalError(task,logMsg,countedEntities); + log.error(logMsg); + } + return task; } private Task sendAndReceiveUserList(TaskType taskType){ diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java index 855b4f73..b518fe03 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java @@ -20,6 +20,7 @@ public enum TaskType { UPDATE_TWEETS, UPDATE_USERS, UPDATE_MENTIONS_FOR_USERS, + UPDATE_URLS, CREATE_IMPRINT_USER, CREATE_TESTDATA_TWEETS, CREATE_TESTDATA_USERS, diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml index 5fc12bb5..4c7204eb 100644 --- a/src/main/resources/integration.xml +++ b/src/main/resources/integration.xml @@ -275,11 +275,24 @@ + + + + + + + + + + + + + @@ -288,6 +301,7 @@ + @@ -301,6 +315,7 @@ + @@ -309,6 +324,7 @@ + @@ -677,6 +693,62 @@ + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + - + + - - - - - + - - - + + - - - - - + - - - - - + + - - - - - + - - - - - + + - - - - - + - - - - - + + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -334,1406 +96,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/mq/CreateImprintUser.xml b/src/main/resources/mq/CreateImprintUser.xml new file mode 100644 index 00000000..89224437 --- /dev/null +++ b/src/main/resources/mq/CreateImprintUser.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/CreateTestDataTweets.xml b/src/main/resources/mq/CreateTestDataTweets.xml new file mode 100644 index 00000000..c02dedef --- /dev/null +++ b/src/main/resources/mq/CreateTestDataTweets.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/CreateTestDataUser.xml b/src/main/resources/mq/CreateTestDataUser.xml new file mode 100644 index 00000000..41e89b85 --- /dev/null +++ b/src/main/resources/mq/CreateTestDataUser.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchFavorites.xml b/src/main/resources/mq/FetchFavorites.xml new file mode 100644 index 00000000..d2b3299c --- /dev/null +++ b/src/main/resources/mq/FetchFavorites.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchFollower.xml b/src/main/resources/mq/FetchFollower.xml new file mode 100644 index 00000000..c5b452dd --- /dev/null +++ b/src/main/resources/mq/FetchFollower.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchFriends.xml b/src/main/resources/mq/FetchFriends.xml new file mode 100644 index 00000000..e884309e --- /dev/null +++ b/src/main/resources/mq/FetchFriends.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchHomeTimeline.xml b/src/main/resources/mq/FetchHomeTimeline.xml new file mode 100644 index 00000000..f7450450 --- /dev/null +++ b/src/main/resources/mq/FetchHomeTimeline.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchListOwner.xml b/src/main/resources/mq/FetchListOwner.xml new file mode 100644 index 00000000..1654a373 --- /dev/null +++ b/src/main/resources/mq/FetchListOwner.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchLists.xml b/src/main/resources/mq/FetchLists.xml new file mode 100644 index 00000000..79be618d --- /dev/null +++ b/src/main/resources/mq/FetchLists.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchMentions.xml b/src/main/resources/mq/FetchMentions.xml new file mode 100644 index 00000000..d45165a6 --- /dev/null +++ b/src/main/resources/mq/FetchMentions.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchRetweetsOfMe.xml b/src/main/resources/mq/FetchRetweetsOfMe.xml new file mode 100644 index 00000000..6871685a --- /dev/null +++ b/src/main/resources/mq/FetchRetweetsOfMe.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchTweetsFromSearch.xml b/src/main/resources/mq/FetchTweetsFromSearch.xml new file mode 100644 index 00000000..3752e397 --- /dev/null +++ b/src/main/resources/mq/FetchTweetsFromSearch.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchUserTimeline.xml b/src/main/resources/mq/FetchUserTimeline.xml new file mode 100644 index 00000000..25e0f90e --- /dev/null +++ b/src/main/resources/mq/FetchUserTimeline.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchUsersFromList.xml b/src/main/resources/mq/FetchUsersFromList.xml new file mode 100644 index 00000000..9ccc7e2b --- /dev/null +++ b/src/main/resources/mq/FetchUsersFromList.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/GarbageCollection.xml b/src/main/resources/mq/GarbageCollection.xml new file mode 100644 index 00000000..b9463166 --- /dev/null +++ b/src/main/resources/mq/GarbageCollection.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/RemoveOldDataFromStorage.xml b/src/main/resources/mq/RemoveOldDataFromStorage.xml new file mode 100644 index 00000000..0c3f6b5d --- /dev/null +++ b/src/main/resources/mq/RemoveOldDataFromStorage.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/TaskStart.xml b/src/main/resources/mq/TaskStart.xml new file mode 100644 index 00000000..c8443296 --- /dev/null +++ b/src/main/resources/mq/TaskStart.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/UpdateMentionsForUsers.xml b/src/main/resources/mq/UpdateMentionsForUsers.xml new file mode 100644 index 00000000..6954784a --- /dev/null +++ b/src/main/resources/mq/UpdateMentionsForUsers.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/UpdateTweets.xml b/src/main/resources/mq/UpdateTweets.xml new file mode 100644 index 00000000..8f79a7d2 --- /dev/null +++ b/src/main/resources/mq/UpdateTweets.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/UpdateUrls.xml b/src/main/resources/mq/UpdateUrls.xml new file mode 100644 index 00000000..f86906c4 --- /dev/null +++ b/src/main/resources/mq/UpdateUrls.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/UpdateUser.xml b/src/main/resources/mq/UpdateUser.xml new file mode 100644 index 00000000..4abda7ad --- /dev/null +++ b/src/main/resources/mq/UpdateUser.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/db-count.sql b/test/db-count.sql index c7e96c7d..e00e9bb4 100644 --- a/test/db-count.sql +++ b/test/db-count.sql @@ -14,6 +14,8 @@ select count(*) from mention; select count(*) from media; select count(*) from hashtag; select count(*) from tweet; +select count(*) from userlist_members; +select count(*) from userlist_subcriber; select count(*) from userprofile; select count(*) from userlist; select count(*) from task_history; diff --git a/test/db-drop-tables.sql b/test/db-drop-tables.sql index 99ceebac..15ad5faf 100644 --- a/test/db-drop-tables.sql +++ b/test/db-drop-tables.sql @@ -15,6 +15,8 @@ drop table media; drop table hashtag; drop table tweet; drop table userprofile; +drop table userlist_members; +drop table userlist_subcriber; drop table userlist; drop table task_history; drop table task; diff --git a/test/db-reset.sql b/test/db-reset.sql index 27c15415..dda6c62d 100644 --- a/test/db-reset.sql +++ b/test/db-reset.sql @@ -15,6 +15,8 @@ delete from media; delete from hashtag; delete from tweet; delete from userprofile; +delete from userlist_members; +delete from userlist_subcriber; delete from userlist; delete from task_history; delete from task; From 7aac0e984cb55c6683ee480ac912876367c29a53 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Mon, 21 Aug 2017 01:23:14 +0200 Subject: [PATCH 39/45] bugfixes from Testing --- .../backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java index 88e8def0..d20b5c20 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java @@ -41,7 +41,6 @@ public Message buildMentionMessage(Message incom Message mqMessageOut = MessageBuilder.withPayload(outputPayload) .copyHeaders(incomingMessage.getHeaders()) - .setHeader("twitter_profile_id", userFromTwitter.getId()) .build(); return mqMessageOut; } else { From 5c3b29c98783ef76b227fc6567f5ff0c72113880 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Mon, 21 Aug 2017 02:00:22 +0200 Subject: [PATCH 40/45] bugfixes from Testing --- .../controller/UserListController.java | 40 ++++++++++++++++ .../twitterwall/oodm/model/TaskHistory.java | 5 +- .../twitterwall/oodm/model/UserList.java | 1 - .../oodm/model/parts/CountedEntities.java | 48 ++++++++++++++++++- .../custom/UserListRepositoryCustom.java | 7 +++ .../impl/CountedEntitiesServiceImpl.java | 3 ++ .../templates/application/domain/count.html | 20 ++++++++ 7 files changed, 119 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java index 87b04897..3ae0fd1c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java @@ -67,6 +67,46 @@ public String getUserListForId( return "userlist/id"; } + //TODO: jdscdgsv + @RequestMapping("/list/userList2Subcriber") + public String userList2Subcriber( + @RequestParam(name= "page", defaultValue=""+ ContentFactory.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 = contentFactory.setupPage(model, title, subtitle, symbol); + return "userlist/all"; + } + + //TODO: jdscdgsv + @RequestMapping("/list/userList2Members") + public String userList2Members( + @RequestParam(name= "page", defaultValue=""+ ContentFactory.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 = contentFactory.setupPage(model, title, subtitle, symbol); + return "userlist/all"; + } + private static final Logger log = LoggerFactory.getLogger(UserController.class); private final UserListService userListService; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java b/src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java index 665ea6d9..18591b8d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java @@ -68,7 +68,6 @@ public class TaskHistory implements DomainObjectMinimal { @JoinColumn(name="task_id") private Task task; - //@NotNull @Valid @Embedded @AttributeOverrides({ @@ -91,7 +90,9 @@ public class TaskHistory implements DomainObjectMinimal { @AttributeOverride(name = "userprofile2media", column = @Column(name = "count_userprofile2media",nullable=false)), @AttributeOverride(name = "userprofile2mention", column = @Column(name = "count_userprofile2mention",nullable=false)), @AttributeOverride(name = "userprofile2tickersymbol", column = @Column(name = "count_userprofile2tickersymbol",nullable=false)), - @AttributeOverride(name = "userprofile2url", column = @Column(name = "count_userprofile2url",nullable=false)) + @AttributeOverride(name = "userprofile2url", column = @Column(name = "count_userprofile2url",nullable=false)), + @AttributeOverride(name = "userList2Members", column = @Column(name = "count_userlist2members",nullable=false)), + @AttributeOverride(name = "userList2Subcriber", column = @Column(name = "count_userlist2subcriber",nullable=false)) }) private CountedEntities countedEntities = new CountedEntities(); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java index 0b2315eb..5e83ded1 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java @@ -14,7 +14,6 @@ import static javax.persistence.CascadeType.DETACH; import static javax.persistence.CascadeType.REFRESH; import static javax.persistence.CascadeType.REMOVE; -import static javax.persistence.FetchType.EAGER; import static javax.persistence.FetchType.LAZY; @Entity diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java index 787b4618..496788e0 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java @@ -76,6 +76,12 @@ public class CountedEntities implements Serializable,DomainObjectWithValidation @NotNull private Long userprofile2url=0L; + @NotNull + private Long userList2Members=0L; + + @NotNull + private Long userList2Subcriber=0L; + public CountedEntities() { } @@ -100,7 +106,9 @@ public Long getTotalNumberOfRows(){ userprofile2media + userprofile2mention + userprofile2tickersymbol + - userprofile2url; + userprofile2url + + userList2Members + + userList2Subcriber; } public Long getCountUser() { @@ -263,6 +271,22 @@ public void setUserprofile2url(Long userprofile2url) { this.userprofile2url = userprofile2url; } + public Long getUserList2Members() { + return userList2Members; + } + + public void setUserList2Members(Long userList2Members) { + this.userList2Members = userList2Members; + } + + public Long getUserList2Subcriber() { + return userList2Subcriber; + } + + public void setUserList2Subcriber(Long userList2Subcriber) { + this.userList2Subcriber = userList2Subcriber; + } + @Override public String toString() { return "CountedEntities{" + @@ -286,6 +310,8 @@ public String toString() { ", userprofile2mention=" + userprofile2mention + ", userprofile2tickersymbol=" + userprofile2tickersymbol + ", userprofile2url=" + userprofile2url + + ", countUserList2Members=" + userList2Members + + ", countUserList2Subcriber=" + userList2Subcriber + '}'; } @@ -334,7 +360,11 @@ public boolean equals(Object o) { return false; if (getUserprofile2tickersymbol() != null ? !getUserprofile2tickersymbol().equals(that.getUserprofile2tickersymbol()) : that.getUserprofile2tickersymbol() != null) return false; - return getUserprofile2url() != null ? getUserprofile2url().equals(that.getUserprofile2url()) : that.getUserprofile2url() == null; + if (getUserprofile2url() != null ? !getUserprofile2url().equals(that.getUserprofile2url()) : that.getUserprofile2url() != null) + return false; + if (getUserList2Members() != null ? !getUserList2Members().equals(that.getUserList2Members()) : that.getUserList2Members() != null) + return false; + return getUserList2Subcriber() != null ? getUserList2Subcriber().equals(that.getUserList2Subcriber()) : that.getUserList2Subcriber() == null; } @Override @@ -359,6 +389,8 @@ public int hashCode() { result = 31 * result + (getUserprofile2mention() != null ? getUserprofile2mention().hashCode() : 0); result = 31 * result + (getUserprofile2tickersymbol() != null ? getUserprofile2tickersymbol().hashCode() : 0); result = 31 * result + (getUserprofile2url() != null ? getUserprofile2url().hashCode() : 0); + result = 31 * result + (getUserList2Members() != null ? getUserList2Members().hashCode() : 0); + result = 31 * result + (getUserList2Subcriber() != null ? getUserList2Subcriber().hashCode() : 0); return result; } @@ -425,6 +457,12 @@ public boolean isValid() { if(userprofile2url == null){ return false; } + if(userList2Members == null){ + return false; + } + if(userList2Subcriber == null){ + return false; + } if(countUser < 0){ return false; } @@ -479,6 +517,12 @@ public boolean isValid() { if(userprofile2url < 0){ return false; } + if(userList2Members < 0){ + return false; + } + if(userList2Subcriber < 0){ + return false; + } return true; } } 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 index db643e95..13e6869c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java @@ -1,9 +1,16 @@ package org.woehlke.twitterwall.oodm.repositories.custom; +import org.springframework.data.jpa.repository.Query; import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface UserListRepositoryCustom extends DomainObjectMinimalRepository { UserList findByUniqueId(UserList domainObject); + + @Query(name="UserList.countUserList2Subcriber",nativeQuery=true) + long countUserList2Subcriber(); + + @Query(name="UserList.countUserList2Members",nativeQuery=true) + long countUserList2Members(); } 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 3fbe507f..79aa7dee 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 @@ -58,6 +58,9 @@ public CountedEntities countAll() { c.setUserprofile2tickersymbol(userRepository.countAllUser2TickerSymbol()); c.setUserprofile2url(userRepository.countAllUser2Url()); + c.setUserList2Subcriber(userListRepository.countUserList2Subcriber()); + c.setUserList2Members(userListRepository.countUserList2Members()); + log.debug(msg+c.toString()); return c; } diff --git a/src/main/resources/templates/application/domain/count.html b/src/main/resources/templates/application/domain/count.html index 52097e99..80e9903d 100644 --- a/src/main/resources/templates/application/domain/count.html +++ b/src/main/resources/templates/application/domain/count.html @@ -262,6 +262,26 @@

      Count Entities:

  • +
    + +
    + userList2Members +
    +
    +
    +
    + +
    + userList2Subcriber +
    +
    +

    From 1cb42d6f56f2cf63acd5ba981b4e7496741c25b6 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Mon, 21 Aug 2017 02:16:48 +0200 Subject: [PATCH 41/45] fixed #272, fixed #271,fixed #270, fixed #269, fixed #268, fixed #267, fixed #266, fixed #257 --- .../serviceactivator/ListsFetcher.java | 6 ++ .../impl/ListsFetcherImpl.java | 8 ++ .../splitter/FetchUserListsForUsers.java | 14 +++ .../impl/FetchUserListsForUsersImpl.java | 44 ++++++++++ .../splitter/impl/ListsSplitterImpl.java | 1 - .../endpoint/splitter/FetchListsForUsers.java | 6 ++ .../splitter/impl/FetchListsForUsersImpl.java | 41 +++++++++ .../twitterwall/oodm/model/UserList.java | 10 +++ .../oodm/model/tasks/TaskBasedCaching.java | 21 ++++- .../oodm/model/tasks/TaskInfo.java | 16 +++- .../oodm/model/tasks/TaskType.java | 1 + .../model/transients/Object2EntityTable.java | 4 +- .../mapper/UserList2MemberRowMapper.java | 20 +++++ .../mapper/UserList2SubcriberRowMapper.java | 19 +++++ .../oodm/repositories/UserListRepository.java | 7 ++ .../custom/UserListRepositoryCustom.java | 6 -- src/main/resources/integration.xml | 5 ++ src/main/resources/mq/FetchListsForUsers.xml | 85 +++++++++++++++++++ 18 files changed, 304 insertions(+), 10 deletions(-) create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsFetcher.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsFetcherImpl.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/FetchUserListsForUsers.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/FetchUserListsForUsersImpl.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchListsForUsers.java create mode 100644 src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchListsForUsersImpl.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2MemberRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2SubcriberRowMapper.java create mode 100644 src/main/resources/mq/FetchListsForUsers.xml diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsFetcher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsFetcher.java new file mode 100644 index 00000000..beef1ae4 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsFetcher.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator; + +public interface ListsFetcher { + + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsFetcherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsFetcherImpl.java new file mode 100644 index 00000000..6dfa3961 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsFetcherImpl.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl; + +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListsFetcher; + +@Component("mqListsFetcher") +public class ListsFetcherImpl implements ListsFetcher { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/FetchUserListsForUsers.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/FetchUserListsForUsers.java new file mode 100644 index 00000000..2c0aa456 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/FetchUserListsForUsers.java @@ -0,0 +1,14 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter; + + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; + +import java.util.List; + +public interface FetchUserListsForUsers { + + List> splitUserListMessage(Message incomingTaskMessage); + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/FetchUserListsForUsersImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/FetchUserListsForUsersImpl.java new file mode 100644 index 00000000..43d7d458 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/FetchUserListsForUsersImpl.java @@ -0,0 +1,44 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.FetchUserListsForUsers; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; +import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import java.util.List; + +@Component("mqFetchUserListsForUsers") +public class FetchUserListsForUsersImpl implements FetchUserListsForUsers { + + + @Override + public List> splitUserListMessage(Message incomingTaskMessage) { + return null; + } + + private final TwitterApiService twitterApiService; + + private final TaskService taskService; + + private final UserService userService; + + private final CountedEntitiesService countedEntitiesService; + + private final UserListMessageBuilder userListMessageBuilder; + + @Autowired + public FetchUserListsForUsersImpl(TwitterApiService twitterApiService, TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, UserListMessageBuilder userListMessageBuilder) { + this.twitterApiService = twitterApiService; + this.taskService = taskService; + this.userService = userService; + this.countedEntitiesService = countedEntitiesService; + this.userListMessageBuilder = userListMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java index 6260c95b..cc3ffb05 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java @@ -36,7 +36,6 @@ public ListsSplitterImpl(TwitterApiService twitterApiService, TaskService taskSe this.userListMessageBuilder = userListMessageBuilder; } - //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252 @Override public List> splitUserListMessage(Message incomingTaskMessage) { CountedEntities countedEntities = countedEntitiesService.countAll(); diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchListsForUsers.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchListsForUsers.java new file mode 100644 index 00000000..0df3709a --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchListsForUsers.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchListsForUsers extends UserSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchListsForUsersImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchListsForUsersImpl.java new file mode 100644 index 00000000..f2b21f3b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchListsForUsersImpl.java @@ -0,0 +1,41 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchListsForUsers; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import java.util.List; + +@Component("mqFetchListsForUsers") +public class FetchListsForUsersImpl implements FetchListsForUsers { + + + @Override + public List> splitUserMessage(Message incomingTaskMessage) { + return null; + } + + private final TaskService taskService; + + private final UserService userService; + + private final CountedEntitiesService countedEntitiesService; + + private final UserListMessageBuilder userListMessageBuilder; + + @Autowired + public FetchListsForUsersImpl(TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, UserListMessageBuilder userListMessageBuilder) { + this.taskService = taskService; + this.userService = userService; + this.countedEntitiesService = countedEntitiesService; + this.userListMessageBuilder = userListMessageBuilder; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java index 5e83ded1..81457432 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java @@ -35,6 +35,16 @@ query = "select t from UserList as t where t.idTwitter=:idTwitter" ) }) + +@NamedNativeQueries({ + @NamedNativeQuery( + name = "UserList.countUserList2Subcriber", + query = "SELECT count(*) AS z FROM userlist_subcriber" + ), + @NamedNativeQuery( + ‚query = "SELECT count(*) AS z FROM userlist_members" + ) +}) @EntityListeners(UserListListener.class) public class UserList extends AbstractDomainObject implements DomainObjectWithTask,DomainObjectWithIdTwitter { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java index a8d1f456..95195feb 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java @@ -73,6 +73,9 @@ public class TaskBasedCaching implements Serializable { @Column(name=COLUMN_PREFIX+"fetch_userlist_owners") private Date fetchUserlistOwners; + @Column(name=COLUMN_PREFIX+"fetch_userlists_for_users") + private Date fetchListsForUsers; + @Column(name=COLUMN_PREFIX+"start_garbage_collection") private Date startGarbageCollection; @@ -140,6 +143,9 @@ public Boolean isCached(TaskType taskType, long timeToLive){ case FETCH_USERLIST_OWNERS: lastApiCall = fetchUserlistOwners; break; + case FETCH_LISTS_FOR_USERS: + lastApiCall = fetchListsForUsers; + break; case GARBAGE_COLLECTION: lastApiCall = startGarbageCollection; break; @@ -225,6 +231,9 @@ public void store(TaskType taskType){ case FETCH_USERLIST_OWNERS: fetchUserlistOwners = lastApiCall; break; + case FETCH_LISTS_FOR_USERS: + fetchListsForUsers = lastApiCall; + break; case GARBAGE_COLLECTION: startGarbageCollection = lastApiCall; break; @@ -237,7 +246,7 @@ public void store(TaskType taskType){ } } - 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,Date fetchUserlistOwners,Date startGarbageCollection, Date updatedUrls, Date noType) { + 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,Date fetchUserlistOwners,Date fetchListsForUsers,Date startGarbageCollection, Date updatedUrls, Date noType) { this.fetchTweetsFromSearch = fetchTweetsFromSearch; this.updateTweets = updateTweets; this.updateUsers = updateUsers; @@ -257,6 +266,7 @@ public TaskBasedCaching(Date fetchTweetsFromSearch, Date updateTweets, Date upda this.getRetweetsOfMe = getRetweetsOfMe; this.getLists = getLists; this.fetchUserlistOwners = fetchUserlistOwners; + this.fetchListsForUsers = fetchListsForUsers; this.startGarbageCollection = startGarbageCollection; this.updatedUrls = updatedUrls; this.noType = noType; @@ -281,6 +291,7 @@ public TaskBasedCaching() { this.getRetweetsOfMe = null; this.getLists = null; this.fetchUserlistOwners = null; + this.fetchListsForUsers = null; this.startGarbageCollection = null; this.updatedUrls = null; this.noType = null; @@ -362,6 +373,10 @@ public Date getFetchUserlistOwners() { return fetchUserlistOwners; } + public Date getFetchListsForUsers() { + return fetchListsForUsers; + } + public Date getStartGarbageCollection() { return startGarbageCollection; } @@ -414,6 +429,8 @@ public boolean equals(Object o) { if (getLists != null ? !getLists.equals(that.getLists) : that.getLists != null) return false; if (fetchUserlistOwners != null ? !fetchUserlistOwners.equals(that.fetchUserlistOwners) : that.fetchUserlistOwners != null) return false; + if (fetchListsForUsers != null ? !fetchListsForUsers.equals(that.fetchListsForUsers) : that.fetchListsForUsers != null) + return false; if (startGarbageCollection != null ? !startGarbageCollection.equals(that.startGarbageCollection) : that.startGarbageCollection != null) return false; return noType != null ? noType.equals(that.noType) : that.noType == null; @@ -441,6 +458,7 @@ public int hashCode() { result = 31 * result + (getRetweetsOfMe != null ? getRetweetsOfMe.hashCode() : 0); result = 31 * result + (getLists != null ? getLists.hashCode() : 0); result = 31 * result + (fetchUserlistOwners != null ? fetchUserlistOwners.hashCode() : 0); + result = 31 * result + (fetchListsForUsers != null ? fetchListsForUsers.hashCode() : 0); result = 31 * result + (startGarbageCollection != null ? startGarbageCollection.hashCode() : 0); result = 31 * result + (noType != null ? noType.hashCode() : 0); return result; @@ -469,6 +487,7 @@ public String toString() { ", getRetweetsOfMe=" + getRetweetsOfMe + ", getLists=" + getLists + ", fetchUserlistOwners=" + fetchUserlistOwners + + ", fetchListsForUsers=" + fetchListsForUsers + ", startGarbageCollection=" + startGarbageCollection + ", noType=" + noType + '}'; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java index 67fd5d91..b7238565 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java @@ -8,7 +8,6 @@ import javax.persistence.Transient; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.util.Date; /** * Created by tw on 10.07.17. @@ -93,6 +92,10 @@ public class TaskInfo implements Serializable { @Column(nullable = false,name="fetch_userlist_owners") private Boolean fetchUserlistOwners = false; + @NotNull + @Column(nullable = false,name="fetch_userlists_for_users") + private Boolean fetchListsForUsers = true; + @NotNull @Column(nullable = false,name="start_garbage_collection") private Boolean startGarbageCollection = false; @@ -163,6 +166,9 @@ public void setTaskInfoFromTask(Task task) { case FETCH_USERLIST_OWNERS: fetchUserlistOwners = true; break; + case FETCH_LISTS_FOR_USERS: + fetchListsForUsers = true; + break; case GARBAGE_COLLECTION: startGarbageCollection = true; break; @@ -267,6 +273,10 @@ public Boolean getFetchUserlistOwners() { return fetchUserlistOwners; } + public Boolean getFetchListsForUsers() { + return fetchListsForUsers; + } + public Boolean getStartGarbageCollection() { return startGarbageCollection; } @@ -323,6 +333,8 @@ public boolean equals(Object o) { if (getLists != null ? !getLists.equals(taskInfo.getLists) : taskInfo.getLists != null) return false; if (fetchUserlistOwners != null ? !fetchUserlistOwners.equals(taskInfo.fetchUserlistOwners) : taskInfo.fetchUserlistOwners != null) return false; + if (fetchListsForUsers != null ? !fetchListsForUsers.equals(taskInfo.fetchListsForUsers) : taskInfo.fetchListsForUsers != null) + return false; if (startGarbageCollection != null ? !startGarbageCollection.equals(taskInfo.startGarbageCollection) : taskInfo.startGarbageCollection != null) return false; return noType != null ? noType.equals(taskInfo.noType) : taskInfo.noType == null; @@ -349,6 +361,7 @@ public int hashCode() { result = 31 * result + (getRetweetsOfMe != null ? getRetweetsOfMe.hashCode() : 0); result = 31 * result + (getLists != null ? getLists.hashCode() : 0); result = 31 * result + (fetchUserlistOwners != null ? fetchUserlistOwners.hashCode() : 0); + result = 31 * result + (fetchListsForUsers != null ? fetchListsForUsers.hashCode() : 0); result = 31 * result + (startGarbageCollection != null ? startGarbageCollection.hashCode() : 0); result = 31 * result + (noType != null ? noType.hashCode() : 0); return result; @@ -376,6 +389,7 @@ public String toString() { ", getRetweetsOfMe=" + getRetweetsOfMe + ", getLists=" + getLists + ", fetchUserlistOwners=" + fetchUserlistOwners + + ", fetchListsForUsers=" + fetchListsForUsers + ", startGarbageCollection=" + startGarbageCollection + ", noType=" + noType + '}'; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java index b518fe03..c6ec311d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java @@ -14,6 +14,7 @@ public enum TaskType { FETCH_RETWEETS_OF_ME, FETCH_LISTS, FETCH_USERS_FROM_LIST, + FETCH_LISTS_FOR_USERS, FETCH_USERLIST_OWNERS, FETCH_FOLLOWER, FETCH_FRIENDS, diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java index 31cc75e9..eaf8c959 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java @@ -11,7 +11,9 @@ public enum Object2EntityTable { USERPROFILE_MEDIA, USERPROFILE_MENTION, USERPROFILE_TICKERSYMBOL, - USERPROFILE_URL; + USERPROFILE_URL, + USERLIST_MEMBERS, + USERLIST_SUBCRIBER; public String getTableName() { return this.name().toLowerCase(); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2MemberRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2MemberRowMapper.java new file mode 100644 index 00000000..e0493522 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2MemberRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.model.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class UserList2MemberRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("user_list_id"), + rs.getLong("members_id"), + Object2EntityTable.USERLIST_MEMBERS + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2SubcriberRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2SubcriberRowMapper.java new file mode 100644 index 00000000..96de9e21 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2SubcriberRowMapper.java @@ -0,0 +1,19 @@ +package org.woehlke.twitterwall.oodm.model.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class UserList2SubcriberRowMapper implements RowMapper { + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("user_list_id"), + rs.getLong("subscriber_id"), + Object2EntityTable.USERLIST_SUBCRIBER + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java index 6e079d9c..52ae16a3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java @@ -1,6 +1,7 @@ package org.woehlke.twitterwall.oodm.repositories; +import org.springframework.data.jpa.repository.Query; import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UserListRepositoryCustom; @@ -8,4 +9,10 @@ public interface UserListRepository extends DomainRepository,UserListRepositoryCustom { UserList findByIdTwitter(long idTwitter); + + @Query(name="UserList.countUserList2Subcriber",nativeQuery=true) + long countUserList2Subcriber(); + + @Query(name="UserList.countUserList2Members",nativeQuery=true) + long countUserList2Members(); } 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 index 13e6869c..0391be35 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java @@ -1,6 +1,5 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.springframework.data.jpa.repository.Query; import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; @@ -8,9 +7,4 @@ public interface UserListRepositoryCustom extends DomainObjectMinimalRepository< UserList findByUniqueId(UserList domainObject); - @Query(name="UserList.countUserList2Subcriber",nativeQuery=true) - long countUserList2Subcriber(); - - @Query(name="UserList.countUserList2Members",nativeQuery=true) - long countUserList2Members(); } diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml index 9b0c61ac..05ec5a23 100644 --- a/src/main/resources/integration.xml +++ b/src/main/resources/integration.xml @@ -50,6 +50,9 @@ + + + @@ -71,6 +74,7 @@ + @@ -94,6 +98,7 @@ + diff --git a/src/main/resources/mq/FetchListsForUsers.xml b/src/main/resources/mq/FetchListsForUsers.xml new file mode 100644 index 00000000..8041cc48 --- /dev/null +++ b/src/main/resources/mq/FetchListsForUsers.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 8e123717aa4560d10438a635763d3330cd7a73de Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Mon, 21 Aug 2017 14:39:41 +0200 Subject: [PATCH 42/45] fixed #272, fixed #271,fixed #270, fixed #269, fixed #268, fixed #267, fixed #266, fixed #257 --- .../mq/tasks/TaskStartFireAndForget.java | 2 + .../backend/mq/tasks/impl/TaskStartImpl.java | 10 +++++ src/test/resources/application-test.yml | 40 ------------------- 3 files changed, 12 insertions(+), 40 deletions(-) delete mode 100644 src/test/resources/application-test.yml diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java index 37c8f2a1..5dd9fc7b 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java @@ -45,5 +45,7 @@ public interface TaskStartFireAndForget { Task startUpdateUrls(); + Task startFetchListOwner(); + Task startFetchListsForUsers(); } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java index ebd18bd8..59ed0b58 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java @@ -147,6 +147,16 @@ public Task startUpdateUrls() { return sendAndReceiveUrl(taskType); } + @Override + public Task startFetchListOwner() { + return null; + } + + @Override + public Task startFetchListsForUsers() { + return null; + } + private Task sendAndReceiveTask(TaskType taskType){ TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; String logMsg = "Start task "+taskType+"via MQ by "+ taskSendType; diff --git a/src/test/resources/application-test.yml b/src/test/resources/application-test.yml deleted file mode 100644 index 7545418d..00000000 --- a/src/test/resources/application-test.yml +++ /dev/null @@ -1,40 +0,0 @@ -endpoints: - health: - sensitive: true - endpoints: - shutdown: - enabled: true -logging: - file: test/twitterwall.log.txt -management: - security: - enabled: true -spring: - application: - admin: - enabled: true - jpa: - show-sql: true -twitterwall: - backend: - twitter: - millisToWaitForFetchTweetsFromTwitterSearch: 6000000 - contextTest: true - cronjobs: - allowFetchTweetsFromTwitterSearch: true - allowUpdateTweets: true - allowUpdateUserProfiles: true - allowUpdateUserProfilesFromMention: true - 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 From 9bad1ba06c8ca5eb66138504face55131b08834b Mon Sep 17 00:00:00 2001 From: tw Date: Mon, 21 Aug 2017 14:41:57 +0200 Subject: [PATCH 43/45] bugfix --- src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java index 81457432..8de3c496 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java @@ -42,7 +42,8 @@ query = "SELECT count(*) AS z FROM userlist_subcriber" ), @NamedNativeQuery( - ‚query = "SELECT count(*) AS z FROM userlist_members" + name = "UserList.countUserList2Members", + query = "SELECT count(*) AS z FROM userlist_members" ) }) @EntityListeners(UserListListener.class) From 22381689be53448d76fb329c47e372afe4271ffe Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Mon, 21 Aug 2017 23:35:33 +0200 Subject: [PATCH 44/45] fixed #272, fixed #271,fixed #270, fixed #269, fixed #268, fixed #267, fixed #266, fixed #257 --- .../mq/tasks/impl/TaskStartFireAndForgetImpl.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java index a6e00ab4..2492e8aa 100644 --- a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java @@ -141,6 +141,18 @@ public Task startUpdateUrls() { return send(taskType); } + @Override + public Task startFetchListOwner() { + TaskType taskType = TaskType.FETCH_USERLIST_OWNERS; + return send(taskType); + } + + @Override + public Task startFetchListsForUsers() { + TaskType taskType = TaskType.FETCH_LISTS_FOR_USERS; + return send(taskType); + } + private Task send(TaskType taskType){ TaskSendType taskSendType = TaskSendType.FIRE_AND_FORGET; String msg = "START Task "+taskType+" via MQ by "+ taskSendType; From 418ef08e3128b54c7633dd42de35b5106adbf71c Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Tue, 22 Aug 2017 10:10:31 +0200 Subject: [PATCH 45/45] fixed #272, fixed #271,fixed #270, fixed #269, fixed #268, fixed #267, fixed #266, fixed #257 --- .../templates/application/domain/count.html | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/resources/templates/application/domain/count.html b/src/main/resources/templates/application/domain/count.html index 80e9903d..8a9a027b 100644 --- a/src/main/resources/templates/application/domain/count.html +++ b/src/main/resources/templates/application/domain/count.html @@ -40,6 +40,26 @@

    Count Entities:

    +
    + +
    + userList2Members +
    +
    +
    +
    + +
    + userList2Subcriber +
    +
    +

    @@ -262,26 +282,6 @@

    Count Entities:

    -
    - -
    - userList2Members -
    -
    -
    -
    - -
    - userList2Subcriber -
    -
    -