From 9ab735ac99c2df48ec19e7be0d963d745511b80e Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Tue, 25 Jul 2017 17:19:36 +0200 Subject: [PATCH 01/13] bugfix --- .../scheduled/mq/endoint/impl/TweetFinisherImpl.java | 4 ++-- .../scheduled/mq/endoint/impl/UserFinisherImpl.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 index e2f3690f..fe724bfb 100644 --- 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 @@ -40,14 +40,14 @@ public void finishAsnyc(Message> incomingMessageList) { if(incomingMessageList.getHeaders().containsKey("task_id")){ long taskId = (Long) incomingMessageList.getHeaders().get( "task_id"); Task task = taskService.findById(taskId); - String msgDone = "Sucessfully finished task "+task.getTaskType()+"via MQ by "+ SenderType.FIRE_AND_FORGET_SENDER; + String msgDone = "Sucessfully finished task "+task.getTaskType()+" via MQ by "+ SenderType.FIRE_AND_FORGET_SENDER; taskService.done(msgDone,task,countedEntities); log.info(msgDone); } else { if(userMessageList.size()>0) { long taskId = userMessageList.get(0).getTaskId(); Task task = taskService.findById(taskId); - String msgDone = "Sucessfully finished task "+task.getTaskType()+"via MQ by "+ SenderType.FIRE_AND_FORGET_SENDER; + String msgDone = "Sucessfully finished task "+task.getTaskType()+" via MQ by "+ SenderType.FIRE_AND_FORGET_SENDER; taskService.done(task,countedEntities); log.info(msgDone); } else { 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 index 4c7bce3c..ad4018ad 100644 --- 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 @@ -44,14 +44,14 @@ public void finishAsnyc(Message> incomingMessageList) { if(incomingMessageList.getHeaders().containsKey("task_id")){ long taskId = (Long) incomingMessageList.getHeaders().get( "task_id"); Task task = taskService.findById(taskId); - String msgDone = "Sucessfully finished task "+task.getTaskType()+"via MQ by "+ SenderType.FIRE_AND_FORGET_SENDER; + String msgDone = "Sucessfully finished task "+task.getTaskType()+" via MQ by "+ SenderType.FIRE_AND_FORGET_SENDER; taskService.done(msgDone,task,countedEntities); log.info(msgDone); } else { if(userMessageList.size()>0) { long taskId = userMessageList.get(0).getTaskId(); Task task = taskService.findById(taskId); - String msgDone = "Sucessfully finished task "+task.getTaskType()+"via MQ by "+ SenderType.FIRE_AND_FORGET_SENDER; + String msgDone = "Sucessfully finished task "+task.getTaskType()+" via MQ by "+ SenderType.FIRE_AND_FORGET_SENDER; taskService.done(task,countedEntities); log.info(msgDone); } else { From 307de74c8073a8c3ac5b5d75872deb7843c38983 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Tue, 25 Jul 2017 17:37:56 +0200 Subject: [PATCH 02/13] bugfix --- .../twitterwall/scheduled/mq/endoint/impl/UpdateTweetsImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UpdateTweetsImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UpdateTweetsImpl.java index f5a82362..f0aaafbb 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UpdateTweetsImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endoint/impl/UpdateTweetsImpl.java @@ -73,7 +73,7 @@ public List splitMessage(Message message) { lfdNr = 0; for(Long tweetTwitterId : worklistTwitterIds){ lfdNr++; - log.debug("### witterApiService.findOneTweetById from Twiiter API ("+lfdNr+" of "+all+"): "+tweetTwitterId); + log.debug("### twitterApiService.findOneTweetById from Twiiter API ("+lfdNr+" of "+all+"): "+tweetTwitterId); Tweet foundTweetFromTwitter = twitterApiService.findOneTweetById(tweetTwitterId); TweetFromTwitter result = new TweetFromTwitter(task.getId(),foundTweetFromTwitter); tweets.add(result); From c866b1b6bd95fe55ade7d42a9bf00cbda2d3d6e1 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Tue, 25 Jul 2017 18:36:32 +0200 Subject: [PATCH 03/13] fixed #152, fixed #151 --- .../service/facade/CreateTestData.java | 17 -- .../facade/FetchTweetsFromTwitterSearch.java | 9 - .../facade/FetchUsersFromDefinedUserList.java | 9 - .../service/facade/UpdateTweets.java | 9 - .../service/facade/UpdateUserProfiles.java | 9 - .../UpdateUserProfilesFromMentions.java | 9 - .../facade/impl/CreateTestDataImpl.java | 218 ------------------ .../FetchTweetsFromTwitterSearchImpl.java | 120 ---------- .../FetchUsersFromDefinedUserListImpl.java | 114 --------- .../service/facade/impl/UpdateTweetsImpl.java | 155 ------------- .../UpdateUserProfilesFromMentionsImpl.java | 153 ------------ .../facade/impl/UpdateUserProfilesImpl.java | 148 ------------ ...eTwitterProfileForProxyMentionForUser.java | 2 +- .../impl/CreatePersistentMentionImpl.java | 8 +- ...tterProfileForProxyMentionForUserImpl.java | 6 +- .../controller/DomainControllerTest.java | 2 +- .../controller/HashTagControllerTest.java | 12 +- .../controller/TestControllerTest.java | 4 +- .../oodm/entities/UserDescriptionTest.java | 3 +- .../FetchTweetsFromTwitterSearchTest.java | 5 +- .../FetchUsersFromDefinedUserListTest.java | 5 +- .../service/facade/UpdateTweetsTest.java | 5 +- .../UpdateUserProfilesFromMentionsTest.java | 5 +- .../facade/UpdateUserProfilesTest.java | 5 +- 24 files changed, 32 insertions(+), 1000 deletions(-) delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/CreateTestData.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/FetchTweetsFromTwitterSearch.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/FetchUsersFromDefinedUserList.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateTweets.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfiles.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesFromMentions.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/CreateTestDataImpl.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchTweetsFromTwitterSearchImpl.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchUsersFromDefinedUserListImpl.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateTweetsImpl.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesFromMentionsImpl.java delete mode 100644 src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesImpl.java rename src/main/java/org/woehlke/twitterwall/scheduled/service/{facade => persist}/StoreTwitterProfileForProxyMentionForUser.java (85%) rename src/main/java/org/woehlke/twitterwall/scheduled/service/{facade => persist}/impl/StoreTwitterProfileForProxyMentionForUserImpl.java (95%) diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/CreateTestData.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/CreateTestData.java deleted file mode 100644 index 999f40c6..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/CreateTestData.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade; - -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; - -/** - * Created by tw on 18.07.17. - */ -public interface CreateTestData { - - org.springframework.data.domain.Page getTestDataTweets(); - - org.springframework.data.domain.Page getTestDataUser(); - - User addUserForScreenName(String screenName); - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/FetchTweetsFromTwitterSearch.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/FetchTweetsFromTwitterSearch.java deleted file mode 100644 index 5879f1d6..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/FetchTweetsFromTwitterSearch.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade; - -/** - * Created by tw on 09.07.17. - */ -public interface FetchTweetsFromTwitterSearch { - - void fetchTweetsFromTwitterSearch(); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/FetchUsersFromDefinedUserList.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/FetchUsersFromDefinedUserList.java deleted file mode 100644 index 69f91e3a..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/FetchUsersFromDefinedUserList.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade; - -/** - * Created by tw on 09.07.17. - */ -public interface FetchUsersFromDefinedUserList { - - void fetchUsersFromDefinedUserList(); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateTweets.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateTweets.java deleted file mode 100644 index c058aee0..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateTweets.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade; - -/** - * Created by tw on 09.07.17. - */ -public interface UpdateTweets { - - void updateTweets(); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfiles.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfiles.java deleted file mode 100644 index 9419775e..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfiles.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade; - -/** - * Created by tw on 09.07.17. - */ -public interface UpdateUserProfiles { - - void updateUserProfiles(); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesFromMentions.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesFromMentions.java deleted file mode 100644 index 14c3abed..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesFromMentions.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade; - -/** - * Created by tw on 09.07.17. - */ -public interface UpdateUserProfilesFromMentions { - - void updateUserProfilesFromMentions(); -} 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 deleted file mode 100644 index 603eb2fc..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/CreateTestDataImpl.java +++ /dev/null @@ -1,218 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.EmptyResultDataAccessException; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.social.RateLimitExceededException; -import org.springframework.social.twitter.api.TwitterProfile; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.conf.TwitterwallSchedulerProperties; -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; - -import javax.persistence.NoResultException; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by tw on 18.07.17. - */ -@Service -@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) -public class CreateTestDataImpl implements CreateTestData { - - /* - public final static long[] ID_TWITTER_TO_FETCH_FOR_TWEET_TEST = { - 876329508009279488L, - 876356335784394752L, - 876676270913880066L, - 876566077836337152L, - 876563676395962368L, - 876514968933478400L, - 876514568671023104L, - 876513930478313472L, - 876510758632386563L, - 876496934676180992L - }; - public final static long[] ID_TWITTER_TO_FETCH_FOR_PROFILE_CONTROLLER_TEST = { - 876433563561938944L, // t3c_berlin - 876456051016597504L, // Codemonkey1988 - 876420491329892354L, // Walter_kran - 876425220147564544L, // tobenschmidt - 876819177746649088L, // Oliver1973 - 876514968933478400L, // wowa_TYPO3 - 876441863191920641L, // dirscherl17 - 876441015523192832L, // Markus306 - 876440419416109056L // mattLefaux - }; - */ - - - public org.springframework.data.domain.Page getTestDataTweets(){ - CountedEntities countedEntities = countedEntitiesService.countAll(); - String msg = "getTestDataTweets: "; - Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_TWEETS,countedEntities); - List latest = new ArrayList<>(); - try { - log.info(msg + "--------------------------------------------------------------------"); - int loopId = 0; - for (long idTwitter : twitterwallSchedulerProperties.getFacade().getIdTwitterToFetchForTweetTest()) { - try { - org.springframework.social.twitter.api.Tweet tweet = twitterApiService.findOneTweetById(idTwitter); - loopId++; - log.info(msg + loopId); - org.woehlke.twitterwall.oodm.entities.Tweet persTweet = this.storeOneTweet.storeOneTweet(tweet, task); - log.info(msg + "--------------------------------------------------------------------"); - log.info(msg + persTweet.toString()); - log.info(msg + "--------------------------------------------------------------------"); - latest.add(persTweet); - } catch (EmptyResultDataAccessException e) { - log.warn(msg + e.getMessage()); - } catch (NoResultException e) { - log.warn(msg + e.getMessage()); - } - } - } catch (RateLimitExceededException e) { - log.info(msg + e.getMessage()); - } catch (Exception e) { - log.warn(msg + e.getMessage()); - } finally { - log.info(msg + "--------------------------------------------------------------------"); - } - int numberOfTwweets = latest.size(); - if(numberOfTwweets > 0 ) { - Pageable pageRequest = new PageRequest(0, numberOfTwweets); - org.springframework.data.domain.Page result = new PageImpl(latest, pageRequest, numberOfTwweets); - //model.addAttribute("latestTweets", result); - return result; - } else { - return null; - //model.addAttribute("latestTweets",null); - } - } - - - public org.springframework.data.domain.Page getTestDataUser(){ - CountedEntities countedEntities = countedEntitiesService.countAll(); - String msg = "getTestDataUser: "; - Task task = taskService.create(msg, TaskType.CONTROLLER_GET_TESTDATA_USER,countedEntities); - List user = new ArrayList<>(); - try { - int loopId = 0; - for (long idTwitter : twitterwallSchedulerProperties.getFacade().getIdTwitterToFetchForUserControllerTest()) { - try { - TwitterProfile twitterProfile = twitterApiService.getUserProfileForTwitterId(idTwitter); - loopId++; - log.info(msg + loopId); - org.woehlke.twitterwall.oodm.entities.User persUser = this.storeUserProfile.storeUserProfile(twitterProfile,task); - user.add(persUser); - } catch (EmptyResultDataAccessException e) { - log.warn(msg + e.getMessage()); - } catch (NoResultException e) { - log.warn(msg + e.getMessage()); - } - } - } catch (RateLimitExceededException e) { - log.info(msg + e.getMessage()); - } catch (Exception e) { - log.warn(msg + e.getMessage()); - } - taskService.done(task,countedEntities); - //model.addAttribute("user", user); - - int numberOfUser = user.size(); - if(numberOfUser > 0) { - Pageable pageRequest = new PageRequest(0, numberOfUser); - org.springframework.data.domain.Page result = new PageImpl(user, pageRequest, numberOfUser); - //model.addAttribute("user", result); - return result; - } else { - //model.addAttribute("user",null); - return null; - } - } - - public User addUserForScreenName(String screenName) { - CountedEntities countedEntities = countedEntitiesService.countAll(); - User userReturnValue = null; - String msg="addUserForScreenName "+screenName+": "; - Task task = taskService.create(msg, TaskType.CONTROLLER_ADD_USER_FOR_SCREEN_NAME,countedEntities); - log.info("--------------------------------------------------------------------"); - log.info("screenName = "+ screenName); - User user = userService.findByScreenName(screenName); - if(user!=null){ - log.info("userService.findByScreenName: found User = "+user.toString()); - //model.addAttribute("user", user); - userReturnValue = user; - //log.info("model.addAttribute user = "+user.toString()); - } else { - String msg2 = "EmptyResultDataAccessException at userService.findByScreenName for screenName="+screenName; - task = taskService.warn(task,msg2,countedEntities); - TwitterProfile twitterProfile = twitterApiService.getUserProfileForScreenName(screenName); - String msg3 = "twitterApiService.getUserProfileForScreenName: found TwitterProfile = "+twitterProfile.toString(); - task = taskService.event(task,msg3,countedEntities); - log.info("try: persistDataFromTwitter.storeUserProfile for twitterProfile = "+twitterProfile.toString()); - User user2 = storeUserProfile.storeUserProfile(twitterProfile,task); - if(user2!=null){ - log.info("persistDataFromTwitter.storeUserProfile: stored User = "+user2.toString()); - //model.addAttribute("user", user2); - //log.info("model.addAttribute user = "+user2.toString()); - userReturnValue = user2; - } else { - log.warn("persistDataFromTwitter.storeUserProfile raised EmptyResultDataAccessException: "); - User user3 = User.getDummyUserForScreenName(screenName,task); - //model.addAttribute("user", user3); - //log.info("model.addAttribute user = "+user3.toString()); - userReturnValue = user3; - } - } - taskService.done(task,countedEntities); - log.info("... finally done ..."); - log.info("--------------------------------------------------------------------"); - return userReturnValue; - } - - @Autowired - public CreateTestDataImpl(TwitterApiService twitterApiService, TaskService taskService, StoreOneTweet storeOneTweet, StoreUserProfile storeUserProfile, UserService userService, TwitterwallSchedulerProperties twitterwallSchedulerProperties, CountedEntitiesService countedEntitiesService) { - this.twitterApiService = twitterApiService; - this.taskService = taskService; - this.storeOneTweet = storeOneTweet; - this.storeUserProfile = storeUserProfile; - this.userService = userService; - this.twitterwallSchedulerProperties = twitterwallSchedulerProperties; - this.countedEntitiesService = countedEntitiesService; - } - - private final TwitterApiService twitterApiService; - - private final TaskService taskService; - - private final StoreOneTweet storeOneTweet; - - private final StoreUserProfile storeUserProfile; - - private final UserService userService; - - private final TwitterwallSchedulerProperties twitterwallSchedulerProperties; - - private final CountedEntitiesService countedEntitiesService; - - private static final Logger log = LoggerFactory.getLogger(CreateTestDataImpl.class); - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchTweetsFromTwitterSearchImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchTweetsFromTwitterSearchImpl.java deleted file mode 100644 index 3e9cc01e..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchTweetsFromTwitterSearchImpl.java +++ /dev/null @@ -1,120 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.social.twitter.api.Tweet; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.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.scheduled.service.facade.FetchTweetsFromTwitterSearch; -import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Set; - -/** - * Created by tw on 09.07.17. - */ -@Service -@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) -public class FetchTweetsFromTwitterSearchImpl implements FetchTweetsFromTwitterSearch { - - - @Override - public void fetchTweetsFromTwitterSearch() { - CountedEntities countedEntities = countedEntitiesService.countAll(); - String msg = "fetch Tweets from Twitter Search: "; - log.debug(msg+"---------------------------------------"); - log.debug(msg+ "START fetchTweetsFromTwitterSearch: The time is now {}", dateFormat.format(new Date())); - log.debug(msg+"---------------------------------------"); - Task task = taskService.create(msg, TaskType.FETCH_TWEETS_FROM_TWITTER_SEARCH,countedEntities); - int allLoop = 0; - int loopId = 0; - List tweetsForSearchQuery = null; - try { - tweetsForSearchQuery = twitterApiService.findTweetsForSearchQuery(); - } catch (Exception e) { - e.printStackTrace(); - log.error(msg + e); - } - if(tweetsForSearchQuery!=null){ - int number = tweetsForSearchQuery.size(); - for (Tweet tweet : tweetsForSearchQuery) { - allLoop++; - loopId++; - String counter = " ("+loopId+" from "+number+") ["+allLoop+"] "; - log.debug(msg+counter); - org.woehlke.twitterwall.oodm.entities.Tweet tweetPers = null; - try { - tweetPers = this.storeOneTweet.storeOneTweet(tweet,task); - } catch (Exception e) { - e.printStackTrace(); - log.error(msg + e); - } - if(tweetPers!=null){ - log.debug(msg+counter+tweetPers.toString()); - Set mentions = tweetPers.getEntities().getMentions(); - int subNumber = mentions.size(); - int subLoops = 0; - for(Mention mention:mentions){ - allLoop++; - subLoops++; - String subCounter = counter+ " ( "+subLoops + " from " +subNumber +" ) ["+allLoop+"] "; - log.debug(msg+subCounter); - try { - User userFromMention = storeUserProfileForScreenName.storeUserProfileForScreenName(mention.getScreenName(),task); - log.debug(msg+subCounter+userFromMention.toString()); - } catch (Exception e){ - e.printStackTrace(); - log.error(msg+subCounter+e); - task = taskService.warn(task,e,msg+subCounter,countedEntities); - } - } - } - } - } - countedEntities = countedEntitiesService.countAll(); - String report = msg+" processed: "+loopId+" [ "+allLoop+" ] "; - 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+"---------------------------------------"); - } - - - private static final Logger log = LoggerFactory.getLogger(FetchTweetsFromTwitterSearchImpl.class); - - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - - private final TwitterApiService twitterApiService; - - private final StoreOneTweet storeOneTweet; - - private final TaskService taskService; - - private final StoreUserProfileForScreenName storeUserProfileForScreenName; - - private final CountedEntitiesService countedEntitiesService; - - @Autowired - 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 deleted file mode 100644 index 8704fc5e..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/FetchUsersFromDefinedUserListImpl.java +++ /dev/null @@ -1,114 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.social.twitter.api.TwitterProfile; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.conf.TwitterProperties; -import org.woehlke.twitterwall.conf.TwitterwallBackendProperties; -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; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; - -/** - * Created by tw on 09.07.17. - */ -@Service -@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) -public class FetchUsersFromDefinedUserListImpl implements FetchUsersFromDefinedUserList { - - - @Override - public void fetchUsersFromDefinedUserList() { - CountedEntities countedEntities = countedEntitiesService.countAll(); - String msg = "update Tweets: "; - 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 + "---------------------------------------"); - int allLoop = 0; - int loopId = 0; - List userProfiles = twitterApiService.findUsersFromDefinedList(twitterwallFrontendProperties.getImprintScreenName(),twitterwallSchedulerProperties.getFetchUserList().getName()); - int number = userProfiles.size(); - for(TwitterProfile twitterProfile:userProfiles) { - allLoop++; - loopId++; - String counter = " ( "+loopId+ " from "+number+" ) ["+allLoop+"] "; - log.debug(msg+counter); - User user = storeUserProfileForUserList.storeUserProfileForUserList(twitterProfile,task); - log.debug(msg+counter+user.toString()); - int subLoopId = 0; - int subNumber = user.getEntities().getMentions().size(); - for(Mention mention:user.getEntities().getMentions()){ - allLoop++; - subLoopId++; - String subCounter = counter+" ( "+subLoopId+ "from "+subNumber+" ) ["+allLoop+"] "; - User userFromMention = storeUserProfileForScreenName.storeUserProfileForScreenName(mention.getScreenName(),task); - if(userFromMention == null){ - 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,countedEntities); - taskService.done(task,countedEntities); - log.debug(msg + "---------------------------------------"); - log.debug(msg + "DONE The time is now {}", dateFormat.format(new Date())); - log.debug(msg + "---------------------------------------"); - } - - - private static final Logger log = LoggerFactory.getLogger(FetchUsersFromDefinedUserListImpl.class); - - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - - private final StoreUserProfileForUserList storeUserProfileForUserList; - - private final TwitterApiService twitterApiService; - - private final TaskService taskService; - - private final StoreUserProfileForScreenName storeUserProfileForScreenName; - - private final TwitterwallBackendProperties twitterwallBackendProperties; - - private final TwitterwallSchedulerProperties twitterwallSchedulerProperties; - - private final TwitterwallFrontendProperties twitterwallFrontendProperties; - - 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, CountedEntitiesService countedEntitiesService) { - this.storeUserProfileForUserList = storeUserProfileForUserList; - this.twitterApiService = twitterApiService; - this.taskService = taskService; - this.storeUserProfileForScreenName = storeUserProfileForScreenName; - this.twitterwallBackendProperties = twitterwallBackendProperties; - 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/UpdateTweetsImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateTweetsImpl.java deleted file mode 100644 index c0707f7a..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateTweetsImpl.java +++ /dev/null @@ -1,155 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.social.RateLimitExceededException; -import org.springframework.social.twitter.api.Tweet; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.client.ResourceAccessException; -import org.woehlke.twitterwall.conf.TwitterProperties; -import org.woehlke.twitterwall.conf.TwitterwallBackendProperties; -import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties; -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; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Set; - -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; - -/** - * Created by tw on 09.07.17. - */ -@Service -@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) -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,countedEntities); - int loopId = 0; - int allLoop = 0; - try { - boolean hasNext; - Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, twitterProperties.getPageSize()); - do { - Page tweetTwitterIds = tweetService.findAllTwitterIds(pageRequest); - hasNext = tweetTwitterIds.hasNext(); - long number = tweetTwitterIds.getTotalElements(); - for (Long tweetTwitterId : tweetTwitterIds) { - loopId++; - allLoop++; - String counter = " ( " + loopId + " from " + number + " ) [ " + allLoop + " ] "; - try { - Tweet tweet = twitterApiService.findOneTweetById(tweetTwitterId); - log.debug(msg + "" + counter); - org.woehlke.twitterwall.oodm.entities.Tweet tweetPers = this.storeOneTweet.storeOneTweet(tweet, task); - log.debug(msg + "" + counter + tweetPers); - Set mentions = tweetPers.getEntities().getMentions(); - int subLoopId = 0; - int subNumber = mentions.size(); - for (Mention mention : mentions) { - allLoop++; - subLoopId++; - String subCounter = counter + " ( " + subLoopId + " from " + subNumber + " ) [ " + allLoop + " ] "; - try { - log.debug(msg + subCounter); - User userFromMention = storeUserProfileForScreenName.storeUserProfileForScreenName(mention.getScreenName(), task); - log.debug(msg + subCounter + userFromMention.toString()); - } catch (IllegalArgumentException exe) { - task = taskService.warn(task, exe, msg + subCounter,countedEntities); - } - } - log.debug(msg + "-----------------------------------------------------"); - log.debug(msg + "Start SLEEP for " + twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls() + " ms " + counter); - Thread.sleep(twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls()); - log.debug(msg + "Done SLEEP for " + twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls() + " ms " + counter); - log.debug(msg + "-----------------------------------------------------"); - } catch (RateLimitExceededException e) { - task = taskService.error(task, e, msg + counter,countedEntities); - throw e; - } catch (InterruptedException ex) { - task = taskService.warn(task, ex, msg + counter,countedEntities); - } finally { - log.debug(msg + "---------------------------------------"); - } - } - pageRequest = pageRequest.next(); - } while (hasNext); - } catch (ResourceAccessException e) { - task = taskService.error(task,e,msg + " check your Network Connection!",countedEntities); - } catch (RateLimitExceededException e) { - task = taskService.error(task,e,msg,countedEntities); - } - countedEntities = countedEntitiesService.countAll(); - String report = msg+" processed: "+loopId+" [ "+allLoop+" ] "; - 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 + "---------------------------------------"); - } - - - private static final Logger log = LoggerFactory.getLogger(UpdateTweetsImpl.class); - - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - - private final StoreOneTweet storeOneTweet; - - private final TwitterApiService twitterApiService; - - private final TweetService tweetService; - - private final TaskService taskService; - - private final StoreUserProfileForScreenName storeUserProfileForScreenName; - - private final TwitterwallBackendProperties twitterwallBackendProperties; - - private final TwitterwallSchedulerProperties twitterwallSchedulerProperties; - - private final TwitterwallFrontendProperties twitterwallFrontendProperties; - - 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, CountedEntitiesService countedEntitiesService) { - this.twitterApiService = twitterApiService; - this.tweetService = tweetService; - this.storeOneTweet = storeOneTweet; - this.taskService = taskService; - this.storeUserProfileForScreenName = storeUserProfileForScreenName; - this.twitterwallBackendProperties = twitterwallBackendProperties; - 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 deleted file mode 100644 index 5160f017..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesFromMentionsImpl.java +++ /dev/null @@ -1,153 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.social.RateLimitExceededException; -import org.springframework.social.twitter.api.TwitterProfile; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.conf.TwitterProperties; -import org.woehlke.twitterwall.conf.TwitterwallBackendProperties; -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; -import org.woehlke.twitterwall.oodm.entities.User; -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; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Set; - -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; - -/** - * Created by tw on 09.07.17. - */ -@Service -@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) -public class UpdateUserProfilesFromMentionsImpl implements UpdateUserProfilesFromMentions { - - @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,countedEntities); - int allLoop = 0; - int loopId = 0; - boolean hasNext=true; - Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, twitterProperties.getPageSize()); - while (hasNext) { - Page allPersMentions = mentionService.getAll(pageRequest); - hasNext = allPersMentions.hasNext(); - long number = allPersMentions.getTotalElements(); - for(Mention onePersMentions :allPersMentions) { - String screenName = onePersMentions.getScreenName(); - if ((screenName != null) && (!screenName.isEmpty())) { - loopId++; - allLoop++; - String counter = " ( " + loopId + " from " + number + " ) [" + allLoop + "] "; - TwitterProfile twitterProfile = null; - try { - twitterProfile = this.twitterApiService.getUserProfileForScreenName(screenName); - } catch (RateLimitExceededException e) { - task = taskService.error(task, e, msg,countedEntities); - } - if (twitterProfile != null) { - User user = storeUserProfile.storeUserProfile(twitterProfile, task); - if (user != null) { - log.debug(msg + counter + user.toString()); - Set mentions = user.getEntities().getMentions(); - int subLoopId = 0; - int subNumber = mentions.size(); - for (Mention mention : mentions) { - allLoop++; - subLoopId++; - String subCounter = counter + " ( " + subLoopId + " from " + subNumber + " ) [" + allLoop + "] "; - try { - log.debug(msg + subCounter); - User userFromMention = storeUserProfileForScreenName.storeUserProfileForScreenName(mention.getScreenName(), task); - log.debug(msg + subCounter + userFromMention.toString()); - } catch (IllegalArgumentException exe) { - log.debug(msg + subCounter + exe.getMessage()); - } - } - log.debug(msg + user.toString()); - log.debug(msg + "-----------------------------------------------------"); - log.debug(msg + "Start SLEEP for " + twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls() + " ms " + counter); - try { - Thread.sleep(twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls()); - } catch (InterruptedException ex) { - log.warn(msg, ex); - } - - log.debug(msg + "Done SLEEP for " + twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls() + " ms " + counter); - log.debug(msg + "-----------------------------------------------------"); - } - } - } - } - pageRequest = pageRequest.next(); - } - countedEntities = countedEntitiesService.countAll(); - String report = msg+" processed: "+loopId+" [ "+allLoop+" ] "; - 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+"---------------------------------------"); - } - - - private static final Logger log = LoggerFactory.getLogger(UpdateUserProfilesFromMentionsImpl.class); - - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - - private final StoreUserProfile storeUserProfile; - - private final TwitterApiService twitterApiService; - - private final MentionService mentionService; - - private final TaskService taskService; - - private final StoreUserProfileForScreenName storeUserProfileForScreenName; - - private final TwitterwallBackendProperties twitterwallBackendProperties; - - private final TwitterwallSchedulerProperties twitterwallSchedulerProperties; - - private final TwitterwallFrontendProperties twitterwallFrontendProperties; - - 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, CountedEntitiesService countedEntitiesService) { - this.twitterApiService = twitterApiService; - this.storeUserProfile = storeUserProfile; - this.mentionService = mentionService; - this.taskService = taskService; - this.storeUserProfileForScreenName = storeUserProfileForScreenName; - this.twitterwallBackendProperties = twitterwallBackendProperties; - 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 deleted file mode 100644 index 4a9e91d6..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/UpdateUserProfilesImpl.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.facade.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.social.RateLimitExceededException; -import org.springframework.social.twitter.api.TwitterProfile; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.conf.TwitterProperties; -import org.woehlke.twitterwall.conf.TwitterwallBackendProperties; -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.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; - -import java.text.SimpleDateFormat; -import java.util.Date; - -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; - -/** - * Created by tw on 09.07.17. - */ -@Service -@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) -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,countedEntities); - boolean hasNext=true; - Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, twitterProperties.getPageSize()); - while (hasNext) { - Page userProfileTwitterIds = userService.getAllTwitterIds(pageRequest); - hasNext = userProfileTwitterIds.hasNext(); - long number = userProfileTwitterIds.getTotalElements(); - for (Long userProfileTwitterId : userProfileTwitterIds) { - allLoop++; - loopId++; - String counter = " ( " + loopId + " from " + number + " ) [" + allLoop + "] "; - log.debug(msg + counter); - TwitterProfile userProfile = null; - try { - userProfile = twitterApiService.getUserProfileForTwitterId(userProfileTwitterId); - } catch (RateLimitExceededException e) { - this.taskService.warn(task, e, msg,countedEntities); - } - User user = storeUserProfile.storeUserProfile(userProfile, task); - if(user!=null){ - log.debug(msg + counter + user.toString()); - int subLoopId = 0; - int subNumber = user.getEntities().getMentions().size(); - for (Mention mention : user.getEntities().getMentions()) { - allLoop++; - subLoopId++; - String subCounter = counter + " ( " + subLoopId + " from " + subNumber + " ) [" + allLoop + "] "; - try { - log.debug(msg + subCounter); - User userFromMention = storeUserProfileForScreenName.storeUserProfileForScreenName(mention.getScreenName(), task); - log.debug(msg + subCounter + userFromMention.toString()); - } catch (IllegalArgumentException exe) { - this.taskService.warn(task, exe, msg + subCounter,countedEntities); - } - } - log.debug(msg + user.toString()); - } - log.debug(msg + "-----------------------------------------------------"); - log.debug(msg + "Start SLEEP for " + twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls() + " ms " + counter); - try { - Thread.sleep(twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls()); - } catch (InterruptedException ex) { - log.debug(msg+" "+task.toString(),ex); - } - log.debug(msg + "Done SLEEP for " + twitterwallBackendProperties.getTwitter().getMillisToWaitBetweenTwoApiCalls() + " ms " + counter); - log.debug(msg + "-----------------------------------------------------"); - - log.debug(msg + "---------------------------------------"); - } - pageRequest = pageRequest.next(); - } - countedEntities = countedEntitiesService.countAll(); - String report = msg+" processed: "+loopId+" [ "+allLoop+" ] "; - 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+"---------------------------------------"); - } - - private static final Logger log = LoggerFactory.getLogger(UpdateUserProfilesImpl.class); - - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); - - private final TwitterwallBackendProperties twitterwallBackendProperties; - - private final TwitterwallSchedulerProperties twitterwallSchedulerProperties; - - private final TwitterwallFrontendProperties twitterwallFrontendProperties; - - private final TwitterProperties twitterProperties; - - private final StoreUserProfile storeUserProfile; - - private final TwitterApiService twitterApiService; - - private final UserService userService; - - private final TaskService taskService; - - 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, CountedEntitiesService countedEntitiesService) { - this.twitterwallBackendProperties = twitterwallBackendProperties; - this.twitterwallSchedulerProperties = twitterwallSchedulerProperties; - this.twitterwallFrontendProperties = twitterwallFrontendProperties; - this.twitterProperties = twitterProperties; - this.storeUserProfile = storeUserProfile; - this.twitterApiService = twitterApiService; - this.userService = userService; - this.taskService = taskService; - this.storeUserProfileForScreenName = storeUserProfileForScreenName; - this.countedEntitiesService = countedEntitiesService; - } -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/StoreTwitterProfileForProxyMentionForUser.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/facade/StoreTwitterProfileForProxyMentionForUser.java rename to src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java index ab95cce2..58df9580 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/StoreTwitterProfileForProxyMentionForUser.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.facade; +package org.woehlke.twitterwall.scheduled.service.persist; import org.woehlke.twitterwall.oodm.entities.User; import org.woehlke.twitterwall.oodm.entities.Task; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java index 82e89f90..3d8ce24b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java @@ -11,7 +11,8 @@ import org.woehlke.twitterwall.oodm.entities.Mention; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.MentionService; -import org.woehlke.twitterwall.scheduled.service.facade.StoreTwitterProfileForProxyMentionForUser; +import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask; +import org.woehlke.twitterwall.scheduled.service.persist.StoreTwitterProfileForProxyMentionForUser; import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentMention; /** @@ -84,12 +85,15 @@ public Mention getPersistentMentionAndUserFor(Mention mention, Task task) { private final StoreTwitterProfileForProxyMentionForUser storeTwitterProfileForProxyMentionForUser; + private final StartTask startTask; + private final TaskService taskService; @Autowired - public CreatePersistentMentionImpl(MentionService mentionService, StoreTwitterProfileForProxyMentionForUser storeTwitterProfileForProxyMentionForUser, TaskService taskService) { + public CreatePersistentMentionImpl(MentionService mentionService, StoreTwitterProfileForProxyMentionForUser storeTwitterProfileForProxyMentionForUser, StartTask startTask, TaskService taskService) { this.mentionService = mentionService; this.storeTwitterProfileForProxyMentionForUser = storeTwitterProfileForProxyMentionForUser; + this.startTask = startTask; this.taskService = taskService; } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/StoreTwitterProfileForProxyMentionForUserImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/StoreTwitterProfileForProxyMentionForUserImpl.java rename to src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java index b35201fe..a447bd77 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/facade/impl/StoreTwitterProfileForProxyMentionForUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.facade.impl; +package org.woehlke.twitterwall.scheduled.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,11 +13,9 @@ 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.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; import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; import java.util.LinkedHashSet; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/DomainControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/DomainControllerTest.java index 6ba89896..c6bc0d5f 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/DomainControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/DomainControllerTest.java @@ -63,7 +63,7 @@ public void domainCountTest() throws Exception { MvcResult result = this.mockMvc.perform(get("/application/domain/count")) .andExpect(status().isOk()) - .andExpect(view().name( "/application/domain/count")) + .andExpect(view().name( "application/domain/count")) .andExpect(model().attributeExists("countedEntities")) .andExpect(model().attributeExists("page")) .andReturn(); diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java index 3e70e8a9..4eb9b44d 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java @@ -40,15 +40,9 @@ public class HashTagControllerTest { @Autowired private HashTagController controller; - @Autowired - private TwitterProperties twitterProperties; - @Autowired private TwitterwallSchedulerProperties twitterwallSchedulerProperties; - @Autowired - private TwitterwallFrontendProperties twitterwallFrontendProperties; - @Commit @Test public void controllerIsPresentTest(){ @@ -76,7 +70,7 @@ public void getAllTest()throws Exception { String hashtagText = "java"; MvcResult result = this.mockMvc.perform(get("/hashtag/all")) .andExpect(status().isOk()) - .andExpect(view().name("/hashtag/all")) + .andExpect(view().name("hashtag/all")) .andExpect(model().attributeExists("myPageContent")) .andExpect(model().attributeExists("page")) .andReturn(); @@ -97,7 +91,7 @@ public void hashTagFromTweetsAndUsersTest() throws Exception { String hashtagText = "java"; MvcResult result = this.mockMvc.perform(get("/hashtag/"+hashtagText)) .andExpect(status().isOk()) - .andExpect(view().name("/hashtag/hashtagText")) + .andExpect(view().name("hashtag/hashtagText")) .andExpect(model().attributeExists("users")) .andExpect(model().attributeExists("latestTweets")) .andExpect(model().attributeExists("hashTag")) @@ -120,7 +114,7 @@ public void hashTagFromTweetsAndUsersTest() throws Exception { public void hashTagsOverview() throws Exception { MvcResult result = this.mockMvc.perform(get("/hashtag/overview")) .andExpect(status().isOk()) - .andExpect(view().name("/hashtag/overview")) + .andExpect(view().name("hashtag/overview")) .andExpect(model().attributeExists("hashTagsTweets")) .andExpect(model().attributeExists("hashTagsUsers")) .andExpect(model().attributeExists("page")) diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TestControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TestControllerTest.java index b6dc624f..e83ef5a8 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TestControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TestControllerTest.java @@ -61,7 +61,7 @@ public void setupTestData(){ public void getTestDataTest() throws Exception { MvcResult result = this.mockMvc.perform(get("/test/getTestData")) .andExpect(status().isOk()) - .andExpect(view().name( "/test/getTestData")) + .andExpect(view().name( "test/getTestData")) .andExpect(model().attributeExists("latestTweets")) //.andExpect(model().attributeExists("users")) .andExpect(model().attributeExists("page")) @@ -82,7 +82,7 @@ public void getTestDataTest() throws Exception { public void getOnListRenewTest() throws Exception { MvcResult result = this.mockMvc.perform(get("/test/user/onlist/renew")) .andExpect(status().isOk()) - .andExpect(view().name( "/test/user/onlist/renew")) + .andExpect(view().name( "test/user/onlist/renew")) .andExpect(model().attributeExists("users")) .andExpect(model().attributeExists("page")) .andReturn(); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java b/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java index 192b8687..fa8f16de 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java @@ -56,7 +56,8 @@ public class UserDescriptionTest { }; @Test - public void printDescriptionsTest(Task task){ + public void printDescriptionsTest(){ + Task task = null; int lfdNr = 0; log.info("printDescriptionsTest"); log.info("++++++++++++++++++++"); diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/FetchTweetsFromTwitterSearchTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/FetchTweetsFromTwitterSearchTest.java index 49424d72..0cab490a 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/FetchTweetsFromTwitterSearchTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/FetchTweetsFromTwitterSearchTest.java @@ -16,6 +16,7 @@ import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.ScheduledTasks; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask; import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService; @@ -31,7 +32,7 @@ public class FetchTweetsFromTwitterSearchTest extends AbstractFacadeTest { private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); @Autowired - private FetchTweetsFromTwitterSearch fetchTweetsFromTwitterSearch; + private StartTask startTask; @Autowired private CountedEntitiesService countedEntitiesService; @@ -41,7 +42,7 @@ public class FetchTweetsFromTwitterSearchTest extends AbstractFacadeTest { @Test public void fetchTweetsFromTwitterSearchTest(){ CountedEntities beforeTest = countedEntitiesService.countAll(); - this.fetchTweetsFromTwitterSearch.fetchTweetsFromTwitterSearch(); + this.startTask.fetchTweetsFromTwitterSearch(); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/FetchUsersFromDefinedUserListTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/FetchUsersFromDefinedUserListTest.java index 87dc9069..a5dcc167 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/FetchUsersFromDefinedUserListTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/FetchUsersFromDefinedUserListTest.java @@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask; import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService; /** @@ -32,14 +33,14 @@ public class FetchUsersFromDefinedUserListTest extends AbstractFacadeTest { private CountedEntitiesService countedEntitiesService; @Autowired - private FetchUsersFromDefinedUserList fetchUsersFromDefinedUserList; + private StartTask startTask; @Ignore @Commit @Test public void fetchUsersFromDefinedUserListTest(){ CountedEntities beforeTest = countedEntitiesService.countAll(); - this.fetchUsersFromDefinedUserList.fetchUsersFromDefinedUserList(); + this.startTask.fetchUsersFromDefinedUserList(); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateTweetsTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateTweetsTest.java index d93352d0..9e3aa4c1 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateTweetsTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateTweetsTest.java @@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask; import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService; /** @@ -32,14 +33,14 @@ public class UpdateTweetsTest extends AbstractFacadeTest { private CountedEntitiesService countedEntitiesService; @Autowired - private UpdateTweets updateTweets; + private StartTask startTask; @Ignore @Commit @Test public void updateTweetsTest(){ CountedEntities beforeTest = countedEntitiesService.countAll(); - this.updateTweets.updateTweets(); + this.startTask.updateTweets(); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesFromMentionsTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesFromMentionsTest.java index 0b0c4cae..d7a72554 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesFromMentionsTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesFromMentionsTest.java @@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask; import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService; /** @@ -32,14 +33,14 @@ public class UpdateUserProfilesFromMentionsTest extends AbstractFacadeTest { private CountedEntitiesService countedEntitiesService; @Autowired - private UpdateUserProfilesFromMentions updateUserProfilesFromMentions; + private StartTask startTask; @Ignore @Commit @Test public void updateUserProfilesFromMentions(){ CountedEntities beforeTest = countedEntitiesService.countAll(); - this.updateUserProfilesFromMentions.updateUserProfilesFromMentions(); + this.startTask.updateUserProfilesFromMentions(); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesTest.java index a55c8d23..f5ac504d 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesTest.java +++ b/src/test/java/org/woehlke/twitterwall/scheduled/service/facade/UpdateUserProfilesTest.java @@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask; import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService; /** @@ -32,14 +33,14 @@ public class UpdateUserProfilesTest extends AbstractFacadeTest { private CountedEntitiesService countedEntitiesService; @Autowired - private UpdateUserProfiles updateUserProfiles; + private StartTask startTask; @Ignore @Commit @Test public void updateUserProfiles(){ CountedEntities beforeTest = countedEntitiesService.countAll(); - this.updateUserProfiles.updateUserProfiles(); + this.startTask.updateUserProfiles(); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); From 313954c1b0eba8eb14560d653c26cbcf50c7e9ae Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Tue, 25 Jul 2017 23:15:53 +0200 Subject: [PATCH 04/13] working on #146 --- .../controller/CountedEntitiesController.java | 72 +++++++++++++++--- .../entities/transients/Object2Entity.java | 71 ++++++++++++++++++ .../transients/Object2EntityTable.java | 19 +++++ .../transients/mapper/RowMapperCount.java | 14 ++++ .../mapper/Tweet2HashTagRowMapper.java | 20 +++++ .../mapper/Tweet2MediaRowMapper.java | 20 +++++ .../mapper/Tweet2MentionRowMapper.java | 20 +++++ .../mapper/Tweet2TickerSymbolRowMapper.java | 19 +++++ .../transients/mapper/Tweet2UrlRowMapper.java | 20 +++++ .../mapper/User2HashTagRowMapper.java | 20 +++++ .../mapper/User2MediaRowMapper.java | 20 +++++ .../mapper/User2MentionRowMapper.java | 20 +++++ .../mapper/User2TickerSymbolRowMapper.java | 19 +++++ .../transients/mapper/User2UrlRowMapper.java | 19 +++++ .../oodm/repositories/TweetRepository.java | 2 +- .../oodm/repositories/UserRepository.java | 4 + .../custom/TweetRepositoryCustom.java | 13 ++++ .../custom/UserRepositoryCustom.java | 14 ++++ .../custom/impl/TweetRepositoryImpl.java | 74 ++++++++++++++++++- .../custom/impl/UserRepositoryImpl.java | 74 ++++++++++++++++++- .../oodm/service/TweetService.java | 11 +++ .../twitterwall/oodm/service/UserService.java | 11 ++- .../oodm/service/impl/TweetServiceImpl.java | 26 +++++++ .../oodm/service/impl/UserServiceImpl.java | 27 +++++++ 24 files changed, 613 insertions(+), 16 deletions(-) create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java create mode 100644 src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java index af9140a1..105a854f 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java @@ -1,11 +1,19 @@ package org.woehlke.twitterwall.frontend.controller; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +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.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.service.TweetService; +import org.woehlke.twitterwall.oodm.service.UserService; /** * Created by tw on 16.07.17. @@ -16,74 +24,103 @@ public class CountedEntitiesController { private final static String PATH="application/countedEntities"; - @RequestMapping(path="/tweet/hashtag") - public String domainCountTweet2hashtag(Model model) { + public String domainCountTweet2hashtag(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "Tweet -> HashTag"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = tweetService.findAllTweet2HashTag(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/hashtag"; } @RequestMapping(path="/tweet/media") - public String domainCountTweet2media(Model model) { + public String domainCountTweet2media(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "Tweet -> Media"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = tweetService.findAllTweet2Media(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/media"; } @RequestMapping(path="/tweet/mention") - public String domainCountTweet2mention(Model model) { + public String domainCountTweet2mention(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "Tweet -> Mention"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = tweetService.findAllTweet2Mention(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/mention"; } @RequestMapping(path="/tweet/tickersymbol") - public String domainCountTweet2tickersymbol(Model model) { + public String domainCountTweet2tickersymbol(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "Tweet -> TickerSymbol"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = tweetService.findAllTweet2TickerSymbol(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/tickersymbol"; } @RequestMapping(path="/tweet/url") - public String domainCountTweet2url(Model model) { + public String domainCountTweet2url(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "Tweet -> Url"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = tweetService.findAllTweet2Url(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/url"; } @RequestMapping(path="/userprofile/hashtag") - public String domainCountUserprofile2hashtag(Model model) { + public String domainCountUserprofile2hashtag(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "UserProfile -> HashTag"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = userService.findAllUser2HashTag(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/userprofile/hashtag"; } @RequestMapping(path="/userprofil/media") - public String domainCountUserprofile2media(Model model) { + public String domainCountUserprofile2media(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "UserProfile -> Media"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = userService.findAllUser2Media(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/userprofile/media"; } @RequestMapping(path="/userprofile/mention") - public String domainCountUserprofile2mention(Model model) { + public String domainCountUserprofile2mention(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "UserProfile -> Mention"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = userService.findAllUser2Mentiong(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/userprofile/mention"; } @RequestMapping(path="/userprofile/tickersymbol") - public String domainCountUserprofile2Tickersymbol(Model model) { + public String domainCountUserprofile2Tickersymbol(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "UserProfile -> TickerSymbol"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = userService.findAllUser2TickerSymbol(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/userprofile/tickersymbol"; } @RequestMapping(path="/userprofile/url") - public String domainCountUserprofile2Url(Model model) { + public String domainCountUserprofile2Url(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { String title = "UserProfile -> Url"; setUpThisPage(title,model); + Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); + Page listObject2Entity = userService.findAllUser2Url(pageRequest); + model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/userprofile/url"; } @@ -95,9 +132,20 @@ private void setUpThisPage(String title,Model model){ @Autowired - public CountedEntitiesController(ControllerHelper controllerHelper) { + public CountedEntitiesController(TwitterwallFrontendProperties twitterwallFrontendProperties, ControllerHelper controllerHelper, TweetService tweetService, UserService userService) { + this.twitterwallFrontendProperties = twitterwallFrontendProperties; this.controllerHelper = controllerHelper; + this.tweetService = tweetService; + this.userService = userService; } + + + private final TwitterwallFrontendProperties twitterwallFrontendProperties; + private final ControllerHelper controllerHelper; + + private final TweetService tweetService; + + private final UserService userService; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java new file mode 100644 index 00000000..146b5210 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java @@ -0,0 +1,71 @@ +package org.woehlke.twitterwall.oodm.entities.transients; + +import java.io.Serializable; + +public class Object2Entity implements Serializable { + + private long objectId; + + private long entityId; + + private Object2EntityTable object2EntityTable; + + public Object2Entity(long objectId, long entityId, Object2EntityTable object2EntityTable) { + this.objectId = objectId; + this.entityId = entityId; + this.object2EntityTable = object2EntityTable; + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + + public long getEntityId() { + return entityId; + } + + public void setEntityId(long entityId) { + this.entityId = entityId; + } + + public Object2EntityTable getObject2EntityTable() { + return object2EntityTable; + } + + public void setObject2EntityTable(Object2EntityTable object2EntityTable) { + this.object2EntityTable = object2EntityTable; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Object2Entity)) return false; + + Object2Entity that = (Object2Entity) o; + + if (objectId != that.objectId) return false; + if (entityId != that.entityId) return false; + return object2EntityTable == that.object2EntityTable; + } + + @Override + public int hashCode() { + int result = (int) (objectId ^ (objectId >>> 32)); + result = 31 * result + (int) (entityId ^ (entityId >>> 32)); + result = 31 * result + (object2EntityTable != null ? object2EntityTable.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "Object2Entity{" + + "objectId=" + objectId + + ", entityId=" + entityId + + ", object2EntityTable=" + object2EntityTable + + '}'; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java new file mode 100644 index 00000000..8d82de0c --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java @@ -0,0 +1,19 @@ +package org.woehlke.twitterwall.oodm.entities.transients; + +public enum Object2EntityTable { + + TWEET_HASHTAG, + TWEET_MEDIA, + TWEET_MENTION, + TWEET_TICKERSYMBOL, + TWEET_URL, + USERPROFILE_HASHTAG, + USERPROFILE_MEDIA, + USERPROFILE_MENTION, + USERPROFILE_TICKERSYMBOL, + USERPROFILE_URL; + + public String getTableName() { + return this.name().toLowerCase(); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java new file mode 100644 index 00000000..41048500 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java @@ -0,0 +1,14 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class RowMapperCount implements RowMapper { + + @Override + public Long mapRow(ResultSet rs, int rowNum) throws SQLException { + return rs.getLong("counted"); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java new file mode 100644 index 00000000..a3fb2dbc --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class Tweet2HashTagRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("tweet_id"), + rs.getLong("hash_tags_id"), + Object2EntityTable.TWEET_HASHTAG + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java new file mode 100644 index 00000000..ed271d66 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class Tweet2MediaRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("tweet_id"), + rs.getLong(" tweet_media"), + Object2EntityTable.TWEET_MEDIA + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java new file mode 100644 index 00000000..296e8d37 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class Tweet2MentionRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("tweet_id"), + rs.getLong("mentions_id"), + Object2EntityTable.TWEET_MENTION + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java new file mode 100644 index 00000000..bc3d8642 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java @@ -0,0 +1,19 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class Tweet2TickerSymbolRowMapper implements RowMapper { + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("tweet_id"), + rs.getLong("ticker_symbols_id"), + Object2EntityTable.TWEET_TICKERSYMBOL + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java new file mode 100644 index 00000000..202ed6c5 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class Tweet2UrlRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("tweet_id"), + rs.getLong("urls_id"), + Object2EntityTable.TWEET_URL + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java new file mode 100644 index 00000000..52be0c9f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class User2HashTagRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong( "user_id"), + rs.getLong("hash_tags_id"), + Object2EntityTable.USERPROFILE_HASHTAG + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java new file mode 100644 index 00000000..d42cf5dc --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class User2MediaRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("user_id"), + rs.getLong("media_id"), + Object2EntityTable.USERPROFILE_MEDIA + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java new file mode 100644 index 00000000..ce72ea4c --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class User2MentionRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("user_id"), + rs.getLong("mentions_id"), + Object2EntityTable.USERPROFILE_MENTION + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java new file mode 100644 index 00000000..98022530 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java @@ -0,0 +1,19 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class User2TickerSymbolRowMapper implements RowMapper { + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("user_id"), + rs.getLong("ticker_symbols_id"), + Object2EntityTable.USERPROFILE_TICKERSYMBOL + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java new file mode 100644 index 00000000..0fab56ac --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java @@ -0,0 +1,19 @@ +package org.woehlke.twitterwall.oodm.entities.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class User2UrlRowMapper implements RowMapper { + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("user_id"), + rs.getLong("urls_id"), + Object2EntityTable.USERPROFILE_URL + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java index 45871b14..5683fb69 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository; import org.woehlke.twitterwall.oodm.entities.Tweet; import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TweetRepositoryCustom; @@ -43,5 +44,4 @@ public interface TweetRepository extends DomainRepository,TweetRepository @Query(name="Tweet.countAllUser2Url",nativeQuery=true) long countAllUser2Url(); - } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java index a91842c9..7dacf0b9 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java @@ -6,6 +6,10 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.transients.User2HashTag; +import org.woehlke.twitterwall.oodm.entities.transients.User2Media; +import org.woehlke.twitterwall.oodm.entities.transients.User2Mention; +import org.woehlke.twitterwall.oodm.entities.transients.User2Url; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UserRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java index 63e2f1f6..7163cbf6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java @@ -1,9 +1,22 @@ package org.woehlke.twitterwall.oodm.repositories.custom; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface TweetRepositoryCustom extends DomainObjectMinimalRepository { Tweet findByUniqueId(Tweet domainObject); + + Page findAllTweet2HashTag(Pageable pageRequest); + + Page findAllTweet2Media(Pageable pageRequest); + + Page findAllTweet2Mention(Pageable pageRequest); + + Page findAllTweet2Url(Pageable pageRequest); + + Page findAllTweet2TickerSymbol(Pageable pageRequest); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java index 49d975d5..2669cf7c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java @@ -1,9 +1,23 @@ package org.woehlke.twitterwall.oodm.repositories.custom; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface UserRepositoryCustom extends DomainObjectMinimalRepository { User findByUniqueId(User domainObject); + + Page findAllUser2HashTag(Pageable pageRequest); + + Page findAllUser2Media(Pageable pageRequest); + + Page findAllUser2Mentiong(Pageable pageRequest); + + Page findAllUser2Url(Pageable pageRequest); + + Page findAllUser2TickerSymbol(Pageable pageRequest); + } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java index 843403c3..f02ee528 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java @@ -1,20 +1,32 @@ package org.woehlke.twitterwall.oodm.repositories.custom.impl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.entities.transients.mapper.*; import org.woehlke.twitterwall.oodm.repositories.custom.TweetRepositoryCustom; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; +import javax.sql.DataSource; import java.util.List; +@Repository public class TweetRepositoryImpl implements TweetRepositoryCustom { private final EntityManager entityManager; + private JdbcTemplate jdbcTemplate; + @Autowired - public TweetRepositoryImpl(EntityManager entityManager) { + public TweetRepositoryImpl(EntityManager entityManager,DataSource dataSource) { this.entityManager = entityManager; + this.jdbcTemplate = new JdbcTemplate(dataSource); } @Override @@ -29,4 +41,64 @@ public Tweet findByUniqueId(Tweet domainObject) { return null; } } + + @Override + public Page findAllTweet2HashTag(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_hashtag"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from tweet_hashtag"+pagerSQL; + List list = jdbcTemplate.query(sql, new Tweet2HashTagRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } + + @Override + public Page findAllTweet2Media(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_hashtag"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from tweet_hashtag"+pagerSQL; + List list = jdbcTemplate.query(sql, new Tweet2MediaRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } + + @Override + public Page findAllTweet2Mention(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_hashtag"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from tweet_hashtag"+pagerSQL; + List list = jdbcTemplate.query(sql, new Tweet2MentionRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } + + @Override + public Page findAllTweet2Url(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_hashtag"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from tweet_hashtag"+pagerSQL; + List list = jdbcTemplate.query(sql, new Tweet2UrlRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } + + @Override + public Page findAllTweet2TickerSymbol(Pageable pageRequest){ + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_hashtag"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from tweet_hashtag"+pagerSQL; + List list = jdbcTemplate.query(sql, new Tweet2TickerSymbolRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java index ebb0a87b..44973782 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java @@ -1,20 +1,32 @@ package org.woehlke.twitterwall.oodm.repositories.custom.impl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.entities.transients.mapper.*; import org.woehlke.twitterwall.oodm.repositories.custom.UserRepositoryCustom; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; +import javax.sql.DataSource; import java.util.List; +@Repository public class UserRepositoryImpl implements UserRepositoryCustom { private final EntityManager entityManager; + private JdbcTemplate jdbcTemplate; + @Autowired - public UserRepositoryImpl(EntityManager entityManager) { + public UserRepositoryImpl(EntityManager entityManager,DataSource dataSource) { this.entityManager = entityManager; + this.jdbcTemplate = new JdbcTemplate(dataSource); } @Override @@ -30,4 +42,64 @@ public User findByUniqueId(User domainObject) { return null; } } + + @Override + public Page findAllUser2HashTag(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from userprofile_hashtag"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from userprofile_hashtag"+pagerSQL; + List list = jdbcTemplate.query(sql, new User2HashTagRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } + + @Override + public Page findAllUser2Media(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from userprofile_media"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from userprofile_media"+pagerSQL; + List list = jdbcTemplate.query(sql, new User2MediaRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } + + @Override + public Page findAllUser2Mentiong(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from userprofile_mention"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from userprofile_mention"+pagerSQL; + List list = jdbcTemplate.query(sql, new User2MentionRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } + + @Override + public Page findAllUser2Url(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from userprofile_url"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from userprofile_url"+pagerSQL; + List list = jdbcTemplate.query(sql, new User2UrlRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } + + @Override + public Page findAllUser2TickerSymbol(Pageable pageRequest) { + String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from userprofile_tickersymbol"; + List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); + long total= countedList.iterator().next().longValue(); + String sql = "select * from userprofile_tickersymbol"+pagerSQL; + List list = jdbcTemplate.query(sql, new User2TickerSymbolRowMapper()); + PageImpl resultPage = new PageImpl<>(list,pageRequest,total); + return resultPage; + } } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java index b6645732..f78b2b13 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java @@ -5,6 +5,7 @@ import org.woehlke.twitterwall.oodm.entities.HashTag; import org.woehlke.twitterwall.oodm.entities.Tweet; import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; @@ -22,4 +23,14 @@ public interface TweetService extends DomainServiceWithIdTwitter,DomainSe Page findAllTwitterIds(Pageable pageRequest); + Page findAllTweet2HashTag(Pageable pageRequest); + + Page findAllTweet2Media(Pageable pageRequest); + + Page findAllTweet2Mention(Pageable pageRequest); + + Page findAllTweet2Url(Pageable pageRequest); + + Page findAllTweet2TickerSymbol(Pageable pageRequest); + } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java index f28949f9..89eca039 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java @@ -4,6 +4,7 @@ import org.springframework.data.domain.Pageable; import org.woehlke.twitterwall.oodm.entities.HashTag; import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithScreenName; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; @@ -28,5 +29,13 @@ public interface UserService extends DomainServiceWithIdTwitter,DomainServ Page getUsersForHashTag(HashTag hashTag,Pageable pageRequest); - //long countUsersForHashTag(String hashtagText); + Page findAllUser2HashTag(Pageable pageRequest); + + Page findAllUser2Media(Pageable pageRequest); + + Page findAllUser2Mentiong(Pageable pageRequest); + + Page findAllUser2Url(Pageable pageRequest); + + Page findAllUser2TickerSymbol(Pageable pageRequest); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java index f6f2b724..5be31440 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java @@ -11,6 +11,7 @@ import org.woehlke.twitterwall.oodm.entities.HashTag; import org.woehlke.twitterwall.oodm.entities.Tweet; import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.TweetRepository; import org.woehlke.twitterwall.oodm.service.TweetService; @@ -48,6 +49,31 @@ public Page findAllTwitterIds(Pageable pageRequest) { return tweetRepository.findAllTwitterIds(pageRequest); } + @Override + public Page findAllTweet2HashTag(Pageable pageRequest) { + return tweetRepository.findAllTweet2HashTag(pageRequest); + } + + @Override + public Page findAllTweet2Media(Pageable pageRequest) { + return tweetRepository.findAllTweet2Media(pageRequest); + } + + @Override + public Page findAllTweet2Mention(Pageable pageRequest) { + return tweetRepository.findAllTweet2Mention(pageRequest); + } + + @Override + public Page findAllTweet2Url(Pageable pageRequest) { + return tweetRepository.findAllTweet2Url(pageRequest); + } + + @Override + public Page findAllTweet2TickerSymbol(Pageable pageRequest) { + return tweetRepository.findAllTweet2TickerSymbol(pageRequest); + } + @Override public Tweet findByIdTwitter(long idTwitter) { return tweetRepository.findByIdTwitter(idTwitter); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java index f70047b5..dd042533 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Transactional; import org.woehlke.twitterwall.oodm.entities.HashTag; import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.entities.transients.*; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.UserRepository; import org.woehlke.twitterwall.oodm.service.UserService; @@ -79,4 +80,30 @@ public Page getAllTwitterIds(Pageable pageRequest) { public Page getUsersForHashTag(HashTag hashTag, Pageable pageRequest) { return userRepository.findUsersForHashTag(hashTag.getText(),pageRequest); } + + @Override + public Page findAllUser2HashTag(Pageable pageRequest) { + return userRepository.findAllUser2HashTag(pageRequest); + } + + @Override + public Page findAllUser2Media(Pageable pageRequest) { + return userRepository.findAllUser2Media(pageRequest); + } + + @Override + public Page findAllUser2Mentiong(Pageable pageRequest) { + return userRepository.findAllUser2Mentiong(pageRequest); + } + + @Override + public Page findAllUser2Url(Pageable pageRequest) { + return userRepository.findAllUser2Url(pageRequest); + } + + @Override + public Page findAllUser2TickerSymbol(Pageable pageRequest){ + return userRepository.findAllUser2TickerSymbol(pageRequest); + } + } From 2baeadcc31aafc7d82fe5bb75fca493d80a31941 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Tue, 25 Jul 2017 23:43:21 +0200 Subject: [PATCH 05/13] working on #146 --- .../mapper/Tweet2MediaRowMapper.java | 2 +- .../oodm/repositories/UserRepository.java | 4 --- .../custom/impl/TweetRepositoryImpl.java | 26 +++++++++---------- .../custom/impl/UserRepositoryImpl.java | 10 +++---- 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java index ed271d66..71eb4081 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java @@ -13,7 +13,7 @@ public class Tweet2MediaRowMapper implements RowMapper { public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { return new Object2Entity( rs.getLong("tweet_id"), - rs.getLong(" tweet_media"), + rs.getLong("media_id"), Object2EntityTable.TWEET_MEDIA ); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java index 7dacf0b9..a91842c9 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java @@ -6,10 +6,6 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.transients.User2HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.User2Media; -import org.woehlke.twitterwall.oodm.entities.transients.User2Mention; -import org.woehlke.twitterwall.oodm.entities.transients.User2Url; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UserRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java index f02ee528..a0ef4f95 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java @@ -44,7 +44,7 @@ public Tweet findByUniqueId(Tweet domainObject) { @Override public Page findAllTweet2HashTag(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); String sqlCount = "select count(*) as counted from tweet_hashtag"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); @@ -56,11 +56,11 @@ public Page findAllTweet2HashTag(Pageable pageRequest) { @Override public Page findAllTweet2Media(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); - String sqlCount = "select count(*) as counted from tweet_hashtag"; + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_media"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); - String sql = "select * from tweet_hashtag"+pagerSQL; + String sql = "select * from tweet_media"+pagerSQL; List list = jdbcTemplate.query(sql, new Tweet2MediaRowMapper()); PageImpl resultPage = new PageImpl<>(list,pageRequest,total); return resultPage; @@ -68,11 +68,11 @@ public Page findAllTweet2Media(Pageable pageRequest) { @Override public Page findAllTweet2Mention(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); - String sqlCount = "select count(*) as counted from tweet_hashtag"; + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_mention"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); - String sql = "select * from tweet_hashtag"+pagerSQL; + String sql = "select * from tweet_mention"+pagerSQL; List list = jdbcTemplate.query(sql, new Tweet2MentionRowMapper()); PageImpl resultPage = new PageImpl<>(list,pageRequest,total); return resultPage; @@ -80,11 +80,11 @@ public Page findAllTweet2Mention(Pageable pageRequest) { @Override public Page findAllTweet2Url(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); - String sqlCount = "select count(*) as counted from tweet_hashtag"; + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_url"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); - String sql = "select * from tweet_hashtag"+pagerSQL; + String sql = "select * from tweet_url"+pagerSQL; List list = jdbcTemplate.query(sql, new Tweet2UrlRowMapper()); PageImpl resultPage = new PageImpl<>(list,pageRequest,total); return resultPage; @@ -92,11 +92,11 @@ public Page findAllTweet2Url(Pageable pageRequest) { @Override public Page findAllTweet2TickerSymbol(Pageable pageRequest){ - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); - String sqlCount = "select count(*) as counted from tweet_hashtag"; + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String sqlCount = "select count(*) as counted from tweet_tickersymbol"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); - String sql = "select * from tweet_hashtag"+pagerSQL; + String sql = "select * from tweet_tickersymbol"+pagerSQL; List list = jdbcTemplate.query(sql, new Tweet2TickerSymbolRowMapper()); PageImpl resultPage = new PageImpl<>(list,pageRequest,total); return resultPage; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java index 44973782..0f550a95 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java @@ -45,7 +45,7 @@ public User findByUniqueId(User domainObject) { @Override public Page findAllUser2HashTag(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); String sqlCount = "select count(*) as counted from userprofile_hashtag"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); @@ -57,7 +57,7 @@ public Page findAllUser2HashTag(Pageable pageRequest) { @Override public Page findAllUser2Media(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); String sqlCount = "select count(*) as counted from userprofile_media"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); @@ -69,7 +69,7 @@ public Page findAllUser2Media(Pageable pageRequest) { @Override public Page findAllUser2Mentiong(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); String sqlCount = "select count(*) as counted from userprofile_mention"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); @@ -81,7 +81,7 @@ public Page findAllUser2Mentiong(Pageable pageRequest) { @Override public Page findAllUser2Url(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); String sqlCount = "select count(*) as counted from userprofile_url"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); @@ -93,7 +93,7 @@ public Page findAllUser2Url(Pageable pageRequest) { @Override public Page findAllUser2TickerSymbol(Pageable pageRequest) { - String pagerSQL = " WHERE ROW_COUNT > "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); + String pagerSQL = " OFFSET "+pageRequest.getOffset()+" LIMIT "+pageRequest.getPageSize(); String sqlCount = "select count(*) as counted from userprofile_tickersymbol"; List countedList = jdbcTemplate.query(sqlCount, new RowMapperCount()); long total= countedList.iterator().next().longValue(); From cf482c9fb153a64b1badcbfc320a9f44ce5e2e8c Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Wed, 26 Jul 2017 22:14:15 +0200 Subject: [PATCH 06/13] working on #146 --- .../mq/endoint/impl/UserFinisherImpl.java | 2 - .../countedEntities/tweet/hashtag.html | 75 +++++++++++++++++- .../countedEntities/tweet/media.html | 75 +++++++++++++++++- .../countedEntities/tweet/mention.html | 75 +++++++++++++++++- .../countedEntities/tweet/tickersymbol.html | 75 +++++++++++++++++- .../countedEntities/tweet/url.html | 75 +++++++++++++++++- .../countedEntities/userprofile/hashtag.html | 75 +++++++++++++++++- .../countedEntities/userprofile/media.html | 75 +++++++++++++++++- .../countedEntities/userprofile/mention.html | 75 +++++++++++++++++- .../userprofile/tickersymbol.html | 75 +++++++++++++++++- .../countedEntities/userprofile/url.html | 77 ++++++++++++++++++- 11 files changed, 739 insertions(+), 15 deletions(-) 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 index ad4018ad..2013e57d 100644 --- 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 @@ -13,7 +13,6 @@ 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 org.woehlke.twitterwall.scheduled.service.backend.impl.TwitterApiServiceImpl; import org.woehlke.twitterwall.scheduled.service.persist.CountedEntitiesService; import java.util.ArrayList; @@ -60,7 +59,6 @@ public void finishAsnyc(Message> incomingMessageList) { } } - @Autowired public UserFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService) { this.taskService = taskService; diff --git a/src/main/resources/templates/application/countedEntities/tweet/hashtag.html b/src/main/resources/templates/application/countedEntities/tweet/hashtag.html index ba01bf0d..fbfc1325 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/hashtag.html +++ b/src/main/resources/templates/application/countedEntities/tweet/hashtag.html @@ -9,9 +9,82 @@
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
- + + + + + + + + + + + + + + + + + + + +
Tweet IDHashTag ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDHashTag ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+ +
diff --git a/src/main/resources/templates/application/countedEntities/tweet/media.html b/src/main/resources/templates/application/countedEntities/tweet/media.html index ba01bf0d..d0b5bb53 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/media.html +++ b/src/main/resources/templates/application/countedEntities/tweet/media.html @@ -9,9 +9,82 @@
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
- + + + + + + + + + + + + + + + + + + + +
Tweet IDMedia ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDMedia ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+ +
diff --git a/src/main/resources/templates/application/countedEntities/tweet/mention.html b/src/main/resources/templates/application/countedEntities/tweet/mention.html index ba01bf0d..cc9d19b5 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/mention.html +++ b/src/main/resources/templates/application/countedEntities/tweet/mention.html @@ -9,9 +9,82 @@
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
- + + + + + + + + + + + + + + + + + + + +
Tweet IDMedia ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDMedia ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+ +
diff --git a/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html b/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html index ba01bf0d..44b72dc9 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html +++ b/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html @@ -9,9 +9,82 @@
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
- + + + + + + + + + + + + + + + + + + + +
Tweet IDMedia ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDMedia ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+ +
diff --git a/src/main/resources/templates/application/countedEntities/tweet/url.html b/src/main/resources/templates/application/countedEntities/tweet/url.html index ba01bf0d..07052f5c 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/url.html +++ b/src/main/resources/templates/application/countedEntities/tweet/url.html @@ -9,9 +9,82 @@
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
- + + + + + + + + + + + + + + + + + + + +
Tweet IDMedia ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDMedia ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+ +
diff --git a/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html b/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html index ba01bf0d..ff96a0a2 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html @@ -9,9 +9,82 @@
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
- + + + + + + + + + + + + + + + + + + + +
Tweet IDHashTag ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDHashTag ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+ +
diff --git a/src/main/resources/templates/application/countedEntities/userprofile/media.html b/src/main/resources/templates/application/countedEntities/userprofile/media.html index ba01bf0d..b803cea6 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/media.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/media.html @@ -9,9 +9,82 @@
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
- + + + + + + + + + + + + + + + + + + + +
Tweet IDHashTag ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDHashTag ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+ +
diff --git a/src/main/resources/templates/application/countedEntities/userprofile/mention.html b/src/main/resources/templates/application/countedEntities/userprofile/mention.html index ba01bf0d..1b66f109 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/mention.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/mention.html @@ -8,10 +8,81 @@
-
+
- + +
+
+
+
+ + + + + + + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
Tweet IDHashTag ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDHashTag ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+
diff --git a/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html b/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html index ba01bf0d..3b6bb109 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html @@ -8,10 +8,81 @@
-
+
- + +
+
+
+
+ + + + + + + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
Tweet IDHashTag ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDHashTag ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+
diff --git a/src/main/resources/templates/application/countedEntities/userprofile/url.html b/src/main/resources/templates/application/countedEntities/userprofile/url.html index ba01bf0d..a7257154 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/url.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/url.html @@ -1,7 +1,7 @@ + xmlns:spring="http://www.springframework.org/"> @@ -9,9 +9,82 @@
+
+
+
+ +
+
+
+
+ + + + + + + +
+
+
- + + + + + + + + + + + + + + + + + + + +
Tweet IDHashTag ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDHashTag ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+ +
From 87626ec805c6ea51be4d8614e639067f8ccaf94e Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Wed, 26 Jul 2017 23:37:58 +0200 Subject: [PATCH 07/13] working on #146 --- .../controller/CountedEntitiesController.java | 114 ++++++++++++++- .../entities/transients/Object2Entity.java | 34 +++++ .../oodm/service/TweetService.java | 2 - .../common/DomainObjectMinimalService.java | 2 + .../impl/DomainServiceWithTaskImpl.java | 5 + .../oodm/service/impl/MediaServiceImpl.java | 1 + .../oodm/service/impl/MentionServiceImpl.java | 1 + .../service/impl/TickerSymbolServiceImpl.java | 1 + .../service/impl/UrlCacheServiceImpl.java | 1 + .../countedEntities/tweet/hashtag.html | 2 +- .../countedEntities/tweet/media.html | 2 +- .../countedEntities/tweet/mention.html | 2 +- .../countedEntities/tweet/tickersymbol.html | 2 +- .../countedEntities/tweet/url.html | 2 +- .../countedEntities/userprofile/hashtag.html | 2 +- .../countedEntities/userprofile/media.html | 2 +- .../countedEntities/userprofile/mention.html | 130 +++++++++--------- .../userprofile/tickersymbol.html | 130 +++++++++--------- .../countedEntities/userprofile/url.html | 2 +- 19 files changed, 296 insertions(+), 141 deletions(-) diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java index 105a854f..d9668714 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java @@ -11,9 +11,12 @@ 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.*; import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.oodm.service.UserService; +import org.woehlke.twitterwall.oodm.service.*; + +import java.util.ArrayList; +import java.util.List; /** * Created by tw on 16.07.17. @@ -30,6 +33,15 @@ public String domainCountTweet2hashtag(@RequestParam(name= "page" ,defaultValue= setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = tweetService.findAllTweet2HashTag(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + Tweet tweet = tweetService.findById(object2Entity.getObjectId()); + HashTag hashTag = hashTagService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(tweet.getUser().getScreenName()); + object2Entity.setEntityInfo(hashTag.getText()); + listObject2EntityContent.add(object2Entity); + } + model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/hashtag"; } @@ -40,6 +52,15 @@ public String domainCountTweet2media(@RequestParam(name= "page" ,defaultValue="" setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = tweetService.findAllTweet2Media(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + Tweet tweet = tweetService.findById(object2Entity.getObjectId()); + Media medium = mediaService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(tweet.getUser().getScreenName()); + object2Entity.setEntityInfo(medium.getUrl()); + listObject2EntityContent.add(object2Entity); + } + model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/media"; } @@ -50,6 +71,15 @@ public String domainCountTweet2mention(@RequestParam(name= "page" ,defaultValue= setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = tweetService.findAllTweet2Mention(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + Tweet tweet = tweetService.findById(object2Entity.getObjectId()); + Mention mention = mentionService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(tweet.getUser().getScreenName()); + object2Entity.setEntityInfo(mention.getScreenName()); + listObject2EntityContent.add(object2Entity); + } + model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/mention"; } @@ -60,6 +90,15 @@ public String domainCountTweet2tickersymbol(@RequestParam(name= "page" ,defaultV setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = tweetService.findAllTweet2TickerSymbol(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + Tweet tweet = tweetService.findById(object2Entity.getObjectId()); + TickerSymbol tickerSymbol = tickerSymbolService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(tweet.getUser().getScreenName()); + object2Entity.setEntityInfo(tickerSymbol.getUniqueId()); + listObject2EntityContent.add(object2Entity); + } + model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/tickersymbol"; } @@ -70,6 +109,15 @@ public String domainCountTweet2url(@RequestParam(name= "page" ,defaultValue=""+ setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = tweetService.findAllTweet2Url(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + Tweet tweet = tweetService.findById(object2Entity.getObjectId()); + Url url = urlService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(tweet.getUser().getScreenName()); + object2Entity.setEntityInfo(url.getExpanded()); + listObject2EntityContent.add(object2Entity); + } + model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/tweet/url"; } @@ -80,6 +128,15 @@ public String domainCountUserprofile2hashtag(@RequestParam(name= "page" ,default setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = userService.findAllUser2HashTag(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + User user = userService.findById(object2Entity.getObjectId()); + HashTag hashTag = hashTagService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(user.getScreenName()); + object2Entity.setEntityInfo(hashTag.getText()); + listObject2EntityContent.add(object2Entity); + } + model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); return PATH+"/userprofile/hashtag"; } @@ -90,7 +147,16 @@ public String domainCountUserprofile2media(@RequestParam(name= "page" ,defaultVa setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = userService.findAllUser2Media(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + User user = userService.findById(object2Entity.getObjectId()); + Media medium = mediaService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(user.getScreenName()); + object2Entity.setEntityInfo(medium.getUrl()); + listObject2EntityContent.add(object2Entity); + } model.addAttribute("listObject2Entity", listObject2Entity); + model.addAttribute("listObject2EntityContent",listObject2EntityContent); return PATH+"/userprofile/media"; } @@ -100,7 +166,16 @@ public String domainCountUserprofile2mention(@RequestParam(name= "page" ,default setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = userService.findAllUser2Mentiong(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + User user = userService.findById(object2Entity.getObjectId()); + Mention mention = mentionService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(user.getScreenName()); + object2Entity.setEntityInfo(mention.getScreenName()); + listObject2EntityContent.add(object2Entity); + } model.addAttribute("listObject2Entity", listObject2Entity); + model.addAttribute("listObject2EntityContent",listObject2EntityContent); return PATH+"/userprofile/mention"; } @@ -110,7 +185,16 @@ public String domainCountUserprofile2Tickersymbol(@RequestParam(name= "page" ,de setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = userService.findAllUser2TickerSymbol(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + User user = userService.findById(object2Entity.getObjectId()); + TickerSymbol tickerSymbol = tickerSymbolService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(user.getScreenName()); + object2Entity.setEntityInfo(tickerSymbol.getUniqueId()); + listObject2EntityContent.add(object2Entity); + } model.addAttribute("listObject2Entity", listObject2Entity); + model.addAttribute("listObject2EntityContent",listObject2EntityContent); return PATH+"/userprofile/tickersymbol"; } @@ -120,7 +204,16 @@ public String domainCountUserprofile2Url(@RequestParam(name= "page" ,defaultValu setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); Page listObject2Entity = userService.findAllUser2Url(pageRequest); + List listObject2EntityContent = new ArrayList(); + for(Object2Entity object2Entity:listObject2Entity.getContent()){ + User user = userService.findById(object2Entity.getObjectId()); + Url url = urlService.findById(object2Entity.getEntityId()); + object2Entity.setObjectInfo(user.getScreenName()); + object2Entity.setEntityInfo(url.getExpanded()); + listObject2EntityContent.add(object2Entity); + } model.addAttribute("listObject2Entity", listObject2Entity); + model.addAttribute("listObject2EntityContent",listObject2EntityContent); return PATH+"/userprofile/url"; } @@ -132,11 +225,16 @@ private void setUpThisPage(String title,Model model){ @Autowired - public CountedEntitiesController(TwitterwallFrontendProperties twitterwallFrontendProperties, ControllerHelper controllerHelper, TweetService tweetService, UserService userService) { + public CountedEntitiesController(TwitterwallFrontendProperties twitterwallFrontendProperties, ControllerHelper controllerHelper, TweetService tweetService, UserService userService, HashTagService hashTagService, MediaService mediaService, MentionService mentionService, TickerSymbolService tickerSymbolService, UrlService urlService) { this.twitterwallFrontendProperties = twitterwallFrontendProperties; this.controllerHelper = controllerHelper; this.tweetService = tweetService; this.userService = userService; + this.hashTagService = hashTagService; + this.mediaService = mediaService; + this.mentionService = mentionService; + this.tickerSymbolService = tickerSymbolService; + this.urlService = urlService; } @@ -148,4 +246,14 @@ public CountedEntitiesController(TwitterwallFrontendProperties twitterwallFronte private final TweetService tweetService; private final UserService userService; + + private final HashTagService hashTagService; + + private final MediaService mediaService; + + private final MentionService mentionService; + + private final TickerSymbolService tickerSymbolService; + + private final UrlService urlService; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java index 146b5210..6cbe1c78 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java @@ -6,8 +6,12 @@ public class Object2Entity implements Serializable { private long objectId; + private String objectInfo; + private long entityId; + private String entityInfo; + private Object2EntityTable object2EntityTable; public Object2Entity(long objectId, long entityId, Object2EntityTable object2EntityTable) { @@ -16,6 +20,14 @@ public Object2Entity(long objectId, long entityId, Object2EntityTable object2Ent this.object2EntityTable = object2EntityTable; } + public Object2Entity(long objectId, String objectInfo, long entityId, String entityInfo, Object2EntityTable object2EntityTable) { + this.objectId = objectId; + this.objectInfo = objectInfo; + this.entityId = entityId; + this.entityInfo = entityInfo; + this.object2EntityTable = object2EntityTable; + } + public long getObjectId() { return objectId; } @@ -32,6 +44,22 @@ public void setEntityId(long entityId) { this.entityId = entityId; } + public String getObjectInfo() { + return objectInfo; + } + + public void setObjectInfo(String objectInfo) { + this.objectInfo = objectInfo; + } + + public String getEntityInfo() { + return entityInfo; + } + + public void setEntityInfo(String entityInfo) { + this.entityInfo = entityInfo; + } + public Object2EntityTable getObject2EntityTable() { return object2EntityTable; } @@ -49,13 +77,17 @@ public boolean equals(Object o) { if (objectId != that.objectId) return false; if (entityId != that.entityId) return false; + if (objectInfo != null ? !objectInfo.equals(that.objectInfo) : that.objectInfo != null) return false; + if (entityInfo != null ? !entityInfo.equals(that.entityInfo) : that.entityInfo != null) return false; return object2EntityTable == that.object2EntityTable; } @Override public int hashCode() { int result = (int) (objectId ^ (objectId >>> 32)); + result = 31 * result + (objectInfo != null ? objectInfo.hashCode() : 0); result = 31 * result + (int) (entityId ^ (entityId >>> 32)); + result = 31 * result + (entityInfo != null ? entityInfo.hashCode() : 0); result = 31 * result + (object2EntityTable != null ? object2EntityTable.hashCode() : 0); return result; } @@ -64,7 +96,9 @@ public int hashCode() { public String toString() { return "Object2Entity{" + "objectId=" + objectId + + ", objectInfo='" + objectInfo + '\'' + ", entityId=" + entityId + + ", entityInfo='" + entityInfo + '\'' + ", object2EntityTable=" + object2EntityTable + '}'; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java index f78b2b13..18f53699 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java @@ -9,8 +9,6 @@ import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; -import java.util.List; - /** * Created by tw on 10.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java index 55b803ff..6d9b3c2b 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java @@ -6,6 +6,8 @@ public interface DomainObjectMinimalService { + T findById(long id); + Page getAll(Pageable pageRequest); long count(); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java index 2adb3445..5881de40 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java @@ -23,6 +23,11 @@ protected DomainServiceWithTaskImpl(DomainRepository domainRepository, TaskRe this.taskRepository = taskRepository; } + @Override + public T findById(long id) { + return domainRepository.findOne(id); + } + @Override public Page getAll(Pageable pageRequest) { return domainRepository.findAll(pageRequest); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java index 745c40f1..51a24e91 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java @@ -37,4 +37,5 @@ public Media findByIdTwitter(long idTwitter) { public Media findByUrl(String url) { return mediaRepository.findByUrl(url); } + } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java index 63998d92..015b07e6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java @@ -70,4 +70,5 @@ public Mention createProxyMention(Mention mention, Task task) { public Page getAllWithoutPersistentUser(Pageable pageRequest) { return mentionRepository.findAllByUserNull(pageRequest); } + } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java index 1dfdfacb..3bc9f0f6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java @@ -33,4 +33,5 @@ public TickerSymbolServiceImpl(TickerSymbolRepository tickerSymbolRepository, Ta public TickerSymbol findByUrl(String url) { return tickerSymbolRepository.findByUrl(url); } + } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlCacheServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlCacheServiceImpl.java index 19bfb37c..9723e620 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlCacheServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlCacheServiceImpl.java @@ -36,4 +36,5 @@ public UrlCache findByUrl(String url) { log.debug("UrlCache.findByUrl: found: "+urlCache.toString()); return urlCache; } + } diff --git a/src/main/resources/templates/application/countedEntities/tweet/hashtag.html b/src/main/resources/templates/application/countedEntities/tweet/hashtag.html index fbfc1325..8db7ce45 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/hashtag.html +++ b/src/main/resources/templates/application/countedEntities/tweet/hashtag.html @@ -39,7 +39,7 @@ - + diff --git a/src/main/resources/templates/application/countedEntities/tweet/media.html b/src/main/resources/templates/application/countedEntities/tweet/media.html index d0b5bb53..2d9b40ac 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/media.html +++ b/src/main/resources/templates/application/countedEntities/tweet/media.html @@ -39,7 +39,7 @@ - + diff --git a/src/main/resources/templates/application/countedEntities/tweet/mention.html b/src/main/resources/templates/application/countedEntities/tweet/mention.html index cc9d19b5..dd50b5c0 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/mention.html +++ b/src/main/resources/templates/application/countedEntities/tweet/mention.html @@ -39,7 +39,7 @@ - + diff --git a/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html b/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html index 44b72dc9..db0f6bd1 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html +++ b/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html @@ -39,7 +39,7 @@ - + diff --git a/src/main/resources/templates/application/countedEntities/tweet/url.html b/src/main/resources/templates/application/countedEntities/tweet/url.html index 07052f5c..d67215eb 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/url.html +++ b/src/main/resources/templates/application/countedEntities/tweet/url.html @@ -39,7 +39,7 @@ - + diff --git a/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html b/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html index ff96a0a2..dceb0df4 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html @@ -39,7 +39,7 @@ - + diff --git a/src/main/resources/templates/application/countedEntities/userprofile/media.html b/src/main/resources/templates/application/countedEntities/userprofile/media.html index b803cea6..d12295ad 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/media.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/media.html @@ -39,7 +39,7 @@ - + diff --git a/src/main/resources/templates/application/countedEntities/userprofile/mention.html b/src/main/resources/templates/application/countedEntities/userprofile/mention.html index 1b66f109..d8f4d02f 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/mention.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/mention.html @@ -8,80 +8,82 @@
-
-
-
-
-   zurück +
+
+
+
+
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDHashTag ID
- - - - objectId - - - - - - - entityId - - -
Tweet IDHashTag ID
-
-
-
-
-
-
-   zurück + + + + + + + + + + + + + + + + + + + +
Tweet IDHashTag ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDHashTag ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+
diff --git a/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html b/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html index 3b6bb109..65c49225 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html @@ -8,80 +8,82 @@
-
-
-
-
-   zurück +
+
+
+
+
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDHashTag ID
- - - - objectId - - - - - - - entityId - - -
Tweet IDHashTag ID
-
-
-
-
-
-
-   zurück + + + + + + + + + + + + + + + + + + + +
Tweet IDHashTag ID
+ + + + objectId + + + + + + + entityId + + +
Tweet IDHashTag ID
+
+
+
+
+
+ + + + + + + +
+
+
+
+
diff --git a/src/main/resources/templates/application/countedEntities/userprofile/url.html b/src/main/resources/templates/application/countedEntities/userprofile/url.html index a7257154..9de90162 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/url.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/url.html @@ -39,7 +39,7 @@ - + From c660811fd089085654b836764f752c4283e0c83b Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Thu, 27 Jul 2017 00:06:44 +0200 Subject: [PATCH 08/13] working on #146 --- src/main/resources/public/css/my.css | 4 ++++ .../application/countedEntities/tweet/hashtag.html | 2 ++ .../templates/application/countedEntities/tweet/media.html | 2 ++ .../application/countedEntities/tweet/mention.html | 2 ++ .../application/countedEntities/tweet/tickersymbol.html | 2 ++ .../templates/application/countedEntities/tweet/url.html | 2 ++ .../application/countedEntities/userprofile/hashtag.html | 6 ++++-- .../application/countedEntities/userprofile/media.html | 6 ++++-- .../application/countedEntities/userprofile/mention.html | 6 ++++-- .../countedEntities/userprofile/tickersymbol.html | 6 ++++-- .../application/countedEntities/userprofile/url.html | 6 ++++-- 11 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/resources/public/css/my.css b/src/main/resources/public/css/my.css index bca732a0..9af27192 100644 --- a/src/main/resources/public/css/my.css +++ b/src/main/resources/public/css/my.css @@ -132,6 +132,10 @@ #tw-application-management ul li { list-style-type: none; } + + .tw-left-space { + margin-left: 12px ; + } } diff --git a/src/main/resources/templates/application/countedEntities/tweet/hashtag.html b/src/main/resources/templates/application/countedEntities/tweet/hashtag.html index 8db7ce45..be00a26d 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/hashtag.html +++ b/src/main/resources/templates/application/countedEntities/tweet/hashtag.html @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo diff --git a/src/main/resources/templates/application/countedEntities/tweet/media.html b/src/main/resources/templates/application/countedEntities/tweet/media.html index 2d9b40ac..76b8c0b3 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/media.html +++ b/src/main/resources/templates/application/countedEntities/tweet/media.html @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo diff --git a/src/main/resources/templates/application/countedEntities/tweet/mention.html b/src/main/resources/templates/application/countedEntities/tweet/mention.html index dd50b5c0..b7759467 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/mention.html +++ b/src/main/resources/templates/application/countedEntities/tweet/mention.html @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo diff --git a/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html b/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html index db0f6bd1..ea680bc0 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html +++ b/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo diff --git a/src/main/resources/templates/application/countedEntities/tweet/url.html b/src/main/resources/templates/application/countedEntities/tweet/url.html index d67215eb..aa5c8d84 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/url.html +++ b/src/main/resources/templates/application/countedEntities/tweet/url.html @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo diff --git a/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html b/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html index dceb0df4..26371ef6 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html @@ -20,7 +20,7 @@
- + @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo @@ -71,7 +73,7 @@
- + diff --git a/src/main/resources/templates/application/countedEntities/userprofile/media.html b/src/main/resources/templates/application/countedEntities/userprofile/media.html index d12295ad..5e128002 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/media.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/media.html @@ -20,7 +20,7 @@
- + @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo @@ -71,7 +73,7 @@
- + diff --git a/src/main/resources/templates/application/countedEntities/userprofile/mention.html b/src/main/resources/templates/application/countedEntities/userprofile/mention.html index d8f4d02f..11f8d33a 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/mention.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/mention.html @@ -20,7 +20,7 @@
- + @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo @@ -71,7 +73,7 @@
- + diff --git a/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html b/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html index 65c49225..669cf822 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html @@ -20,7 +20,7 @@
- + @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo @@ -71,7 +73,7 @@
- + diff --git a/src/main/resources/templates/application/countedEntities/userprofile/url.html b/src/main/resources/templates/application/countedEntities/userprofile/url.html index 9de90162..1c3d1c6d 100644 --- a/src/main/resources/templates/application/countedEntities/userprofile/url.html +++ b/src/main/resources/templates/application/countedEntities/userprofile/url.html @@ -20,7 +20,7 @@
- + @@ -45,6 +45,7 @@ objectId + objectInfo @@ -53,6 +54,7 @@ entityId + entityInfo @@ -71,7 +73,7 @@
- + From 77d02898b4805db15e414c62ae4faa8207b8fddc Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Thu, 27 Jul 2017 01:48:24 +0200 Subject: [PATCH 09/13] fixed #146 --- .../controller/CountedEntitiesController.java | 113 +++++++++++++---- .../frontend/controller/TweetController.java | 28 ++++- .../frontend/controller/UserController.java | 118 +++++++++++++++--- .../hashtag.html => countedEntities.html} | 20 ++- .../countedEntities/tweet/media.html | 98 --------------- .../countedEntities/tweet/mention.html | 98 --------------- .../countedEntities/tweet/tickersymbol.html | 98 --------------- .../countedEntities/tweet/url.html | 98 --------------- .../countedEntities/userprofile/hashtag.html | 98 --------------- .../countedEntities/userprofile/media.html | 98 --------------- .../countedEntities/userprofile/mention.html | 98 --------------- .../userprofile/tickersymbol.html | 98 --------------- .../countedEntities/userprofile/url.html | 98 --------------- .../templates/application/domain/count.html | 10 +- .../templates/application/management.html | 7 +- src/main/resources/templates/tweet/one.html | 82 ++++++++++++ 16 files changed, 316 insertions(+), 944 deletions(-) rename src/main/resources/templates/application/{countedEntities/tweet/hashtag.html => countedEntities.html} (82%) delete mode 100644 src/main/resources/templates/application/countedEntities/tweet/media.html delete mode 100644 src/main/resources/templates/application/countedEntities/tweet/mention.html delete mode 100644 src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html delete mode 100644 src/main/resources/templates/application/countedEntities/tweet/url.html delete mode 100644 src/main/resources/templates/application/countedEntities/userprofile/hashtag.html delete mode 100644 src/main/resources/templates/application/countedEntities/userprofile/media.html delete mode 100644 src/main/resources/templates/application/countedEntities/userprofile/mention.html delete mode 100644 src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html delete mode 100644 src/main/resources/templates/application/countedEntities/userprofile/url.html create mode 100644 src/main/resources/templates/tweet/one.html diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java index d9668714..5c0e978c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java @@ -28,7 +28,12 @@ public class CountedEntitiesController { private final static String PATH="application/countedEntities"; @RequestMapping(path="/tweet/hashtag") - public String domainCountTweet2hashtag(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + public String domainCountTweet2hashtag( + @RequestParam( + name= "page", + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "Tweet -> HashTag"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -43,11 +48,18 @@ public String domainCountTweet2hashtag(@RequestParam(name= "page" ,defaultValue= } model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); - return PATH+"/tweet/hashtag"; + model.addAttribute("nameObject", "tweet"); + model.addAttribute("nameEntity", "hashtag"); + return PATH; } @RequestMapping(path="/tweet/media") - public String domainCountTweet2media(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + public String domainCountTweet2media( + @RequestParam( + name= "page", + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "Tweet -> Media"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -62,7 +74,9 @@ public String domainCountTweet2media(@RequestParam(name= "page" ,defaultValue="" } model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); - return PATH+"/tweet/media"; + model.addAttribute("nameObject", "tweet"); + model.addAttribute("nameEntity", "media"); + return PATH; } @RequestMapping(path="/tweet/mention") @@ -81,11 +95,18 @@ public String domainCountTweet2mention(@RequestParam(name= "page" ,defaultValue= } model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); - return PATH+"/tweet/mention"; + model.addAttribute("nameObject", "tweet"); + model.addAttribute("nameEntity", "mention"); + return PATH; } @RequestMapping(path="/tweet/tickersymbol") - public String domainCountTweet2tickersymbol(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + public String domainCountTweet2tickersymbol( + @RequestParam( + name= "page", + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "Tweet -> TickerSymbol"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -100,11 +121,18 @@ public String domainCountTweet2tickersymbol(@RequestParam(name= "page" ,defaultV } model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); - return PATH+"/tweet/tickersymbol"; + model.addAttribute("nameObject", "tweet"); + model.addAttribute("nameEntity", "tickersymbol"); + return PATH; } @RequestMapping(path="/tweet/url") - public String domainCountTweet2url(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + public String domainCountTweet2url( + @RequestParam( + name= "page", + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "Tweet -> Url"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -119,11 +147,18 @@ public String domainCountTweet2url(@RequestParam(name= "page" ,defaultValue=""+ } model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); - return PATH+"/tweet/url"; + model.addAttribute("nameObject", "tweet"); + model.addAttribute("nameEntity", "url"); + return PATH; } - @RequestMapping(path="/userprofile/hashtag") - public String domainCountUserprofile2hashtag(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + @RequestMapping(path="/user/hashtag") + public String domainCountUserprofile2hashtag( + @RequestParam( + name= "page" , + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "UserProfile -> HashTag"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -138,11 +173,18 @@ public String domainCountUserprofile2hashtag(@RequestParam(name= "page" ,default } model.addAttribute("listObject2EntityContent",listObject2EntityContent); model.addAttribute("listObject2Entity", listObject2Entity); - return PATH+"/userprofile/hashtag"; + model.addAttribute("nameObject", "user"); + model.addAttribute("nameEntity", "hashtag"); + return PATH; } - @RequestMapping(path="/userprofil/media") - public String domainCountUserprofile2media(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + @RequestMapping(path="/user/media") + public String domainCountUserprofile2media( + @RequestParam( + name= "page" , + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "UserProfile -> Media"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -157,11 +199,18 @@ public String domainCountUserprofile2media(@RequestParam(name= "page" ,defaultVa } model.addAttribute("listObject2Entity", listObject2Entity); model.addAttribute("listObject2EntityContent",listObject2EntityContent); - return PATH+"/userprofile/media"; + model.addAttribute("nameObject", "user"); + model.addAttribute("nameEntity", "media"); + return PATH; } - @RequestMapping(path="/userprofile/mention") - public String domainCountUserprofile2mention(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + @RequestMapping(path="/user/mention") + public String domainCountUserprofile2mention( + @RequestParam( + name= "page", + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "UserProfile -> Mention"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -176,11 +225,18 @@ public String domainCountUserprofile2mention(@RequestParam(name= "page" ,default } model.addAttribute("listObject2Entity", listObject2Entity); model.addAttribute("listObject2EntityContent",listObject2EntityContent); - return PATH+"/userprofile/mention"; + model.addAttribute("nameObject", "user"); + model.addAttribute("nameEntity", "mention"); + return PATH; } - @RequestMapping(path="/userprofile/tickersymbol") - public String domainCountUserprofile2Tickersymbol(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + @RequestMapping(path="/user/tickersymbol") + public String domainCountUserprofile2Tickersymbol( + @RequestParam( + name= "page", + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "UserProfile -> TickerSymbol"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -195,11 +251,18 @@ public String domainCountUserprofile2Tickersymbol(@RequestParam(name= "page" ,de } model.addAttribute("listObject2Entity", listObject2Entity); model.addAttribute("listObject2EntityContent",listObject2EntityContent); - return PATH+"/userprofile/tickersymbol"; + model.addAttribute("nameObject", "user"); + model.addAttribute("nameEntity", "tickersymbol"); + return PATH; } - @RequestMapping(path="/userprofile/url") - public String domainCountUserprofile2Url(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { + @RequestMapping(path="/user/url") + public String domainCountUserprofile2Url( + @RequestParam( + name= "page", + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { String title = "UserProfile -> Url"; setUpThisPage(title,model); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize()); @@ -214,7 +277,9 @@ public String domainCountUserprofile2Url(@RequestParam(name= "page" ,defaultValu } model.addAttribute("listObject2Entity", listObject2Entity); model.addAttribute("listObject2EntityContent",listObject2EntityContent); - return PATH+"/userprofile/url"; + model.addAttribute("nameObject", "user"); + model.addAttribute("nameEntity", "url"); + return PATH; } private void setUpThisPage(String title,Model model){ diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java index 73858afc..86dbc64c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java @@ -9,6 +9,7 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.woehlke.twitterwall.conf.TwitterProperties; @@ -27,14 +28,37 @@ public class TweetController { @RequestMapping("/all") - public String getLatestTweets(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { - model = controllerHelper.setupPage(model,"Tweets",twitterProperties.getSearchQuery(),Symbols.HOME.toString()); + public String getLatestTweets( + @RequestParam( + name= "page" , + defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { + model = controllerHelper.setupPage( + model, + "Tweets", + twitterProperties.getSearchQuery(),Symbols.HOME.toString() + ); Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize(), Sort.Direction.DESC,"createdAt"); Page latest = tweetService.getAll(pageRequest); model.addAttribute("latestTweets", latest); return "tweet/all"; } + @RequestMapping("/id/{id}") + public String getLatestTweets( + @PathVariable("id") Tweet tweet, Model model + ) { + model = controllerHelper.setupPage( + model, + "Tweet", + twitterProperties.getSearchQuery(), + Symbols.HOME.toString() + ); + model.addAttribute("tweet", tweet); + return "tweet/one"; + } + private static final Logger log = LoggerFactory.getLogger(TweetController.class); private final TweetService tweetService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java index 12276957..78747290 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java @@ -15,6 +15,7 @@ import org.woehlke.twitterwall.conf.TwitterwallFrontendProperties; import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; import org.woehlke.twitterwall.frontend.controller.common.Symbols; +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.service.TweetService; @@ -30,8 +31,19 @@ public class UserController { private final static String PATH="user"; @RequestMapping("/all") - public String getAll(@RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model) { - Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize(), Sort.Direction.ASC,"screenName"); + public String getAll( + @RequestParam( + name= "page" , + defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER + ) int page, + Model model + ) { + Pageable pageRequest = new PageRequest( + page, + twitterwallFrontendProperties.getPageSize(), + Sort.Direction.ASC, + "screenName" + ); model.addAttribute("users", userService.getAll(pageRequest)); String symbol = Symbols.USER_ALL.toString(); String title = "All Users"; @@ -39,16 +51,49 @@ public String getAll(@RequestParam(name= "page" ,defaultValue=""+ControllerHelpe return "user/all"; } + @RequestMapping("/id/{id}") + public String getUserForId( + @RequestParam( + name= "page", + defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER + ) int page, + @PathVariable("id") User user, Model model + ) { + Pageable pageRequest = new PageRequest( + page, + twitterwallFrontendProperties.getPageSize(), + Sort.Direction.DESC, + "createdAt" + ); + Page tweetsForUser = tweetService.findTweetsForUser(user,pageRequest); + String symbol = Symbols.PROFILE.toString(); + String title = "@" + user.getScreenName(); + String subtitle = user.getName(); + model = controllerHelper.setupPage(model, title, subtitle, symbol); + model.addAttribute("user", user); + model.addAttribute("latestTweets",tweetsForUser); + return "user/screenName"; + } + @RequestMapping("/{screenName}") public String getUserForScreeName( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, - @PathVariable String screenName, Model model) { + @RequestParam( + name= "page", + defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER + ) int page, + @PathVariable String screenName, Model model + ) { if (User.isValidScreenName(screenName)) { User user = userService.findByScreenName(screenName); if(user==null){ throw new IllegalArgumentException("/user/"+ screenName); } - Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize(), Sort.Direction.DESC,"createdAt"); + Pageable pageRequest = new PageRequest( + page, + twitterwallFrontendProperties.getPageSize(), + Sort.Direction.DESC, + "createdAt" + ); Page tweetsForUser = tweetService.findTweetsForUser(user,pageRequest); String symbol = Symbols.PROFILE.toString(); String title = "@" + user.getScreenName(); @@ -63,8 +108,18 @@ public String getUserForScreeName( } @RequestMapping("/tweets") - public String getTweetingUsers(@RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page,Model model) { - Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize(), Sort.Direction.ASC,"screenName"); + public String getTweetingUsers( + @RequestParam( + name= "page" , + defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER + ) int page,Model model + ) { + Pageable pageRequest = new PageRequest( + page, + twitterwallFrontendProperties.getPageSize(), + Sort.Direction.ASC, + "screenName" + ); Page tweetingUsers = userService.getTweetingUsers(pageRequest); model.addAttribute("users", tweetingUsers); String symbol = Symbols.USER_TWEETS.toString(); @@ -74,8 +129,19 @@ public String getTweetingUsers(@RequestParam(name= "page" ,defaultValue=""+Contr } @RequestMapping("/notyetfriends") - public String getNotYetFriendUsers(@RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page,Model model) { - Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize(), Sort.Direction.ASC,"screenName"); + public String getNotYetFriendUsers( + @RequestParam( + name= "page", + defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER + ) int page, + Model model + ) { + Pageable pageRequest = new PageRequest( + page, + twitterwallFrontendProperties.getPageSize(), + Sort.Direction.ASC, + "screenName" + ); model.addAttribute("users", userService.getNotYetFriendUsers(pageRequest)); String symbol = Symbols.USER_NOT_YET_FRIENDS.toString(); String title = "Not Yet Friends"; @@ -84,8 +150,17 @@ public String getNotYetFriendUsers(@RequestParam(name= "page" ,defaultValue=""+C } @RequestMapping("/notyetonlist") - public String getNotYetOnList(@RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page,Model model) { - Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize(), Sort.Direction.ASC,"screenName"); + public String getNotYetOnList( + @RequestParam( + name= "page" , + defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER + ) int page, Model model + ) { + Pageable pageRequest = new PageRequest( + page, twitterwallFrontendProperties.getPageSize(), + Sort.Direction.ASC, + "screenName" + ); model.addAttribute("users", userService.getNotYetOnList(pageRequest)); String symbol = Symbols.USER_NOT_YET_ON_LIST.toString(); String title = "Not Yet On List"; @@ -94,8 +169,18 @@ public String getNotYetOnList(@RequestParam(name= "page" ,defaultValue=""+Contro } @RequestMapping("/onlist") - public String getOnList(@RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page,Model model) { - Pageable pageRequest = new PageRequest(page, twitterwallFrontendProperties.getPageSize(), Sort.Direction.ASC,"screenName"); + public String getOnList( + @RequestParam( + name= "page" , + defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER + ) int page,Model model + ) { + Pageable pageRequest = new PageRequest( + page, + twitterwallFrontendProperties.getPageSize(), + Sort.Direction.ASC, + "screenName" + ); Page usersOnList = userService.getOnList(pageRequest); model.addAttribute("users", usersOnList); String symbol = Symbols.LEAF.toString(); @@ -117,7 +202,12 @@ public String getOnList(@RequestParam(name= "page" ,defaultValue=""+ControllerHe private static String subtitle = "Users"; @Autowired - public UserController(UserService userService, TweetService tweetService, TwitterwallFrontendProperties twitterwallFrontendProperties, ControllerHelper controllerHelper) { + public UserController( + UserService userService, + TweetService tweetService, + TwitterwallFrontendProperties twitterwallFrontendProperties, + ControllerHelper controllerHelper + ) { this.userService = userService; this.tweetService = tweetService; this.twitterwallFrontendProperties = twitterwallFrontendProperties; diff --git a/src/main/resources/templates/application/countedEntities/tweet/hashtag.html b/src/main/resources/templates/application/countedEntities.html similarity index 82% rename from src/main/resources/templates/application/countedEntities/tweet/hashtag.html rename to src/main/resources/templates/application/countedEntities.html index be00a26d..9be5c922 100644 --- a/src/main/resources/templates/application/countedEntities/tweet/hashtag.html +++ b/src/main/resources/templates/application/countedEntities.html @@ -20,7 +20,7 @@
- + @@ -34,8 +34,8 @@ - - + + @@ -43,7 +43,7 @@ - - + +
Tweet IDHashTag IDnameObject IDnameEntity ID
- + objectId objectInfo @@ -52,18 +52,16 @@ - - entityId - entityInfo - + entityId + entityInfo
Tweet IDHashTag IDnameObject IDnameEntity ID
@@ -73,7 +71,7 @@
- + diff --git a/src/main/resources/templates/application/countedEntities/tweet/media.html b/src/main/resources/templates/application/countedEntities/tweet/media.html deleted file mode 100644 index 76b8c0b3..00000000 --- a/src/main/resources/templates/application/countedEntities/tweet/media.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDMedia ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDMedia ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/countedEntities/tweet/mention.html b/src/main/resources/templates/application/countedEntities/tweet/mention.html deleted file mode 100644 index b7759467..00000000 --- a/src/main/resources/templates/application/countedEntities/tweet/mention.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
-
-
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDMedia ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDMedia ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html b/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html deleted file mode 100644 index ea680bc0..00000000 --- a/src/main/resources/templates/application/countedEntities/tweet/tickersymbol.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
-
-
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDMedia ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDMedia ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/countedEntities/tweet/url.html b/src/main/resources/templates/application/countedEntities/tweet/url.html deleted file mode 100644 index aa5c8d84..00000000 --- a/src/main/resources/templates/application/countedEntities/tweet/url.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
-
-
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDMedia ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDMedia ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html b/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html deleted file mode 100644 index 26371ef6..00000000 --- a/src/main/resources/templates/application/countedEntities/userprofile/hashtag.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
-
-
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDHashTag ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDHashTag ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/countedEntities/userprofile/media.html b/src/main/resources/templates/application/countedEntities/userprofile/media.html deleted file mode 100644 index 5e128002..00000000 --- a/src/main/resources/templates/application/countedEntities/userprofile/media.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
-
-
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDHashTag ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDHashTag ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/countedEntities/userprofile/mention.html b/src/main/resources/templates/application/countedEntities/userprofile/mention.html deleted file mode 100644 index 11f8d33a..00000000 --- a/src/main/resources/templates/application/countedEntities/userprofile/mention.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
-
-
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDHashTag ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDHashTag ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html b/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html deleted file mode 100644 index 669cf822..00000000 --- a/src/main/resources/templates/application/countedEntities/userprofile/tickersymbol.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
-
-
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDHashTag ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDHashTag ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/countedEntities/userprofile/url.html b/src/main/resources/templates/application/countedEntities/userprofile/url.html deleted file mode 100644 index 1c3d1c6d..00000000 --- a/src/main/resources/templates/application/countedEntities/userprofile/url.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
-
-
-
-
-
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
Tweet IDHashTag ID
- - - - objectId - objectInfo - - - - - - - entityId - entityInfo - - -
Tweet IDHashTag ID
-
-
-
-
-
- - - - - - - -
-
-
-
- -
-
-
-
-
-
- -
- - diff --git a/src/main/resources/templates/application/domain/count.html b/src/main/resources/templates/application/domain/count.html index 4bbeaab0..75421729 100644 --- a/src/main/resources/templates/application/domain/count.html +++ b/src/main/resources/templates/application/domain/count.html @@ -93,27 +93,27 @@
diff --git a/src/main/resources/templates/application/management.html b/src/main/resources/templates/application/management.html index 57af6649..59fd530a 100644 --- a/src/main/resources/templates/application/management.html +++ b/src/main/resources/templates/application/management.html @@ -11,22 +11,17 @@
diff --git a/src/main/resources/templates/tweet/one.html b/src/main/resources/templates/tweet/one.html new file mode 100644 index 00000000..86992502 --- /dev/null +++ b/src/main/resources/templates/tweet/one.html @@ -0,0 +1,82 @@ + + + + + +
+
+
+
+
+
+
+
+
+

+ +

+

+ + Alt-Text + +

+
+
+

Username

+

@screenName

+


+

Text

+


+

+ 12  + 23 +

+

+ +   zurück + +

+
+
+

RT

+
+
+

+ +

+

+ Alt-Text +

+
+
+

Username

+

@fromUser

+


+

Text

+


+

+   12  +   23 +

+
+ +
+
+
+
+
+
+
+
+
+ +
+ + From f14924afbaf404545642469735930ee4da157f14 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Thu, 27 Jul 2017 01:56:01 +0200 Subject: [PATCH 10/13] fixed #146 --- src/main/java/org/woehlke/twitterwall/Application.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/woehlke/twitterwall/Application.java b/src/main/java/org/woehlke/twitterwall/Application.java index f7dcb9d1..bfcc1011 100644 --- a/src/main/java/org/woehlke/twitterwall/Application.java +++ b/src/main/java/org/woehlke/twitterwall/Application.java @@ -24,7 +24,6 @@ TwitterwallSchedulerProperties.class, TwitterProperties.class }) -//@EnableWebMvc @EnableSpringDataWebSupport @ImportResource("classpath:integration.xml") public class Application { From 1ec19d855c37db0dea97d0d12833e4c09879f761 Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Thu, 27 Jul 2017 02:05:54 +0200 Subject: [PATCH 11/13] fixed #146 --- .../twitterwall/conf/TwitterProperties.java | 44 ------------------- .../conf/TwitterwallBackendProperties.java | 43 ------------------ 2 files changed, 87 deletions(-) diff --git a/src/main/java/org/woehlke/twitterwall/conf/TwitterProperties.java b/src/main/java/org/woehlke/twitterwall/conf/TwitterProperties.java index d2227f27..d4625601 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/TwitterProperties.java +++ b/src/main/java/org/woehlke/twitterwall/conf/TwitterProperties.java @@ -12,18 +12,6 @@ @ConfigurationProperties(prefix="twitter") public class TwitterProperties { - //@NotNull - private String accessToken; - - //@NotNull - private String accessTokenSecret; - - //@NotNull - private String consumerKey; - - //@NotNull - private String consumerSecret; - @NotNull private Integer pageSize; @@ -33,38 +21,6 @@ public class TwitterProperties { @NotNull private String searchQuery; - public String getAccessToken() { - return accessToken; - } - - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - public String getAccessTokenSecret() { - return accessTokenSecret; - } - - public void setAccessTokenSecret(String accessTokenSecret) { - this.accessTokenSecret = accessTokenSecret; - } - - public String getConsumerKey() { - return consumerKey; - } - - public void setConsumerKey(String consumerKey) { - this.consumerKey = consumerKey; - } - - public String getConsumerSecret() { - return consumerSecret; - } - - public void setConsumerSecret(String consumerSecret) { - this.consumerSecret = consumerSecret; - } - public Integer getPageSize() { return pageSize; } diff --git a/src/main/java/org/woehlke/twitterwall/conf/TwitterwallBackendProperties.java b/src/main/java/org/woehlke/twitterwall/conf/TwitterwallBackendProperties.java index 92869c37..f2b18888 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/TwitterwallBackendProperties.java +++ b/src/main/java/org/woehlke/twitterwall/conf/TwitterwallBackendProperties.java @@ -22,18 +22,6 @@ public class TwitterwallBackendProperties { public static class Twitter { - //@NotNull - private String accessToken; - - //@NotNull - private String accessTokenSecret; - - //@NotNull - private String consumerKey; - - //@NotNull - private String consumerSecret; - @NotNull private Integer millisToWaitBetweenTwoApiCalls; @@ -56,37 +44,6 @@ public void setMillisToWaitForFetchTweetsFromTwitterSearch(Integer millisToWaitF this.millisToWaitForFetchTweetsFromTwitterSearch = millisToWaitForFetchTweetsFromTwitterSearch; } - public String getAccessToken() { - return accessToken; - } - - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - public String getAccessTokenSecret() { - return accessTokenSecret; - } - - public void setAccessTokenSecret(String accessTokenSecret) { - this.accessTokenSecret = accessTokenSecret; - } - - public String getConsumerKey() { - return consumerKey; - } - - public void setConsumerKey(String consumerKey) { - this.consumerKey = consumerKey; - } - - public String getConsumerSecret() { - return consumerSecret; - } - - public void setConsumerSecret(String consumerSecret) { - this.consumerSecret = consumerSecret; - } } public static class Url { From 524d44e376264e31189f2efb28409ce17701a66c Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Thu, 27 Jul 2017 02:34:47 +0200 Subject: [PATCH 12/13] fixed #146 --- .../oodm/entities/parts/EntitiesFilter.java | 32 +++++++++---------- .../impl/CreatePersistentMentionImpl.java | 12 +------ 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/EntitiesFilter.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/EntitiesFilter.java index f26a61e8..f4f9abe6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/EntitiesFilter.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/EntitiesFilter.java @@ -21,8 +21,8 @@ protected Set findByUserDescription(String description,Task task) { if (description != null) { String USER_PROFILE_INPUT[] = { - "@("+ User.SCREEN_NAME_PATTERN+")(" + Entities.stopChar + ")", - "@("+User.SCREEN_NAME_PATTERN+")$" + "@("+ User.SCREEN_NAME_PATTERN +")(" + Entities.stopChar + ")", + "@("+ User.SCREEN_NAME_PATTERN +")$" }; int USER_PROFILE_OUTPUT[] = { @@ -54,8 +54,8 @@ protected String getFormattedTextForMentions(Set mentions, String forma }; String USER_PROFILE_OUTPUT[] = { - "@$1$2", - "@$1 " + " @$1$2", + " @$1 " }; for(int i=0;i<2;i++){ @@ -78,10 +78,10 @@ protected String getFormattedTextForUserProfiles(String formattedText) { }; String USER_PROFILE_OUTPUT[] = { - "@$2$3", - "@$2", - "@$1$2", - "@$1" + " @$2$3", + " @$2", + " @$1$2", + " @$1" }; for(int i=0;i<4;i++){ @@ -126,8 +126,8 @@ protected String getFormattedTextForHashTags(Set tags, String formatted }; String USER_PROFILE_OUTPUT[] = { - "#$1$2", - "#$1 " + " #$1$2", + " #$1 " }; for(int i=0;i<2;i++){ @@ -332,12 +332,12 @@ protected String getFormattedTextForUrls(Set urls, String formattedText) { }; String USER_PROFILE_OUTPUT[] = { - "" + url.getDisplay() + "$2", - "" + url.getDisplay() + " ", - "" + url.getDisplay() + "$2", - "" + url.getDisplay() + " ", - "" + url.getDisplay() + "$2", - "" + url.getDisplay() + " " + " " + url.getDisplay() + "$2", + " " + url.getDisplay() + " ", + " " + url.getDisplay() + "$2", + " " + url.getDisplay() + " ", + " " + url.getDisplay() + "$2", + " " + url.getDisplay() + " " }; for(int i=0;i<6;i++){ diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java index 3d8ce24b..b02b1fb0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java +++ b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java @@ -9,9 +9,7 @@ import org.woehlke.twitterwall.oodm.entities.User; import org.woehlke.twitterwall.oodm.entities.Task; import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.MentionService; -import org.woehlke.twitterwall.scheduled.mq.endoint.StartTask; import org.woehlke.twitterwall.scheduled.service.persist.StoreTwitterProfileForProxyMentionForUser; import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentMention; @@ -53,7 +51,6 @@ public Mention getPersistentMentionAndUserFor(Mention mention, Task task) { if(foundUser.getScreenName().compareTo(mention.getScreenName())!=0){ String eventMsg = msg + "KNOWN_BUG - ScreenName user: "+foundUser.getScreenName()+" mention: "+mention.getScreenName(); log.warn(eventMsg); - //taskService.warn(task,eventMsg); mention.setScreenName(foundUser.getScreenName()); screenName = foundUser.getScreenName(); } @@ -73,7 +70,6 @@ public Mention getPersistentMentionAndUserFor(Mention mention, Task task) { return persMention; } else { String eventMsg = msg+"ERROR: useful Persistent Mention expectet, but there is none!"; - //taskService.error(task,eventMsg); log.error(eventMsg); return null; } @@ -85,15 +81,9 @@ public Mention getPersistentMentionAndUserFor(Mention mention, Task task) { private final StoreTwitterProfileForProxyMentionForUser storeTwitterProfileForProxyMentionForUser; - private final StartTask startTask; - - private final TaskService taskService; - @Autowired - public CreatePersistentMentionImpl(MentionService mentionService, StoreTwitterProfileForProxyMentionForUser storeTwitterProfileForProxyMentionForUser, StartTask startTask, TaskService taskService) { + public CreatePersistentMentionImpl(MentionService mentionService, StoreTwitterProfileForProxyMentionForUser storeTwitterProfileForProxyMentionForUser) { this.mentionService = mentionService; this.storeTwitterProfileForProxyMentionForUser = storeTwitterProfileForProxyMentionForUser; - this.startTask = startTask; - this.taskService = taskService; } } From 98fea1a8855eb99466da869cb1219d1766ef04cc Mon Sep 17 00:00:00 2001 From: phasenraum2010 Date: Thu, 27 Jul 2017 02:43:31 +0200 Subject: [PATCH 13/13] fixed #146, fixed #151, fixed #152 --- system.properties | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/system.properties b/system.properties index b8f87c27..56c534d7 100644 --- a/system.properties +++ b/system.properties @@ -1,3 +1,2 @@ java.runtime.version=1.8 -maven.version=3.3.9 -hibernate.dialect=org.hibernate.dialect.PostgreSQL94Dialect \ No newline at end of file +maven.version=3.3.9 \ No newline at end of file