diff --git a/pom.xml b/pom.xml
index f5a44f87..18ad4eea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,26 +76,28 @@
org.springframework.boot
spring-boot-starter-data-jpa
-
org.springframework.boot
- spring-boot-starter-hateoas
+ spring-boot-starter-mobile
+
diff --git a/src/main/java/org/woehlke/twitterwall/Application.java b/src/main/java/org/woehlke/twitterwall/Application.java
index 4c40ee68..f7dcb9d1 100644
--- a/src/main/java/org/woehlke/twitterwall/Application.java
+++ b/src/main/java/org/woehlke/twitterwall/Application.java
@@ -4,6 +4,8 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.ImportResource;
+import org.springframework.data.web.config.EnableSpringDataWebSupport;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.woehlke.twitterwall.conf.TwitterProperties;
import org.woehlke.twitterwall.conf.TwitterwallBackendProperties;
@@ -22,6 +24,9 @@
TwitterwallSchedulerProperties.class,
TwitterProperties.class
})
+//@EnableWebMvc
+@EnableSpringDataWebSupport
+@ImportResource("classpath:integration.xml")
public class Application {
public static void main(String[] args) {
diff --git a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java
index 162bb47a..911762b4 100644
--- a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java
+++ b/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java
@@ -79,7 +79,7 @@ public ScheduledTasks(TwitterwallSchedulerProperties twitterwallSchedulerPropert
private final static long FIXED_RATE_FOR_SCHEDULAR_FETCH_USER_LIST = ZWOELF_STUNDEN;
- @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_TWEETS)
+ //@Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_TWEETS)
public void fetchTweetsFromTwitterSearch() {
String msg = "fetch Tweets From TwitterSearch ";
logEnv(msg);
@@ -115,7 +115,7 @@ public void fetchTweetsFromTwitterSearch() {
logEnv(msg);
}
- @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_TWEETS)
+ //@Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_TWEETS)
public void updateTweets() {
String msg = "update Tweets ";
logEnv(msg);
@@ -151,7 +151,7 @@ public void updateTweets() {
logEnv(msg);
}
- @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER)
+ //@Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER)
public void updateUserProfiles() {
String msg = "update User Profiles ";
logEnv(msg);
@@ -185,7 +185,7 @@ public void updateUserProfiles() {
logEnv(msg);
}
- @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER_BY_MENTION)
+ //@Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER_BY_MENTION)
public void updateUserProfilesFromMentions(){
String msg = "update User Profiles From Mentions";
logEnv(msg);
@@ -219,7 +219,7 @@ public void updateUserProfilesFromMentions(){
logEnv(msg);
}
- @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_USER_LIST)
+ //@Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_USER_LIST)
public void fetchUsersFromDefinedUserList(){
String msg = "fetch Users from Defined User List ";
logEnv(msg);
diff --git a/src/main/java/org/woehlke/twitterwall/conf/TwitterwallSchedulerProperties.java b/src/main/java/org/woehlke/twitterwall/conf/TwitterwallSchedulerProperties.java
index 8e35368d..d8e60178 100644
--- a/src/main/java/org/woehlke/twitterwall/conf/TwitterwallSchedulerProperties.java
+++ b/src/main/java/org/woehlke/twitterwall/conf/TwitterwallSchedulerProperties.java
@@ -126,6 +126,8 @@ public static class Facade {
private List idTwitterToFetchForUserControllerTest = new ArrayList();
+ private List screenNamesToFetchForUserControllerTest = new ArrayList();
+
public List getIdTwitterToFetchForTweetTest() {
return idTwitterToFetchForTweetTest;
}
@@ -141,6 +143,14 @@ public List getIdTwitterToFetchForUserControllerTest() {
public void setIdTwitterToFetchForUserControllerTest(List idTwitterToFetchForUserControllerTest) {
this.idTwitterToFetchForUserControllerTest = idTwitterToFetchForUserControllerTest;
}
+
+ public List getScreenNamesToFetchForUserControllerTest() {
+ return screenNamesToFetchForUserControllerTest;
+ }
+
+ public void setScreenNamesToFetchForUserControllerTest(List screenNamesToFetchForUserControllerTest) {
+ this.screenNamesToFetchForUserControllerTest = screenNamesToFetchForUserControllerTest;
+ }
}
public Facade getFacade() {
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/PagesController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/PagesController.java
index 2d0b167d..b1f991c4 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/controller/PagesController.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/PagesController.java
@@ -7,12 +7,11 @@
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
-import org.woehlke.twitterwall.conf.TwitterProperties;
import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties;
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.scheduled.service.facade.CreateTestData;
+import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask;
/**
@@ -35,8 +34,9 @@ public String imprint(Model model) {
String title = "Impressum";
String subtitle = twitterwallFrontendProperties.getImprintSubtitle();
model = controllerHelper.setupPage(model, title, subtitle, symbol);
- String screenName = twitterwallFrontendProperties.getImprintScreenName();
- User user = createTestData.addUserForScreenName(screenName);
+ User user = startTask.createImprintUser();
+ //String screenName = twitterwallFrontendProperties.getImprintScreenName();
+ //User user = createTestData.addUserForScreenName(screenName);
model.addAttribute("user", user);
log.info("-----------------------------------------");
return "imprint";
@@ -46,15 +46,18 @@ public String imprint(Model model) {
private final TwitterwallFrontendProperties twitterwallFrontendProperties;
- private final TwitterProperties twitterProperties;
+ //private final TwitterProperties twitterProperties;
- private final CreateTestData createTestData;
+ //private final CreateTestData createTestData;
+
+ private final StartTask startTask;
@Autowired
- public PagesController(TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties, CreateTestData createTestData, ControllerHelper controllerHelper) {
+ public PagesController(TwitterwallFrontendProperties twitterwallFrontendProperties, StartTask startTask, ControllerHelper controllerHelper) {
this.twitterwallFrontendProperties = twitterwallFrontendProperties;
- this.twitterProperties = twitterProperties;
- this.createTestData = createTestData;
+ //this.twitterProperties = twitterProperties;
+ //this.createTestData = createTestData;
+ this.startTask = startTask;
this.controllerHelper = controllerHelper;
}
diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TestController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TestController.java
index 995d1c0b..4c63670d 100644
--- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TestController.java
+++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TestController.java
@@ -17,6 +17,7 @@
import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper;
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.oodm.service.UserService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask;
import org.woehlke.twitterwall.scheduled.service.facade.CreateTestData;
import org.woehlke.twitterwall.scheduled.service.facade.FetchUsersFromDefinedUserList;
@@ -35,8 +36,8 @@ public String getTestData(Model model) {
model = controllerHelper.setupPage(model,"Test Data Tweets",twitterProperties.getSearchQuery(),Symbols.GET_TEST_DATA.toString());
String msg = "/getTestData : ";
if(twitterwallFrontendProperties.getContextTest()){
- model.addAttribute("latestTweets", createTestData.getTestDataTweets());
- model.addAttribute("users", createTestData.getTestDataUser());
+ model.addAttribute("latestTweets", startTask.createTestDataForTweets());
+ model.addAttribute("users", startTask.createTestDataForUser());
} else {
model.addAttribute("latestTweets",null);
model.addAttribute("users",null);
@@ -73,21 +74,24 @@ public String getOnListRenew(@RequestParam(name= "page" ,defaultValue=""+ Contro
private final TwitterProperties twitterProperties;
+ private final StartTask startTask;
+
@Autowired
- public TestController(UserService userService, FetchUsersFromDefinedUserList fetchUsersFromDefinedUserList, CreateTestData createTestData, ControllerHelper controllerHelper, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties) {
+ public TestController(UserService userService, FetchUsersFromDefinedUserList fetchUsersFromDefinedUserList, CreateTestData createTestData, ControllerHelper controllerHelper, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties, StartTask startTask) {
this.userService = userService;
this.fetchUsersFromDefinedUserList = fetchUsersFromDefinedUserList;
this.createTestData = createTestData;
this.controllerHelper = controllerHelper;
this.twitterwallFrontendProperties = twitterwallFrontendProperties;
this.twitterProperties = twitterProperties;
+ this.startTask = startTask;
}
@Async
protected void startOnListRenew(){
String msg = "startOnListRenew: ";
- log.info(msg+"START scheduledTasksFacade.fetchUsersFromDefinedUserList: ");
- fetchUsersFromDefinedUserList.fetchUsersFromDefinedUserList();
- log.info(msg+"DONE scheduledTasksFacade.fetchUsersFromDefinedUserList: ");
+ log.info(msg+"START startTask.fetchUsersFromDefinedUserList: ");
+ startTask.fetchUsersFromDefinedUserList();
+ log.info(msg+"DONE startTask.fetchUsersFromDefinedUserList: ");
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java
index d914f9f1..11b544fb 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java
@@ -57,8 +57,7 @@ public class Mention extends AbstractDomainObject implements DomainObje
@Column(name = "name",length=4096, nullable = false)
private String name = "";
- @NotNull
- @JoinColumn(name = "fk_user")
+ @JoinColumn(name = "fk_user",nullable = true)
@OneToOne(optional=true, fetch = EAGER, cascade = {DETACH, REFRESH, REMOVE})
private User user;
@@ -78,10 +77,6 @@ public Mention(Task createdBy, Task updatedBy, String mentionString) {
this.idTwitter = ID_TWITTER_UNDEFINED;
this.screenName = mentionString;
this.name = mentionString;
- try {
- Thread.sleep(100L);
- } catch (InterruptedException e) {
- }
}
private Mention() {
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java
index 5d5a49bb..a673c20d 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java
@@ -75,61 +75,6 @@ public class Task implements DomainObjectMinimal {
@Column(name="time_finished")
private Date timeFinished = null;
- @NotNull
- @OneToMany(cascade = {DETACH, REFRESH, REMOVE}, fetch = EAGER,orphanRemoval=true, mappedBy="task")
- private List history = new ArrayList<>();
-
- @NotNull
- @Embedded
- @AttributeOverrides({
- @AttributeOverride(name = "countUser", column = @Column(name = "start_count_user",nullable=false)),
- @AttributeOverride(name = "countTweets", column = @Column(name = "start_count_tweets",nullable=false)),
- @AttributeOverride(name = "countHashTags", column = @Column(name = "start_count_hashtags",nullable=false)),
- @AttributeOverride(name = "countMedia", column = @Column(name = "start_count_media",nullable=false)),
- @AttributeOverride(name = "countMention", column = @Column(name = "start_count_mention",nullable=false)),
- @AttributeOverride(name = "countTickerSymbol", column = @Column(name = "start_count_tickersymbol",nullable=false)),
- @AttributeOverride(name = "countUrl", column = @Column(name = "start_count_url",nullable=false)),
- @AttributeOverride(name = "countUrlCache", column = @Column(name = "start_count_urlcache",nullable=false)),
- @AttributeOverride(name = "countTask", column = @Column(name = "start_count_task",nullable=false)),
- @AttributeOverride(name = "countTaskHistory", column = @Column(name = "start_count_task_history",nullable=false)),
- @AttributeOverride(name = "tweet2hashtag", column = @Column(name = "start_count_tweet2hashtag",nullable=false)),
- @AttributeOverride(name = "tweet2media", column = @Column(name = "start_count_tweet2media",nullable=false)),
- @AttributeOverride(name = "tweet2mention", column = @Column(name = "start_count_tweet2mention",nullable=false)),
- @AttributeOverride(name = "tweet2tickersymbol", column = @Column(name = "start_count_tweet2tickersymbol",nullable=false)),
- @AttributeOverride(name = "tweet2url", column = @Column(name = "start_count_tweet2url",nullable=false)),
- @AttributeOverride(name = "userprofile2hashtag", column = @Column(name = "start_count_userprofile2hashtag",nullable=false)),
- @AttributeOverride(name = "userprofile2media", column = @Column(name = "start_count_userprofile2media",nullable=false)),
- @AttributeOverride(name = "userprofile2mention", column = @Column(name = "start_count_userprofile2mention",nullable=false)),
- @AttributeOverride(name = "userprofile2tickersymbol", column = @Column(name = "start_count_userprofile2tickersymbol",nullable=false)),
- @AttributeOverride(name = "userprofile2url", column = @Column(name = "start_count_userprofile2url",nullable=false))
- })
- private CountedEntities countedEntitiesAtStart;
-
- @Embedded
- @AttributeOverrides({
- @AttributeOverride(name = "countUser", column = @Column(name = "done_count_user")),
- @AttributeOverride(name = "countTweets", column = @Column(name = "done_count_tweets")),
- @AttributeOverride(name = "countHashTags", column = @Column(name = "done_count_hashtags")),
- @AttributeOverride(name = "countMedia", column = @Column(name = "done_count_media")),
- @AttributeOverride(name = "countMention", column = @Column(name = "done_count_mention")),
- @AttributeOverride(name = "countTickerSymbol", column = @Column(name = "done_count_tickersymbol")),
- @AttributeOverride(name = "countUrl", column = @Column(name = "done_count_url")),
- @AttributeOverride(name = "countUrlCache", column = @Column(name = "done_count_urlcache")),
- @AttributeOverride(name = "countTask", column = @Column(name = "done_count_task")),
- @AttributeOverride(name = "countTaskHistory", column = @Column(name = "done_count_task_history")),
- @AttributeOverride(name = "tweet2hashtag", column = @Column(name = "done_count_tweet2hashtag")),
- @AttributeOverride(name = "tweet2media", column = @Column(name = "done_count_tweet2media")),
- @AttributeOverride(name = "tweet2mention", column = @Column(name = "done_count_tweet2mention")),
- @AttributeOverride(name = "tweet2tickersymbol", column = @Column(name = "done_count_tweet2tickersymbol")),
- @AttributeOverride(name = "tweet2url", column = @Column(name = "done_count_tweet2url")),
- @AttributeOverride(name = "userprofile2hashtag", column = @Column(name = "done_count_userprofile2hashtag")),
- @AttributeOverride(name = "userprofile2media", column = @Column(name = "done_count_userprofile2media")),
- @AttributeOverride(name = "userprofile2mention", column = @Column(name = "done_count_userprofile2mention")),
- @AttributeOverride(name = "userprofile2tickersymbol", column = @Column(name = "done_count_userprofile2tickersymbol")),
- @AttributeOverride(name = "userprofile2url", column = @Column(name = "done_count_userprofile2url"))
- })
- private CountedEntities countedEntitiesAtFinish;
-
private Task() {
}
@@ -138,16 +83,13 @@ public Task(String description,TaskType taskType) {
this.description = description;
}
- public Task(String description, TaskType taskType, TaskStatus taskStatus, Date timeStarted, Date timeLastUpdate, Date timeFinished, List history, CountedEntities countedEntitiesAtStart, CountedEntities countedEntitiesAtFinish) {
+ public Task(String description, TaskType taskType, TaskStatus taskStatus, Date timeStarted, Date timeLastUpdate, Date timeFinished) {
this.description = description;
this.taskType = taskType;
this.taskStatus = taskStatus;
this.timeStarted = timeStarted;
this.timeLastUpdate = timeLastUpdate;
this.timeFinished = timeFinished;
- this.history = history;
- this.countedEntitiesAtStart = countedEntitiesAtStart;
- this.countedEntitiesAtFinish = countedEntitiesAtFinish;
}
@Override
@@ -189,22 +131,6 @@ public void setTimeFinished(Date timeFinished) {
this.timeFinished = timeFinished;
}
- public CountedEntities getCountedEntitiesAtStart() {
- return countedEntitiesAtStart;
- }
-
- public void setCountedEntitiesAtStart(CountedEntities countedEntitiesAtStart) {
- this.countedEntitiesAtStart = countedEntitiesAtStart;
- }
-
- public CountedEntities getCountedEntitiesAtFinish() {
- return countedEntitiesAtFinish;
- }
-
- public void setCountedEntitiesAtFinish(CountedEntities countedEntitiesAtFinish) {
- this.countedEntitiesAtFinish = countedEntitiesAtFinish;
- }
-
public TaskStatus getTaskStatus() {
return taskStatus;
}
@@ -221,18 +147,6 @@ public void setDescription(String description) {
this.description = description;
}
- public List getHistory() {
- return history;
- }
-
- public void setHistory(List history) {
- this.history = history;
- }
-
- public void addHistory(TaskHistory history) {
- this.history.add(history);
- }
-
public Date getTimeLastUpdate() {
return timeLastUpdate;
}
@@ -248,14 +162,6 @@ public void setTimeLastUpdate() {
@Override
public String toString() {
- String countedEntitiesAtFinishStr = "null";
- if(countedEntitiesAtFinish != null){
- countedEntitiesAtFinishStr = countedEntitiesAtFinish.toString();
- }
- String countedEntitiesAtStartStr = "null";
- if(countedEntitiesAtStart != null){
- countedEntitiesAtStartStr = countedEntitiesAtStart.toString();
- }
return "Task{" +
"id=" + id +
", taskType=" + taskType +
@@ -263,8 +169,6 @@ public String toString() {
", timeStarted=" + timeStarted +
", timeLastUpdate=" + timeLastUpdate +
", timeFinished=" + timeFinished +
- ", countedEntitiesAtStart=" + countedEntitiesAtStartStr +
- ", countedEntitiesAtFinish=" + countedEntitiesAtFinishStr +
'}';
}
diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java
index 15a82ca1..43feca3b 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java
@@ -2,6 +2,7 @@
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.parts.TaskStatus;
import org.woehlke.twitterwall.oodm.entities.listener.TaskHistoryListener;
@@ -66,16 +67,44 @@ public class TaskHistory implements DomainObjectMinimal {
@JoinColumn(name="task_id")
private Task task;
+ //@NotNull
+ @Embedded
+ @AttributeOverrides({
+ @AttributeOverride(name = "countUser", column = @Column(name = "count_user",nullable=false)),
+ @AttributeOverride(name = "countTweets", column = @Column(name = "count_tweets",nullable=false)),
+ @AttributeOverride(name = "countHashTags", column = @Column(name = "count_hashtags",nullable=false)),
+ @AttributeOverride(name = "countMedia", column = @Column(name = "count_media",nullable=false)),
+ @AttributeOverride(name = "countMention", column = @Column(name = "count_mention",nullable=false)),
+ @AttributeOverride(name = "countTickerSymbol", column = @Column(name = "count_tickersymbol",nullable=false)),
+ @AttributeOverride(name = "countUrl", column = @Column(name = "count_url",nullable=false)),
+ @AttributeOverride(name = "countUrlCache", column = @Column(name = "count_urlcache",nullable=false)),
+ @AttributeOverride(name = "countTask", column = @Column(name = "count_task",nullable=false)),
+ @AttributeOverride(name = "countTaskHistory", column = @Column(name = "count_task_history",nullable=false)),
+ @AttributeOverride(name = "tweet2hashtag", column = @Column(name = "count_tweet2hashtag",nullable=false)),
+ @AttributeOverride(name = "tweet2media", column = @Column(name = "count_tweet2media",nullable=false)),
+ @AttributeOverride(name = "tweet2mention", column = @Column(name = "count_tweet2mention",nullable=false)),
+ @AttributeOverride(name = "tweet2tickersymbol", column = @Column(name = "count_tweet2tickersymbol",nullable=false)),
+ @AttributeOverride(name = "tweet2url", column = @Column(name = "count_tweet2url",nullable=false)),
+ @AttributeOverride(name = "userprofile2hashtag", column = @Column(name = "count_userprofile2hashtag",nullable=false)),
+ @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))
+ })
+ private CountedEntities countedEntities = new CountedEntities();
+
private TaskHistory() {
}
- public TaskHistory(String description, TaskStatus taskStatusBefore, TaskStatus taskStatusNow) {
+ public TaskHistory(String description, TaskStatus taskStatusBefore, TaskStatus taskStatusNow, CountedEntities countedEntities) {
+ this.countedEntities = countedEntities;
this.description = description;
this.taskStatusBefore = taskStatusBefore;
this.taskStatusNow = taskStatusNow;
}
- public TaskHistory(String description, TaskStatus taskStatusBefore, TaskStatus taskStatusNow, Date timeEvent, Task task) {
+ public TaskHistory(String description, TaskStatus taskStatusBefore, TaskStatus taskStatusNow, Date timeEvent, Task task, CountedEntities countedEntities) {
+ this.countedEntities = countedEntities;
this.description = description;
this.taskStatusBefore = taskStatusBefore;
this.taskStatusNow = taskStatusNow;
@@ -144,6 +173,14 @@ public void setIdTask(Long idTask) {
this.idTask = idTask;
}
+ public CountedEntities getCountedEntities() {
+ return countedEntities;
+ }
+
+ public void setCountedEntities(CountedEntities countedEntities) {
+ this.countedEntities = countedEntities;
+ }
+
@Override
public int compareTo(TaskHistory other) {
return getUniqueId().compareTo(other.getUniqueId());
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 cad6d7b7..525efcb9 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
@@ -13,5 +13,6 @@ public enum TaskType {
FETCH_USERS_FROM_DEFINED_USER_LIST,
CONTROLLER_GET_TESTDATA_TWEETS,
CONTROLLER_GET_TESTDATA_USER,
- CONTROLLER_ADD_USER_FOR_SCREEN_NAME
+ CONTROLLER_ADD_USER_FOR_SCREEN_NAME,
+ CONTROLLER_CREATE_IMPRINT_USER
}
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 7b0e1f96..fbf6d526 100644
--- a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java
+++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java
@@ -1,6 +1,7 @@
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.parts.TaskType;
import org.woehlke.twitterwall.oodm.service.common.DomainObjectMinimalService;
@@ -9,24 +10,25 @@
*/
public interface TaskService extends DomainObjectMinimalService {
- Task create(String msg,TaskType type);
+ Task findById(long id);
- Task done(Task task);
+ Task create(String msg,TaskType type,CountedEntities countedEntities);
- Task error(Task task, Exception e);
+ Task done(Task task,CountedEntities countedEntities);
- Task error(Task task, Exception e, String msg);
+ Task error(Task task, Exception e,CountedEntities countedEntities);
- Task warn(Task task, Exception e);
+ Task error(Task task, Exception e, String msg,CountedEntities countedEntities);
- Task warn(Task task, Exception e, String msg);
+ Task warn(Task task, Exception e,CountedEntities countedEntities);
- Task event(Task task, String msg);
+ Task warn(Task task, Exception e, String msg,CountedEntities countedEntities);
- Task warn(Task task, String msg);
+ Task event(Task task, String msg,CountedEntities countedEntities);
- Task error(Task task, String msg);
+ Task warn(Task task, String msg,CountedEntities countedEntities);
- Task findById(long id);
+ Task error(Task task, String msg,CountedEntities countedEntities);
+ Task start(Task task,CountedEntities countedEntities);
}
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 0cf2c681..0a8684f3 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
@@ -16,7 +16,6 @@
import org.woehlke.twitterwall.oodm.repositories.TaskHistoryRepository;
import org.woehlke.twitterwall.oodm.repositories.TaskRepository;
import org.woehlke.twitterwall.oodm.service.TaskService;
-import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import java.util.Date;
@@ -31,14 +30,11 @@ public class TaskServiceImpl implements TaskService {
private final TaskRepository taskRepository;
- private final CountedEntitiesService countedEntitiesService;
-
private final TaskHistoryRepository taskHistoryRepository;
@Autowired
- public TaskServiceImpl(TaskRepository taskRepository, CountedEntitiesService countedEntitiesService, TaskHistoryRepository taskHistoryRepository) {
+ public TaskServiceImpl(TaskRepository taskRepository, TaskHistoryRepository taskHistoryRepository) {
this.taskRepository = taskRepository;
- this.countedEntitiesService = countedEntitiesService;
this.taskHistoryRepository = taskHistoryRepository;
}
@@ -53,164 +49,137 @@ public long count() {
}
@Override
- public Task create(String msg,TaskType type) {
- CountedEntities countedEntities = this.countedEntitiesService.countAll();
+ public Task findById(long id) {
+ return taskRepository.findOne(id);
+ }
+
+ @Override
+ public Task create(String msg,TaskType type,CountedEntities countedEntities) {
Task task = new Task("start: "+msg,type);
- task.setCountedEntitiesAtStart(countedEntities);
- TaskHistory event = new TaskHistory("start: "+msg,TaskStatus.READY, TaskStatus.RUNNING);
task.setTaskStatus(TaskStatus.RUNNING);
- task.setTimeStarted(new Date());
task.setTimeLastUpdate(new Date());
- task.addHistory(event);
- event.setTask(task);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("create: "+msg,TaskStatus.READY, TaskStatus.READY,countedEntities);
event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task done(Task task) {
- CountedEntities countedEntities = this.countedEntitiesService.countAll();
- task.setCountedEntitiesAtFinish(countedEntities);
- TaskHistory event = new TaskHistory("done",task.getTaskStatus(),TaskStatus.FINISHED);
- event.setIdTask(task.getId());
+ public Task done(Task task,CountedEntities countedEntities) {
task.setTaskStatus(TaskStatus.FINISHED);
task.setTimeLastUpdate(new Date());
- event = taskHistoryRepository.save(event);
- task.addHistory(event);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("done",task.getTaskStatus(),TaskStatus.FINISHED,countedEntities);
+ event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task error(Task task,Exception e) {
- TaskHistory event = new TaskHistory("error: "+e.getMessage(),task.getTaskStatus(),TaskStatus.ERROR);
- event.setIdTask(task.getId());
+ public Task error(Task task,Exception e,CountedEntities countedEntities) {
task.setTaskStatus(TaskStatus.ERROR);
task.setTimeLastUpdate(new Date());
- task.addHistory(event);
- event = taskHistoryRepository.save(event);
- task.addHistory(event);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("error: "+e.getMessage(),task.getTaskStatus(),TaskStatus.ERROR,countedEntities);
+ event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task error(Task task, Exception e, String msg) {
- TaskHistory event = new TaskHistory(msg+", error: "+e.getMessage(),task.getTaskStatus(),TaskStatus.ERROR);
- event.setIdTask(task.getId());
+ public Task error(Task task, Exception e, String msg,CountedEntities countedEntities) {
task.setTaskStatus(TaskStatus.ERROR);
task.setTimeLastUpdate(new Date());
- task.addHistory(event);
- event = taskHistoryRepository.save(event);
- task.addHistory(event);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory(msg+", error: "+e.getMessage(),task.getTaskStatus(),TaskStatus.ERROR,countedEntities);
+ event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task warn(Task task, Exception e) {
- TaskHistory event = new TaskHistory("warn: "+e.getMessage(),task.getTaskStatus(),TaskStatus.WARN);
- event.setIdTask(task.getId());
+ public Task warn(Task task, Exception e,CountedEntities countedEntities) {
task.setTaskStatus(TaskStatus.WARN);
task.setTimeLastUpdate(new Date());
- task.addHistory(event);
- event = taskHistoryRepository.save(event);
- task.addHistory(event);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("warn: "+e.getMessage(),task.getTaskStatus(),TaskStatus.WARN,countedEntities);
+ event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task warn(Task task, Exception e, String msg) {
- TaskHistory event = new TaskHistory("warn: "+msg+", "+e.getMessage(),task.getTaskStatus(),TaskStatus.WARN);
- event.setIdTask(task.getId());
+ public Task warn(Task task, Exception e, String msg,CountedEntities countedEntities) {
task.setTaskStatus(TaskStatus.WARN);
task.setTimeLastUpdate(new Date());
- task.addHistory(event);
- event = taskHistoryRepository.save(event);
- task.addHistory(event);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("warn: "+msg+", "+e.getMessage(),task.getTaskStatus(),TaskStatus.WARN,countedEntities);
+ event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task event(Task task, String msg) {
- TaskHistory event = new TaskHistory("event: "+msg,task.getTaskStatus(),task.getTaskStatus());
- event.setIdTask(task.getId());
+ public Task event(Task task, String msg,CountedEntities countedEntities) {
task.setTimeLastUpdate(new Date());
- task.addHistory(event);
- event = taskHistoryRepository.save(event);
- task.addHistory(event);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("event: "+msg,task.getTaskStatus(),task.getTaskStatus(),countedEntities);
+ event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task warn(Task task, String msg) {
- TaskHistory event = new TaskHistory("warn: "+msg,task.getTaskStatus(),TaskStatus.WARN);
- event.setIdTask(task.getId());
+ public Task warn(Task task, String msg,CountedEntities countedEntities) {
task.setTaskStatus(TaskStatus.WARN);
task.setTimeLastUpdate(new Date());
- task.addHistory(event);
- event = taskHistoryRepository.save(event);
- task.addHistory(event);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("warn: "+msg,task.getTaskStatus(),TaskStatus.WARN,countedEntities);
+ event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task error(Task task, String msg) {
- TaskHistory event = new TaskHistory("error: "+msg,task.getTaskStatus(),TaskStatus.ERROR);
- event.setIdTask(task.getId());
- task.setTimeLastUpdate(new Date());
+ public Task error(Task task, String msg,CountedEntities countedEntities) {
task.setTaskStatus(TaskStatus.ERROR);
task.setTimeLastUpdate(new Date());
- task.addHistory(event);
- event = taskHistoryRepository.save(event);
- task.addHistory(event);
task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("error: "+msg,task.getTaskStatus(),TaskStatus.ERROR,countedEntities);
+ event.setIdTask(task.getId());
event.setTask(task);
- task.addHistory(event);
event = taskHistoryRepository.save(event);
log.debug(task.toString());
return task;
}
@Override
- public Task findById(long id) {
- return taskRepository.findOne(id);
+ public Task start(Task task,CountedEntities countedEntities) {
+ task.setTaskStatus(TaskStatus.RUNNING);
+ task.setTimeLastUpdate(new Date());
+ task = taskRepository.save(task);
+ TaskHistory event = new TaskHistory("start",task.getTaskStatus(),TaskStatus.RUNNING,countedEntities);
+ event.setIdTask(task.getId());
+ event.setTask(task);
+ event = taskHistoryRepository.save(event);
+ log.debug(task.toString());
+ return task;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateImprintUser.java
new file mode 100644
index 00000000..56bb8558
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateImprintUser.java
@@ -0,0 +1,10 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TwitterProfileMessage;
+
+public interface CreateImprintUser {
+
+ Message createImprintUser(Message mqMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateTestDataForTweets.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateTestDataForTweets.java
new file mode 100644
index 00000000..024a0ca3
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateTestDataForTweets.java
@@ -0,0 +1,13 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+
+import java.util.List;
+
+public interface CreateTestDataForTweets {
+
+ List splitMessage(Message message);
+
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateTestDataForUsers.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateTestDataForUsers.java
new file mode 100644
index 00000000..67195baa
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/CreateTestDataForUsers.java
@@ -0,0 +1,12 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TwitterProfileMessage;
+
+import java.util.List;
+
+public interface CreateTestDataForUsers {
+
+ List splitMessage(Message message);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchDataFromDatabase.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchDataFromDatabase.java
new file mode 100644
index 00000000..610f6566
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchDataFromDatabase.java
@@ -0,0 +1,13 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+
+public interface FetchDataFromDatabase {
+
+ void updateTweets(Message mqMessage);
+
+ void updateUserProfiles(Message mqMessage);
+
+ void updateUserProfilesFromMentions(Message mqMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchDataFromRemoteTwitterApi.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchDataFromRemoteTwitterApi.java
new file mode 100644
index 00000000..4a0484b8
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchDataFromRemoteTwitterApi.java
@@ -0,0 +1,13 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+
+public interface FetchDataFromRemoteTwitterApi {
+
+ void fetchTweetsFromTwitterSearch(Message mqMessage);
+
+ void fetchUsersFromDefinedUserList(Message mqMessage);
+
+ void createTestDataForUser(Message mqMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchTweetsFromTwitterSearch.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchTweetsFromTwitterSearch.java
new file mode 100644
index 00000000..9cfa4a5a
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchTweetsFromTwitterSearch.java
@@ -0,0 +1,12 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+
+import java.util.List;
+
+public interface FetchTweetsFromTwitterSearch {
+
+ List splitMessage(Message message);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchUsersFromDefinedUserList.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchUsersFromDefinedUserList.java
new file mode 100644
index 00000000..5e99ff75
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/FetchUsersFromDefinedUserList.java
@@ -0,0 +1,12 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TwitterProfileMessage;
+
+import java.util.List;
+
+public interface FetchUsersFromDefinedUserList {
+
+ List splitMessage(Message message);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/StartTask.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/StartTask.java
new file mode 100644
index 00000000..7a344693
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/StartTask.java
@@ -0,0 +1,26 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.woehlke.twitterwall.oodm.entities.Tweet;
+import org.woehlke.twitterwall.oodm.entities.User;
+
+import java.util.List;
+
+public interface StartTask {
+
+ void fetchTweetsFromTwitterSearch();
+
+ void updateTweets();
+
+ void updateUserProfiles();
+
+ void updateUserProfilesFromMentions();
+
+ void fetchUsersFromDefinedUserList();
+
+ User createImprintUser();
+
+ List createTestDataForUser();
+
+ List createTestDataForTweets();
+
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetFinisher.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetFinisher.java
new file mode 100644
index 00000000..07a5145e
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetFinisher.java
@@ -0,0 +1,11 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetResultList;
+
+import java.util.List;
+
+public interface TweetFinisher {
+ TweetResultList finish(Message> incomingMessageList);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetPersistor.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetPersistor.java
new file mode 100644
index 00000000..921ebdf5
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetPersistor.java
@@ -0,0 +1,10 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetMsg;
+
+public interface TweetPersistor {
+
+ Message persistTweet(Message incomingUserMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetTransformator.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetTransformator.java
new file mode 100644
index 00000000..25820d77
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/TweetTransformator.java
@@ -0,0 +1,9 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+
+public interface TweetTransformator {
+
+ Message transformTweet(Message message);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserFinisher.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserFinisher.java
new file mode 100644
index 00000000..19b3c5cf
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserFinisher.java
@@ -0,0 +1,12 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserResultList;
+
+import java.util.List;
+
+public interface UserFinisher {
+
+ UserResultList finish(Message> incomingMessageList);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserPersistor.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserPersistor.java
new file mode 100644
index 00000000..2a145963
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserPersistor.java
@@ -0,0 +1,10 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.oodm.entities.User;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
+
+public interface UserPersistor {
+
+ UserMessage persistUser(Message incomingUserMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserTransformator.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserTransformator.java
new file mode 100644
index 00000000..1628d9d4
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/UserTransformator.java
@@ -0,0 +1,10 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint;
+
+import org.springframework.messaging.Message;
+import org.woehlke.twitterwall.scheduled.mq.msg.TwitterProfileMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
+
+public interface UserTransformator {
+
+ Message transformUser(Message mqMessage);
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateImprintUserImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateImprintUserImpl.java
new file mode 100644
index 00000000..a8f457f4
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateImprintUserImpl.java
@@ -0,0 +1,41 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+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.conf.TwitterwallFrontendProperties;
+import org.woehlke.twitterwall.scheduled.mq.endoint.CreateImprintUser;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TwitterProfileMessage;
+import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
+
+@Component("mqCreateImprintUser")
+public class CreateImprintUserImpl implements CreateImprintUser {
+
+ private final TwitterApiService twitterApiService;
+
+ private final TwitterwallFrontendProperties twitterwallFrontendProperties;
+
+ @Autowired
+ public CreateImprintUserImpl(TwitterApiService twitterApiService, TwitterwallFrontendProperties twitterwallFrontendProperties) {
+ this.twitterApiService = twitterApiService;
+ this.twitterwallFrontendProperties = twitterwallFrontendProperties;
+ }
+
+ @Override
+ public Message createImprintUser(Message mqMessageIn) {
+ String logMsg = "createImprintUser: ";
+ TaskMessage receivedMessage = mqMessageIn.getPayload();
+ String screenName = twitterwallFrontendProperties.getImprintScreenName();
+ TwitterProfile twitterProfile = twitterApiService.getUserProfileForScreenName(screenName);
+ TwitterProfileMessage outMsg = new TwitterProfileMessage(receivedMessage,screenName,twitterProfile);
+ Message mqMessageOut = MessageBuilder.withPayload(outMsg).copyHeaders(mqMessageIn.getHeaders())
+ .setHeader("twitter_profile_id", twitterProfile.getId())
+ .build();
+ return mqMessageOut;
+ }
+}
+
+
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateTestDataForTweetsImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateTestDataForTweetsImpl.java
new file mode 100644
index 00000000..418316a5
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateTestDataForTweetsImpl.java
@@ -0,0 +1,54 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.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.TwitterwallSchedulerProperties;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.CreateTestDataForTweets;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqCreateTestDataForTweets")
+public class CreateTestDataForTweetsImpl implements CreateTestDataForTweets {
+
+ private final TwitterwallSchedulerProperties twitterwallSchedulerProperties;
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ @Autowired
+ public CreateTestDataForTweetsImpl(TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService) {
+ this.twitterwallSchedulerProperties = twitterwallSchedulerProperties;
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ }
+
+ @Override
+ public List splitMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List tweets = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ for (long idTwitter : twitterwallSchedulerProperties.getFacade().getIdTwitterToFetchForTweetTest()) {
+ Tweet tweet = twitterApiService.findOneTweetById(idTwitter);
+ TweetFromTwitter tweetMsg = new TweetFromTwitter(task.getId(),tweet);
+ tweets.add(tweetMsg);
+ }
+ return tweets;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateTestDataForUsersImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateTestDataForUsersImpl.java
new file mode 100644
index 00000000..754db408
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/CreateTestDataForUsersImpl.java
@@ -0,0 +1,53 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.TwitterProfile;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.conf.TwitterwallSchedulerProperties;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.CreateTestDataForUsers;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TwitterProfileMessage;
+import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqCreateTestDataForUsers")
+public class CreateTestDataForUsersImpl implements CreateTestDataForUsers {
+
+ private final TwitterwallSchedulerProperties twitterwallSchedulerProperties;
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ public CreateTestDataForUsersImpl(TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService) {
+ this.twitterwallSchedulerProperties = twitterwallSchedulerProperties;
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ }
+
+ @Override
+ public List splitMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List userProfileList = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ List userIdList = twitterwallSchedulerProperties.getFacade().getScreenNamesToFetchForUserControllerTest();
+ for (String screenName : userIdList) {
+ TwitterProfile userProfile = twitterApiService.getUserProfileForScreenName(screenName);
+ TwitterProfileMessage userMsg = new TwitterProfileMessage(msgIn,userProfile);
+ userProfileList.add(userMsg);
+ }
+ return userProfileList;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchDataFromDatabaseImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchDataFromDatabaseImpl.java
new file mode 100644
index 00000000..2191993e
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchDataFromDatabaseImpl.java
@@ -0,0 +1,62 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+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.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.FetchDataFromDatabase;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
+
+@Component("mqFetchDataFromDatabase")
+public class FetchDataFromDatabaseImpl implements FetchDataFromDatabase {
+
+ private static final Logger log = LoggerFactory.getLogger(FetchDataFromDatabaseImpl.class);
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ @Autowired
+ public FetchDataFromDatabaseImpl(TaskService taskService, CountedEntitiesService countedEntitiesService) {
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ }
+
+
+ private void react(String logMsg,Message mqMessage){
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ TaskMessage receivedMessage = mqMessage.getPayload();
+ Task task = taskService.findById(receivedMessage.getTaskId());
+ taskService.start(task,countedEntities);
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"received: "+mqMessage.getPayload().toString());
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"##############################################");
+ }
+
+ @Override
+ public void updateTweets(Message mqMessage) {
+ String logMsg = "updateTweets: ";
+ react(logMsg,mqMessage);
+ }
+
+ @Override
+ public void updateUserProfiles(Message mqMessage) {
+ String logMsg = "updateUserProfiles: ";
+ react(logMsg,mqMessage);
+ }
+
+ @Override
+ public void updateUserProfilesFromMentions(Message mqMessage) {
+ String logMsg = "updateUserProfilesFromMentions: ";
+ react(logMsg,mqMessage);
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchDataFromRemoteTwitterApiImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchDataFromRemoteTwitterApiImpl.java
new file mode 100644
index 00000000..0ce240ac
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchDataFromRemoteTwitterApiImpl.java
@@ -0,0 +1,70 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.FetchDataFromRemoteTwitterApi;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
+
+@Component("mqFetchDataFromRemoteTwitterApi")
+public class FetchDataFromRemoteTwitterApiImpl implements FetchDataFromRemoteTwitterApi {
+
+ private static final Logger log = LoggerFactory.getLogger(FetchDataFromRemoteTwitterApiImpl.class);
+
+ private final TaskService taskService;
+
+ private final TwitterApiService twitterApiService;
+
+ private final TwitterwallFrontendProperties twitterwallFrontendProperties;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ @Autowired
+ public FetchDataFromRemoteTwitterApiImpl(TaskService taskService, TwitterApiService twitterApiService, TwitterwallFrontendProperties twitterwallFrontendProperties, CountedEntitiesService countedEntitiesService) {
+ this.taskService = taskService;
+ this.twitterApiService = twitterApiService;
+ this.twitterwallFrontendProperties = twitterwallFrontendProperties;
+ this.countedEntitiesService = countedEntitiesService;
+ }
+
+ private void react(String logMsg,Message mqMessage){
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ TaskMessage receivedMessage = mqMessage.getPayload();
+ Task task = taskService.findById(receivedMessage.getTaskId());
+ taskService.start(task,countedEntities);
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"received: "+mqMessage.getPayload().toString());
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"##############################################");
+ log.info(logMsg+"##############################################");
+ }
+
+ @Override
+ public void fetchTweetsFromTwitterSearch(Message mqMessage) {
+ String logMsg = "fetchTweetsFromTwitterSearch: ";
+ this.react(logMsg, mqMessage);
+ }
+
+ @Override
+ public void fetchUsersFromDefinedUserList(Message mqMessage) {
+ String logMsg = "fetchUsersFromDefinedUserList: ";
+ this.react(logMsg, mqMessage);
+ }
+
+ @Override
+ public void createTestDataForUser(Message mqMessage) {
+ String logMsg = "createTestDataForUser: ";
+ this.react(logMsg, mqMessage);
+ }
+
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchTweetsFromTwitterSearchImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchTweetsFromTwitterSearchImpl.java
new file mode 100644
index 00000000..7dcdadb4
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchTweetsFromTwitterSearchImpl.java
@@ -0,0 +1,50 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.FetchTweetsFromTwitterSearch;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqFetchTweetsFromTwitterSearch")
+public class FetchTweetsFromTwitterSearchImpl implements FetchTweetsFromTwitterSearch {
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ @Autowired
+ public FetchTweetsFromTwitterSearchImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService) {
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ }
+
+ @Override
+ public List splitMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List tweets = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ List twitterTweets = twitterApiService.findTweetsForSearchQuery();
+ for (Tweet tweet: twitterTweets) {
+ TweetFromTwitter tweetMsg = new TweetFromTwitter(task.getId(),tweet);
+ tweets.add(tweetMsg);
+ }
+ return tweets;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchUsersFromDefinedUserListImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchUsersFromDefinedUserListImpl.java
new file mode 100644
index 00000000..29b7ede0
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/FetchUsersFromDefinedUserListImpl.java
@@ -0,0 +1,58 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.TwitterProfile;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties;
+import org.woehlke.twitterwall.conf.TwitterwallSchedulerProperties;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.FetchUsersFromDefinedUserList;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TwitterProfileMessage;
+import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqFetchUsersFromDefinedUserList")
+public class FetchUsersFromDefinedUserListImpl implements FetchUsersFromDefinedUserList {
+
+ private final TwitterwallSchedulerProperties twitterwallSchedulerProperties;
+
+ private final TwitterwallFrontendProperties twitterwallFrontendProperties;
+
+ private final TwitterApiService twitterApiService;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ public FetchUsersFromDefinedUserListImpl(TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService) {
+ this.twitterwallSchedulerProperties = twitterwallSchedulerProperties;
+ this.twitterwallFrontendProperties = twitterwallFrontendProperties;
+ this.twitterApiService = twitterApiService;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ }
+
+ @Override
+ public List splitMessage(Message message) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ List userProfileList = new ArrayList<>();
+ TaskMessage msgIn = message.getPayload();
+ long id = msgIn.getTaskId();
+ Task task = taskService.findById(id);
+ task = taskService.start(task,countedEntities);
+ String imprintScreenName = twitterwallFrontendProperties.getImprintScreenName();
+ String fetchUsersList = twitterwallSchedulerProperties.getFetchUserList().getName();
+ List foundTwitterProfiles = twitterApiService.findUsersFromDefinedList(imprintScreenName,fetchUsersList);
+ for (TwitterProfile twitterProfile : foundTwitterProfiles) {
+ TwitterProfileMessage userMsg = new TwitterProfileMessage(msgIn,twitterProfile);
+ userProfileList.add(userMsg);
+ }
+ return userProfileList;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/StartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/StartTaskImpl.java
new file mode 100644
index 00000000..1603d389
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/StartTaskImpl.java
@@ -0,0 +1,224 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+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.scheduling.annotation.Scheduled;
+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.User;
+import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
+import org.woehlke.twitterwall.oodm.entities.parts.TaskType;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask;
+import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetResultList;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserResultList;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class StartTaskImpl implements StartTask {
+
+ private final MessageChannel startTaskChannel;
+
+ private final TaskService taskService;
+
+ private final CountedEntitiesService countedEntitiesService;
+
+ @Autowired
+ public StartTaskImpl(MessageChannel startTaskChannel, TaskService taskService, CountedEntitiesService countedEntitiesService) {
+ this.startTaskChannel = startTaskChannel;
+ this.taskService = taskService;
+ this.countedEntitiesService = countedEntitiesService;
+ }
+
+ private void messageSender(final TaskType taskType) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ Task task = taskService.create("Start via MQ", taskType,countedEntities);
+ TaskMessage taskMessage = new TaskMessage(task.getId(), taskType, task.getTimeStarted());
+ Message mqMessage = MessageBuilder.withPayload(taskMessage)
+ .setHeader("task_id", task.getId())
+ .setHeader("task_uid", task.getUniqueId())
+ .setHeader("task_type", task.getTaskType())
+ .build();
+ MessagingTemplate mqTemplate = new MessagingTemplate();
+ mqTemplate.send(startTaskChannel, mqMessage);
+ }
+
+
+ private final static long EINE_MINUTE = 60 * 1000;
+
+ private final static long FUENF_MINUTEN = 5 * EINE_MINUTE;
+
+ private final static long EINE_STUNDE = 60 * EINE_MINUTE;
+
+ private final static long ZWOELF_STUNDEN = 12 * EINE_STUNDE;
+
+ private final static long FIXED_RATE_FOR_SCHEDULAR_FETCH_TWEETS = EINE_STUNDE;
+
+ private final static long FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER = ZWOELF_STUNDEN;
+
+ private final static long FIXED_RATE_FOR_SCHEDULAR_UPDATE_TWEETS = ZWOELF_STUNDEN;
+
+ private final static long FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER_BY_MENTION = EINE_STUNDE;
+
+ private final static long FIXED_RATE_FOR_SCHEDULAR_FETCH_USER_LIST = ZWOELF_STUNDEN;
+
+
+ /*
+ twitterwall.mq.starttask.time.fetchTweetsFromTwitterSearch
+ twitterwall.mq.starttask.time.updateTweets
+ twitterwall.mq.starttask.time.updateUserProfiles
+ twitterwall.mq.starttask.time.updateUserProfilesFromMentions
+ twitterwall.mq.starttask.time.fetchUsersFromDefinedUserList
+ */
+
+
+ @Override
+ @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_TWEETS)
+ public void fetchTweetsFromTwitterSearch() {
+ TaskType taskType = TaskType.FETCH_TWEETS_FROM_TWITTER_SEARCH;
+ sendAndReceive(taskType);
+ }
+
+ @Override
+ @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_TWEETS)
+ public void updateTweets() {
+ TaskType taskType = TaskType.UPDATE_TWEETS;
+ messageSender(taskType);
+ }
+
+ @Override
+ @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER)
+ public void updateUserProfiles() {
+ TaskType taskType = TaskType.UPDATE_USER_PROFILES;
+ messageSender(taskType);
+ }
+
+ @Override
+ @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_UPDATE_USER_BY_MENTION)
+ public void updateUserProfilesFromMentions() {
+ TaskType taskType = TaskType.UPDATE_USER_PROFILES_FROM_MENTIONS;
+ messageSender(taskType);
+ }
+
+ private void sendAndReceive(TaskType taskType){
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ Task task = taskService.create("Start via MQ", taskType,countedEntities);
+ TaskMessage taskMessage = new TaskMessage(task.getId(), taskType, task.getTimeStarted());
+ Message mqMessage = MessageBuilder.withPayload(taskMessage)
+ .setHeader("task_id", task.getId())
+ .setHeader("task_uid", task.getUniqueId())
+ .setHeader("task_type", task.getTaskType())
+ .build();
+ MessagingTemplate mqTemplate = new MessagingTemplate();
+ Message> returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage);
+ Object o = returnedMessage.getPayload();
+ countedEntities = countedEntitiesService.countAll();
+ if( o instanceof UserMessage){
+ UserMessage msg = (UserMessage) o;
+ long taskId = msg.getTaskId();
+ task = taskService.findById(taskId);
+ taskService.done(task,countedEntities);
+ } else {
+ taskService.error(task,"Wrong type of returnedMessage",countedEntities);
+ }
+ }
+
+ @Override
+ @Scheduled(fixedRate = FIXED_RATE_FOR_SCHEDULAR_FETCH_USER_LIST)
+ public void fetchUsersFromDefinedUserList() {
+ TaskType taskType = TaskType.FETCH_USERS_FROM_DEFINED_USER_LIST;
+ sendAndReceive(taskType);
+ }
+
+ @Override
+ public User createImprintUser() {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ TaskType taskType = TaskType.CONTROLLER_CREATE_IMPRINT_USER;
+ Task task = taskService.create("Start via MQ", taskType,countedEntities);
+ TaskMessage taskMessage = new TaskMessage(task.getId(), taskType, task.getTimeStarted());
+ Message mqMessage = MessageBuilder.withPayload(taskMessage)
+ .setHeader("task_id", task.getId())
+ .setHeader("task_uid", task.getUniqueId())
+ .setHeader("task_type", task.getTaskType())
+ .build();
+ MessagingTemplate mqTemplate = new MessagingTemplate();
+ Message> returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage);
+ Object o = returnedMessage.getPayload();
+ countedEntities = countedEntitiesService.countAll();
+ if( o instanceof UserMessage){
+ UserMessage msg = (UserMessage) o;
+ long taskId = msg.getTaskId();
+ task = taskService.findById(taskId);
+ taskService.done(task,countedEntities);
+ return msg.getUser();
+ } else {
+ taskService.error(task,"Wrong type of returnedMessage",countedEntities);
+ return null;
+ }
+ }
+
+ @Override
+ public List createTestDataForUser() {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ TaskType taskType = TaskType.CONTROLLER_GET_TESTDATA_USER;
+ Task task = taskService.create("Start via MQ", taskType,countedEntities);
+ TaskMessage taskMessage = new TaskMessage(task.getId(), taskType, task.getTimeStarted());
+ Message mqMessage = MessageBuilder.withPayload(taskMessage)
+ .setHeader("task_id", task.getId())
+ .setHeader("task_uid", task.getUniqueId())
+ .setHeader("task_type", task.getTaskType())
+ .build();
+ MessagingTemplate mqTemplate = new MessagingTemplate();
+ Message> returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage);
+ Object o = returnedMessage.getPayload();
+ countedEntities = countedEntitiesService.countAll();
+ if( o instanceof UserResultList){
+ UserResultList result = (UserResultList) o;
+ long taskId = result.getTaskId();
+ task = taskService.findById(taskId);
+ taskService.done(task,countedEntities);
+ return result.getUserList();
+ } else {
+ taskService.error(task,"Wrong type of returnedMessage",countedEntities);
+ return new ArrayList<>();
+ }
+ }
+
+ @Override
+ public List createTestDataForTweets() {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ TaskType taskType = TaskType.CONTROLLER_GET_TESTDATA_TWEETS;
+ Task task = taskService.create("Start via MQ", taskType,countedEntities);
+ TaskMessage taskMessage = new TaskMessage(task.getId(), taskType, task.getTimeStarted());
+ Message mqMessage = MessageBuilder.withPayload(taskMessage)
+ .setHeader("task_id", task.getId())
+ .setHeader("task_uid", task.getUniqueId())
+ .setHeader("task_type", task.getTaskType())
+ .build();
+ MessagingTemplate mqTemplate = new MessagingTemplate();
+ Message> returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage);
+ Object o = returnedMessage.getPayload();
+ countedEntities = countedEntitiesService.countAll();
+ if( o instanceof TweetResultList){
+ TweetResultList result = (TweetResultList) o;
+ long taskId =result.getTaskId();
+ task = taskService.findById(taskId);
+ taskService.done(task,countedEntities);
+ return result.getTweetList();
+ } else {
+ taskService.error(task,"Wrong type of returnedMessage",countedEntities);
+ return new ArrayList<>();
+ }
+ }
+}
+
+
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetFinisherImpl.java
new file mode 100644
index 00000000..f330ede8
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetFinisherImpl.java
@@ -0,0 +1,26 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Tweet;
+import org.woehlke.twitterwall.scheduled.mq.endoint.TweetFinisher;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetResultList;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqTweetFinisher")
+public class TweetFinisherImpl implements TweetFinisher {
+
+ public TweetResultList finish(Message> incomingMessageList){
+ List resultList = new ArrayList<>();
+ long taskId = 0L;
+ for(TweetFromTwitter msg:incomingMessageList.getPayload()){
+ resultList.add(msg.getTweet());
+ taskId = msg.getTaskId();
+ }
+ TweetResultList result = new TweetResultList(taskId,resultList);
+ return result;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetPersistorImpl.java
new file mode 100644
index 00000000..2f3dd4a1
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetPersistorImpl.java
@@ -0,0 +1,40 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.Tweet;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.TweetPersistor;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweetPerform;
+
+@Component("mqTweetPersistor")
+public class TweetPersistorImpl implements TweetPersistor {
+
+ private final TaskService taskService;
+
+ private final StoreOneTweetPerform storeOneTweetPerform;
+
+ @Autowired
+ public TweetPersistorImpl(TaskService taskService, StoreOneTweetPerform storeOneTweetPerform) {
+ this.taskService = taskService;
+ this.storeOneTweetPerform = storeOneTweetPerform;
+ }
+
+ @Override
+ public Message persistTweet(Message incomingUserMessage) {
+ TweetFromTwitter receivedMessage = incomingUserMessage.getPayload();
+ long id = receivedMessage.getTaskId();
+ Task task = taskService.findById(id);
+ Tweet tweet = storeOneTweetPerform.storeOneTweetPerform(receivedMessage.getTweet(),task);
+ TweetFromTwitter newTweetMsg = new TweetFromTwitter(id,tweet,receivedMessage.getTweetFromTwitter(),true,true);
+ Message mqMessageOut = MessageBuilder.withPayload(newTweetMsg)
+ .copyHeaders(incomingUserMessage.getHeaders())
+ .setHeader("persisted",Boolean.TRUE)
+ .build();
+ return mqMessageOut;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetTransformatorImpl.java
new file mode 100644
index 00000000..05988f38
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/TweetTransformatorImpl.java
@@ -0,0 +1,40 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.Tweet;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.TweetTransformator;
+import org.woehlke.twitterwall.scheduled.mq.msg.TweetFromTwitter;
+import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService;
+
+@Component("mqTweetTransformator")
+public class TweetTransformatorImpl implements TweetTransformator {
+
+ private final TweetTransformService tweetTransformService;
+
+ private final TaskService taskService;
+
+ @Autowired
+ public TweetTransformatorImpl(TweetTransformService tweetTransformService, TaskService taskService) {
+ this.tweetTransformService = tweetTransformService;
+ this.taskService = taskService;
+ }
+
+ @Override
+ public Message transformTweet(Message mqMessageIn) {
+ TweetFromTwitter inComingTweetMessage = mqMessageIn.getPayload();
+ long taskId = inComingTweetMessage.getTaskId();
+ Task task = taskService.findById(taskId);
+ Tweet myTweet = tweetTransformService.transform(inComingTweetMessage.getTweetFromTwitter(),task);
+ boolean tansformed = true;
+ TweetFromTwitter retVal = new TweetFromTwitter(taskId,myTweet,inComingTweetMessage.getTweetFromTwitter(),tansformed);
+ Message mqMessageOut = MessageBuilder.withPayload(retVal)
+ .copyHeaders(mqMessageIn.getHeaders())
+ .build();
+ return mqMessageOut;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserFinisherImpl.java
new file mode 100644
index 00000000..1b12e187
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserFinisherImpl.java
@@ -0,0 +1,31 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.User;
+import org.woehlke.twitterwall.scheduled.mq.endoint.UserFinisher;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserResultList;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component("mqUserFinisher")
+public class UserFinisherImpl implements UserFinisher {
+
+
+ @Override
+ public UserResultList finish(Message> incomingMessageList) {
+ long taskId = 0L;
+ List users = new ArrayList<>();
+ List userMessageList = incomingMessageList.getPayload();
+ if(userMessageList.size()>0) {
+ taskId = userMessageList.get(0).getTaskId();
+ }
+ for(UserMessage msg :userMessageList){
+ users.add(msg.getUser());
+ }
+ UserResultList userResultList = new UserResultList(taskId,users);
+ return userResultList;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserPersistorImpl.java
new file mode 100644
index 00000000..296f4d17
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserPersistorImpl.java
@@ -0,0 +1,35 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+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.service.TaskService;
+import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess;
+import org.woehlke.twitterwall.scheduled.mq.endoint.UserPersistor;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
+
+@Component("mqUserPersistor")
+public class UserPersistorImpl implements UserPersistor {
+
+ private final TaskService taskService;
+
+ private final StoreUserProcess storeUserProcess;
+
+ @Autowired
+ public UserPersistorImpl(TaskService taskService, StoreUserProcess storeUserProcess) {
+ this.taskService = taskService;
+ this.storeUserProcess = storeUserProcess;
+ }
+
+ @Override
+ public UserMessage persistUser(Message incomingUserMessage) {
+ UserMessage receivedMessage = incomingUserMessage.getPayload();
+ long id = receivedMessage.getTwitterProfileMessage().getTaskMessage().getTaskId();
+ Task task = taskService.findById(id);
+ User user = storeUserProcess.storeUserProcess(receivedMessage.getUser(),task);
+ UserMessage userMessage = new UserMessage(user,id);
+ return userMessage;
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserTransformatorImpl.java
new file mode 100644
index 00000000..7a7b548f
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UserTransformatorImpl.java
@@ -0,0 +1,39 @@
+package org.woehlke.twitterwall.scheduled.mq.endoint.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+import org.woehlke.twitterwall.oodm.entities.Task;
+import org.woehlke.twitterwall.oodm.entities.User;
+import org.woehlke.twitterwall.oodm.service.TaskService;
+import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService;
+import org.woehlke.twitterwall.scheduled.mq.endoint.UserTransformator;
+import org.woehlke.twitterwall.scheduled.mq.msg.TwitterProfileMessage;
+import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
+
+@Component("mqUserTransformator")
+public class UserTransformatorImpl implements UserTransformator {
+
+ private final UserTransformService userTransformService;
+
+ private final TaskService taskService;
+
+ @Autowired
+ public UserTransformatorImpl(UserTransformService userTransformService, TaskService taskService) {
+ this.userTransformService = userTransformService;
+ this.taskService = taskService;
+ }
+
+ @Override
+ public Message transformUser(Message mqMessageIn) {
+ TwitterProfileMessage receivedMessage = mqMessageIn.getPayload();
+ long id = receivedMessage.getTaskMessage().getTaskId();
+ Task task = taskService.findById(id);
+ User user = userTransformService.transform(receivedMessage.getTwitterProfile(),task);
+ UserMessage outMsg = new UserMessage(receivedMessage,user);
+ Message mqMessageOut = MessageBuilder.withPayload(outMsg).copyHeaders(mqMessageIn.getHeaders())
+ .build();
+ return mqMessageOut;
+ }
+}
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
new file mode 100644
index 00000000..6e9c5256
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java
@@ -0,0 +1,60 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+import org.woehlke.twitterwall.oodm.entities.parts.TaskType;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class TaskMessage implements Serializable {
+
+ protected final long taskId;
+ protected final TaskType taskType;
+ protected final Date timeStarted;
+
+ public TaskMessage(long taskId, TaskType taskType,Date timeStarted) {
+ this.taskId = taskId;
+ this.taskType = taskType;
+ this.timeStarted=timeStarted;
+ }
+
+ public long getTaskId() {
+ return taskId;
+ }
+
+ public TaskType getTaskType() {
+ return taskType;
+ }
+
+ public Date getTimeStarted() {
+ return timeStarted;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof TaskMessage)) return false;
+
+ TaskMessage that = (TaskMessage) o;
+
+ if (getTaskId() != that.getTaskId()) return false;
+ if (getTaskType() != that.getTaskType()) return false;
+ return getTimeStarted() != null ? getTimeStarted().equals(that.getTimeStarted()) : that.getTimeStarted() == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (getTaskId() ^ (getTaskId() >>> 32));
+ result = 31 * result + (getTaskType() != null ? getTaskType().hashCode() : 0);
+ result = 31 * result + (getTimeStarted() != null ? getTimeStarted().hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "TaskMessage{" +
+ "taskId=" + taskId +
+ ", taskType=" + taskType +
+ ", timeStarted=" + timeStarted +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TestDataForTweets.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TestDataForTweets.java
new file mode 100644
index 00000000..056c8c09
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TestDataForTweets.java
@@ -0,0 +1,4 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+public class TestDataForTweets {
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetFromTwitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetFromTwitter.java
new file mode 100644
index 00000000..386063da
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetFromTwitter.java
@@ -0,0 +1,115 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+
+import org.springframework.social.twitter.api.Tweet;
+
+import java.io.Serializable;
+
+public class TweetFromTwitter implements Serializable {
+
+ private final long taskId;
+ private final long tweetIdFromTwitter;
+ private final org.springframework.social.twitter.api.Tweet tweetFromTwitter;
+ private final org.woehlke.twitterwall.oodm.entities.Tweet tweet;
+ private final boolean transformed;
+ private final boolean persisted;
+
+ public TweetFromTwitter(long taskId,Tweet tweetFromTwitter){
+ this.taskId = taskId;
+ this.tweetFromTwitter = tweetFromTwitter;
+ this.tweetIdFromTwitter = tweetFromTwitter.getId();
+ this.tweet = null;
+ this.transformed = false;
+ this.persisted = false;
+ }
+
+ public TweetFromTwitter(long taskId, long tweetIdFromTwitter, Tweet tweetFromTwitter, org.woehlke.twitterwall.oodm.entities.Tweet tweet, boolean transformed, boolean persisted) {
+ this.taskId = taskId;
+ this.tweetIdFromTwitter = tweetIdFromTwitter;
+ this.tweetFromTwitter = tweetFromTwitter;
+ this.tweet = tweet;
+ this.transformed = transformed;
+ this.persisted = persisted;
+ }
+
+ public TweetFromTwitter(long taskId, org.woehlke.twitterwall.oodm.entities.Tweet myTweet, org.springframework.social.twitter.api.Tweet tweetFromTwitter, boolean tansformed) {
+ this.taskId = taskId;
+ this.tweetFromTwitter = tweetFromTwitter;
+ this.tweetIdFromTwitter = tweetFromTwitter.getId();
+ this.tweet = myTweet;
+ this.transformed = tansformed;
+ this.persisted = false;
+ }
+
+ public TweetFromTwitter(long taskId, org.woehlke.twitterwall.oodm.entities.Tweet tweet, Tweet tweetFromTwitter, boolean transformed, boolean persisted) {
+ this.taskId = taskId;
+ this.tweetFromTwitter = tweetFromTwitter;
+ this.tweetIdFromTwitter = tweetFromTwitter.getId();
+ this.tweet = tweet;
+ this.transformed = transformed;
+ this.persisted = persisted;
+ }
+
+ public long getTaskId() {
+ return taskId;
+ }
+
+ public long getTweetIdFromTwitter() {
+ return tweetIdFromTwitter;
+ }
+
+ public Tweet getTweetFromTwitter() {
+ return tweetFromTwitter;
+ }
+
+ public org.woehlke.twitterwall.oodm.entities.Tweet getTweet() {
+ return tweet;
+ }
+
+ public boolean isTransformed() {
+ return transformed;
+ }
+
+ public boolean isPersisted() {
+ return persisted;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ TweetFromTwitter that = (TweetFromTwitter) o;
+
+ if (taskId != that.taskId) return false;
+ if (tweetIdFromTwitter != that.tweetIdFromTwitter) return false;
+ if (transformed != that.transformed) return false;
+ if (persisted != that.persisted) return false;
+ if (tweetFromTwitter != null ? !tweetFromTwitter.equals(that.tweetFromTwitter) : that.tweetFromTwitter != null)
+ return false;
+ return tweet != null ? tweet.equals(that.tweet) : that.tweet == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (taskId ^ (taskId >>> 32));
+ result = 31 * result + (int) (tweetIdFromTwitter ^ (tweetIdFromTwitter >>> 32));
+ result = 31 * result + (tweetFromTwitter != null ? tweetFromTwitter.hashCode() : 0);
+ result = 31 * result + (tweet != null ? tweet.hashCode() : 0);
+ result = 31 * result + (transformed ? 1 : 0);
+ result = 31 * result + (persisted ? 1 : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "TweetFromTwitter{" +
+ "taskId=" + taskId +
+ ", tweetIdFromTwitter=" + tweetIdFromTwitter +
+ ", tweetFromTwitter=" + tweetFromTwitter +
+ ", tweet=" + tweet +
+ ", transformed=" + transformed +
+ ", persisted=" + persisted +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMsg.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMsg.java
new file mode 100644
index 00000000..70a0fbff
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMsg.java
@@ -0,0 +1,51 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+import org.woehlke.twitterwall.oodm.entities.Tweet;
+
+import java.io.Serializable;
+
+public class TweetMsg implements Serializable {
+
+ private final long taskId;
+ private final Tweet tweet;
+
+
+ public TweetMsg(long taskId, Tweet tweet) {
+ this.taskId = taskId;
+ this.tweet = tweet;
+ }
+
+ public long getTaskId() {
+ return taskId;
+ }
+
+ public Tweet getTweet() {
+ return tweet;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ TweetMsg tweetMsg = (TweetMsg) o;
+
+ if (taskId != tweetMsg.taskId) return false;
+ return tweet != null ? tweet.equals(tweetMsg.tweet) : tweetMsg.tweet == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (taskId ^ (taskId >>> 32));
+ result = 31 * result + (tweet != null ? tweet.hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "TweetMsg{" +
+ "taskId=" + taskId +
+ ", tweet=" + tweet +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetResultList.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetResultList.java
new file mode 100644
index 00000000..7858447d
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetResultList.java
@@ -0,0 +1,51 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+import org.woehlke.twitterwall.oodm.entities.Tweet;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class TweetResultList implements Serializable {
+
+ private final long taskId;
+ private final List tweetList;
+
+ public TweetResultList(long taskId, List tweetList) {
+ this.taskId = taskId;
+ this.tweetList = tweetList;
+ }
+
+ public long getTaskId() {
+ return taskId;
+ }
+
+ public List getTweetList() {
+ return tweetList;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ TweetResultList that = (TweetResultList) o;
+
+ if (taskId != that.taskId) return false;
+ return tweetList != null ? tweetList.equals(that.tweetList) : that.tweetList == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (taskId ^ (taskId >>> 32));
+ result = 31 * result + (tweetList != null ? tweetList.hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "TweetResultList{" +
+ "taskId=" + taskId +
+ ", tweetList=" + tweetList +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TwitterProfileMessage.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TwitterProfileMessage.java
new file mode 100644
index 00000000..6eea4d56
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TwitterProfileMessage.java
@@ -0,0 +1,67 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+import org.springframework.social.twitter.api.TwitterProfile;
+
+import java.io.Serializable;
+
+public class TwitterProfileMessage implements Serializable {
+
+ private final TaskMessage taskMessage;
+ private final String screenName;
+ private final TwitterProfile twitterProfile;
+
+ public TwitterProfileMessage(TaskMessage taskMessage, TwitterProfile twitterProfile){
+ this.taskMessage = taskMessage;
+ this.screenName = twitterProfile.getScreenName();
+ this.twitterProfile = twitterProfile;
+ }
+
+ public TwitterProfileMessage(TaskMessage taskMessage, String screenName, TwitterProfile twitterProfile) {
+ this.taskMessage = taskMessage;
+ this.screenName = screenName;
+ this.twitterProfile = twitterProfile;
+ }
+
+ public String getScreenName() {
+ return screenName;
+ }
+
+ public TwitterProfile getTwitterProfile() {
+ return twitterProfile;
+ }
+
+ public TaskMessage getTaskMessage() {
+ return taskMessage;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof TwitterProfileMessage)) return false;
+
+ TwitterProfileMessage that = (TwitterProfileMessage) o;
+
+ if (getTaskMessage() != null ? !getTaskMessage().equals(that.getTaskMessage()) : that.getTaskMessage() != null)
+ return false;
+ if (getScreenName() != null ? !getScreenName().equals(that.getScreenName()) : that.getScreenName() != null)
+ return false;
+ return getTwitterProfile() != null ? getTwitterProfile().equals(that.getTwitterProfile()) : that.getTwitterProfile() == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getTaskMessage() != null ? getTaskMessage().hashCode() : 0;
+ result = 31 * result + (getScreenName() != null ? getScreenName().hashCode() : 0);
+ result = 31 * result + (getTwitterProfile() != null ? getTwitterProfile().hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "TwitterProfileMessage{" +
+ "taskMessage=" + taskMessage +
+ ", screenName='" + screenName + '\'' +
+ ", twitterProfile=" + twitterProfile +
+ '}';
+ }
+}
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
new file mode 100644
index 00000000..72aa88fe
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java
@@ -0,0 +1,66 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+import org.woehlke.twitterwall.oodm.entities.User;
+
+import java.io.Serializable;
+
+public class UserMessage implements Serializable {
+
+ private final long taskId;
+ private final TwitterProfileMessage twitterProfileMessage;
+ private final User user;
+
+ public UserMessage(User user,long taskId){
+ this.twitterProfileMessage = null;
+ this.user = user;
+ this.taskId = taskId;
+ }
+
+ public UserMessage(TwitterProfileMessage twitterProfileMessage, User user) {
+ this.twitterProfileMessage = twitterProfileMessage;
+ this.user = user;
+ this.taskId = twitterProfileMessage.getTaskMessage().taskId;
+ }
+
+ public TwitterProfileMessage getTwitterProfileMessage() {
+ return twitterProfileMessage;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public long getTaskId() {
+ return taskId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof UserMessage)) return false;
+
+ UserMessage that = (UserMessage) o;
+
+ if (getTaskId() != that.getTaskId()) return false;
+ if (getTwitterProfileMessage() != null ? !getTwitterProfileMessage().equals(that.getTwitterProfileMessage()) : that.getTwitterProfileMessage() != null)
+ return false;
+ return getUser() != null ? getUser().equals(that.getUser()) : that.getUser() == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (getTaskId() ^ (getTaskId() >>> 32));
+ result = 31 * result + (getTwitterProfileMessage() != null ? getTwitterProfileMessage().hashCode() : 0);
+ result = 31 * result + (getUser() != null ? getUser().hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "UserMessage{" +
+ "taskId=" + taskId +
+ ", twitterProfileMessage=" + twitterProfileMessage +
+ ", user=" + user +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserResultList.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserResultList.java
new file mode 100644
index 00000000..201d9041
--- /dev/null
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserResultList.java
@@ -0,0 +1,51 @@
+package org.woehlke.twitterwall.scheduled.mq.msg;
+
+import org.woehlke.twitterwall.oodm.entities.User;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class UserResultList implements Serializable {
+
+ private final long taskId;
+ private final List userList;
+
+ public UserResultList(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 UserResultList)) return false;
+
+ UserResultList that = (UserResultList) o;
+
+ if (getTaskId() != that.getTaskId()) return false;
+ return getUserList() != null ? getUserList().equals(that.getUserList()) : that.getUserList() == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = (int) (getTaskId() ^ (getTaskId() >>> 32));
+ result = 31 * result + (getUserList() != null ? getUserList().hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "UserResultList{" +
+ "taskId=" + taskId +
+ ", userList=" + userList +
+ '}';
+ }
+}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/backend/TwitterApiService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/backend/TwitterApiService.java
index 8c189d7e..c5ce34c3 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/backend/TwitterApiService.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/backend/TwitterApiService.java
@@ -14,6 +14,8 @@ public interface TwitterApiService {
Tweet findOneTweetById(long id);
+ List getUserProfilesForTwitterIds(long... userProfileTwitterIds);
+
TwitterProfile getUserProfileForTwitterId(long userProfileTwitterId);
TwitterProfile getUserProfileForScreenName(String screenName);
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/backend/impl/TwitterApiServiceImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/backend/impl/TwitterApiServiceImpl.java
index c69e63f2..c886dba8 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/backend/impl/TwitterApiServiceImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/backend/impl/TwitterApiServiceImpl.java
@@ -51,9 +51,19 @@ public Tweet findOneTweetById(long id) {
return result;
}
+ @Override
+ public List getUserProfilesForTwitterIds(long... userProfileTwitterIds) {
+ String msg = MSG+"getUserProfileForTwitterId: "+userProfileTwitterIds;
+ log.debug(msg);
+ List result = getTwitterProxy().userOperations().getUsers(userProfileTwitterIds);
+ msg += " result: ";
+ log.debug(msg+" size: "+result.size());
+ return result;
+ }
+
@Override
public TwitterProfile getUserProfileForTwitterId(long userProfileTwitterId) {
- String msg = MSG+"findOneTweetById: "+userProfileTwitterId;
+ String msg = MSG+"getUserProfileForTwitterId: "+userProfileTwitterId;
log.debug(msg);
TwitterProfile result = getTwitterProxy().userOperations().getUserProfile(userProfileTwitterId);
msg += " result: ";
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/CreateTestDataImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/CreateTestDataImpl.java
index faebbda1..603eb2fc 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/CreateTestDataImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/CreateTestDataImpl.java
@@ -16,11 +16,13 @@
import org.woehlke.twitterwall.oodm.entities.Task;
import org.woehlke.twitterwall.oodm.entities.Tweet;
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.service.TaskService;
import org.woehlke.twitterwall.oodm.service.UserService;
import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
import org.woehlke.twitterwall.scheduled.service.facade.CreateTestData;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile;
@@ -63,8 +65,9 @@ public class CreateTestDataImpl implements CreateTestData {
public org.springframework.data.domain.Page getTestDataTweets(){
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg = "getTestDataTweets: ";
- Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_TWEETS);
+ Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_TWEETS,countedEntities);
List latest = new ArrayList<>();
try {
log.info(msg + "--------------------------------------------------------------------");
@@ -106,8 +109,9 @@ public org.springframework.data.domain.Page getTestDataTweets(){
public org.springframework.data.domain.Page getTestDataUser(){
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg = "getTestDataUser: ";
- Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_USER);
+ Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_USER,countedEntities);
List user = new ArrayList<>();
try {
int loopId = 0;
@@ -129,7 +133,7 @@ public org.springframework.data.domain.Page tweetsForSearchQuery = null;
@@ -76,15 +79,16 @@ public void fetchTweetsFromTwitterSearch() {
} catch (Exception e){
e.printStackTrace();
log.error(msg+subCounter+e);
- task = taskService.warn(task,e,msg+subCounter);
+ task = taskService.warn(task,e,msg+subCounter,countedEntities);
}
}
}
}
}
+ countedEntities = countedEntitiesService.countAll();
String report = msg+" processed: "+loopId+" [ "+allLoop+" ] ";
- taskService.event(task,report);
- taskService.done(task);
+ taskService.event(task,report,countedEntities);
+ taskService.done(task,countedEntities);
log.debug(msg+"---------------------------------------");
log.debug(msg+ "DONE fetchTweetsFromTwitterSearch: The time is now {}", dateFormat.format(new Date()));
log.debug(msg+"---------------------------------------");
@@ -103,11 +107,14 @@ public void fetchTweetsFromTwitterSearch() {
private final StoreUserProfileForScreenName storeUserProfileForScreenName;
+ private final CountedEntitiesService countedEntitiesService;
+
@Autowired
- public FetchTweetsFromTwitterSearchImpl(TwitterApiService twitterApiService, StoreOneTweet storeOneTweet, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName) {
+ public FetchTweetsFromTwitterSearchImpl(TwitterApiService twitterApiService, StoreOneTweet storeOneTweet, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName, CountedEntitiesService countedEntitiesService) {
this.twitterApiService = twitterApiService;
this.storeOneTweet = storeOneTweet;
this.taskService = taskService;
this.storeUserProfileForScreenName = storeUserProfileForScreenName;
+ this.countedEntitiesService = countedEntitiesService;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchUsersFromDefinedUserListImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchUsersFromDefinedUserListImpl.java
index 7b30b1d7..8704fc5e 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchUsersFromDefinedUserListImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchUsersFromDefinedUserListImpl.java
@@ -12,12 +12,14 @@
import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties;
import org.woehlke.twitterwall.conf.TwitterwallSchedulerProperties;
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.Mention;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.scheduled.service.facade.FetchUsersFromDefinedUserList;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForUserList;
@@ -35,8 +37,9 @@ public class FetchUsersFromDefinedUserListImpl implements FetchUsersFromDefinedU
@Override
public void fetchUsersFromDefinedUserList() {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg = "update Tweets: ";
- Task task = taskService.create(msg, TaskType.FETCH_USERS_FROM_DEFINED_USER_LIST);
+ Task task = taskService.create(msg, TaskType.FETCH_USERS_FROM_DEFINED_USER_LIST,countedEntities);
log.debug(msg + "---------------------------------------");
log.debug(msg + "START The time is now {}", dateFormat.format(new Date()));
log.debug(msg + "---------------------------------------");
@@ -59,14 +62,15 @@ public void fetchUsersFromDefinedUserList() {
String subCounter = counter+" ( "+subLoopId+ "from "+subNumber+" ) ["+allLoop+"] ";
User userFromMention = storeUserProfileForScreenName.storeUserProfileForScreenName(mention.getScreenName(),task);
if(userFromMention == null){
- taskService.warn(task,msg+subCounter);
+ taskService.warn(task,msg+subCounter,countedEntities);
}
log.debug(msg+subCounter+userFromMention.toString());
}
}
+ countedEntities = countedEntitiesService.countAll();
String report = msg+" processed: "+loopId+" [ "+allLoop+" ] ";
- taskService.event(task,report);
- taskService.done(task);
+ taskService.event(task,report,countedEntities);
+ taskService.done(task,countedEntities);
log.debug(msg + "---------------------------------------");
log.debug(msg + "DONE The time is now {}", dateFormat.format(new Date()));
log.debug(msg + "---------------------------------------");
@@ -93,8 +97,10 @@ public void fetchUsersFromDefinedUserList() {
private final TwitterProperties twitterProperties;
+ private final CountedEntitiesService countedEntitiesService;
+
@Autowired
- public FetchUsersFromDefinedUserListImpl(StoreUserProfileForUserList storeUserProfileForUserList, TwitterApiService twitterApiService, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName, TwitterwallBackendProperties twitterwallBackendProperties, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties) {
+ public FetchUsersFromDefinedUserListImpl(StoreUserProfileForUserList storeUserProfileForUserList, TwitterApiService twitterApiService, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName, TwitterwallBackendProperties twitterwallBackendProperties, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties, CountedEntitiesService countedEntitiesService) {
this.storeUserProfileForUserList = storeUserProfileForUserList;
this.twitterApiService = twitterApiService;
this.taskService = taskService;
@@ -103,5 +109,6 @@ public FetchUsersFromDefinedUserListImpl(StoreUserProfileForUserList storeUserPr
this.twitterwallSchedulerProperties = twitterwallSchedulerProperties;
this.twitterwallFrontendProperties = twitterwallFrontendProperties;
this.twitterProperties = twitterProperties;
+ this.countedEntitiesService = countedEntitiesService;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/StoreTwitterProfileForProxyMentionForUserImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/StoreTwitterProfileForProxyMentionForUserImpl.java
index cd82df76..b35201fe 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/StoreTwitterProfileForProxyMentionForUserImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/StoreTwitterProfileForProxyMentionForUserImpl.java
@@ -8,11 +8,13 @@
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.parts.Entities;
import org.woehlke.twitterwall.oodm.service.*;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
import org.woehlke.twitterwall.scheduled.service.facade.StoreTwitterProfileForProxyMentionForUser;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentUrl;
import org.woehlke.twitterwall.scheduled.service.persist.impl.StoreEntitiesProcessImpl;
import org.woehlke.twitterwall.scheduled.service.persist.impl.StoreUserProcessImpl;
@@ -32,6 +34,7 @@ public class StoreTwitterProfileForProxyMentionForUserImpl implements StoreTwitt
@Override
public User storeTwitterProfileForProxyMentionForUser(Mention mention, Task task) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg = "storeTwitterProfileForProxyMentionForUser:";
String screenName = mention.getScreenName();
User foundUser = null;
@@ -43,7 +46,7 @@ public User storeTwitterProfileForProxyMentionForUser(Mention mention, Task task
try {
twitterProfile = twitterApiService.getUserProfileForScreenName(screenName);
} catch (ApiException twitterApiException) {
- taskService.error(task,twitterApiException, msg);
+ taskService.error(task,twitterApiException, msg,countedEntities);
log.error(msg+twitterApiException.getMessage());
}
if(twitterProfile!=null){
@@ -145,7 +148,9 @@ private User storeUserProcess(User user, Task task){
private final CreatePersistentUrl createPersistentUrl;
- public StoreTwitterProfileForProxyMentionForUserImpl(UserService userService, TwitterApiService twitterApiService, TaskService taskService, UserTransformService userTransformService, UrlService urlService, HashTagService hashTagService, MentionService mentionService, MediaService mediaService, TickerSymbolService tickerSymbolService, CreatePersistentUrl createPersistentUrl) {
+ private final CountedEntitiesService countedEntitiesService;
+
+ public StoreTwitterProfileForProxyMentionForUserImpl(UserService userService, TwitterApiService twitterApiService, TaskService taskService, UserTransformService userTransformService, UrlService urlService, HashTagService hashTagService, MentionService mentionService, MediaService mediaService, TickerSymbolService tickerSymbolService, CreatePersistentUrl createPersistentUrl, CountedEntitiesService countedEntitiesService) {
this.userService = userService;
this.twitterApiService = twitterApiService;
this.taskService = taskService;
@@ -156,5 +161,6 @@ public StoreTwitterProfileForProxyMentionForUserImpl(UserService userService, Tw
this.mediaService = mediaService;
this.tickerSymbolService = tickerSymbolService;
this.createPersistentUrl = createPersistentUrl;
+ this.countedEntitiesService = countedEntitiesService;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateTweetsImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateTweetsImpl.java
index 20935a32..c0707f7a 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateTweetsImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateTweetsImpl.java
@@ -18,12 +18,14 @@
import org.woehlke.twitterwall.conf.TwitterwallSchedulerProperties;
import org.woehlke.twitterwall.oodm.entities.User;
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.Mention;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
import org.woehlke.twitterwall.oodm.service.TweetService;
import org.woehlke.twitterwall.scheduled.service.facade.UpdateTweets;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName;
@@ -42,11 +44,12 @@ public class UpdateTweetsImpl implements UpdateTweets {
@Override
public void updateTweets() {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg = "update Tweets: ";
log.debug(msg + "---------------------------------------");
log.debug(msg + "START: The time is now {}", dateFormat.format(new Date()));
log.debug(msg + "---------------------------------------");
- Task task = taskService.create(msg, TaskType.UPDATE_TWEETS);
+ Task task = taskService.create(msg, TaskType.UPDATE_TWEETS,countedEntities);
int loopId = 0;
int allLoop = 0;
try {
@@ -77,7 +80,7 @@ public void updateTweets() {
User userFromMention = storeUserProfileForScreenName.storeUserProfileForScreenName(mention.getScreenName(), task);
log.debug(msg + subCounter + userFromMention.toString());
} catch (IllegalArgumentException exe) {
- task = taskService.warn(task, exe, msg + subCounter);
+ task = taskService.warn(task, exe, msg + subCounter,countedEntities);
}
}
log.debug(msg + "-----------------------------------------------------");
@@ -86,10 +89,10 @@ public void updateTweets() {
log.debug(msg + "Done SLEEP for " + twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls() + " ms " + counter);
log.debug(msg + "-----------------------------------------------------");
} catch (RateLimitExceededException e) {
- task = taskService.error(task, e, msg + counter);
+ task = taskService.error(task, e, msg + counter,countedEntities);
throw e;
} catch (InterruptedException ex) {
- task = taskService.warn(task, ex, msg + counter);
+ task = taskService.warn(task, ex, msg + counter,countedEntities);
} finally {
log.debug(msg + "---------------------------------------");
}
@@ -97,13 +100,14 @@ public void updateTweets() {
pageRequest = pageRequest.next();
} while (hasNext);
} catch (ResourceAccessException e) {
- task = taskService.error(task,e,msg + " check your Network Connection!");
+ task = taskService.error(task,e,msg + " check your Network Connection!",countedEntities);
} catch (RateLimitExceededException e) {
- task = taskService.error(task,e,msg);
+ task = taskService.error(task,e,msg,countedEntities);
}
+ countedEntities = countedEntitiesService.countAll();
String report = msg+" processed: "+loopId+" [ "+allLoop+" ] ";
- this.taskService.event(task,report);
- this.taskService.done(task);
+ this.taskService.event(task,report,countedEntities);
+ this.taskService.done(task,countedEntities);
log.debug(msg + "---------------------------------------");
log.debug(msg + "DONE: The time is now {}", dateFormat.format(new Date()));
log.debug(msg + "---------------------------------------");
@@ -132,8 +136,10 @@ public void updateTweets() {
private final TwitterProperties twitterProperties;
+ private final CountedEntitiesService countedEntitiesService;
+
@Autowired
- public UpdateTweetsImpl(TwitterApiService twitterApiService, TweetService tweetService, StoreOneTweet storeOneTweet, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName, TwitterwallBackendProperties twitterwallBackendProperties, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties) {
+ public UpdateTweetsImpl(TwitterApiService twitterApiService, TweetService tweetService, StoreOneTweet storeOneTweet, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName, TwitterwallBackendProperties twitterwallBackendProperties, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties, CountedEntitiesService countedEntitiesService) {
this.twitterApiService = twitterApiService;
this.tweetService = tweetService;
this.storeOneTweet = storeOneTweet;
@@ -143,6 +149,7 @@ public UpdateTweetsImpl(TwitterApiService twitterApiService, TweetService tweetS
this.twitterwallSchedulerProperties = twitterwallSchedulerProperties;
this.twitterwallFrontendProperties = twitterwallFrontendProperties;
this.twitterProperties = twitterProperties;
+ this.countedEntitiesService = countedEntitiesService;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesFromMentionsImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesFromMentionsImpl.java
index db779b66..5160f017 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesFromMentionsImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesFromMentionsImpl.java
@@ -16,6 +16,7 @@
import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties;
import org.woehlke.twitterwall.conf.TwitterwallSchedulerProperties;
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.service.TaskService;
import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
@@ -23,6 +24,7 @@
import org.woehlke.twitterwall.oodm.entities.Mention;
import org.woehlke.twitterwall.oodm.service.MentionService;
import org.woehlke.twitterwall.scheduled.service.facade.UpdateUserProfilesFromMentions;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName;
@@ -41,9 +43,10 @@ public class UpdateUserProfilesFromMentionsImpl implements UpdateUserProfilesFro
@Override
public void updateUserProfilesFromMentions(){
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg = "update User Profiles from Mentions: ";
log.debug(msg + "START - The time is now {}", dateFormat.format(new Date()));
- Task task = this.taskService.create(msg, TaskType.UPDATE_USER_PROFILES_FROM_MENTIONS);
+ Task task = this.taskService.create(msg, TaskType.UPDATE_USER_PROFILES_FROM_MENTIONS,countedEntities);
int allLoop = 0;
int loopId = 0;
boolean hasNext=true;
@@ -62,7 +65,7 @@ public void updateUserProfilesFromMentions(){
try {
twitterProfile = this.twitterApiService.getUserProfileForScreenName(screenName);
} catch (RateLimitExceededException e) {
- task = taskService.error(task, e, msg);
+ task = taskService.error(task, e, msg,countedEntities);
}
if (twitterProfile != null) {
User user = storeUserProfile.storeUserProfile(twitterProfile, task);
@@ -100,9 +103,10 @@ public void updateUserProfilesFromMentions(){
}
pageRequest = pageRequest.next();
}
+ countedEntities = countedEntitiesService.countAll();
String report = msg+" processed: "+loopId+" [ "+allLoop+" ] ";
- this.taskService.event(task,report);
- this.taskService.done(task);
+ this.taskService.event(task,report,countedEntities);
+ this.taskService.done(task,countedEntities);
log.debug(msg +"---------------------------------------");
log.debug(msg + "DONE - The time is now {}", dateFormat.format(new Date()));
log.debug(msg+"---------------------------------------");
@@ -131,8 +135,10 @@ public void updateUserProfilesFromMentions(){
private final TwitterProperties twitterProperties;
+ private final CountedEntitiesService countedEntitiesService;
+
@Autowired
- public UpdateUserProfilesFromMentionsImpl(TwitterApiService twitterApiService, StoreUserProfile storeUserProfile, MentionService mentionService, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName, TwitterwallBackendProperties twitterwallBackendProperties, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties) {
+ public UpdateUserProfilesFromMentionsImpl(TwitterApiService twitterApiService, StoreUserProfile storeUserProfile, MentionService mentionService, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName, TwitterwallBackendProperties twitterwallBackendProperties, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties, CountedEntitiesService countedEntitiesService) {
this.twitterApiService = twitterApiService;
this.storeUserProfile = storeUserProfile;
this.mentionService = mentionService;
@@ -142,5 +148,6 @@ public UpdateUserProfilesFromMentionsImpl(TwitterApiService twitterApiService, S
this.twitterwallSchedulerProperties = twitterwallSchedulerProperties;
this.twitterwallFrontendProperties = twitterwallFrontendProperties;
this.twitterProperties = twitterProperties;
+ this.countedEntitiesService = countedEntitiesService;
}
}
diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesImpl.java
index 9e8c4c4b..4a9e91d6 100644
--- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesImpl.java
+++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesImpl.java
@@ -16,6 +16,7 @@
import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties;
import org.woehlke.twitterwall.conf.TwitterwallSchedulerProperties;
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.Mention;
import org.woehlke.twitterwall.oodm.service.TaskService;
@@ -23,6 +24,7 @@
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.oodm.service.UserService;
import org.woehlke.twitterwall.scheduled.service.facade.UpdateUserProfiles;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName;
@@ -40,12 +42,13 @@ public class UpdateUserProfilesImpl implements UpdateUserProfiles {
@Override
public void updateUserProfiles(){
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg = "update User Profiles From ProfileId: ";
log.debug(msg+"---------------------------------------");
log.debug(msg + "START - The time is now {}", dateFormat.format(new Date()));
int allLoop = 0;
int loopId = 0;
- Task task = this.taskService.create(msg, TaskType.UPDATE_USER_PROFILES);
+ Task task = this.taskService.create(msg, TaskType.UPDATE_USER_PROFILES,countedEntities);
boolean hasNext=true;
Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, twitterProperties.getPageSize());
while (hasNext) {
@@ -61,7 +64,7 @@ public void updateUserProfiles(){
try {
userProfile = twitterApiService.getUserProfileForTwitterId(userProfileTwitterId);
} catch (RateLimitExceededException e) {
- this.taskService.warn(task, e, msg);
+ this.taskService.warn(task, e, msg,countedEntities);
}
User user = storeUserProfile.storeUserProfile(userProfile, task);
if(user!=null){
@@ -77,7 +80,7 @@ public void updateUserProfiles(){
User userFromMention = storeUserProfileForScreenName.storeUserProfileForScreenName(mention.getScreenName(), task);
log.debug(msg + subCounter + userFromMention.toString());
} catch (IllegalArgumentException exe) {
- this.taskService.warn(task, exe, msg + subCounter);
+ this.taskService.warn(task, exe, msg + subCounter,countedEntities);
}
}
log.debug(msg + user.toString());
@@ -96,9 +99,10 @@ public void updateUserProfiles(){
}
pageRequest = pageRequest.next();
}
+ countedEntities = countedEntitiesService.countAll();
String report = msg+" processed: "+loopId+" [ "+allLoop+" ] ";
- taskService.event(task,report);
- this.taskService.done(task);
+ taskService.event(task,report,countedEntities);
+ this.taskService.done(task,countedEntities);
log.debug(msg +"---------------------------------------");
log.debug(msg + "DONE - The time is now {}", dateFormat.format(new Date()));
log.debug(msg+"---------------------------------------");
@@ -126,8 +130,10 @@ public void updateUserProfiles(){
private final StoreUserProfileForScreenName storeUserProfileForScreenName;
+ private final CountedEntitiesService countedEntitiesService;
+
@Autowired
- public UpdateUserProfilesImpl(TwitterwallBackendProperties twitterwallBackendProperties, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties, StoreUserProfile storeUserProfile, TwitterApiService twitterApiService, UserService userService, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName) {
+ public UpdateUserProfilesImpl(TwitterwallBackendProperties twitterwallBackendProperties, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties, StoreUserProfile storeUserProfile, TwitterApiService twitterApiService, UserService userService, TaskService taskService, StoreUserProfileForScreenName storeUserProfileForScreenName, CountedEntitiesService countedEntitiesService) {
this.twitterwallBackendProperties = twitterwallBackendProperties;
this.twitterwallSchedulerProperties = twitterwallSchedulerProperties;
this.twitterwallFrontendProperties = twitterwallFrontendProperties;
@@ -137,5 +143,6 @@ public UpdateUserProfilesImpl(TwitterwallBackendProperties twitterwallBackendPro
this.userService = userService;
this.taskService = taskService;
this.storeUserProfileForScreenName = storeUserProfileForScreenName;
+ this.countedEntitiesService = countedEntitiesService;
}
}
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 5deae1b1..ca79dfb8 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
@@ -57,12 +57,12 @@ public Entities storeEntitiesProcess(Entities entities, Task task) {
if(mention.isValid()){
Mention mentionPers =mentionService.store(mention, task);
mentions.add(mentionPers);
- } else if(mention.isRawMentionFromUserDescription()){
+ }/* else if(mention.isRawMentionFromUserDescription()){
Mention mentionPers = createPersistentMention.getPersistentMentionAndUserFor(mention,task);
if((mentionPers != null) && mentionPers.isValid()){
mentions.add(mentionPers);
}
- }
+ }*/
}
for(Media medium:entities.getMedia()){
if(medium.isValid()) {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index b93c5ae5..47516017 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -32,17 +32,17 @@ spring:
name: @project.name@
datasource:
driverClassName: org.postgresql.Driver
- initialSize: 5
- max-total: 70
- maxActive: 60
- maxIdle: 5
- minIdle: 2
+ #initialSize: 5
+ #max-total: 70
+ #maxActive: 60
+ #maxIdle: 5
+ #minIdle: 2
platform: POSTGRESQL
- removeAbandoned: true
- tomcat:
- max-active: 50
- max-wait: 10000
- test-on-borrow: true
+ #removeAbandoned: true
+ #tomcat:
+ #max-active: 200
+ #max-wait: 100000
+ #test-on-borrow: true
url: ${DATABASE_URL}
devtools:
livereload:
@@ -54,7 +54,7 @@ spring:
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQL94Dialect
- show-sql: false
+ show-sql: true
template:
cache: false
thymeleaf:
@@ -86,6 +86,14 @@ twitterwall:
pageSize: 12
menuAppName: ${TWITTERWALL_APP_NAME}
theme: ${TWITTERWALL_THEME}
+ mq:
+ starttask:
+ time:
+ fetchTweetsFromTwitterSearch: 3600000 # One Hour
+ fetchUsersFromDefinedUserList: 43200000 # 12 Hours
+ updateTweets: 43200000 # 12 Hours
+ updateUserProfiles: 43200000 # 12 Hours
+ updateUserProfilesFromMentions: 3600000 # One Hour
scheduler:
allowFetchTweetsFromTwitterSearch: ${TWITTERWALL_SCHEDULER_ALLOW_SEARCH}
allowUpdateTweets: ${TWITTERWALL_SCHEDULER_ALLOW_UPDATE_TWEETS}
@@ -109,12 +117,32 @@ twitterwall:
- 876510758632386563
- 876496934676180992
idTwitterToFetchForUserControllerTest:
- - 876433563561938944 #t3c_berlin
- - 876456051016597504 #Codemonkey1988
- - 876420491329892354 #Walter_kran
- - 876425220147564544 #tobenschmidt
- - 876819177746649088 #Oliver1973
- - 876514968933478400 #wowa_TYPO3
- - 876441863191920641 #dirscherl17
- - 876441015523192832 #Markus306
- - 876440419416109056 #mattLefaux
+ #t3c_berlin
+ - 876433563561938944
+ #Codemonkey1988
+ - 876456051016597504
+ #Walter_kran
+ - 876420491329892354
+ #tobenschmidt
+ - 876425220147564544
+ #Oliver1973
+ - 876819177746649088
+ #wowa_TYPO3
+ - 876514968933478400
+ #dirscherl17
+ - 876441863191920641
+ #Markus306
+ - 876441015523192832
+ #mattLefaux
+ - 876440419416109056
+ screenNamesToFetchForUserControllerTest:
+ - t3c_berlin
+ - Codemonkey1988
+ - Walter_kran
+ - tobenschmidt
+ - Oliver1973
+ - wowa_TYPO3
+ - dirscherl17
+ - Markus306
+ - mattLefaux
+
diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml
new file mode 100644
index 00000000..70ad9b2e
--- /dev/null
+++ b/src/main/resources/integration.xml
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/oauth.properties b/src/main/resources/oauth.properties
new file mode 100644
index 00000000..62f13a1a
--- /dev/null
+++ b/src/main/resources/oauth.properties
@@ -0,0 +1,4 @@
+twitter.oauth.consumerKey=${TWITTER_CONSUMER_KEY}
+twitter.oauth.consumerSecret=${TWITTER_CONSUMER_SECRET}
+twitter.oauth.accessToken=${TWITTER_ACCESS_TOKEN}
+twitter.oauth.accessTokenSecret=${TWITTER_ACCESS_TOKEN_SECRET}
diff --git a/src/test/java/org/woehlke/twitterwall/PrepareDataTestImpl.java b/src/test/java/org/woehlke/twitterwall/PrepareDataTestImpl.java
index b61ffff7..b16c25e0 100644
--- a/src/test/java/org/woehlke/twitterwall/PrepareDataTestImpl.java
+++ b/src/test/java/org/woehlke/twitterwall/PrepareDataTestImpl.java
@@ -15,10 +15,12 @@
import org.woehlke.twitterwall.frontend.controller.TestControllerTest;
import org.woehlke.twitterwall.oodm.entities.Tweet;
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.service.UserService;
import org.woehlke.twitterwall.oodm.service.TaskService;
import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile;
@@ -36,7 +38,7 @@ public class PrepareDataTestImpl implements PrepareDataTest {
private static final Logger log = LoggerFactory.getLogger(TestControllerTest.class);
@Autowired
- public PrepareDataTestImpl(TwitterApiService twitterApiService, StoreOneTweet storeOneTweet, StoreUserProfile storeUserProfile, UserService userService, TaskService taskService, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties) {
+ public PrepareDataTestImpl(TwitterApiService twitterApiService, StoreOneTweet storeOneTweet, StoreUserProfile storeUserProfile, UserService userService, TaskService taskService, TwitterwallSchedulerProperties twitterwallSchedulerProperties, TwitterwallFrontendProperties twitterwallFrontendProperties, TwitterProperties twitterProperties, CountedEntitiesService countedEntitiesService) {
this.twitterApiService = twitterApiService;
this.storeOneTweet = storeOneTweet;
this.storeUserProfile = storeUserProfile;
@@ -45,10 +47,12 @@ public PrepareDataTestImpl(TwitterApiService twitterApiService, StoreOneTweet st
this.twitterwallSchedulerProperties = twitterwallSchedulerProperties;
this.twitterwallFrontendProperties = twitterwallFrontendProperties;
this.twitterProperties = twitterProperties;
+ this.countedEntitiesService = countedEntitiesService;
}
public void getTestDataTweets(String msg){
- Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_TWEETS);
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_TWEETS,countedEntities);
List latest = new ArrayList<>();
try {
log.info(msg + "--------------------------------------------------------------------");
@@ -79,11 +83,12 @@ public void getTestDataTweets(String msg){
for(Tweet tweet:latest){
log.debug(msg + tweet.toString());
}
- taskService.done(task);
+ taskService.done(task,countedEntities);
}
public void getTestDataUser(String msg){
- Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_USER);
+ CountedEntities countedEntities = countedEntitiesService.countAll();
+ Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_USER,countedEntities);
List user = new ArrayList<>();
try {
int loopId = 0;
@@ -119,7 +124,8 @@ public void getTestDataUser(String msg){
for(org.woehlke.twitterwall.oodm.entities.User oneUser:user){
log.debug(msg + oneUser.toString());
}
- taskService.done(task);
+ countedEntities = countedEntitiesService.countAll();
+ taskService.done(task,countedEntities);
}
private final TwitterApiService twitterApiService;
@@ -138,6 +144,8 @@ public void getTestDataUser(String msg){
private final TwitterProperties twitterProperties;
+ private final CountedEntitiesService countedEntitiesService;
+
private void logEnv(){
log.info("--------------------------------------------------------------------");
log.info("twitter.searchQuery = "+twitterProperties.getSearchQuery());
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 c86b5c82..1a875db0 100644
--- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java
+++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java
@@ -14,8 +14,10 @@
import org.springframework.test.web.servlet.MvcResult;
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.service.TaskService;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import static org.assertj.core.api.Java6Assertions.assertThat;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
@@ -42,6 +44,9 @@ public class TaskControllerTest {
@Autowired
private TaskService taskService;
+ @Autowired
+ private CountedEntitiesService countedEntitiesService;
+
@Commit
@Test
public void controllerIsPresentTest(){
@@ -72,8 +77,9 @@ public void getAllTest()throws Exception {
@Commit
@Test
public void getTaskByIdTest() throws Exception {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg ="getTaskByIdTest: ";
- Task task = taskService.create(msg, TaskType.FETCH_TWEETS_FROM_TWITTER_SEARCH);
+ Task task = taskService.create(msg, TaskType.FETCH_TWEETS_FROM_TWITTER_SEARCH,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/test/UserServiceTestImpl.java b/src/test/java/org/woehlke/twitterwall/test/UserServiceTestImpl.java
index 7bea79a5..cfc1bb2f 100644
--- a/src/test/java/org/woehlke/twitterwall/test/UserServiceTestImpl.java
+++ b/src/test/java/org/woehlke/twitterwall/test/UserServiceTestImpl.java
@@ -10,11 +10,13 @@
import org.springframework.transaction.annotation.Transactional;
import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties;
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.service.TaskService;
import org.woehlke.twitterwall.scheduled.service.backend.TwitterApiService;
import org.woehlke.twitterwall.oodm.entities.User;
import org.woehlke.twitterwall.oodm.service.UserService;
+import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService;
import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile;
import javax.persistence.NoResultException;
@@ -44,6 +46,10 @@ public class UserServiceTestImpl implements UserServiceTest {
@Autowired
private TwitterwallFrontendProperties twitterwallFrontendProperties;
+
+ @Autowired
+ private CountedEntitiesService countedEntitiesService;
+
@Override
public User createImprintUser(){
return createUser(twitterwallFrontendProperties.getImprintScreenName());
@@ -51,8 +57,9 @@ public User createImprintUser(){
@Override
public User createUser(String screenName) {
+ CountedEntities countedEntities = countedEntitiesService.countAll();
String msg = "createUser for screenName="+screenName;
- Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_USER);
+ Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_USER,countedEntities);
log.info("-----------------------------------------");
try {
log.info("screenName = "+ screenName);
@@ -82,7 +89,8 @@ public User createUser(String screenName) {
return user;
}
} finally {
- taskService.done(task);
+ countedEntities = countedEntitiesService.countAll();
+ taskService.done(task,countedEntities);
log.info("... finally done ...");
log.info("-----------------------------------------");
}