diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..37ec93a1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE.code.txt b/LICENSE.code.txt index 001e9fe9..ba7fc31f 100644 --- a/LICENSE.code.txt +++ b/LICENSE.code.txt @@ -1,12 +1,10 @@ - All code in this repository is: - ======================================================================= - Copyright (c) 2013 Thomas Woehlke All Rights Reserved + Copyright 2017 Thomas Woehlke Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/README.md b/README.md index b964687b..72b11b35 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,34 @@ -# [Twitterwall2]( https://github.com/phasenraum2010/twitterwall2 ) +# [Twitterwall2](https://github.com/phasenraum2010/twitterwall2) -+ Twitterwall with [spring:boot]( https://projects.spring.io/spring-boot/ ) for [heroku]( https://heroku.com ) -+ More Info: https://phasenraum2010.github.io/twitterwall2/ ++ Twitterwall with [spring:boot](https://projects.spring.io/spring-boot/) for [heroku](https://heroku.com) ++ More Info: [https://phasenraum2010.github.io/twitterwall2/](https://phasenraum2010.github.io/twitterwall2/) ## Development -### Repository: -- Get Source Code: git clone https://github.com/phasenraum2010/twitterwall2.git -- Project: https://github.com/phasenraum2010/twitterwall2/projects/1 -- Issues: https://github.com/phasenraum2010/twitterwall2/issues +### Repository +- Get Source Code: git clone [https://github.com/phasenraum2010/twitterwall2.git](https://github.com/phasenraum2010/twitterwall2.git) +- Project: [https://github.com/phasenraum2010/twitterwall2/projects/1](https://github.com/phasenraum2010/twitterwall2/projects/1) +- Issues: [https://github.com/phasenraum2010/twitterwall2/issues](https://github.com/phasenraum2010/twitterwall2/issues) ### heroku CLI - heroku login - heroku pg:psql --app {app-name} - heroku logs -t --app {app-name} +- more: + - [https://devcenter.heroku.com/categories/command-line](https://devcenter.heroku.com/categories/command-line) + - [https://devcenter.heroku.com/articles/heroku-cli](https://devcenter.heroku.com/articles/heroku-cli) -### Setup Testing on Localhost -- Get Credentials from your Twitter-Account: [Refer to "Manage your Apps" on Twitter's dev pages](https://dev.twitter.com/apps) -- Edit your .profile with the Credentials from your Twitter-Account + +### Setup Test and Development on Localhost +- **Get Credentials from your Twitter-Account:** + - [Refer to "Manage your Apps" on Twitter's dev pages](https://dev.twitter.com/apps) +- **Edit your .profile with the Credentials from your Twitter-Account** - export DATABASE_URL=jdbc:postgresql://localhost:5432/postgres?user=postgres - export TWITTER_CONSUMER_KEY={Credentials from your Twitter-Account} - export TWITTER_CONSUMER_SECRET={Credentials from your Twitter-Account} - export TWITTER_ACCESS_TOKEN={Credentials from your Twitter-Account} - export TWITTER_ACCESS_TOKEN_SECRET={Credentials from your Twitter-Account} -- Edit app behaviour +- **Edit app behaviour** - export TWITTERWALL_SHOW_USERS_MENU=true - export TWITTERWALL_CONTEXT_TEST=true - export TWITTER_PAGE_SIZE=500 @@ -36,7 +41,7 @@ - export TWITTERWALL_SCHEDULER_ALLOW_SEARCH=true - export TWITTERWALL_SCHEDULER_HEROKU_DB_LIMIT=false - export TWITTERWALL_SCHEDULER_USER_LIST_ALLOW=true -- Edit Use Case +- **Edit Tasks / Use Cases** - export TWITTER_SEARCH_TERM=#hibernate OR #java OR #TYPO3 - export TWITTERWALL_INFO_WEBPAGE=https://github.com/phasenraum2010/twitterwall2 - export TWITTERWALL_THEME=typo3 @@ -47,7 +52,7 @@ - export TWITTERWALL_LOGIN_USERNAME=admin - export TWITTERWALL_LOGIN_PASSWORD=password -- run with: mvn clean spring-boot:run +- run with: **mvn clean spring-boot:run** ## Contribute @@ -60,7 +65,7 @@ updates. Contribute your fixes and new features back to the main codebase using [GitHub pull requests][github-pull-req]. -[twitterwall-github]: http://github.com/andriusvelykis/reflow-maven-skin/ +[twitterwall-github]: https://github.com/phasenraum2010/twitterwall2/ [github-pull-req]: http://help.github.com/articles/using-pull-requests ### Issues (bug and feature tracker) @@ -84,12 +89,12 @@ If you _really really_ like it and want to support the author, I will be glad to [av-site]: https://twitter.com/ThomasWoehlke [donate]: https://www.paypal.me/ThomasWoehlke -### Author: +### Author **Thomas Wöhlke** -+ Twitter: https://twitter.com/ThomasWoehlke -+ Github: https://github.com/phasenraum2010 -+ Blog: https://thomas-woehlke.blogspot.de ++ Twitter: [https://twitter.com/ThomasWoehlke](https://twitter.com/ThomasWoehlke) ++ Github: [https://github.com/phasenraum2010](https://github.com/phasenraum2010) ++ Blog: [https://thomas-woehlke.blogspot.de](https://thomas-woehlke.blogspot.de) ### Acknowledgements @@ -98,15 +103,21 @@ If you _really really_ like it and want to support the author, I will be glad to + JavaScript goodies with [jQuery][jquery]. + More icons by [fontawesome][fontawesome]. + Twitterwall Backend is made with [Java][java] and [Spring-Boot][spring-boot]. ++ Spring Frameworks used: [MQ][spring-integration], [JPA][spring-data-jpa], [Security][spring-security] and [Twitter][spring-social-twitter] + Database [PostgreSQL][postgresql] and jdbc by [PostgreSQL-JDBC][postgresql-jdbc]. -+ Running on Cloud-Service [Heroku][heroku]. ++ Running on Cloud-Service [Heroku][heroku] with [Heroku PostegreSQL][postgresql-heroku]. [java]: http://www.oracle.com/technetwork/java/javase/downloads/index.html [fontawesome]: http://fontawesome.io/icons/ [postgresql-jdbc]: https://jdbc.postgresql.org/ [postgresql]: https://www.postgresql.org/ -[heroku]: https://heroku.com +[heroku]: https://heroku.com/ +[postgresql-heroku]: https://devcenter.heroku.com/categories/heroku-postgres/ [spring-boot]: https://projects.spring.io/spring-boot/ +[spring-integration]: http://projects.spring.io/spring-integration/ +[spring-data-jpa]: http://projects.spring.io/spring-data-jpa/ +[spring-security]: http://projects.spring.io/spring-security/ +[spring-social-twitter]: http://projects.spring.io/spring-social-twitter/ [bootstrap]: http://getbootstrap.com/ [glyphicons]: http://glyphicons.com/ [webfonts]: http://www.google.com/webfonts/ @@ -116,9 +127,12 @@ If you _really really_ like it and want to support the author, I will be glad to © 2017 Thomas Wöhlke -Licensed under the Apache License, Version 2.0 +Licensed under the **Apache License, Version 2.0** + +[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) -http://www.apache.org/licenses/LICENSE-2.0 +Except where otherwise noted, Documentation of this work is licensed under +[Creative Commons CC BY-ND 3.0](http://creativecommons.org/licenses/by-nd/3.0/) diff --git a/_config.yml b/_config.yml index f980e760..14950b89 100644 --- a/_config.yml +++ b/_config.yml @@ -1 +1,5 @@ theme: jekyll-theme-slate +title: Twitterwall2 +description: Twitterwall with spring:boot for heroku using spring-integration for MQ and spring-data-jpa for PostgreSQL +google_analytics: UA-17174370-7 + diff --git a/pom.xml b/pom.xml index 49e798b2..f4fac168 100644 --- a/pom.xml +++ b/pom.xml @@ -541,9 +541,6 @@ org.apache.maven.plugins maven-checkstyle-plugin 2.17 - - ${project.build.sourceEncoding} - @@ -584,9 +581,6 @@ org.codehaus.mojo taglist-maven-plugin 2.4 - - ${project.build.sourceEncoding} - @@ -605,31 +599,12 @@ - - org.apache.maven.plugins - maven-surefire-report-plugin - 2.20 - - org.codehaus.mojo cobertura-maven-plugin 2.7 - - org.apache.maven.plugins - maven-changes-plugin - 2.12.1 - - - - github-report - - - - - diff --git a/src/main/java/org/woehlke/twitterwall/Application.java b/src/main/java/org/woehlke/twitterwall/Application.java index 2d0a9c8a..8d75a388 100644 --- a/src/main/java/org/woehlke/twitterwall/Application.java +++ b/src/main/java/org/woehlke/twitterwall/Application.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.ImportResource; import org.springframework.data.web.config.EnableSpringDataWebSupport; import org.springframework.scheduling.annotation.EnableScheduling; -import org.woehlke.twitterwall.conf.properties.*; +import org.woehlke.twitterwall.configuration.properties.*; /** diff --git a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java b/src/main/java/org/woehlke/twitterwall/CronJobs.java similarity index 70% rename from src/main/java/org/woehlke/twitterwall/ScheduledTasks.java rename to src/main/java/org/woehlke/twitterwall/CronJobs.java index 4e508b06..e0ec4c4d 100644 --- a/src/main/java/org/woehlke/twitterwall/ScheduledTasks.java +++ b/src/main/java/org/woehlke/twitterwall/CronJobs.java @@ -3,23 +3,24 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.SchedulerProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask; +import org.woehlke.twitterwall.configuration.properties.SchedulerProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStartFireAndForget; /** * Created by tw on 10.06.17. */ @Component -public class ScheduledTasks { +public class CronJobs { @Scheduled(initialDelay= TEN_SECONDS, fixedRate = ONE_DAY) public void createImprintUserAsync(){ String msg = "create Imprint User (Async) "; if(!schedulerProperties.getSkipFortesting()) { - Task task = asyncStartTask.createImprintUserAsync(); + Task task = mqTaskStartFireAndForget.createImprintUserAsync(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -28,7 +29,7 @@ public void createImprintUserAsync(){ public void fetchTweetsFromTwitterSearch() { String msg = "fetch Tweets From TwitterSearch "; if((schedulerProperties.getAllowFetchTweetsFromTwitterSearch()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.fetchTweetsFromSearch(); + Task task = mqTaskStartFireAndForget.fetchTweetsFromSearch(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -37,7 +38,7 @@ public void fetchTweetsFromTwitterSearch() { public void fetchUsersFromDefinedUserList(){ String msg = "fetch Users from Defined User List "; if((schedulerProperties.getFetchUsersFromDefinedUserListAllow()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.fetchUsersFromList(); + Task task = mqTaskStartFireAndForget.fetchUsersFromList(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -46,7 +47,7 @@ public void fetchUsersFromDefinedUserList(){ public void getHomeTimeline() { String msg = "get Home Timeline Tweets "; if((schedulerProperties.getAllowGetHomeTimeline()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getHomeTimeline(); + Task task = mqTaskStartFireAndForget.getHomeTimeline(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -55,7 +56,7 @@ public void getHomeTimeline() { public void getUserTimeline() { String msg = " get User Timeline Tweets "; if((schedulerProperties.getAllowGetUserTimeline()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getUserTimeline(); + Task task = mqTaskStartFireAndForget.getUserTimeline(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -64,7 +65,7 @@ public void getUserTimeline() { public void getMentions() { String msg = " get Mentions "; if((schedulerProperties.getAllowGetMentions()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getMentions(); + Task task = mqTaskStartFireAndForget.getMentions(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -73,7 +74,7 @@ public void getMentions() { public void getFavorites() { String msg = " get Favorites "; if((schedulerProperties.getAllowGetFavorites()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getFavorites(); + Task task = mqTaskStartFireAndForget.getFavorites(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -82,7 +83,7 @@ public void getFavorites() { public void getRetweetsOfMe() { String msg = " get Retweets Of Me "; if((schedulerProperties.getAllowGetRetweetsOfMe()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getRetweetsOfMe(); + Task task = mqTaskStartFireAndForget.getRetweetsOfMe(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -91,7 +92,9 @@ public void getRetweetsOfMe() { public void getLists() { String msg = " get Lists "; if((schedulerProperties.getAllowGetLists()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.getLists(); + Task task = mqTaskStartFireAndForget.getLists(); + log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); + task = mqTaskStartFireAndForget.fetchUserlistOwners(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -100,7 +103,7 @@ public void getLists() { public void fetchFollower(){ String msg = "fetch Follower "; if((schedulerProperties.getFetchFollowerAllow()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.fetchFollower(); + Task task = mqTaskStartFireAndForget.fetchFollower(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -109,7 +112,7 @@ public void fetchFollower(){ public void fetchFriends(){ String msg = "fetch Friends "; if((schedulerProperties.getFetchFriendsAllow()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.fetchFriends(); + Task task = mqTaskStartFireAndForget.fetchFriends(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -118,7 +121,7 @@ public void fetchFriends(){ public void removeOldDataFromStorage(){ String msg = "remove Old Data From Storage: "; if((schedulerProperties.getRemoveOldDataFromStorageAllow()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.removeOldDataFromStorage(); + Task task = mqTaskStartFireAndForget.removeOldDataFromStorage(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -127,7 +130,7 @@ public void removeOldDataFromStorage(){ public void updateUserProfilesFromMentions(){ String msg = "update User Profiles From Mentions"; if((schedulerProperties.getAllowUpdateUserProfilesFromMention()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.updateUsersFromMentions(); + Task task = mqTaskStartFireAndForget.updateUsersFromMentions(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -136,7 +139,7 @@ public void updateUserProfilesFromMentions(){ public void updateTweets() { String msg = "update Tweets "; if((schedulerProperties.getAllowUpdateTweets()) && (!schedulerProperties.getSkipFortesting())){ - Task task = asyncStartTask.updateTweets(); + Task task = mqTaskStartFireAndForget.updateTweets(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } @@ -145,15 +148,37 @@ public void updateTweets() { public void updateUserProfiles() { String msg = "update User Profiles "; if((schedulerProperties.getAllowUpdateUserProfiles()) && (!schedulerProperties.getSkipFortesting())) { - Task task = asyncStartTask.updateUsers(); + Task task = mqTaskStartFireAndForget.updateUsers(); + log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); + } + } + + @Scheduled(initialDelay= TEN_SECONDS * 16, fixedRate = ONE_DAY) + public void startUpdateUrls(){ + String msg = "start UpdateUrls "; + if(!schedulerProperties.getSkipFortesting()) { + Task task = mqTaskStartFireAndForget.startUpdateUrls(); log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); } } + @Scheduled(initialDelay= TEN_SECONDS * 16, fixedRate = ONE_DAY) + public void startGarbageCollection(){ + String msg = "start UpdateUrls "; + if(!schedulerProperties.getSkipFortesting()) { + //TODO: + //Task task = mqTaskStartFireAndForget.startGarbageCollection(); + //log.info(msg+ "SCHEDULED: task "+task.getUniqueId()); + } + } + @Autowired - public ScheduledTasks(SchedulerProperties schedulerProperties, AsyncStartTask mqAsyncStartTask) { + public CronJobs( + SchedulerProperties schedulerProperties, + @Qualifier("mqTaskStartFireAndForget") TaskStartFireAndForget mqTaskStartFireAndForget + ) { this.schedulerProperties = schedulerProperties; - this.asyncStartTask = mqAsyncStartTask; + this.mqTaskStartFireAndForget = mqTaskStartFireAndForget; } public final static long TEN_SECONDS = 10 * 1000; @@ -168,9 +193,9 @@ public ScheduledTasks(SchedulerProperties schedulerProperties, AsyncStartTask mq public final static long ONE_DAY = 24 * ONE_HOUR; - private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); + private static final Logger log = LoggerFactory.getLogger(CronJobs.class); private final SchedulerProperties schedulerProperties; - private final AsyncStartTask asyncStartTask; + private final TaskStartFireAndForget mqTaskStartFireAndForget; } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/common/MentionSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/MentionSplitter.java new file mode 100644 index 00000000..ea56ddad --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/MentionSplitter.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.mq.common; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; + +import java.util.List; + +public interface MentionSplitter { + + List> splitUserMessage(Message incomingTaskMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/TweetsSplitter.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TweetsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/common/TweetsSplitter.java index c093a116..fae0d0eb 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TweetsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/TweetsSplitter.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common; +package org.woehlke.twitterwall.backend.mq.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/common/UrlSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UrlSplitter.java new file mode 100644 index 00000000..6b341b81 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UrlSplitter.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.mq.common; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; + +import java.util.List; + +public interface UrlSplitter { + + List> splitUrlMessage(Message incomingTaskMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserListsSplitter.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/common/UserListsSplitter.java index 3389b0b1..71292380 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserListsSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserListsSplitter.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common; +package org.woehlke.twitterwall.backend.mq.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserSplitter.java similarity index 51% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserSplitter.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/common/UserSplitter.java index 3b758817..26d7bd6b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/UserSplitter.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/common/UserSplitter.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common; +package org.woehlke.twitterwall.backend.mq.common; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/MentionFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/MentionFinisher.java new file mode 100644 index 00000000..adeefe5e --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/MentionFinisher.java @@ -0,0 +1,14 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionResultList; + +import java.util.List; + +public interface MentionFinisher { + + Message finish(Message> incomingMessageList); + + void finishAsnyc(Message> incomingMessageList); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java new file mode 100644 index 00000000..f8ffb5c5 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UpdateMentionWithUser.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; + +public interface UpdateMentionWithUser { + + Message updateMentionWithUser(Message incomingMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionLoader.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionLoader.java new file mode 100644 index 00000000..9081e413 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionLoader.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; + +public interface UserforMentionLoader { + + Message fetchUserforMentionfromTwitter(Message incomingMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionPersistor.java new file mode 100644 index 00000000..c07fb6ed --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionPersistor.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; + +public interface UserforMentionPersistor { + + Message persistUserforMention(Message incomingMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionTransformator.java new file mode 100644 index 00000000..871706f3 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/UserforMentionTransformator.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; + +public interface UserforMentionTransformator { + + Message transformUserforMention(Message incomingMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java new file mode 100644 index 00000000..e36169f0 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/MentionFinisherImpl.java @@ -0,0 +1,73 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.MentionFinisher; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionResultList; + +import java.util.ArrayList; +import java.util.List; + +@Component("mqMentionFinisher") +public class MentionFinisherImpl implements MentionFinisher { + + @Autowired + public MentionFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService, MentionMessageBuilder mentionMessageBuilder) { + this.taskService = taskService; + this.countedEntitiesService = countedEntitiesService; + this.mentionMessageBuilder = mentionMessageBuilder; + } + + @Override + public Message finish(Message> incomingMessageList) { + long taskId = 0L; + List mentionIds = new ArrayList<>(); + List mentionMessageList = incomingMessageList.getPayload(); + for(MentionMessage msg :mentionMessageList){ + taskId = msg.getTaskMessage().getTaskId(); + if(!msg.isIgnoreNextSteps()){ + mentionIds.add(msg.getMentionId()); + } + } + MentionResultList userResultList = new MentionResultList(taskId,mentionIds); + Message mqMessageOut = MessageBuilder.withPayload(userResultList) + .copyHeaders(incomingMessageList.getHeaders()) + .setHeader("fnished",Boolean.TRUE) + .build(); + return mqMessageOut; + } + + @Override + public void finishAsnyc(Message> incomingMessageList) { + List userMessageList = incomingMessageList.getPayload(); + CountedEntities countedEntities = countedEntitiesService.countAll(); + long taskId=0L; + for(MentionMessage msg :userMessageList){ + taskId = msg.getTaskMessage().getTaskId(); + break; + } + Task task = taskService.findById(taskId); + String msgDone = "Sucessfully finished task "+task.getTaskType()+" via MQ by FIRE_AND_FORGET_SENDER"; + taskService.done(msgDone,task,countedEntities); + log.info(msgDone); + } + + private final TaskService taskService; + + private final CountedEntitiesService countedEntitiesService; + + private final MentionMessageBuilder mentionMessageBuilder; + + private static final Logger log = LoggerFactory.getLogger(UserFinisherImpl.class); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java new file mode 100644 index 00000000..02cac49b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UpdateMentionWithUserImpl.java @@ -0,0 +1,52 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.service.MentionService; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.UpdateMentionWithUser; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; + +@Component("mqUpdateMentionWithUser") +public class UpdateMentionWithUserImpl implements UpdateMentionWithUser { + + @Override + public Message updateMentionWithUser(Message incomingMessage) { + MentionMessage receivedMessage = incomingMessage.getPayload(); + if(receivedMessage.isIgnoreNextSteps()) { + return mentionMessageBuilder.buildMentionMessage(incomingMessage); + } else { + long taskId = receivedMessage.getTaskMessage().getTaskId(); + Task task = taskService.findById(taskId); + User user = receivedMessage.getUser(); + long idTwitterOfUser = user.getIdTwitter(); + long idOfUser = user.getId(); + long mentionId = receivedMessage.getMentionId(); + Mention mention = mentionService.findById(mentionId); + mention.setIdOfUser(idOfUser); + mention.setIdTwitterOfUser(idTwitterOfUser); + mention = mentionService.store(mention,task); + Message mqMessageOut = mentionMessageBuilder.buildMentionMessage(incomingMessage,mention); + return mqMessageOut; + } + } + + private final TaskService taskService; + + private final MentionService mentionService; + + private final MentionMessageBuilder mentionMessageBuilder; + + @Autowired + public UpdateMentionWithUserImpl(TaskService taskService, MentionService mentionService, MentionMessageBuilder mentionMessageBuilder) { + this.taskService = taskService; + this.mentionService = mentionService; + this.mentionMessageBuilder = mentionMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java new file mode 100644 index 00000000..34cd3bfa --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionLoaderImpl.java @@ -0,0 +1,33 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.TwitterProfile; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.UserforMentionLoader; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; + +@Component("mqUserforMentionLoader") +public class UserforMentionLoaderImpl implements UserforMentionLoader { + + @Override + public Message fetchUserforMentionfromTwitter(Message incomingMessage) { + MentionMessage receivedMessage = incomingMessage.getPayload(); + String screenName = receivedMessage.getScreenName(); + TwitterProfile userFromTwitter = twitterApiService.getUserProfileForScreenName(screenName); + Message outMessage = mentionMessageBuilder.buildMentionMessage(incomingMessage,userFromTwitter); + return outMessage; + } + + private final TwitterApiService twitterApiService; + + private final MentionMessageBuilder mentionMessageBuilder; + + @Autowired + public UserforMentionLoaderImpl(TwitterApiService twitterApiService, MentionMessageBuilder mentionMessageBuilder) { + this.twitterApiService = twitterApiService; + this.mentionMessageBuilder = mentionMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java new file mode 100644 index 00000000..9b5a1d50 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionPersistorImpl.java @@ -0,0 +1,45 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.UserforMentionPersistor; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; + +@Component("mqUserforMentionPersistor") +public class UserforMentionPersistorImpl implements UserforMentionPersistor { + + @Override + public Message persistUserforMention(Message incomingMessage) { + MentionMessage receivedMessage = incomingMessage.getPayload(); + if(receivedMessage.isIgnoreNextSteps()) { + return mentionMessageBuilder.buildMentionMessage(incomingMessage); + } else { + long taskId = receivedMessage.getTaskMessage().getTaskId(); + Task task = taskService.findById(taskId); + User user = receivedMessage.getUser(); + User userPers = storeUserProcess.storeUserProcess(user, task); + Message mqMessageOut = mentionMessageBuilder.buildMentionMessage(incomingMessage,userPers); + return mqMessageOut; + } + } + + private final TaskService taskService; + + private final StoreUserProcess storeUserProcess; + + private final MentionMessageBuilder mentionMessageBuilder; + + @Autowired + public UserforMentionPersistorImpl(TaskService taskService, StoreUserProcess storeUserProcess, MentionMessageBuilder mentionMessageBuilder) { + this.taskService = taskService; + this.storeUserProcess = storeUserProcess; + this.mentionMessageBuilder = mentionMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java new file mode 100644 index 00000000..17691908 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/serviceactivator/impl/UserforMentionTransformatorImpl.java @@ -0,0 +1,44 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.serviceactivator.UserforMentionTransformator; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; + +@Component("mqUserforMentionTransformator") +public class UserforMentionTransformatorImpl implements UserforMentionTransformator { + + @Override + public Message transformUserforMention(Message incomingMessage) { + MentionMessage receivedMessage = incomingMessage.getPayload(); + if(receivedMessage.isIgnoreNextSteps()){ + Message mqMessageOut = mentionMessageBuilder.buildMentionMessage(incomingMessage); + return mqMessageOut; + } else { + long id = receivedMessage.getTaskMessage().getTaskId(); + Task task = taskService.findById(id); + User user = userTransformService.transform(receivedMessage.getTwitterProfile(),task); + Message mqMessageOut = mentionMessageBuilder.buildMentionMessage(incomingMessage,user); + return mqMessageOut; + } + } + + private final UserTransformService userTransformService; + + private final TaskService taskService; + + private final MentionMessageBuilder mentionMessageBuilder; + + @Autowired + public UserforMentionTransformatorImpl(UserTransformService userTransformService, TaskService taskService, MentionMessageBuilder mentionMessageBuilder) { + this.userTransformService = userTransformService; + this.taskService = taskService; + this.mentionMessageBuilder = mentionMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java new file mode 100644 index 00000000..10158b39 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/UpdateUsersFromMentionsSplitter.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.splitter; + + +import org.woehlke.twitterwall.backend.mq.common.MentionSplitter; + +public interface UpdateUsersFromMentionsSplitter extends MentionSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java similarity index 55% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java index 03bd691f..1b2f3414 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/endpoint/splitter/impl/UpdateUsersFromMentionsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.mentions.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,27 +6,25 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.messaging.Message; -import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.MentionService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.UpdateUsersFromMentionsSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.splitter.UpdateUsersFromMentionsSplitter; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqUpdateUserFromMentionsSplitter") public class UpdateUsersFromMentionsSplitterImpl implements UpdateUsersFromMentionsSplitter { @@ -35,8 +33,6 @@ public class UpdateUsersFromMentionsSplitterImpl implements UpdateUsersFromMenti private final TwitterProperties twitterProperties; - private final TwitterApiService twitterApiService; - private final TaskService taskService; private final MentionService mentionService; @@ -45,47 +41,50 @@ public class UpdateUsersFromMentionsSplitterImpl implements UpdateUsersFromMenti private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final MentionMessageBuilder mentionMessageBuilder; - public UpdateUsersFromMentionsSplitterImpl(TwitterProperties twitterProperties, TwitterApiService twitterApiService, TaskService taskService, MentionService mentionService, UserService userService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public UpdateUsersFromMentionsSplitterImpl(TwitterProperties twitterProperties, TaskService taskService, MentionService mentionService, UserService userService, CountedEntitiesService countedEntitiesService, MentionMessageBuilder mentionMessageBuilder) { this.twitterProperties = twitterProperties; - this.twitterApiService = twitterApiService; this.taskService = taskService; this.mentionService = mentionService; this.userService = userService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.mentionMessageBuilder = mentionMessageBuilder; } @Override - public List> splitUserMessage(Message incomingTaskMessage) { + public List> splitUserMessage(Message incomingTaskMessage) { String msg ="splitTweetMessage: "; log.debug(msg+ " START"); CountedEntities countedEntities = countedEntitiesService.countAll(); - List> userProfileList = new ArrayList<>(); + List> resultList = new ArrayList<>(); TaskMessage msgIn = incomingTaskMessage.getPayload(); long id = msgIn.getTaskId(); Task task = taskService.findById(id); task = taskService.start(task,countedEntities); List screenNames = new ArrayList<>(); - int lfdNr = 0; - int all = 0; + long loopId = 0L; + long loopAll; boolean hasNext=true; Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, twitterProperties.getPageSize()); while (hasNext) { Page allPersMentions = mentionService.getAllWithoutUser(pageRequest); + loopAll = allPersMentions.getTotalElements(); hasNext = allPersMentions.hasNext(); for (Mention onePersMention : allPersMentions) { if (!onePersMention.hasUser()) { String screenName = onePersMention.getScreenName(); + log.debug("### mentionService.getAllWithoutUser from DB (" + loopId + " of "+loopAll+"): " + screenName); User foundUser = userService.findByScreenName(screenName); if(foundUser == null) { - lfdNr++; - all++; - log.debug("### mentionService.getAll from DB (" + lfdNr + "): " + screenName); + loopId++; screenNames.add(screenName); + Message mqMessageOut = mentionMessageBuilder.buildMentionMessageForTask(incomingTaskMessage,onePersMention); + resultList.add(mqMessageOut); } else { + foundUser = userService.store(foundUser,task); onePersMention.setIdTwitterOfUser(foundUser.getIdTwitter()); + onePersMention.setIdOfUser(foundUser.getId()); onePersMention = mentionService.update(onePersMention,task); log.debug("### updated Mention with screenName = " + onePersMention.getUniqueId()); } @@ -93,16 +92,6 @@ public List> splitUserMessage(Message incoming } pageRequest = pageRequest.next(); } - lfdNr = 0; - for(String screenName:screenNames){ - lfdNr++; - log.debug("### twitterApiService.getUserProfileForScreenName("+screenName+") from Twiiter API ("+lfdNr+" of "+all+")"); - TwitterProfile userProfile = twitterApiService.getUserProfileForScreenName(screenName); - if(userProfile!=null) { - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,lfdNr,all); - userProfileList.add(mqMessageOut); - } - } - return userProfileList; + return resultList; } } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java new file mode 100644 index 00000000..b15213ec --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessage.java @@ -0,0 +1,155 @@ +package org.woehlke.twitterwall.backend.mq.mentions.msg; + +import org.springframework.social.twitter.api.TwitterProfile; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.User; + +import java.io.Serializable; + +public class MentionMessage implements Serializable { + + private final TaskMessage taskMessage; + private final String screenName; + private final TwitterProfile twitterProfile; + private final User user; + + private final long idTwitterOfUser; + private final long idOfUser; + private final long mentionId; + + private final boolean ignoreNextSteps; + + + public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName, boolean ignoreNextSteps) { + this.taskMessage = taskMessage; + this.screenName = screenName; + this.mentionId = mentionId; + this.twitterProfile = null; + this.user = null; + this.idTwitterOfUser = Mention.HAS_NO_USER; + this.idOfUser = Mention.HAS_NO_USER; + this.ignoreNextSteps = ignoreNextSteps; + } + + public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName) { + this.taskMessage = taskMessage; + this.screenName = screenName; + this.mentionId = mentionId; + this.twitterProfile = null; + this.user = null; + this.idTwitterOfUser = Mention.HAS_NO_USER; + this.idOfUser = Mention.HAS_NO_USER; + this.ignoreNextSteps = false; + } + + public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName, TwitterProfile userFromTwitter) { + this.taskMessage = taskMessage; + this.screenName = screenName; + this.mentionId = mentionId; + this.twitterProfile = userFromTwitter; + this.user = null; + this.idTwitterOfUser = Mention.HAS_NO_USER; + this.idOfUser = Mention.HAS_NO_USER; + this.ignoreNextSteps = false; + } + + public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName, TwitterProfile twitterProfile, User user) { + this.taskMessage = taskMessage; + this.screenName = screenName; + this.mentionId = mentionId; + this.twitterProfile = twitterProfile; + this.user = user; + this.idTwitterOfUser = Mention.HAS_NO_USER; + this.idOfUser = Mention.HAS_NO_USER; + this.ignoreNextSteps = false; + } + + public MentionMessage(TaskMessage taskMessage, long mentionId, String screenName, TwitterProfile twitterProfile, User user, long idOfUser, long idTwitterOfUser) { + this.taskMessage = taskMessage; + this.screenName = screenName; + this.mentionId = mentionId; + this.twitterProfile = twitterProfile; + this.user = user; + this.idTwitterOfUser = idTwitterOfUser; + this.idOfUser = idOfUser; + this.ignoreNextSteps = false; + } + + public TaskMessage getTaskMessage() { + return taskMessage; + } + + public String getScreenName() { + return screenName; + } + + public TwitterProfile getTwitterProfile() { + return twitterProfile; + } + + public long getIdTwitterOfUser() { + return idTwitterOfUser; + } + + public long getIdOfUser() { + return idOfUser; + } + + public long getMentionId() { + return mentionId; + } + + public User getUser() { + return user; + } + + public boolean isIgnoreNextSteps() { + return ignoreNextSteps; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof MentionMessage)) return false; + + MentionMessage that = (MentionMessage) o; + + if (idTwitterOfUser != that.idTwitterOfUser) return false; + if (idOfUser != that.idOfUser) return false; + if (mentionId != that.mentionId) return false; + if (ignoreNextSteps != that.ignoreNextSteps) return false; + if (taskMessage != null ? !taskMessage.equals(that.taskMessage) : that.taskMessage != null) return false; + if (screenName != null ? !screenName.equals(that.screenName) : that.screenName != null) return false; + if (twitterProfile != null ? !twitterProfile.equals(that.twitterProfile) : that.twitterProfile != null) + return false; + return user != null ? user.equals(that.user) : that.user == null; + } + + @Override + public int hashCode() { + int result = taskMessage != null ? taskMessage.hashCode() : 0; + result = 31 * result + (screenName != null ? screenName.hashCode() : 0); + result = 31 * result + (twitterProfile != null ? twitterProfile.hashCode() : 0); + result = 31 * result + (user != null ? user.hashCode() : 0); + result = 31 * result + (int) (idTwitterOfUser ^ (idTwitterOfUser >>> 32)); + result = 31 * result + (int) (idOfUser ^ (idOfUser >>> 32)); + result = 31 * result + (int) (mentionId ^ (mentionId >>> 32)); + result = 31 * result + (ignoreNextSteps ? 1 : 0); + return result; + } + + @Override + public String toString() { + return "MentionMessage{" + + "taskMessage=" + taskMessage + + ", screenName='" + screenName + '\'' + + ", twitterProfile=" + twitterProfile + + ", user=" + user + + ", idTwitterOfUser=" + idTwitterOfUser + + ", idOfUser=" + idOfUser + + ", mentionId=" + mentionId + + ", ignoreNextSteps=" + ignoreNextSteps + + '}'; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java new file mode 100644 index 00000000..c86e31be --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionMessageBuilder.java @@ -0,0 +1,21 @@ +package org.woehlke.twitterwall.backend.mq.mentions.msg; + +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.TwitterProfile; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; + +public interface MentionMessageBuilder { + + Message buildMentionMessageForTask(Message incomingTaskMessage, Mention onePersMention); + + Message buildMentionMessage(Message incomingMessage, TwitterProfile userFromTwitter); + + Message buildMentionMessage(Message incomingMessage, User user); + + Message buildMentionMessage(Message incomingMessage, Mention mention); + + Message buildMentionMessage(Message incomingMessage); + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionResultList.java new file mode 100644 index 00000000..6659903e --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/MentionResultList.java @@ -0,0 +1,50 @@ +package org.woehlke.twitterwall.backend.mq.mentions.msg; + +import java.io.Serializable; +import java.util.List; + +public class MentionResultList implements Serializable { + + private final long taskId; + + private final List mentionIds; + + public MentionResultList(long taskId, List mentionIds) { + this.taskId = taskId; + this.mentionIds = mentionIds; + } + + public long getTaskId() { + return taskId; + } + + public List getMentionIds() { + return mentionIds; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof MentionResultList)) return false; + + MentionResultList that = (MentionResultList) o; + + if (taskId != that.taskId) return false; + return mentionIds != null ? mentionIds.equals(that.mentionIds) : that.mentionIds == null; + } + + @Override + public int hashCode() { + int result = (int) (taskId ^ (taskId >>> 32)); + result = 31 * result + (mentionIds != null ? mentionIds.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "MentionResultList{" + + "taskId=" + taskId + + ", mentionIds=" + mentionIds + + '}'; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java new file mode 100644 index 00000000..d20b5c20 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/mentions/msg/impl/MentionMessageBuilderImpl.java @@ -0,0 +1,109 @@ +package org.woehlke.twitterwall.backend.mq.mentions.msg.impl; + +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.TwitterProfile; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessage; +import org.woehlke.twitterwall.backend.mq.mentions.msg.MentionMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; + +@Component +public class MentionMessageBuilderImpl implements MentionMessageBuilder { + + @Override + public Message buildMentionMessageForTask(Message incomingTaskMessage, Mention onePersMention) { + MentionMessage outputPayload = new MentionMessage( + incomingTaskMessage.getPayload(), + onePersMention.getId(), + onePersMention.getScreenName() + ); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingTaskMessage.getHeaders()) + .setHeader("mention_id", onePersMention.getId()) + .build(); + return mqMessageOut; + } + + @Override + public Message buildMentionMessage(Message incomingMessage, TwitterProfile userFromTwitter) { + if(userFromTwitter == null){ + boolean ignoreNextSteps = true; + MentionMessage outputPayload = new MentionMessage( + incomingMessage.getPayload().getTaskMessage(), + incomingMessage.getPayload().getMentionId(), + incomingMessage.getPayload().getScreenName(), + ignoreNextSteps + ); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingMessage.getHeaders()) + .build(); + return mqMessageOut; + } else { + MentionMessage outputPayload = new MentionMessage( + incomingMessage.getPayload().getTaskMessage(), + incomingMessage.getPayload().getMentionId(), + incomingMessage.getPayload().getScreenName(), + userFromTwitter + ); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("twitter_profile_id", userFromTwitter.getId()) + .build(); + return mqMessageOut; + } + } + + @Override + public Message buildMentionMessage(Message incomingMessage, User user) { + MentionMessage outMsg = new MentionMessage( + incomingMessage.getPayload().getTaskMessage(), + incomingMessage.getPayload().getMentionId(), + incomingMessage.getPayload().getScreenName(), + incomingMessage.getPayload().getTwitterProfile(), + user + ); + Message mqMessageOut = + MessageBuilder.withPayload(outMsg) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("transformed",Boolean.TRUE) + .build(); + return mqMessageOut; + } + + @Override + public Message buildMentionMessage(Message incomingMessage, Mention mention) { + TwitterProfile twitterProfile = null; + User user = null; + MentionMessage outMsg = new MentionMessage( + incomingMessage.getPayload().getTaskMessage(), + incomingMessage.getPayload().getMentionId(), + incomingMessage.getPayload().getScreenName(), + twitterProfile, + user, + mention.getIdOfUser(), + mention.getIdTwitterOfUser() + ); + Message mqMessageOut = + MessageBuilder.withPayload(outMsg) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("transformed",Boolean.TRUE) + .build(); + return mqMessageOut; + } + + @Override + public Message buildMentionMessage(Message incomingMessage) { + Message mqMessageOut = + MessageBuilder.withPayload(incomingMessage.getPayload()) + .copyHeaders(incomingMessage.getHeaders()) + .build(); + return mqMessageOut; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessage.java similarity index 70% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessage.java index f921d176..254c3b73 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TaskMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessage.java @@ -1,6 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.tasks; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import java.io.Serializable; import java.util.Date; @@ -10,12 +11,12 @@ public class TaskMessage implements Serializable { protected final long taskId; protected final TaskType taskType; protected final Date timeStarted; - protected final SendType sendType; + protected final TaskSendType taskSendType; - public TaskMessage(long taskId, TaskType taskType, SendType sendType,Date timeStarted) { + public TaskMessage(long taskId, TaskType taskType, TaskSendType taskSendType, Date timeStarted) { this.taskId = taskId; this.taskType = taskType; - this.sendType = sendType; + this.taskSendType = taskSendType; this.timeStarted = timeStarted; } @@ -27,8 +28,8 @@ public TaskType getTaskType() { return taskType; } - public SendType getSendType() { - return sendType; + public TaskSendType getTaskSendType() { + return taskSendType; } public Date getTimeStarted() { @@ -45,7 +46,7 @@ public boolean equals(Object o) { if (taskId != that.taskId) return false; if (taskType != that.taskType) return false; if (timeStarted != null ? !timeStarted.equals(that.timeStarted) : that.timeStarted != null) return false; - return sendType == that.sendType; + return taskSendType == that.taskSendType; } @Override @@ -53,7 +54,7 @@ public int hashCode() { int result = (int) (taskId ^ (taskId >>> 32)); result = 31 * result + (taskType != null ? taskType.hashCode() : 0); result = 31 * result + (timeStarted != null ? timeStarted.hashCode() : 0); - result = 31 * result + (sendType != null ? sendType.hashCode() : 0); + result = 31 * result + (taskSendType != null ? taskSendType.hashCode() : 0); return result; } @@ -63,7 +64,7 @@ public String toString() { "taskId=" + taskId + ", taskType=" + taskType + ", timeStarted=" + timeStarted + - ", sendType=" + sendType + + ", taskSendType=" + taskSendType + '}'; } } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessageBuilder.java new file mode 100644 index 00000000..bda3d5bf --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskMessageBuilder.java @@ -0,0 +1,10 @@ +package org.woehlke.twitterwall.backend.mq.tasks; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.oodm.model.Task; + +public interface TaskMessageBuilder { + + Message buildTaskMessage(Task task); + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskResultList.java new file mode 100644 index 00000000..1d55c35d --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskResultList.java @@ -0,0 +1,51 @@ +package org.woehlke.twitterwall.backend.mq.tasks; + +import org.woehlke.twitterwall.oodm.model.Task; + +import java.io.Serializable; +import java.util.List; + +public class TaskResultList implements Serializable{ + + private final long taskId; + private final List userList; + + public TaskResultList(long taskId, List userList) { + this.taskId = taskId; + this.userList = userList; + } + + public long getTaskId() { + return taskId; + } + + public List getUserList() { + return userList; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof TaskResultList)) return false; + + TaskResultList that = (TaskResultList) o; + + if (taskId != that.taskId) return false; + return userList != null ? userList.equals(that.userList) : that.userList == null; + } + + @Override + public int hashCode() { + int result = (int) (taskId ^ (taskId >>> 32)); + result = 31 * result + (userList != null ? userList.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "TaskResultList{" + + "taskId=" + taskId + + ", userList=" + userList + + '}'; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStart.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStart.java new file mode 100644 index 00000000..3cfd7422 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStart.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.tasks; + +import org.woehlke.twitterwall.oodm.model.User; + +public interface TaskStart extends TaskStartFireAndForget { + + User createImprintUser(); + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTask.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java similarity index 62% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTask.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java index 9cdfd4f2..5dd9fc7b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTask.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForget.java @@ -1,9 +1,9 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.tasks; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; -public interface AsyncStartTask { +public interface TaskStartFireAndForget { Task updateTweets(); @@ -38,4 +38,14 @@ public interface AsyncStartTask { Task getLists(); Task createImprintUserAsync(); + + Task fetchUserlistOwners(); + + Task startGarbageCollection(); + + Task startUpdateUrls(); + + Task startFetchListOwner(); + + Task startFetchListsForUsers(); } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskMessageBuilderImpl.java new file mode 100644 index 00000000..b19b22e2 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskMessageBuilderImpl.java @@ -0,0 +1,27 @@ +package org.woehlke.twitterwall.backend.mq.tasks.impl; + +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessageBuilder; + +@Component +public class TaskMessageBuilderImpl implements TaskMessageBuilder { + + @Override + public Message buildTaskMessage(Task task) { + TaskMessage outputPayload = new TaskMessage(task.getId(), task.getTaskType(), task.getTaskSendType(), task.getTimeStarted()); + Message mqMessage = + MessageBuilder.withPayload(outputPayload) + .setHeader("task_id", task.getId()) + .setHeader("task_uid", task.getUniqueId()) + .setHeader("task_type", task.getTaskType()) + .setHeader("time_started", task.getTimeStarted().getTime()) + .setHeader("send_type", task.getTaskSendType()) + .build(); + return mqMessage; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/AsyncStartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java similarity index 58% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/AsyncStartTaskImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java index c1a0b127..2492e8aa 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/AsyncStartTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartFireAndForgetImpl.java @@ -1,24 +1,25 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.impl; +package org.woehlke.twitterwall.backend.mq.tasks.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.integration.channel.ExecutorChannel; import org.springframework.integration.core.MessagingTemplate; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStartFireAndForget; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessageBuilder; -@Component("mqAsyncStartTask") -public class AsyncStartTaskImpl implements AsyncStartTask { +@Component("mqTaskStartFireAndForget") +public class TaskStartFireAndForgetImpl implements TaskStartFireAndForget { @Override public Task fetchTweetsFromSearch() { @@ -40,7 +41,7 @@ public Task updateUsers() { @Override public Task updateUsersFromMentions() { - TaskType taskType = TaskType.UPDATE_USERS_FROM_MENTIONS; + TaskType taskType = TaskType.UPDATE_MENTIONS_FOR_USERS; return send(taskType); } @@ -64,13 +65,13 @@ public Task fetchFriends() { @Override public Task createTestDataForTweets() { - TaskType taskType = TaskType.CONTROLLER_CREATE_TESTDATA_TWEETS; + TaskType taskType = TaskType.CREATE_TESTDATA_TWEETS; return send(taskType); } @Override public Task createTestDataForUser() { - TaskType taskType = TaskType.CONTROLLER_CREATE_TESTDATA_USERS; + TaskType taskType = TaskType.CREATE_TESTDATA_USERS; return send(taskType); } @@ -118,18 +119,48 @@ public Task getLists() { @Override public Task createImprintUserAsync() { - TaskType taskType = TaskType.CONTROLLER_CREATE_IMPRINT_USER; + TaskType taskType = TaskType.CREATE_IMPRINT_USER; + return send(taskType); + } + + @Override + public Task fetchUserlistOwners() { + TaskType taskType = TaskType.FETCH_USERLIST_OWNERS; + return send(taskType); + } + + @Override + public Task startGarbageCollection() { + TaskType taskType = TaskType.GARBAGE_COLLECTION; + return send(taskType); + } + + @Override + public Task startUpdateUrls() { + TaskType taskType = TaskType.UPDATE_URLS; + return send(taskType); + } + + @Override + public Task startFetchListOwner() { + TaskType taskType = TaskType.FETCH_USERLIST_OWNERS; + return send(taskType); + } + + @Override + public Task startFetchListsForUsers() { + TaskType taskType = TaskType.FETCH_LISTS_FOR_USERS; return send(taskType); } private Task send(TaskType taskType){ - SendType sendType = SendType.FIRE_AND_FORGET; - String msg = "START Task "+taskType+" via MQ by "+sendType; + TaskSendType taskSendType = TaskSendType.FIRE_AND_FORGET; + String msg = "START Task "+taskType+" via MQ by "+ taskSendType; log.info(msg); CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create(msg, taskType, sendType, countedEntities); + Task task = taskService.create(msg, taskType, taskSendType, countedEntities); - Message mqMessage = twitterwallMessageBuilder.buildTaskMessage(task); + Message mqMessage = taskMessageBuilder.buildTaskMessage(task); MessagingTemplate mqTemplate = new MessagingTemplate(); mqTemplate.send(executorChannelForAsyncStart, mqMessage); @@ -137,11 +168,16 @@ private Task send(TaskType taskType){ } @Autowired - public AsyncStartTaskImpl(TaskService taskService, CountedEntitiesService countedEntitiesService, ExecutorChannel executorChannelForAsyncStart, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public TaskStartFireAndForgetImpl( + TaskService taskService, + CountedEntitiesService countedEntitiesService, + @Qualifier("channel.async.TaskStart") ExecutorChannel executorChannelForAsyncStart, + TaskMessageBuilder taskMessageBuilder + ) { this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; this.executorChannelForAsyncStart = executorChannelForAsyncStart; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.taskMessageBuilder = taskMessageBuilder; } private final TaskService taskService; @@ -150,7 +186,7 @@ public AsyncStartTaskImpl(TaskService taskService, CountedEntitiesService counte private final ExecutorChannel executorChannelForAsyncStart; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TaskMessageBuilder taskMessageBuilder; - private static final Logger log = LoggerFactory.getLogger(AsyncStartTaskImpl.class); + private static final Logger log = LoggerFactory.getLogger(TaskStartFireAndForgetImpl.class); } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/StartTaskImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java similarity index 51% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/StartTaskImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java index 20b89a12..59ed0b58 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/StartTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tasks/impl/TaskStartImpl.java @@ -1,25 +1,31 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.impl; +package org.woehlke.twitterwall.backend.mq.tasks.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.integration.core.MessagingTemplate; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tasks.TaskResultList; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlResultList; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.StartTask; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.*; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStart; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetResultList; -@Component("mqStartTask") -public class StartTaskImpl implements StartTask { +@Component("mqTaskStart") +public class TaskStartImpl implements TaskStart { @Override public Task fetchTweetsFromSearch() { @@ -41,7 +47,7 @@ public Task updateUsers() { @Override public Task updateUsersFromMentions() { - TaskType taskType = TaskType.UPDATE_USERS_FROM_MENTIONS; + TaskType taskType = TaskType.UPDATE_MENTIONS_FOR_USERS; return sendAndReceiveUser(taskType); } @@ -65,13 +71,13 @@ public Task fetchFriends() { @Override public Task createTestDataForTweets() { - TaskType taskType = TaskType.CONTROLLER_CREATE_TESTDATA_TWEETS; + TaskType taskType = TaskType.CREATE_TESTDATA_TWEETS; return sendAndReceiveTweet(taskType); } @Override public Task createTestDataForUser() { - TaskType taskType = TaskType.CONTROLLER_CREATE_TESTDATA_USERS; + TaskType taskType = TaskType.CREATE_TESTDATA_USERS; return sendAndReceiveUser(taskType); } @@ -119,29 +125,107 @@ public Task getLists() { @Override public Task createImprintUserAsync() { - TaskType taskType = TaskType.CONTROLLER_CREATE_IMPRINT_USER; + TaskType taskType = TaskType.CREATE_IMPRINT_USER; return sendAndReceiveUser(taskType); } + @Override + public Task fetchUserlistOwners() { + TaskType taskType = TaskType.FETCH_USERLIST_OWNERS; + return sendAndReceiveUser(taskType); + } + + @Override + public Task startGarbageCollection() { + TaskType taskType = TaskType.GARBAGE_COLLECTION; + return sendAndReceiveTask(taskType); + } + + @Override + public Task startUpdateUrls() { + TaskType taskType = TaskType.UPDATE_URLS; + return sendAndReceiveUrl(taskType); + } + + @Override + public Task startFetchListOwner() { + return null; + } + + @Override + public Task startFetchListsForUsers() { + return null; + } + + private Task sendAndReceiveTask(TaskType taskType){ + TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; + String logMsg = "Start task "+taskType+"via MQ by "+ taskSendType; + log.info(logMsg); + CountedEntities countedEntities = countedEntitiesService.countAll(); + Task task = taskService.create("Start via MQ by Scheduler ", taskType, taskSendType,countedEntities); + Message mqMessage = taskMessageBuilder.buildTaskMessage(task); + MessagingTemplate mqTemplate = new MessagingTemplate(); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); + Object o = returnedMessage.getPayload(); + countedEntities = countedEntitiesService.countAll(); + if( o instanceof TaskResultList){ + TaskResultList msg = (TaskResultList) o; + long taskId = msg.getTaskId(); + task = taskService.findById(taskId); + logMsg = "Sucessfully finished task "+taskType+"via MQ by "+ taskSendType; + taskService.done(logMsg,task,countedEntities); + } else { + logMsg = "Finished with Error: task "+taskType+"via MQ by "+ taskSendType +": Wrong type of returnedMessage"; + taskService.finalError(task,logMsg,countedEntities); + log.error(logMsg); + } + return task; + } + + private Task sendAndReceiveUrl(TaskType taskType){ + TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; + String logMsg = "Start task "+taskType+"via MQ by "+ taskSendType; + log.info(logMsg); + CountedEntities countedEntities = countedEntitiesService.countAll(); + Task task = taskService.create("Start via MQ by Scheduler ", taskType, taskSendType,countedEntities); + Message mqMessage = taskMessageBuilder.buildTaskMessage(task); + MessagingTemplate mqTemplate = new MessagingTemplate(); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); + Object o = returnedMessage.getPayload(); + countedEntities = countedEntitiesService.countAll(); + if( o instanceof UrlResultList){ + UrlResultList msg = (UrlResultList) o; + long taskId = msg.getTaskId(); + task = taskService.findById(taskId); + logMsg = "Sucessfully finished task "+taskType+"via MQ by "+ taskSendType; + taskService.done(logMsg,task,countedEntities); + } else { + logMsg = "Finished with Error: task "+taskType+"via MQ by "+ taskSendType +": Wrong type of returnedMessage"; + taskService.finalError(task,logMsg,countedEntities); + log.error(logMsg); + } + return task; + } + private Task sendAndReceiveUserList(TaskType taskType){ - SendType sendType = SendType.SEND_AND_WAIT_FOR_RESULT; - String logMsg = "Start task "+taskType+"via MQ by "+sendType; + TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; + String logMsg = "Start task "+taskType+"via MQ by "+ taskSendType; log.info(logMsg); CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create("Start via MQ by Scheduler ", taskType,sendType,countedEntities); - Message mqMessage = twitterwallMessageBuilder.buildTaskMessage(task); + Task task = taskService.create("Start via MQ by Scheduler ", taskType, taskSendType,countedEntities); + Message mqMessage = taskMessageBuilder.buildTaskMessage(task); MessagingTemplate mqTemplate = new MessagingTemplate(); - Message returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); Object o = returnedMessage.getPayload(); countedEntities = countedEntitiesService.countAll(); if( o instanceof TweetResultList){ TweetResultList msg = (TweetResultList) o; long taskId = msg.getTaskId(); task = taskService.findById(taskId); - logMsg = "Sucessfully finished task "+taskType+"via MQ by "+sendType; + logMsg = "Sucessfully finished task "+taskType+"via MQ by "+ taskSendType; taskService.done(logMsg,task,countedEntities); } else { - logMsg = "Finished with Error: task "+taskType+"via MQ by "+sendType+": Wrong type of returnedMessage"; + logMsg = "Finished with Error: task "+taskType+"via MQ by "+ taskSendType +": Wrong type of returnedMessage"; taskService.finalError(task,logMsg,countedEntities); log.error(logMsg); } @@ -150,34 +234,34 @@ private Task sendAndReceiveUserList(TaskType taskType){ @Override public User createImprintUser() { - TaskType taskType = TaskType.CONTROLLER_CREATE_IMPRINT_USER; - SendType sendType = SendType.SEND_AND_WAIT_FOR_RESULT; - String logMsg = "Start task "+taskType+" via MQ by "+sendType; + TaskType taskType = TaskType.CREATE_IMPRINT_USER; + TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; + String logMsg = "Start task "+taskType+" via MQ by "+ taskSendType; log.info(logMsg); CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create("Start via MQ", taskType, sendType, countedEntities); - TaskMessage taskMessage = new TaskMessage(task.getId(), taskType, sendType, task.getTimeStarted()); + Task task = taskService.create("Start via MQ", taskType, taskSendType, countedEntities); + TaskMessage taskMessage = new TaskMessage(task.getId(), taskType, taskSendType, task.getTimeStarted()); Message mqMessage = MessageBuilder.withPayload(taskMessage) .setHeader("task_id", task.getId()) .setHeader("task_uid", task.getUniqueId()) .setHeader("task_type", task.getTaskType()) .setHeader("time_started", task.getTimeStarted().getTime()) - .setHeader("send_type", sendType) + .setHeader("send_type", taskSendType) .build(); MessagingTemplate mqTemplate = new MessagingTemplate(); - Message returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); Object o = returnedMessage.getPayload(); countedEntities = countedEntitiesService.countAll(); if( o instanceof UserMessage){ UserMessage msg = (UserMessage) o; long taskId = msg.getTaskMessage().getTaskId(); task = taskService.findById(taskId); - logMsg = "Sucessfully finished task "+taskType+" via MQ by "+sendType; + logMsg = "Sucessfully finished task "+taskType+" via MQ by "+ taskSendType; taskService.done(logMsg, task, countedEntities); log.info(logMsg); return msg.getUser(); } else { - logMsg = "Finished with Error: task "+taskType+" via MQ by "+sendType+": Wrong type of returnedMessage"; + logMsg = "Finished with Error: task "+taskType+" via MQ by "+ taskSendType +": Wrong type of returnedMessage"; taskService.finalError(task,logMsg,countedEntities); log.error(logMsg); return null; @@ -185,24 +269,24 @@ public User createImprintUser() { } private Task sendAndReceiveTweet(TaskType taskType){ - SendType sendType = SendType.SEND_AND_WAIT_FOR_RESULT; - String logMsg = "Start task "+taskType+"via MQ by "+sendType; + TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; + String logMsg = "Start task "+taskType+"via MQ by "+ taskSendType; log.info(logMsg); CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create("Start via MQ by Scheduler ", taskType,sendType,countedEntities); - Message mqMessage = twitterwallMessageBuilder.buildTaskMessage(task); + Task task = taskService.create("Start via MQ by Scheduler ", taskType, taskSendType,countedEntities); + Message mqMessage = taskMessageBuilder.buildTaskMessage(task); MessagingTemplate mqTemplate = new MessagingTemplate(); - Message returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); Object o = returnedMessage.getPayload(); countedEntities = countedEntitiesService.countAll(); if( o instanceof TweetResultList){ TweetResultList msg = (TweetResultList) o; long taskId = msg.getTaskId(); task = taskService.findById(taskId); - logMsg = "Sucessfully finished task "+taskType+"via MQ by "+sendType; + logMsg = "Sucessfully finished task "+taskType+"via MQ by "+ taskSendType; taskService.done(logMsg,task,countedEntities); } else { - logMsg = "Finished with Error: task "+taskType+"via MQ by "+sendType+": Wrong type of returnedMessage"; + logMsg = "Finished with Error: task "+taskType+"via MQ by "+ taskSendType +": Wrong type of returnedMessage"; taskService.finalError(task,logMsg,countedEntities); log.error(logMsg); } @@ -210,47 +294,48 @@ private Task sendAndReceiveTweet(TaskType taskType){ } private Task sendAndReceiveUser(TaskType taskType){ - SendType sendType = SendType.SEND_AND_WAIT_FOR_RESULT; - String logMsg = "Start task "+taskType+"via MQ by "+sendType;; + TaskSendType taskSendType = TaskSendType.SEND_AND_WAIT_FOR_RESULT; + String logMsg = "Start task "+taskType+"via MQ by "+ taskSendType;; log.info(logMsg); CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create(logMsg, taskType, sendType, countedEntities); - Message mqMessage = twitterwallMessageBuilder.buildTaskMessage(task); + Task task = taskService.create(logMsg, taskType, taskSendType, countedEntities); + Message mqMessage = taskMessageBuilder.buildTaskMessage(task); MessagingTemplate mqTemplate = new MessagingTemplate(); - Message returnedMessage = mqTemplate.sendAndReceive(startTaskChannel, mqMessage); + Message returnedMessage = mqTemplate.sendAndReceive(channelTaskStart, mqMessage); Object o = returnedMessage.getPayload(); countedEntities = countedEntitiesService.countAll(); if( o instanceof UserMessage){ UserMessage msg = (UserMessage) o; long taskId = msg.getTaskMessage().getTaskId(); task = taskService.findById(taskId); - logMsg = "Sucessfully finished task "+taskType+"via MQ by "+sendType; + logMsg = "Sucessfully finished task "+taskType+"via MQ by "+ taskSendType; taskService.done(logMsg,task,countedEntities); log.info(logMsg); } else { - logMsg = "Finished with Error: task "+taskType+"via MQ by "+sendType+": Wrong type of returnedMessage"; + logMsg = "Finished with Error: task "+taskType+"via MQ by "+ taskSendType +": Wrong type of returnedMessage"; taskService.finalError(task,logMsg,countedEntities); log.error(logMsg); } return task; } - private final MessageChannel startTaskChannel; + + private final MessageChannel channelTaskStart; private final TaskService taskService; private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TaskMessageBuilder taskMessageBuilder; - private static final Logger log = LoggerFactory.getLogger(StartTaskImpl.class); + private static final Logger log = LoggerFactory.getLogger(TaskStartImpl.class); @Autowired - public StartTaskImpl(MessageChannel startTaskChannel, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { - this.startTaskChannel = startTaskChannel; + public TaskStartImpl(@Qualifier("channel.TaskStart") MessageChannel channelTaskStart, TaskService taskService, CountedEntitiesService countedEntitiesService, TaskMessageBuilder taskMessageBuilder) { + this.channelTaskStart = channelTaskStart; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.taskMessageBuilder = taskMessageBuilder; } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetFinisher.java similarity index 55% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetFinisher.java index f084f459..766473cd 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetResultList; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetPersistor.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetPersistor.java index f1a3613f..372af5e9 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; public interface TweetPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetTransformator.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetTransformator.java index db872381..15a4872a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/TweetTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/TweetTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; public interface TweetTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java similarity index 73% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java index f6586b9e..dd27a1c0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,14 +6,15 @@ import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl.UserFinisherImpl; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetFinisher; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetResultList; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.TweetFinisher; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetResultList; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; @@ -54,14 +55,17 @@ public void finishAsnyc(Message> incomingMessageList) { } @Autowired - public TweetFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService) { + public TweetFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; + this.tweetMessageBuilder = tweetMessageBuilder; } private final TaskService taskService; private final CountedEntitiesService countedEntitiesService; + private final TweetMessageBuilder tweetMessageBuilder; + private static final Logger log = LoggerFactory.getLogger(UserFinisherImpl.class); } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java similarity index 70% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java index d2d84dae..39e0d5fa 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetPersistorImpl.java @@ -1,15 +1,16 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetPersistor; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweetPerform; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.TweetPersistor; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.persist.StoreOneTweetPerform; @Component("mqTweetPersistor") public class TweetPersistorImpl implements TweetPersistor { @@ -18,10 +19,13 @@ public class TweetPersistorImpl implements TweetPersistor { private final StoreOneTweetPerform storeOneTweetPerform; + private final TweetMessageBuilder tweetMessageBuilder; + @Autowired - public TweetPersistorImpl(TaskService taskService, StoreOneTweetPerform storeOneTweetPerform) { + public TweetPersistorImpl(TaskService taskService, StoreOneTweetPerform storeOneTweetPerform, TweetMessageBuilder tweetMessageBuilder) { this.taskService = taskService; this.storeOneTweetPerform = storeOneTweetPerform; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java similarity index 73% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java index 1060b175..70dec43f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/services/impl/TweetTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/serviceactivator/impl/TweetTransformatorImpl.java @@ -1,15 +1,16 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.services.TweetTransformator; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.serviceactivator.TweetTransformator; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.transform.TweetTransformService; @Component("mqTweetTransformator") public class TweetTransformatorImpl implements TweetTransformator { @@ -18,10 +19,13 @@ public class TweetTransformatorImpl implements TweetTransformator { private final TaskService taskService; + private final TweetMessageBuilder tweetMessageBuilder; + @Autowired - public TweetTransformatorImpl(TweetTransformService tweetTransformService, TaskService taskService) { + public TweetTransformatorImpl(TweetTransformService tweetTransformService, TaskService taskService, TweetMessageBuilder tweetMessageBuilder) { this.tweetTransformService = tweetTransformService; this.taskService = taskService; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java new file mode 100644 index 00000000..09d9a67b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/CreateTestDataTweetsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface CreateTestDataTweetsSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FavoritesSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FavoritesSplitter.java new file mode 100644 index 00000000..2342d23f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FavoritesSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface FavoritesSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java new file mode 100644 index 00000000..16cf0ece --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FetchTweetsFromSearchSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface FetchTweetsFromSearchSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java new file mode 100644 index 00000000..772b017c --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/FindTweetsToRemoveSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface FindTweetsToRemoveSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/HomeTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/HomeTimelineSplitter.java new file mode 100644 index 00000000..16287cba --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/HomeTimelineSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface HomeTimelineSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/MentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/MentionsSplitter.java new file mode 100644 index 00000000..4c7ea121 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/MentionsSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface MentionsSplitter extends TweetsSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/RetweetsOfMeSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/RetweetsOfMeSplitter.java new file mode 100644 index 00000000..b15916f6 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/RetweetsOfMeSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface RetweetsOfMeSplitter extends TweetsSplitter{ +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UpdateTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UpdateTweetsSplitter.java new file mode 100644 index 00000000..7f825768 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UpdateTweetsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface UpdateTweetsSplitter extends TweetsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UserTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UserTimelineSplitter.java new file mode 100644 index 00000000..01c1b04f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/UserTimelineSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.TweetsSplitter; + +public interface UserTimelineSplitter extends TweetsSplitter{ +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java similarity index 66% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java index 0fc9f03f..fcd61fb5 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/CreateTestDataTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/CreateTestDataTweetsSplitterImpl.java @@ -1,25 +1,25 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.CreateTestDataTweetsSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.CreateTestDataTweetsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; @Component("mqCreateTestDataForTweetsSplitter") public class CreateTestDataTweetsSplitterImpl implements CreateTestDataTweetsSplitter { @@ -34,16 +34,16 @@ public class CreateTestDataTweetsSplitterImpl implements CreateTestDataTweetsSpl private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; @Autowired - public CreateTestDataTweetsSplitterImpl(TestdataProperties testdataProperties, TwitterApiService twitterApiService, TaskService taskService, TweetService tweetService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public CreateTestDataTweetsSplitterImpl(TestdataProperties testdataProperties, TwitterApiService twitterApiService, TaskService taskService, TweetService tweetService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.testdataProperties = testdataProperties; this.twitterApiService = twitterApiService; this.taskService = taskService; this.tweetService = tweetService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override @@ -60,7 +60,7 @@ public List> splitTweetMessage(Message incomi for (long idTwitter : userIdTwitterList) { loopId++; boolean fetchTweetFromApi = true; - org.woehlke.twitterwall.oodm.entities.Tweet tweetPers = tweetService.findByIdTwitter(idTwitter); + org.woehlke.twitterwall.oodm.model.Tweet tweetPers = tweetService.findByIdTwitter(idTwitter); if(tweetPers == null){ fetchTweetFromApi = true; } else { @@ -69,9 +69,9 @@ public List> splitTweetMessage(Message incomi Message outgoingMessage = null; if(fetchTweetFromApi) { Tweet tweet = twitterApiService.findOneTweetById(idTwitter); - outgoingMessage = twitterwallMessageBuilder.buildTweetMessage(incomingTaskMessage, tweet, loopId, loopAll); + outgoingMessage = tweetMessageBuilder.buildTweetMessage(incomingTaskMessage, tweet, loopId, loopAll); } else { - outgoingMessage = twitterwallMessageBuilder.buildTweetMessage(incomingTaskMessage, tweetPers,loopId,loopAll); + outgoingMessage = tweetMessageBuilder.buildTweetMessage(incomingTaskMessage, tweetPers,loopId,loopAll); } tweets.add(outgoingMessage); } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java index 2ea08812..079e991d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FavoritesSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FavoritesSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FavoritesSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.FavoritesSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; @@ -26,14 +26,14 @@ public class FavoritesSplitterImpl implements FavoritesSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; @Autowired - public FavoritesSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public FavoritesSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override @@ -49,7 +49,7 @@ public List> splitTweetMessage(Message messag int loopAll = twitterTweets.size(); for (Tweet tweet: twitterTweets) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); + Message mqMessageOut = tweetMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); tweets.add(mqMessageOut); } return tweets; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java index 8d5267e0..8756b575 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FetchTweetsFromSearchSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FetchTweetsFromSearchSplitterImpl.java @@ -1,17 +1,17 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FetchTweetsFromSearchSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.FetchTweetsFromSearchSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; @@ -26,14 +26,14 @@ public class FetchTweetsFromSearchSplitterImpl implements FetchTweetsFromSearchS private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; @Autowired - public FetchTweetsFromSearchSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public FetchTweetsFromSearchSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override @@ -49,7 +49,7 @@ public List> splitTweetMessage(Message messag int loopAll = twitterTweets.size(); for (Tweet tweet: twitterTweets) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); + Message mqMessageOut = tweetMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); tweets.add(mqMessageOut); } return tweets; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java similarity index 69% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java index 8e4f4108..ec53bb6a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/FindTweetsToRemoveSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/FindTweetsToRemoveSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -6,16 +6,16 @@ import org.springframework.data.domain.Pageable; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.FindTweetsToRemoveSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.FindTweetsToRemoveSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; import java.util.ArrayList; import java.util.List; @@ -29,14 +29,14 @@ public class FindTweetsToRemoveSplitterImpl implements FindTweetsToRemoveSplitte private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; @Autowired - public FindTweetsToRemoveSplitterImpl(TweetService tweetService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public FindTweetsToRemoveSplitterImpl(TweetService tweetService, TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.tweetService = tweetService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override @@ -56,7 +56,7 @@ public List> splitTweetMessage(Message messag int loopAll = tweetList.getContent().size(); for (Tweet tweet: tweetList) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); + Message mqMessageOut = tweetMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); tweets.add(mqMessageOut); } return tweets; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java index b058cc19..92cea047 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/HomeTimelineSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/HomeTimelineSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.HomeTimelineSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.HomeTimelineSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; @@ -26,14 +26,14 @@ public class HomeTimelineSplitterImpl implements HomeTimelineSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; @Autowired - public HomeTimelineSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public HomeTimelineSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override @@ -49,7 +49,7 @@ public List> splitTweetMessage(Message messag int loopAll = twitterTweets.size(); for (Tweet tweet: twitterTweets) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); + Message mqMessageOut = tweetMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); tweets.add(mqMessageOut); } return tweets; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java index 7725ba1c..3874ea92 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/MentionsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/MentionsSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.MentionsSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.MentionsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; @@ -26,14 +26,14 @@ public class MentionsSplitterImpl implements MentionsSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; @Autowired - public MentionsSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public MentionsSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override @@ -49,7 +49,7 @@ public List> splitTweetMessage(Message messag int loopAll = twitterTweets.size(); for (Tweet tweet: twitterTweets) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); + Message mqMessageOut = tweetMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); tweets.add(mqMessageOut); } return tweets; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java index 3ab7b212..65a44dc6 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/RetweetsOfMeSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/RetweetsOfMeSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.RetweetsOfMeSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.RetweetsOfMeSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; @@ -26,14 +26,14 @@ public class RetweetsOfMeSplitterImpl implements RetweetsOfMeSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; @Autowired - public RetweetsOfMeSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public RetweetsOfMeSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @@ -50,7 +50,7 @@ public List> splitTweetMessage(Message messag int loopAll = twitterTweets.size(); for (Tweet tweet: twitterTweets) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); + Message mqMessageOut = tweetMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); tweets.add(mqMessageOut); } return tweets; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java similarity index 69% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java index 095828f1..5c126a14 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UpdateTweetsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UpdateTweetsSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -8,23 +8,23 @@ import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.UpdateTweetsSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.UpdateTweetsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqUpdateTweetsSplitter") public class UpdateTweetsSplitterImpl implements UpdateTweetsSplitter { @@ -39,15 +39,15 @@ public class UpdateTweetsSplitterImpl implements UpdateTweetsSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; - public UpdateTweetsSplitterImpl(TwitterProperties twitterProperties, TweetService tweetService, TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public UpdateTweetsSplitterImpl(TwitterProperties twitterProperties, TweetService tweetService, TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.twitterProperties = twitterProperties; this.tweetService = tweetService; this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override @@ -63,8 +63,8 @@ public List> splitTweetMessage(Message incomi int lfdNr = 0; int all = 0; while(hasNext) { - Page tweetTwitterIds = tweetService.getAll(pageRequest); - for(org.woehlke.twitterwall.oodm.entities.Tweet tweetTwitterId:tweetTwitterIds.getContent()){ + Page tweetTwitterIds = tweetService.getAll(pageRequest); + for(org.woehlke.twitterwall.oodm.model.Tweet tweetTwitterId:tweetTwitterIds.getContent()){ if(!tweetTwitterId.getTaskBasedCaching().isCached(task.getTaskType(), TWELVE_HOURS)) { lfdNr++; all++; @@ -82,7 +82,7 @@ public List> splitTweetMessage(Message incomi log.debug("### twitterApiService.findOneTweetById from Twiiter API ("+lfdNr+" of "+all+"): "+tweetTwitterId); Tweet foundTweetFromTwitter = twitterApiService.findOneTweetById(tweetTwitterId); TweetMessage result = new TweetMessage(msgIn,foundTweetFromTwitter); - Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(incomingTaskMessage,foundTweetFromTwitter,lfdNr,all); + Message mqMessageOut = tweetMessageBuilder.buildTweetMessage(incomingTaskMessage,foundTweetFromTwitter,lfdNr,all); tweets.add(mqMessageOut); } return tweets; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java index 11f2d5ee..ec92babd 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/impl/UserTimelineSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/endpoint/splitter/impl/UserTimelineSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.impl; +package org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter.UserTimelineSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.tweets.endpoint.splitter.UserTimelineSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; @@ -27,14 +27,14 @@ public class UserTimelineSplitterImpl implements UserTimelineSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final TweetMessageBuilder tweetMessageBuilder; @Autowired - public UserTimelineSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public UserTimelineSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TweetMessageBuilder tweetMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.tweetMessageBuilder = tweetMessageBuilder; } @Override @@ -50,7 +50,7 @@ public List> splitTweetMessage(Message messag int loopAll = twitterTweets.size(); for (Tweet tweet: twitterTweets) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); + Message mqMessageOut = tweetMessageBuilder.buildTweetMessage(message,tweet,loopId,loopAll); tweets.add(mqMessageOut); } return tweets; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessage.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessage.java index 44320b2a..64cb4bda 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessage.java @@ -1,7 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.tweets.msg; import org.springframework.social.twitter.api.Tweet; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; import java.io.Serializable; @@ -10,7 +11,7 @@ public class TweetMessage implements Serializable { private final TaskMessage taskMessage; private final long tweetIdTwitter; private final org.springframework.social.twitter.api.Tweet tweetFromTwitter; - private final org.woehlke.twitterwall.oodm.entities.Tweet tweet; + private final org.woehlke.twitterwall.oodm.model.Tweet tweet; private final boolean ignoreTransformation; public TweetMessage( @@ -26,7 +27,7 @@ public TweetMessage( public TweetMessage( TaskMessage taskMessage, - org.woehlke.twitterwall.oodm.entities.Tweet tweet + org.woehlke.twitterwall.oodm.model.Tweet tweet ){ this.taskMessage = taskMessage; this.tweetFromTwitter = null; @@ -39,7 +40,7 @@ public TweetMessage( TaskMessage taskMessage, long tweetIdTwitter, Tweet tweetFromTwitter, - org.woehlke.twitterwall.oodm.entities.Tweet tweet + org.woehlke.twitterwall.oodm.model.Tweet tweet ) { this.taskMessage = taskMessage; this.tweetIdTwitter = tweetIdTwitter; @@ -50,7 +51,7 @@ public TweetMessage( public TweetMessage( TaskMessage taskMessage, - org.woehlke.twitterwall.oodm.entities.Tweet myTweet, + org.woehlke.twitterwall.oodm.model.Tweet myTweet, org.springframework.social.twitter.api.Tweet tweetFromTwitter ) { this.taskMessage = taskMessage; @@ -72,7 +73,7 @@ public Tweet getTweetFromTwitter() { return tweetFromTwitter; } - public org.woehlke.twitterwall.oodm.entities.Tweet getTweet() { + public org.woehlke.twitterwall.oodm.model.Tweet getTweet() { return tweet; } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessageBuilder.java new file mode 100644 index 00000000..8f3728f8 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetMessageBuilder.java @@ -0,0 +1,13 @@ +package org.woehlke.twitterwall.backend.mq.tweets.msg; + +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.Tweet; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; + +public interface TweetMessageBuilder { + + Message buildTweetMessage(Message incomingTaskMessage, org.woehlke.twitterwall.oodm.model.Tweet tweet, int loopId, int loopAll); + + Message buildTweetMessage(Message incomingTaskMessage, Tweet tweet, int loopId, int loopAll); + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetResultList.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetResultList.java index 7858447d..ce70cb9e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/TweetResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/TweetResultList.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.tweets.msg; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.model.Tweet; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/impl/TweetMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/impl/TweetMessageBuilderImpl.java new file mode 100644 index 00000000..221decc0 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/tweets/msg/impl/TweetMessageBuilderImpl.java @@ -0,0 +1,38 @@ +package org.woehlke.twitterwall.backend.mq.tweets.msg.impl; + +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.Tweet; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessage; +import org.woehlke.twitterwall.backend.mq.tweets.msg.TweetMessageBuilder; + +@Component +public class TweetMessageBuilderImpl implements TweetMessageBuilder { + + @Override + public Message buildTweetMessage(Message incomingTaskMessage, org.woehlke.twitterwall.oodm.model.Tweet tweet, int loopId, int loopAll){ + TweetMessage outputPayload = new TweetMessage(incomingTaskMessage.getPayload(),tweet); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingTaskMessage.getHeaders()) + .setHeader("loop_id",loopId) + .setHeader("loop_all",loopAll) + .build(); + return mqMessageOut; + } + + @Override + public Message buildTweetMessage(Message incomingTaskMessage, Tweet tweet, int loopId, int loopAll){ + TweetMessage outputPayload = new TweetMessage(incomingTaskMessage.getPayload(),tweet); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingTaskMessage.getHeaders()) + .setHeader("loop_id",loopId) + .setHeader("loop_all",loopAll) + .build(); + return mqMessageOut; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrFetcher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrFetcher.java new file mode 100644 index 00000000..31bc3907 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrFetcher.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; + +public interface UrFetcher { + + Message fetchUrl(Message incomingUserMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlFinisher.java new file mode 100644 index 00000000..da075fb5 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlFinisher.java @@ -0,0 +1,14 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlResultList; + +import java.util.List; + +public interface UrlFinisher { + + Message finish(Message> incomingMessageList); + + void finishAsnyc(Message> incomingMessageList); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlPersistor.java new file mode 100644 index 00000000..030f5d95 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/UrlPersistor.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; + +public interface UrlPersistor { + + Message persistUrl(Message incomingUserMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrFetcherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrFetcherImpl.java new file mode 100644 index 00000000..22751fb5 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrFetcherImpl.java @@ -0,0 +1,45 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.services.UrFetcher; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterUrlService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.service.TaskService; + +@Component("mqUrFetcher") +public class UrFetcherImpl implements UrFetcher { + + + @Override + public Message fetchUrl(Message incomingUserMessage) { + UrlMessage urlMessage =incomingUserMessage.getPayload(); + Task task = taskService.findById(urlMessage.getTaskMessage().getTaskId()); + String url = urlMessage.getUrlString(); + Url foundUrl = twitterUrlService.fetchTransientUrl(url,task); + if((!foundUrl.isRawUrlsFromDescription()) && (foundUrl.isUrlAndExpandedTheSame())){ + return urlMessageBuilder.createUrlMessage(incomingUserMessage, foundUrl); + } else { + boolean ignoreNextSteps = true; + return urlMessageBuilder.createUrlMessage(incomingUserMessage, ignoreNextSteps); + } + } + + + private final TaskService taskService; + + private final UrlMessageBuilder urlMessageBuilder; + + private final TwitterUrlService twitterUrlService; + + @Autowired + public UrFetcherImpl(TaskService taskService, UrlMessageBuilder urlMessageBuilder, TwitterUrlService twitterUrlService) { + this.taskService = taskService; + this.urlMessageBuilder = urlMessageBuilder; + this.twitterUrlService = twitterUrlService; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlFinisherImpl.java new file mode 100644 index 00000000..61ec5852 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlFinisherImpl.java @@ -0,0 +1,68 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.services.UrlFinisher; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlResultList; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.oodm.service.TaskService; + +import java.util.ArrayList; +import java.util.List; + +@Component("mqUrlFinisher") +public class UrlFinisherImpl implements UrlFinisher { + + + @Override + public Message finish(Message> incomingMessageList) { + List urlIdList = new ArrayList<>(); + long taskId = 0L; + for(UrlMessage msg:incomingMessageList.getPayload()){ + urlIdList.add(msg.getUrlId()); + taskId = msg.getTaskMessage().getTaskId(); + } + UrlResultList result = new UrlResultList(taskId,urlIdList); + Message mqMessageOut = MessageBuilder.withPayload(result) + .copyHeaders(incomingMessageList.getHeaders()) + .build(); + return mqMessageOut; + } + + @Override + public void finishAsnyc(Message> incomingMessageList) { + CountedEntities countedEntities = countedEntitiesService.countAll(); + long taskId = 0L; + for(UrlMessage msg:incomingMessageList.getPayload()){ + taskId = msg.getTaskMessage().getTaskId(); + break; + } + Task task = taskService.findById(taskId); + String msgDone = "Sucessfully finished task "+task.getTaskType()+" via MQ by FIRE_AND_FORGET_SENDER"; + taskService.done(msgDone,task,countedEntities); + log.info(msgDone); + } + + private final UrlMessageBuilder urlMessageBuilder; + + private final TaskService taskService; + + private final CountedEntitiesService countedEntitiesService; + + private static final Logger log = LoggerFactory.getLogger(UrlFinisherImpl.class); + + @Autowired + public UrlFinisherImpl(UrlMessageBuilder urlMessageBuilder, TaskService taskService, CountedEntitiesService countedEntitiesService) { + this.urlMessageBuilder = urlMessageBuilder; + this.taskService = taskService; + this.countedEntitiesService = countedEntitiesService; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlPersistorImpl.java new file mode 100644 index 00000000..64f62f4c --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/services/impl/UrlPersistorImpl.java @@ -0,0 +1,47 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.services.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.services.UrlPersistor; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.oodm.service.UrlService; + +@Component("mqUrlPersistor") +public class UrlPersistorImpl implements UrlPersistor { + + @Override + public Message persistUrl(Message incomingUserMessage) { + + UrlMessage in =incomingUserMessage.getPayload(); + Task task = taskService.findById(in.getTaskMessage().getTaskId()); + if(in.isIgnoreNextSteps()){ + return urlMessageBuilder.createUrlMessage(incomingUserMessage); + } else { + Url urlPers = urlService.findById(in.getUrlId()); + urlPers.setExpanded(in.getExpanded()); + urlPers.setDisplay(in.getDisplay()); + urlPers.setUpdatedBy(task); + urlPers = urlService.update(urlPers,task); + return urlMessageBuilder.createUrlMessage(incomingUserMessage); + } + } + + private final UrlService urlService; + + private final TaskService taskService; + + private final UrlMessageBuilder urlMessageBuilder; + + @Autowired + public UrlPersistorImpl(UrlService urlService, TaskService taskService, UrlMessageBuilder urlMessageBuilder) { + this.urlService = urlService; + this.taskService = taskService; + this.urlMessageBuilder = urlMessageBuilder; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/UpdateUrls.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/UpdateUrls.java new file mode 100644 index 00000000..b6508b47 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/UpdateUrls.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UrlSplitter; + +public interface UpdateUrls extends UrlSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/impl/UpdateUrlsImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/impl/UpdateUrlsImpl.java new file mode 100644 index 00000000..e412efd4 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/endpoint/splitter/impl/UpdateUrlsImpl.java @@ -0,0 +1,69 @@ +package org.woehlke.twitterwall.backend.mq.urls.endpoint.splitter.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.urls.endpoint.splitter.UpdateUrls; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.oodm.service.UrlService; + +import java.util.ArrayList; +import java.util.List; + +@Component("mqUpdateUrls") +public class UpdateUrlsImpl implements UpdateUrls { + + @Override + public List> splitUrlMessage(Message incomingTaskMessage) { + CountedEntities countedEntities = countedEntitiesService.countAll(); + List> messageListOut = new ArrayList<>(); + TaskMessage taskMessage = incomingTaskMessage.getPayload(); + long id = taskMessage.getTaskId(); + Task task = taskService.findById(id); + task = taskService.start(task,countedEntities); + + List foundRawUrlsFromDescription = urlService.findRawUrlsFromDescription(); + for(Url url :foundRawUrlsFromDescription){ + long urlId = url.getId(); + String urlString = url.getUrl(); + Message msg = urlMessageBuilder.createUrlMessage(incomingTaskMessage,urlId,urlString); + messageListOut.add(msg); + } + + List foundUrlAndExpandedTheSame = urlService.findUrlAndExpandedTheSame(); + for(Url url :foundUrlAndExpandedTheSame){ + long urlId = url.getId(); + String urlString = url.getUrl(); + Message msg = urlMessageBuilder.createUrlMessage(incomingTaskMessage,urlId,urlString); + messageListOut.add(msg); + } + + return null; + } + + + + private final CountedEntitiesService countedEntitiesService; + + private final UrlMessageBuilder urlMessageBuilder; + + private final UrlService urlService; + + private final TaskService taskService; + + @Autowired + public UpdateUrlsImpl(CountedEntitiesService countedEntitiesService, UrlMessageBuilder urlMessageBuilder, UrlService urlService, TaskService taskService) { + this.countedEntitiesService = countedEntitiesService; + this.urlMessageBuilder = urlMessageBuilder; + this.urlService = urlService; + this.taskService = taskService; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessage.java new file mode 100644 index 00000000..bc89a944 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessage.java @@ -0,0 +1,106 @@ +package org.woehlke.twitterwall.backend.mq.urls.msg; + +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; + +import java.io.Serializable; + +public class UrlMessage implements Serializable { + + private final TaskMessage taskMessage; + private final long urlId; + private final String urlString; + + private final String expanded; + private final String display; + + private final boolean ignoreNextSteps; + + public UrlMessage(TaskMessage taskMessage, long urlId, String urlString) { + this.taskMessage = taskMessage; + this.urlId = urlId; + this.urlString = urlString; + this.expanded = null; + this.display = null; + this.ignoreNextSteps = false; + } + + public UrlMessage(TaskMessage taskMessage, long urlId, String urlString, String expanded, String display) { + this.taskMessage = taskMessage; + this.urlId = urlId; + this.urlString = urlString; + this.expanded = expanded; + this.display = display; + this.ignoreNextSteps = false; + } + + public UrlMessage(TaskMessage taskMessage, long urlId, String urlString, boolean ignoreNextSteps) { + this.taskMessage = taskMessage; + this.urlId = urlId; + this.urlString = urlString; + this.expanded = null; + this.display = null; + this.ignoreNextSteps = ignoreNextSteps; + } + + public TaskMessage getTaskMessage() { + return taskMessage; + } + + public long getUrlId() { + return urlId; + } + + public String getUrlString() { + return urlString; + } + + public String getExpanded() { + return expanded; + } + + public String getDisplay() { + return display; + } + + public boolean isIgnoreNextSteps() { + return ignoreNextSteps; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof UrlMessage)) return false; + + UrlMessage that = (UrlMessage) o; + + if (urlId != that.urlId) return false; + if (ignoreNextSteps != that.ignoreNextSteps) return false; + if (taskMessage != null ? !taskMessage.equals(that.taskMessage) : that.taskMessage != null) return false; + if (urlString != null ? !urlString.equals(that.urlString) : that.urlString != null) return false; + if (expanded != null ? !expanded.equals(that.expanded) : that.expanded != null) return false; + return display != null ? display.equals(that.display) : that.display == null; + } + + @Override + public int hashCode() { + int result = taskMessage != null ? taskMessage.hashCode() : 0; + result = 31 * result + (int) (urlId ^ (urlId >>> 32)); + result = 31 * result + (urlString != null ? urlString.hashCode() : 0); + result = 31 * result + (expanded != null ? expanded.hashCode() : 0); + result = 31 * result + (display != null ? display.hashCode() : 0); + result = 31 * result + (ignoreNextSteps ? 1 : 0); + return result; + } + + @Override + public String toString() { + return "UrlMessage{" + + "taskMessage=" + taskMessage + + ", urlId=" + urlId + + ", urlString='" + urlString + '\'' + + ", expanded='" + expanded + '\'' + + ", display='" + display + '\'' + + ", ignoreNextSteps=" + ignoreNextSteps + + '}'; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessageBuilder.java new file mode 100644 index 00000000..01b33fd2 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlMessageBuilder.java @@ -0,0 +1,16 @@ +package org.woehlke.twitterwall.backend.mq.urls.msg; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.oodm.model.Url; + +public interface UrlMessageBuilder { + + Message createUrlMessage(Message incomingTaskMessage, long urlId, String urlString); + + Message createUrlMessage(Message incomingUserMessage, Url foundUrl); + + Message createUrlMessage(Message incomingUserMessage, boolean ignoreNextSteps); + + Message createUrlMessage(Message incomingUserMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlResultList.java new file mode 100644 index 00000000..84efa35f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/UrlResultList.java @@ -0,0 +1,51 @@ +package org.woehlke.twitterwall.backend.mq.urls.msg; + +import org.woehlke.twitterwall.oodm.model.Url; + +import java.io.Serializable; +import java.util.List; + +public class UrlResultList implements Serializable { + + private final long taskId; + private final List urlIdList; + + public UrlResultList(long taskId, List urlIdList) { + this.taskId = taskId; + this.urlIdList = urlIdList; + } + + public long getTaskId() { + return taskId; + } + + public List getUrlIdList() { + return urlIdList; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof UrlResultList)) return false; + + UrlResultList that = (UrlResultList) o; + + if (taskId != that.taskId) return false; + return urlIdList != null ? urlIdList.equals(that.urlIdList) : that.urlIdList == null; + } + + @Override + public int hashCode() { + int result = (int) (taskId ^ (taskId >>> 32)); + result = 31 * result + (urlIdList != null ? urlIdList.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "UrlResultList{" + + "taskId=" + taskId + + ", urlIdList=" + urlIdList + + '}'; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/impl/UrlMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/impl/UrlMessageBuilderImpl.java new file mode 100644 index 00000000..0c25c206 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/urls/msg/impl/UrlMessageBuilderImpl.java @@ -0,0 +1,55 @@ +package org.woehlke.twitterwall.backend.mq.urls.msg.impl; + +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessage; +import org.woehlke.twitterwall.backend.mq.urls.msg.UrlMessageBuilder; +import org.woehlke.twitterwall.oodm.model.Url; + +@Component +public class UrlMessageBuilderImpl implements UrlMessageBuilder { + + @Override + public Message createUrlMessage(Message incomingTaskMessage, long urlId, String urlString) { + UrlMessage urlMessage = new UrlMessage(incomingTaskMessage.getPayload(),urlId,urlString); + Message mqMessageOut = + MessageBuilder.withPayload(urlMessage) + .copyHeaders(incomingTaskMessage.getHeaders()) + .build(); + return mqMessageOut; + } + + @Override + public Message createUrlMessage(Message incomingUrlMessage, Url foundUrl) { + UrlMessage in = incomingUrlMessage.getPayload(); + UrlMessage out = new UrlMessage(in.getTaskMessage(),in.getUrlId(),in.getUrlString(),foundUrl.getExpanded(),foundUrl.getDisplay()); + Message mqMessageOut = + MessageBuilder.withPayload(out) + .copyHeaders(incomingUrlMessage.getHeaders()) + .build(); + return mqMessageOut; + } + + @Override + public Message createUrlMessage(Message incomingUrlMessage, boolean ignoreNextSteps) { + UrlMessage in = incomingUrlMessage.getPayload(); + UrlMessage out = new UrlMessage(in.getTaskMessage(),in.getUrlId(),in.getUrlString(),ignoreNextSteps); + Message mqMessageOut = + MessageBuilder.withPayload(out) + .copyHeaders(incomingUrlMessage.getHeaders()) + .build(); + return mqMessageOut; + } + + @Override + public Message createUrlMessage(Message incomingUrlMessage) { + Message mqMessageOut = + MessageBuilder.withPayload(incomingUrlMessage.getPayload()) + .copyHeaders(incomingUrlMessage.getHeaders()) + .build(); + return mqMessageOut; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListFinisher.java similarity index 54% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListFinisher.java index 36c247fc..89ecba81 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListResultList; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsFetcher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsFetcher.java new file mode 100644 index 00000000..beef1ae4 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsFetcher.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator; + +public interface ListsFetcher { + + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsPersistor.java similarity index 52% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsPersistor.java index bb2bd38d..6e39df39 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; public interface ListsPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsTransformator.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsTransformator.java index 9ec03d37..e6a2afde 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/ListsTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/ListsTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; public interface ListsTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java similarity index 72% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java index 28771f65..9d74c2fd 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,15 +6,16 @@ import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.UserList; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.UserList; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.ListFinisher; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl.UserFinisherImpl; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListResultList; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListFinisher; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl.UserFinisherImpl; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListResultList; import java.util.ArrayList; import java.util.List; @@ -22,7 +23,6 @@ @Component("mqUserListsFinisher") public class ListFinisherImpl implements ListFinisher { - //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252 @Override public Message finish(Message> incomingMessageList) { List resultList = new ArrayList<>(); @@ -39,7 +39,6 @@ public Message finish(Message> incomin return mqMessageOut; } - //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252 @Override public void finishAsnyc(Message> incomingMessageList) { CountedEntities countedEntities = countedEntitiesService.countAll(); @@ -55,14 +54,17 @@ public void finishAsnyc(Message> incomingMessageList) { } @Autowired - public ListFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService) { + public ListFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService, UserListMessageBuilder userListMessageBuilder) { this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; + this.userListMessageBuilder = userListMessageBuilder; } private final TaskService taskService; private final CountedEntitiesService countedEntitiesService; + private final UserListMessageBuilder userListMessageBuilder; + private static final Logger log = LoggerFactory.getLogger(UserFinisherImpl.class); } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsFetcherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsFetcherImpl.java new file mode 100644 index 00000000..6dfa3961 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsFetcherImpl.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl; + +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListsFetcher; + +@Component("mqListsFetcher") +public class ListsFetcherImpl implements ListsFetcher { +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java similarity index 71% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java index 5f7743d9..2a573ae4 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsPersistorImpl.java @@ -1,15 +1,16 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserListService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.ListsPersistor; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListsPersistor; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; @Component("mqUserListPersistor") public class ListsPersistorImpl implements ListsPersistor { @@ -18,10 +19,13 @@ public class ListsPersistorImpl implements ListsPersistor { private final UserListService userListService; + private final UserListMessageBuilder userListMessageBuilder; + @Autowired - public ListsPersistorImpl(TaskService taskService, UserListService userListService) { + public ListsPersistorImpl(TaskService taskService, UserListService userListService, UserListMessageBuilder userListMessageBuilder) { this.taskService = taskService; this.userListService = userListService; + this.userListMessageBuilder = userListMessageBuilder; } //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252 diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java similarity index 62% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java index a2f0ac89..37d4d505 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/services/impl/ListsTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/serviceactivator/impl/ListsTransformatorImpl.java @@ -1,14 +1,15 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.impl; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.services.ListsTransformator; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; -import org.woehlke.twitterwall.scheduled.service.transform.UserListTransformService; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.serviceactivator.ListsTransformator; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.service.transform.UserListTransformService; @Component("mqUserListTransformator") public class ListsTransformatorImpl implements ListsTransformator { @@ -17,10 +18,13 @@ public class ListsTransformatorImpl implements ListsTransformator { private final UserListTransformService userListTransformService; + private final UserListMessageBuilder userListMessageBuilder; + @Autowired - public ListsTransformatorImpl(TaskService taskService, UserListTransformService userListTransformService) { + public ListsTransformatorImpl(TaskService taskService, UserListTransformService userListTransformService, UserListMessageBuilder userListMessageBuilder) { this.taskService = taskService; this.userListTransformService = userListTransformService; + this.userListMessageBuilder = userListMessageBuilder; } //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252 @@ -28,7 +32,7 @@ public ListsTransformatorImpl(TaskService taskService, UserListTransformService public Message transformList(Message incomingMessage) { long taskId = incomingMessage.getPayload().getTaskMessage().getTaskId(); Task task = taskService.findById(taskId); - org.woehlke.twitterwall.oodm.entities.UserList userListOut = userListTransformService.transform(incomingMessage.getPayload().getUserListTwitter(),task); + org.woehlke.twitterwall.oodm.model.UserList userListOut = userListTransformService.transform(incomingMessage.getPayload().getUserListTwitter(),task); UserListMessage retVal = new UserListMessage(incomingMessage.getPayload().getTaskMessage(),incomingMessage.getPayload().getUserListTwitter(),userListOut); Message mqMessageOut = MessageBuilder.withPayload(retVal) .copyHeaders(incomingMessage.getHeaders()) diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/FetchUserListsForUsers.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/FetchUserListsForUsers.java new file mode 100644 index 00000000..2c0aa456 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/FetchUserListsForUsers.java @@ -0,0 +1,14 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter; + + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; + +import java.util.List; + +public interface FetchUserListsForUsers { + + List> splitUserListMessage(Message incomingTaskMessage); + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/ListsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/ListsSplitter.java new file mode 100644 index 00000000..72e05e14 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/ListsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserListsSplitter; + +public interface ListsSplitter extends UserListsSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/FetchUserListsForUsersImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/FetchUserListsForUsersImpl.java new file mode 100644 index 00000000..43d7d458 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/FetchUserListsForUsersImpl.java @@ -0,0 +1,44 @@ +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.FetchUserListsForUsers; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; +import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import java.util.List; + +@Component("mqFetchUserListsForUsers") +public class FetchUserListsForUsersImpl implements FetchUserListsForUsers { + + + @Override + public List> splitUserListMessage(Message incomingTaskMessage) { + return null; + } + + private final TwitterApiService twitterApiService; + + private final TaskService taskService; + + private final UserService userService; + + private final CountedEntitiesService countedEntitiesService; + + private final UserListMessageBuilder userListMessageBuilder; + + @Autowired + public FetchUserListsForUsersImpl(TwitterApiService twitterApiService, TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, UserListMessageBuilder userListMessageBuilder) { + this.twitterApiService = twitterApiService; + this.taskService = taskService; + this.userService = userService; + this.countedEntitiesService = countedEntitiesService; + this.userListMessageBuilder = userListMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java similarity index 63% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java index 75fc743d..cc3ffb05 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/impl/ListsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/endpoint/splitter/impl/ListsSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.splitter.impl; +package org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.UserList; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.splitter.ListsSplitter; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.userlist.endpoint.splitter.ListsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; @@ -26,17 +26,16 @@ public class ListsSplitterImpl implements ListsSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final UserListMessageBuilder userListMessageBuilder; @Autowired - public ListsSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public ListsSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, UserListMessageBuilder userListMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.userListMessageBuilder = userListMessageBuilder; } - //TODO: #252 https://github.com/phasenraum2010/twitterwall2/issues/252 @Override public List> splitUserListMessage(Message incomingTaskMessage) { CountedEntities countedEntities = countedEntitiesService.countAll(); @@ -50,7 +49,7 @@ public List> splitUserListMessage(Message int loopAll = fetchedUserList.size(); for (UserList userList: fetchedUserList) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildUserListMessage(incomingTaskMessage,userList,loopId,loopAll); + Message mqMessageOut = userListMessageBuilder.buildUserListMessage(incomingTaskMessage,userList,loopId,loopAll); messageListOut.add(mqMessageOut); } return messageListOut; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessage.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessage.java index a2042eb8..36f3ae7b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessage.java @@ -1,6 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.userlist.msg; import org.springframework.social.twitter.api.UserList; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; import java.io.Serializable; @@ -8,7 +9,7 @@ public class UserListMessage implements Serializable { private final TaskMessage taskMessage; private final org.springframework.social.twitter.api.UserList userListTwitter; - private final org.woehlke.twitterwall.oodm.entities.UserList userList; + private final org.woehlke.twitterwall.oodm.model.UserList userList; private final long idTwitter; public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, long idTwitter) { @@ -18,7 +19,7 @@ public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, long i this.userList = null; } - public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.entities.UserList userList, long idTwitter) { + public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.model.UserList userList, long idTwitter) { this.taskMessage = taskMessage; this.userListTwitter = userListTwitter; this.userList = userList; @@ -32,7 +33,7 @@ public UserListMessage(TaskMessage taskMessage, UserList userListTwitter) { this.idTwitter = userListTwitter.getId(); } - public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.entities.UserList userListOut) { + public UserListMessage(TaskMessage taskMessage, UserList userListTwitter, org.woehlke.twitterwall.oodm.model.UserList userListOut) { this.taskMessage = taskMessage; this.userListTwitter = userListTwitter; this.userList = userListOut; @@ -47,7 +48,7 @@ public UserList getUserListTwitter() { return userListTwitter; } - public org.woehlke.twitterwall.oodm.entities.UserList getUserList() { + public org.woehlke.twitterwall.oodm.model.UserList getUserList() { return userList; } diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessageBuilder.java new file mode 100644 index 00000000..f463babd --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListMessageBuilder.java @@ -0,0 +1,11 @@ +package org.woehlke.twitterwall.backend.mq.userlist.msg; + +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.UserList; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; + +public interface UserListMessageBuilder { + + Message buildUserListMessage(Message incomingTaskMessage, UserList userList, int loopId, int loopAll); + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListResultList.java similarity index 91% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListResultList.java index 50c99f0d..bc24b36a 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserListResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/UserListResultList.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.userlist.msg; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/impl/UserListMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/impl/UserListMessageBuilderImpl.java new file mode 100644 index 00000000..1dbc6454 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/userlist/msg/impl/UserListMessageBuilderImpl.java @@ -0,0 +1,26 @@ +package org.woehlke.twitterwall.backend.mq.userlist.msg.impl; + +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.UserList; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; + +@Component +public class UserListMessageBuilderImpl implements UserListMessageBuilder { + + @Override + public Message buildUserListMessage(Message incomingTaskMessage, UserList userList, int loopId, int loopAll) { + UserListMessage outputPayload = new UserListMessage(incomingTaskMessage.getPayload(),userList); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingTaskMessage.getHeaders()) + .setHeader("loop_id",loopId) + .setHeader("loop_all",loopAll) + .build(); + return mqMessageOut; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/CreateImprintUser.java new file mode 100644 index 00000000..73400813 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/CreateImprintUser.java @@ -0,0 +1,10 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; + +import org.springframework.messaging.Message; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; + +public interface CreateImprintUser { + + Message createImprintUser(Message mqMessage); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserCheckStorage.java similarity index 54% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserCheckStorage.java index ec395a33..41d6d488 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserCheckStorage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserCheckStorage.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; public interface UserCheckStorage { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserFinisher.java similarity index 61% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserFinisher.java index 0b62952f..4671b35f 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserFinisher.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserFinisher.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserResultList; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserResultList; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserPersistor.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserPersistor.java index e4c47799..8a566888 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserPersistor.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserPersistor.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; public interface UserPersistor { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserTransformator.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserTransformator.java index 1b5ac220..cb5eee40 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/UserTransformator.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/UserTransformator.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator; import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; public interface UserTransformator { diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java similarity index 63% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java index 46914e44..610035d0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/CreateImprintUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/CreateImprintUserImpl.java @@ -1,19 +1,19 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.CreateImprintUser; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.CreateImprintUser; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; @Component("mqCreateImprintUser") public class CreateImprintUserImpl implements CreateImprintUser { @@ -24,14 +24,14 @@ public class CreateImprintUserImpl implements CreateImprintUser { private final UserService userService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final UserMessageBuilder userMessageBuilder; @Autowired - public CreateImprintUserImpl(TwitterApiService twitterApiService, FrontendProperties frontendProperties, UserService userService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public CreateImprintUserImpl(TwitterApiService twitterApiService, FrontendProperties frontendProperties, UserService userService, UserMessageBuilder userMessageBuilder) { this.twitterApiService = twitterApiService; this.frontendProperties = frontendProperties; this.userService = userService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.userMessageBuilder = userMessageBuilder; } @Override @@ -44,7 +44,7 @@ public Message createImprintUser(Message mqMessageIn) return this.getMessageOut(mqMessageIn); } else { if (imprintUser.getTaskBasedCaching().isCached(receivedMessage.getTaskType(), TWELVE_HOURS)) { - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(mqMessageIn,imprintUser); + Message mqMessageOut = userMessageBuilder.buildUserMessage(mqMessageIn,imprintUser); return mqMessageOut; } else { return this.getMessageOut(mqMessageIn); @@ -55,7 +55,7 @@ public Message createImprintUser(Message mqMessageIn) private Message getMessageOut(Message mqMessageIn){ String screenName = frontendProperties.getImprintScreenName(); TwitterProfile twitterProfile = twitterApiService.getUserProfileForScreenName(screenName); - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(mqMessageIn,twitterProfile); + Message mqMessageOut = userMessageBuilder.buildUserMessage(mqMessageIn,twitterProfile); return mqMessageOut; } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java index 8acda58c..96b1f4ad 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserCheckStorageImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserCheckStorageImpl.java @@ -1,14 +1,14 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserCheckStorage; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.UserCheckStorage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; @Component("mqUserCheckStorage") public class UserCheckStorageImpl implements UserCheckStorage { @@ -17,13 +17,13 @@ public class UserCheckStorageImpl implements UserCheckStorage { private final TwitterApiService twitterApiService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final UserMessageBuilder userMessageBuilder; @Autowired - public UserCheckStorageImpl(UserService userService, TwitterApiService twitterApiService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public UserCheckStorageImpl(UserService userService, TwitterApiService twitterApiService, UserMessageBuilder userMessageBuilder) { this.userService = userService; this.twitterApiService = twitterApiService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.userMessageBuilder = userMessageBuilder; } @Override @@ -32,16 +32,16 @@ public Message checkIfUserIsInStorage(Message incoming long userIdTwitter = receivedMessage.getTwitterProfileId(); boolean isInStorage = userService.isByIdTwitter(userIdTwitter); if(isInStorage){ - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingMessage,isInStorage); + Message mqMessageOut = userMessageBuilder.buildUserMessage(incomingMessage,isInStorage); return mqMessageOut; } else { TwitterProfile twitterProfile = twitterApiService.getUserProfileForTwitterId(userIdTwitter); if(twitterProfile == null){ - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingMessage,isInStorage); + Message mqMessageOut = userMessageBuilder.buildUserMessage(incomingMessage,isInStorage); return mqMessageOut; } else { boolean ignoreTransformation = false; - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingMessage, twitterProfile, ignoreTransformation); + Message mqMessageOut = userMessageBuilder.buildUserMessage(incomingMessage, twitterProfile, ignoreTransformation); return mqMessageOut; } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserFinisherImpl.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserFinisherImpl.java index ac93b315..0f078e16 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserFinisherImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserFinisherImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,13 +6,14 @@ import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserFinisher; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserResultList; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.UserFinisher; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.msg.UserResultList; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; @@ -64,14 +65,17 @@ public void finishOneUserAsnyc(Message incomingMessage) { } @Autowired - public UserFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService) { + public UserFinisherImpl(TaskService taskService, CountedEntitiesService countedEntitiesService, UserMessageBuilder userMessageBuilder) { this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; + this.userMessageBuilder = userMessageBuilder; } private final TaskService taskService; private final CountedEntitiesService countedEntitiesService; + private final UserMessageBuilder userMessageBuilder; + private static final Logger log = LoggerFactory.getLogger(UserFinisherImpl.class); } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserPersistorImpl.java similarity index 72% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserPersistorImpl.java index a6ccbc1e..3840b1c9 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserPersistorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserPersistorImpl.java @@ -1,15 +1,16 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserPersistor; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.UserPersistor; @Component("mqUserPersistor") public class UserPersistorImpl implements UserPersistor { @@ -18,10 +19,13 @@ public class UserPersistorImpl implements UserPersistor { private final StoreUserProcess storeUserProcess; + private final UserMessageBuilder userMessageBuilder; + @Autowired - public UserPersistorImpl(TaskService taskService, StoreUserProcess storeUserProcess) { + public UserPersistorImpl(TaskService taskService, StoreUserProcess storeUserProcess, UserMessageBuilder userMessageBuilder) { this.taskService = taskService; this.storeUserProcess = storeUserProcess; + this.userMessageBuilder = userMessageBuilder; } @Override @@ -42,7 +46,7 @@ public Message persistUser(Message incomingUserMessage UserMessage mqMessageOut = new UserMessage( receivedMessage.getTaskMessage(), receivedMessage.getTwitterProfile(), - user + userPers ); return MessageBuilder.withPayload(mqMessageOut) .copyHeaders(incomingUserMessage.getHeaders()) diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserTransformatorImpl.java similarity index 73% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserTransformatorImpl.java index 14699fcd..050e4135 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/impl/UserTransformatorImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/serviceactivator/impl/UserTransformatorImpl.java @@ -1,15 +1,16 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.support.MessageBuilder; import org.springframework.messaging.Message; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.services.UserTransformator; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.mq.users.endpoint.serviceactivator.UserTransformator; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; @Component("mqUserTransformator") public class UserTransformatorImpl implements UserTransformator { @@ -18,10 +19,13 @@ public class UserTransformatorImpl implements UserTransformator { private final TaskService taskService; + private final UserMessageBuilder userMessageBuilder; + @Autowired - public UserTransformatorImpl(UserTransformService userTransformService, TaskService taskService) { + public UserTransformatorImpl(UserTransformService userTransformService, TaskService taskService, UserMessageBuilder userMessageBuilder) { this.userTransformService = userTransformService; this.taskService = taskService; + this.userMessageBuilder = userMessageBuilder; } @Override diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/CreateTestDataUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/CreateTestDataUsersSplitter.java new file mode 100644 index 00000000..2402d1f0 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/CreateTestDataUsersSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface CreateTestDataUsersSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFollowerSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFollowerSplitter.java new file mode 100644 index 00000000..0ee7d3b9 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFollowerSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchFollowerSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFriendsSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFriendsSplitter.java new file mode 100644 index 00000000..46a5a21e --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchFriendsSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchFriendsSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchListsForUsers.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchListsForUsers.java new file mode 100644 index 00000000..0df3709a --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchListsForUsers.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchListsForUsers extends UserSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUserlistOwnersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUserlistOwnersSplitter.java new file mode 100644 index 00000000..baee7936 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUserlistOwnersSplitter.java @@ -0,0 +1,6 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchUserlistOwnersSplitter extends UserSplitter { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUsersFromListSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUsersFromListSplitter.java new file mode 100644 index 00000000..a87ef53b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/FetchUsersFromListSplitter.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface FetchUsersFromListSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/UpdateUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/UpdateUsersSplitter.java new file mode 100644 index 00000000..a564a08f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/UpdateUsersSplitter.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter; + +import org.woehlke.twitterwall.backend.mq.common.UserSplitter; + +public interface UpdateUsersSplitter extends UserSplitter { + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java index 7c25667f..bab673fc 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/CreateTestDataUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/CreateTestDataUsersSplitterImpl.java @@ -1,25 +1,25 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.CreateTestDataUsersSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.CreateTestDataUsersSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; @Component("mqCreateTestDataForUsersSplitter") public class CreateTestDataUsersSplitterImpl implements CreateTestDataUsersSplitter { @@ -34,15 +34,15 @@ public class CreateTestDataUsersSplitterImpl implements CreateTestDataUsersSplit private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final UserMessageBuilder userMessageBuilder; - public CreateTestDataUsersSplitterImpl(TestdataProperties testdataProperties, TwitterApiService twitterApiService, TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public CreateTestDataUsersSplitterImpl(TestdataProperties testdataProperties, TwitterApiService twitterApiService, TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, UserMessageBuilder userMessageBuilder) { this.testdataProperties = testdataProperties; this.twitterApiService = twitterApiService; this.taskService = taskService; this.userService = userService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.userMessageBuilder = userMessageBuilder; } @Override @@ -64,13 +64,14 @@ public List> splitUserMessage(Message incoming fetchFromTwitterApi=true; } else { fetchFromTwitterApi=!userPers.getTaskBasedCaching().isCached(task.getTaskType(), TWELVE_HOURS); + userPers = userService.store(userPers,task); } Message outgoingMessage; if(fetchFromTwitterApi){ TwitterProfile userProfile = twitterApiService.getUserProfileForScreenName(screenName); - outgoingMessage = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,loopId,loopAll); + outgoingMessage = userMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,loopId,loopAll); } else { - outgoingMessage = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userPers,loopId,loopAll); + outgoingMessage = userMessageBuilder.buildUserMessage(incomingTaskMessage,userPers,loopId,loopAll); } userProfileList.add(outgoingMessage); } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java index f1c8eede..c7f770e4 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFollowerSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFollowerSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.CursoredList; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchFollowerSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchFollowerSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; @@ -26,14 +26,14 @@ public class FetchFollowerSplitterImpl implements FetchFollowerSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final UserMessageBuilder userMessageBuilder; @Autowired - public FetchFollowerSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public FetchFollowerSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, UserMessageBuilder userMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.userMessageBuilder = userMessageBuilder; } @Override @@ -49,7 +49,7 @@ public List> splitUserMessage(Message incoming int loopAll = foundTwitterProfiles.size(); for (Long twitterProfileId : foundTwitterProfiles) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,twitterProfileId,loopId,loopAll); + Message mqMessageOut = userMessageBuilder.buildUserMessage(incomingTaskMessage,twitterProfileId,loopId,loopAll); userProfileList.add(mqMessageOut); } return userProfileList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java index 64d540ea..1904263b 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchFriendsSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchFriendsSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.CursoredList; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchFriendsSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchFriendsSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import java.util.ArrayList; import java.util.List; @@ -26,14 +26,14 @@ public class FetchFriendsSplitterImpl implements FetchFriendsSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final UserMessageBuilder userMessageBuilder; @Autowired - public FetchFriendsSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public FetchFriendsSplitterImpl(TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, UserMessageBuilder userMessageBuilder) { this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.userMessageBuilder = userMessageBuilder; } @Override @@ -49,7 +49,7 @@ public List> splitUserMessage(Message incoming int loopAll = foundUserProfiles.size(); for (Long twitterUserId : foundUserProfiles) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,twitterUserId,loopId,loopAll); + Message mqMessageOut = userMessageBuilder.buildUserMessage(incomingTaskMessage,twitterUserId,loopId,loopAll); userProfileList.add(mqMessageOut); } return userProfileList; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchListsForUsersImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchListsForUsersImpl.java new file mode 100644 index 00000000..f2b21f3b --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchListsForUsersImpl.java @@ -0,0 +1,41 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.userlist.msg.UserListMessageBuilder; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchListsForUsers; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import java.util.List; + +@Component("mqFetchListsForUsers") +public class FetchListsForUsersImpl implements FetchListsForUsers { + + + @Override + public List> splitUserMessage(Message incomingTaskMessage) { + return null; + } + + private final TaskService taskService; + + private final UserService userService; + + private final CountedEntitiesService countedEntitiesService; + + private final UserListMessageBuilder userListMessageBuilder; + + @Autowired + public FetchListsForUsersImpl(TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, UserListMessageBuilder userListMessageBuilder) { + this.taskService = taskService; + this.userService = userService; + this.countedEntitiesService = countedEntitiesService; + this.userListMessageBuilder = userListMessageBuilder; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java new file mode 100644 index 00000000..87dec23d --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUserlistOwnersSplitterImpl.java @@ -0,0 +1,110 @@ +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.TwitterProfile; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.UserList; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; +import org.woehlke.twitterwall.oodm.service.TaskService; +import org.woehlke.twitterwall.oodm.service.UserListService; +import org.woehlke.twitterwall.oodm.service.UserService; +import org.woehlke.twitterwall.backend.mq.mentions.endpoint.splitter.impl.UpdateUsersFromMentionsSplitterImpl; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchUserlistOwnersSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; + +import java.util.ArrayList; +import java.util.List; + +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; + +@Component("mqFetchUserlistOwnersSplitter") +public class FetchUserlistOwnersSplitterImpl implements FetchUserlistOwnersSplitter { + + + + @Override + public List> splitUserMessage(Message incomingTaskMessage) { + String msg ="splitTweetMessage: "; + log.debug(msg+ " START"); + CountedEntities countedEntities = countedEntitiesService.countAll(); + TaskMessage msgIn = incomingTaskMessage.getPayload(); + long id = msgIn.getTaskId(); + Task task = taskService.findById(id); + task = taskService.start(task,countedEntities); + List> userProfileList = new ArrayList<>(); + List screenNames = new ArrayList<>(); + int lfdNr = 0; + int all = 0; + boolean hasNext=true; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, twitterProperties.getPageSize()); + while (hasNext) { + Page userListPage = userListService.getAll(pageRequest); + hasNext = userListPage.hasNext(); + for (UserList oneUserList : userListPage.getContent()) { + String screenName = oneUserList.getListOwnersScreenName(); + User foundUser = userService.findByScreenName(screenName); + if(foundUser == null) { + lfdNr++; + all++; + log.debug("### mentionService.getAll from DB (" + lfdNr + "): " + screenName); + screenNames.add(screenName); + } else { + foundUser = userService.store(foundUser,task); + log.debug("### updated User with screenName = " + foundUser.getUniqueId()); + } + } + pageRequest = pageRequest.next(); + } + lfdNr = 0; + for(String screenName:screenNames){ + lfdNr++; + log.debug("### twitterApiService.getUserProfileForScreenName("+screenName+") from Twiiter API ("+lfdNr+" of "+all+")"); + TwitterProfile userProfile = twitterApiService.getUserProfileForScreenName(screenName); + if(userProfile!=null) { + Message mqMessageOut = userMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,lfdNr,all); + userProfileList.add(mqMessageOut); + } + } + return userProfileList; + } + + private static final Logger log = LoggerFactory.getLogger(UpdateUsersFromMentionsSplitterImpl.class); + + private final TwitterProperties twitterProperties; + + private final TwitterApiService twitterApiService; + + private final TaskService taskService; + + private final UserService userService; + + private final UserListService userListService; + + private final CountedEntitiesService countedEntitiesService; + + private final UserMessageBuilder userMessageBuilder; + + @Autowired + public FetchUserlistOwnersSplitterImpl(TwitterProperties twitterProperties, TwitterApiService twitterApiService, TaskService taskService, UserService userService, UserListService userListService, CountedEntitiesService countedEntitiesService, UserMessageBuilder userMessageBuilder) { + this.twitterProperties = twitterProperties; + this.twitterApiService = twitterApiService; + this.taskService = taskService; + this.userService = userService; + this.userListService = userListService; + this.countedEntitiesService = countedEntitiesService; + this.userMessageBuilder = userMessageBuilder; + } +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java index 637a1a4a..a2de5bab 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/FetchUsersFromListSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/FetchUsersFromListSplitterImpl.java @@ -1,18 +1,18 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.springframework.messaging.Message; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.conf.properties.SchedulerProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.SchedulerProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.FetchUsersFromListSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.FetchUsersFromListSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; @@ -31,15 +31,15 @@ public class FetchUsersFromListSplitterImpl implements FetchUsersFromListSplitte private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final UserMessageBuilder userMessageBuilder; - public FetchUsersFromListSplitterImpl(SchedulerProperties schedulerProperties, FrontendProperties frontendProperties, TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public FetchUsersFromListSplitterImpl(SchedulerProperties schedulerProperties, FrontendProperties frontendProperties, TwitterApiService twitterApiService, TaskService taskService, CountedEntitiesService countedEntitiesService, UserMessageBuilder userMessageBuilder) { this.schedulerProperties = schedulerProperties; this.frontendProperties = frontendProperties; this.twitterApiService = twitterApiService; this.taskService = taskService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.userMessageBuilder = userMessageBuilder; } @Override @@ -57,7 +57,7 @@ public List> splitUserMessage(Message incoming int loopAll = foundTwitterProfiles.size(); for (TwitterProfile twitterProfile : foundTwitterProfiles) { loopId++; - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,twitterProfile,loopId,loopAll); + Message mqMessageOut = userMessageBuilder.buildUserMessage(incomingTaskMessage,twitterProfile,loopId,loopAll); userProfileList.add(mqMessageOut); } return userProfileList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java similarity index 76% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java index cf5e27ff..f6ec0f91 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/impl/UpdateUsersSplitterImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/endpoint/splitter/impl/UpdateUsersSplitterImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.impl; +package org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,25 +10,25 @@ import org.springframework.social.RateLimitExceededException; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter.UpdateUsersSplitter; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.mq.users.endpoint.splitter.UpdateUsersSplitter; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; import java.util.ArrayList; import java.util.List; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @Component("mqUpdateUserSplitter") public class UpdateUsersSplitterImpl implements UpdateUsersSplitter { @@ -45,16 +45,16 @@ public class UpdateUsersSplitterImpl implements UpdateUsersSplitter { private final CountedEntitiesService countedEntitiesService; - private final TwitterwallMessageBuilder twitterwallMessageBuilder; + private final UserMessageBuilder userMessageBuilder; @Autowired - public UpdateUsersSplitterImpl(TwitterProperties twitterProperties, TwitterApiService twitterApiService, TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, TwitterwallMessageBuilder twitterwallMessageBuilder) { + public UpdateUsersSplitterImpl(TwitterProperties twitterProperties, TwitterApiService twitterApiService, TaskService taskService, UserService userService, CountedEntitiesService countedEntitiesService, UserMessageBuilder userMessageBuilder) { this.twitterProperties = twitterProperties; this.twitterApiService = twitterApiService; this.taskService = taskService; this.userService = userService; this.countedEntitiesService = countedEntitiesService; - this.twitterwallMessageBuilder = twitterwallMessageBuilder; + this.userMessageBuilder = userMessageBuilder; } @Override @@ -80,6 +80,7 @@ public List> splitUserMessage(Message incoming loopAll++; log.debug(msg+ "### userService.getAllTwitterIds: ("+loopId+") "+user.getIdTwitter()); worklistProfileTwitterIds.add(user.getIdTwitter()); + user = userService.store(user,task); } } hasNext = userProfileTwitterIds.hasNext(); @@ -100,7 +101,7 @@ public List> splitUserMessage(Message incoming log.error(msg + "### ERROR: twitterApiService.getUserProfileForTwitterId("+userProfileTwitterId+") "+counter,e); } if(userProfile != null){ - Message mqMessageOut = twitterwallMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,loopId,loopAll); + Message mqMessageOut = userMessageBuilder.buildUserMessage(incomingTaskMessage,userProfile,loopId,loopAll); userProfileList.add(mqMessageOut); } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessage.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessage.java index 7b764669..66826221 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserMessage.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessage.java @@ -1,7 +1,8 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.users.msg; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.oodm.model.User; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessageBuilder.java new file mode 100644 index 00000000..d1a9b568 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserMessageBuilder.java @@ -0,0 +1,24 @@ +package org.woehlke.twitterwall.backend.mq.users.msg; + +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.TwitterProfile; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; + +public interface UserMessageBuilder { + + Message buildUserMessage(Message incomingTaskMessage, User userPers, int loopId, int loopAll); + + Message buildUserMessage(Message incomingTaskMessage, TwitterProfile userProfiles, int loopId, int loopAll); + + Message buildUserMessage(Message incomingTaskMessage, long twitterProfileId , int loopId, int loopAll); + + Message buildUserMessage(Message incomingMessage, boolean isInStorage); + + Message buildUserMessage(Message incomingMessage, TwitterProfile twitterProfile, boolean ignoreTransformation); + + Message buildUserMessage(Message mqMessageIn, TwitterProfile twitterProfile); + + Message buildUserMessage(Message mqMessageIn, User imprintUser); + +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserResultList.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserResultList.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserResultList.java rename to src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserResultList.java index 201d9041..86094206 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/UserResultList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/UserResultList.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; +package org.woehlke.twitterwall.backend.mq.users.msg; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/impl/UserMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/impl/UserMessageBuilderImpl.java new file mode 100644 index 00000000..86c8814e --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/mq/users/msg/impl/UserMessageBuilderImpl.java @@ -0,0 +1,96 @@ +package org.woehlke.twitterwall.backend.mq.users.msg.impl; + +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.Message; +import org.springframework.social.twitter.api.TwitterProfile; +import org.springframework.stereotype.Component; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.backend.mq.tasks.TaskMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessage; +import org.woehlke.twitterwall.backend.mq.users.msg.UserMessageBuilder; + +@Component +public class UserMessageBuilderImpl implements UserMessageBuilder { + + @Override + public Message buildUserMessage(Message incomingTaskMessage, User userPers, int loopId, int loopAll){ + UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),userPers); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingTaskMessage.getHeaders()) + .setHeader("loop_id",loopId) + .setHeader("loop_all",loopAll) + .build(); + return mqMessageOut; + } + + @Override + public Message buildUserMessage(Message incomingTaskMessage, TwitterProfile userProfiles, int loopId, int loopAll){ + UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),userProfiles); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingTaskMessage.getHeaders()) + .setHeader("loop_id",loopId) + .setHeader("loop_all",loopAll) + .build(); + return mqMessageOut; + } + + @Override + public Message buildUserMessage(Message incomingTaskMessage, long twitterProfileId, int loopId, int loopAll) { + UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),twitterProfileId); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingTaskMessage.getHeaders()) + .setHeader("loop_id",loopId) + .setHeader("loop_all",loopAll) + .build(); + return mqMessageOut; + } + + @Override + public Message buildUserMessage(Message incomingMessage, boolean isInStorage) { + UserMessage outputPayload = new UserMessage(incomingMessage.getPayload().getTaskMessage(),incomingMessage.getPayload().getTwitterProfileId(),isInStorage); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("checked_storage",Boolean.TRUE) + .build(); + return mqMessageOut; + } + + @Override + public Message buildUserMessage(Message incomingMessage, TwitterProfile twitterProfile, boolean ignoreTransformation) { + UserMessage outputPayload = new UserMessage(incomingMessage.getPayload().getTaskMessage(),twitterProfile,ignoreTransformation); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("checked_storage",Boolean.TRUE) + .build(); + return mqMessageOut; + } + + @Override + public Message buildUserMessage(Message incomingMessage, TwitterProfile twitterProfile) { + UserMessage outputPayload = new UserMessage(incomingMessage.getPayload(),twitterProfile); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("twitter_profile_id", twitterProfile.getId()) + .build(); + return mqMessageOut; + } + + @Override + public Message buildUserMessage(Message incomingMessage, User imprintUser) { + UserMessage outputPayload = new UserMessage(incomingMessage.getPayload(), imprintUser); + Message mqMessageOut = + MessageBuilder.withPayload(outputPayload) + .copyHeaders(incomingMessage.getHeaders()) + .setHeader("twitter_profile_id", imprintUser.getIdTwitter()) + .build(); + return mqMessageOut; + } + + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentMention.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentMention.java new file mode 100644 index 00000000..edb6b633 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentMention.java @@ -0,0 +1,13 @@ +package org.woehlke.twitterwall.backend.service.persist; + +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; + +/** + * Created by tw on 14.07.17. + */ +public interface CreatePersistentMention { + + Mention getPersistentMentionAndUserFor(Mention mention, Task task); + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentUrl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentUrl.java new file mode 100644 index 00000000..cc493d4f --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/CreatePersistentUrl.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.service.persist; + +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; + +/** + * Created by tw on 09.07.17. + */ +public interface CreatePersistentUrl { + + Url createPersistentUrlFor(String url, Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreEntitiesProcess.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreEntitiesProcess.java new file mode 100644 index 00000000..6da7046a --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreEntitiesProcess.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.backend.service.persist; + +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.Task; + +/** + * Created by tw on 11.07.17. + */ +public interface StoreEntitiesProcess { + + Entities storeEntitiesProcessForTweet(Tweet tweet, Task task); + + Entities storeEntitiesProcessForUser(User user, Task task); + + Entities updateEntitiesForUserProcess(User user, Task task); + + Entities storeEntitiesProcess(Entities entities, Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweet.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweet.java index b04ad5d0..28594d00 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweet.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweet.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweetPerform.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweetPerform.java new file mode 100644 index 00000000..6d2479e1 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreOneTweetPerform.java @@ -0,0 +1,13 @@ +package org.woehlke.twitterwall.backend.service.persist; + +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; + +/** + * Created by tw on 09.07.17. + */ +public interface StoreOneTweetPerform { + + Tweet storeOneTweetPerform(Tweet tweet, Task task); + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreTwitterProfileForProxyMentionForUser.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreTwitterProfileForProxyMentionForUser.java new file mode 100644 index 00000000..36fb38dc --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreTwitterProfileForProxyMentionForUser.java @@ -0,0 +1,13 @@ +package org.woehlke.twitterwall.backend.service.persist; + +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; + +/** + * Created by tw on 14.07.17. + */ +public interface StoreTwitterProfileForProxyMentionForUser { + + User storeTwitterProfileForProxyMentionForUser(Mention mention, Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserFromMention.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserFromMention.java new file mode 100644 index 00000000..cff370fe --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserFromMention.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.service.persist; + +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; + +/** + * Created by tw on 11.07.17. + */ +public interface StoreUserFromMention { + + User storeUserFromMention(User user, Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProcess.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProcess.java new file mode 100644 index 00000000..c7091f60 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProcess.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.service.persist; + +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; + +/** + * Created by tw on 09.07.17. + */ +public interface StoreUserProcess { + + User storeUserProcess(User user, Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfile.java similarity index 56% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfile.java index 064407e7..76f04fa8 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfile.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfile.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForScreenName.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForScreenName.java index f86ea1e8..9db1e02e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForScreenName.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForScreenName.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForUserList.java similarity index 59% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForUserList.java index 4a93038f..6db73825 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProfileForUserList.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/StoreUserProfileForUserList.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.scheduled.service.persist; +package org.woehlke.twitterwall.backend.service.persist; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentMentionImpl.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentMentionImpl.java index 06d851da..50f05a11 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentMentionImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentMentionImpl.java @@ -1,25 +1,20 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.service.MentionService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreTwitterProfileForProxyMentionForUser; -import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentMention; +import org.woehlke.twitterwall.backend.service.persist.StoreTwitterProfileForProxyMentionForUser; +import org.woehlke.twitterwall.backend.service.persist.CreatePersistentMention; /** * Created by tw on 14.07.17. */ @Component -//@Service -//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) public class CreatePersistentMentionImpl implements CreatePersistentMention { /** diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java index c7f99c09..3ede56fd 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/CreatePersistentUrlImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/CreatePersistentUrlImpl.java @@ -1,19 +1,19 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UrlService; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterUrlService; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentUrl; +import org.woehlke.twitterwall.backend.service.remote.TwitterUrlService; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.backend.service.persist.CreatePersistentUrl; import java.net.MalformedURLException; import java.net.URL; -import static org.woehlke.twitterwall.ScheduledTasks.TWELVE_HOURS; +import static org.woehlke.twitterwall.CronJobs.TWELVE_HOURS; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreEntitiesProcessImpl.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreEntitiesProcessImpl.java index cbbdab41..3e6dde5d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreEntitiesProcessImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreEntitiesProcessImpl.java @@ -1,15 +1,15 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.service.*; -import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentUrl; -import org.woehlke.twitterwall.scheduled.service.persist.StoreEntitiesProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreEntitiesProcess; +import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; @@ -20,6 +20,37 @@ @Component public class StoreEntitiesProcessImpl implements StoreEntitiesProcess { + @Override + public Entities storeEntitiesProcessForTweet(Tweet tweet, Task task) { + Entities entities = tweet.getEntities(); + entities = storeEntitiesProcess(entities,task); + return entities; + } + + @Override + public Entities storeEntitiesProcessForUser(User user, Task task) { + Entities entities = user.getEntities(); + entities = storeEntitiesProcess(entities,task); + return entities; + } + + @Override + public Entities updateEntitiesForUserProcess(User user, Task task) { + long userId = user.getId(); + long userIdTwitter = user.getIdTwitter(); + Set newMentions = new HashSet<>(); + Set mentions = user.getEntities().getMentions(); + for(Mention mention:mentions){ + mention.setIdTwitterOfUser(userIdTwitter); + mention.setIdOfUser(userId); + mention = mentionService.store(mention,task); + newMentions.add(mention); + } + user.getEntities().removeAllMentions(); + user.getEntities().addAllMentions(newMentions); + return user.getEntities(); + } + @Override public Entities storeEntitiesProcess(Entities entities, Task task) { String msg = "storeEntitiesProcess "+task.getUniqueId()+" : "; @@ -30,23 +61,10 @@ public Entities storeEntitiesProcess(Entities entities, Task task) { Set media = new LinkedHashSet(); Set tickerSymbols = new LinkedHashSet(); for (Url myUrl : entities.getUrls()) { - if (myUrl != null) { - if (myUrl.isValid()) { - Url urlPers = urlService.findByUrl(myUrl.getUrl()); - if (urlPers != null) { - urlPers.setDisplay(myUrl.getDisplay()); - urlPers.setExpanded(myUrl.getExpanded()); - urlPers = urlService.update(urlPers, task); - } else { - urlPers = urlService.create(myUrl, task); - } + if (myUrl.isValid()) { + Url urlPers = urlService.store(myUrl,task); + if(urlPers != null) { urls.add(urlPers); - } else if (myUrl.isRawUrlsFromDescription()) { - String urlStr = myUrl.getUrl(); - Url newUrlPers = createPersistentUrl.createPersistentUrlFor(urlStr, task); - if ((newUrlPers != null) && (newUrlPers.isValid())) { - urls.add(newUrlPers); - } } } } @@ -60,21 +78,8 @@ public Entities storeEntitiesProcess(Entities entities, Task task) { } for (Mention mention : entities.getMentions()) { if (mention.isValid()) { - if (mention.isProxy()) { - Mention mentionPers = mentionService.findByScreenName(mention.getScreenNameUnique()); - if (mentionPers == null) { - mentionPers = mentionService.store(mention, task); - } else { - mentionPers = mentionService.store(mentionPers, task); - } - mentions.add(mentionPers); - } else { - Mention mentionPers = mentionService.findByScreenNameAndIdTwitter(mention.getScreenName(), mention.getIdTwitter()); - if (mentionPers == null) { - mentionPers = mentionService.store(mention, task); - } else { - mentionPers = mentionService.store(mentionPers, task); - } + Mention mentionPers = mentionService.store(mention, task); + if(mentionPers!= null){ mentions.add(mentionPers); } } @@ -90,7 +95,9 @@ public Entities storeEntitiesProcess(Entities entities, Task task) { for (TickerSymbol tickerSymbol : entities.getTickerSymbols()) { if (tickerSymbol.isValid()) { TickerSymbol tickerSymbolPers = tickerSymbolService.store(tickerSymbol, task); - tickerSymbols.add(tickerSymbolPers); + if(tickerSymbolPers != null){ + tickerSymbols.add(tickerSymbolPers); + } } } entities.setUrls(urls); @@ -117,16 +124,13 @@ public Entities storeEntitiesProcess(Entities entities, Task task) { private final TickerSymbolService tickerSymbolService; - private final CreatePersistentUrl createPersistentUrl; - @Autowired - public StoreEntitiesProcessImpl(UrlService urlService, HashTagService hashTagService, MentionService mentionService, MediaService mediaService, TickerSymbolService tickerSymbolService, CreatePersistentUrl createPersistentUrl) { + public StoreEntitiesProcessImpl(UrlService urlService, HashTagService hashTagService, MentionService mentionService, MediaService mediaService, TickerSymbolService tickerSymbolService) { this.urlService = urlService; this.hashTagService = hashTagService; this.mentionService = mentionService; this.mediaService = mediaService; this.tickerSymbolService = tickerSymbolService; - this.createPersistentUrl = createPersistentUrl; } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetImpl.java similarity index 66% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetImpl.java index 30056e53..7a3322fe 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetImpl.java @@ -1,25 +1,20 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweetPerform; -import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.backend.service.persist.StoreOneTweet; +import org.woehlke.twitterwall.backend.service.persist.StoreOneTweetPerform; +import org.woehlke.twitterwall.backend.service.transform.TweetTransformService; /** * Created by tw on 09.07.17. */ @Component -//@Service -//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) public class StoreOneTweetImpl implements StoreOneTweet { @Override diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetPerformImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetPerformImpl.java index d0b77377..06a0878d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreOneTweetPerformImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreOneTweetPerformImpl.java @@ -1,15 +1,15 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.TweetService; -import org.woehlke.twitterwall.scheduled.service.persist.*; +import org.woehlke.twitterwall.backend.service.persist.*; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java index a5372711..7bafa594 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreTwitterProfileForProxyMentionForUserImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -7,16 +7,16 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.entities.Entities; import org.woehlke.twitterwall.oodm.service.*; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreTwitterProfileForProxyMentionForUser; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.service.persist.StoreTwitterProfileForProxyMentionForUser; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.service.persist.CreatePersistentUrl; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.backend.service.persist.CreatePersistentUrl; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; import java.util.LinkedHashSet; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserFromMentionImpl.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserFromMentionImpl.java index 4da42849..1cb6ebe9 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserFromMentionImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserFromMentionImpl.java @@ -1,14 +1,14 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserFromMention; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.backend.service.persist.StoreUserFromMention; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfileForScreenName; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProcessImpl.java similarity index 66% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProcessImpl.java index 4d509a7e..d426be6c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProcessImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProcessImpl.java @@ -1,26 +1,21 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreEntitiesProcess; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreEntitiesProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; + /** * Created by tw on 09.07.17. */ - @Component -//@Service -//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) public class StoreUserProcessImpl implements StoreUserProcess { @Override @@ -31,6 +26,8 @@ public User storeUserProcess(User user, Task task){ entities = storeEntitiesProcess.storeEntitiesProcess(entities, task); user.setEntities(entities); user = userService.store(user, task); + entities = storeEntitiesProcess.updateEntitiesForUserProcess(user, task); + user.setEntities(entities); } catch (Exception e){ log.error(msg+e.getMessage()); } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForScreenNameImpl.java similarity index 81% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForScreenNameImpl.java index 8a267df4..d6ded25c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForScreenNameImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForScreenNameImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,16 +6,13 @@ import org.springframework.social.RateLimitExceededException; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.service.UserService; //import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfile; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfileForScreenName; /** * Created by tw on 11.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForUserListImpl.java similarity index 74% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForUserListImpl.java index 3d382924..1a2b1d39 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileForUserListImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileForUserListImpl.java @@ -1,20 +1,17 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.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.Component; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForScreenName; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfileForUserList; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfileForScreenName; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfileForUserList; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileImpl.java similarity index 66% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileImpl.java index 2a1c8916..2c6d2838 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/impl/StoreUserProfileImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/persist/impl/StoreUserProfileImpl.java @@ -1,26 +1,21 @@ -package org.woehlke.twitterwall.scheduled.service.persist.impl; +package org.woehlke.twitterwall.backend.service.persist.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.Component; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProcess; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProcess; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfile; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; /** * Created by tw on 09.07.17. */ @Component -//@Service -//@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) public class StoreUserProfileImpl implements StoreUserProfile { @Override diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java b/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterApiService.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterApiService.java index 75097595..84a91c52 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterApiService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterApiService.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote; +package org.woehlke.twitterwall.backend.service.remote; import org.springframework.social.twitter.api.CursoredList; import org.springframework.social.twitter.api.Tweet; diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlService.java b/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlService.java new file mode 100644 index 00000000..8fa0ca22 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlService.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.service.remote; + +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; + +/** + * Created by tw on 28.06.17. + */ +public interface TwitterUrlService { + + Url fetchTransientUrl(String urlSrc,Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterApiServiceImpl.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterApiServiceImpl.java index f06b834b..dce578ed 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterApiServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterApiServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote.impl; +package org.woehlke.twitterwall.backend.service.remote.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,8 +9,8 @@ import org.springframework.social.twitter.api.*; import org.springframework.social.twitter.api.impl.TwitterTemplate; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import javax.inject.Inject; import java.util.ArrayList; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterUrlServiceImpl.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterUrlServiceImpl.java index d57b7a3a..1e818df0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/impl/TwitterUrlServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/remote/impl/TwitterUrlServiceImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote.impl; +package org.woehlke.twitterwall.backend.service.remote.impl; import org.apache.http.HttpHost; import org.apache.http.client.methods.CloseableHttpResponse; @@ -11,11 +11,11 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.BackendProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.configuration.properties.BackendProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.service.impl.UrlServiceImpl; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterUrlService; +import org.woehlke.twitterwall.backend.service.remote.TwitterUrlService; import java.io.IOException; import java.net.MalformedURLException; diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/EntitiesTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/EntitiesTransformService.java new file mode 100644 index 00000000..b37c1619 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/EntitiesTransformService.java @@ -0,0 +1,16 @@ +package org.woehlke.twitterwall.backend.service.transform; + +import org.springframework.social.twitter.api.Tweet; +import org.springframework.social.twitter.api.TwitterProfile; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.Entities; + +/** + * Created by tw on 11.07.17. + */ +public interface EntitiesTransformService { + + Entities transformEntitiesForUser(TwitterProfile userFromTwitterApi, Task task); + + Entities transformEntitiesForTweet(Tweet tweetFromTwitterApi, Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/HashTagTransformService.java similarity index 61% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/HashTagTransformService.java index f4726cff..4ae79676 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/HashTagTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/HashTagTransformService.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.HashTagEntity; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/MediaTransformService.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/MediaTransformService.java index 94be415b..2fe90c5c 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MediaTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/MediaTransformService.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.MediaEntity; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Media; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.oodm.model.Media; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/MentionTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/MentionTransformService.java new file mode 100644 index 00000000..166b8ed7 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/MentionTransformService.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.backend.service.transform; + +import org.springframework.social.twitter.api.MentionEntity; +import org.springframework.social.twitter.api.Tweet; +import org.springframework.social.twitter.api.TwitterProfile; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; + +import java.util.Set; + +/** + * Created by tw on 28.06.17. + */ +public interface MentionTransformService extends TransformService { + + Set findByUser(TwitterProfile userSource, Task task); + + Set findByTweet(Tweet tweetSource, Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/TickerSymbolTransformService.java similarity index 63% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/TickerSymbolTransformService.java index 8bd09f0f..76dc0a47 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TickerSymbolTransformService.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/TickerSymbolTransformService.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.scheduled.service.transform; +package org.woehlke.twitterwall.backend.service.transform; import org.springframework.social.twitter.api.TickerSymbolEntity; import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/TweetTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/TweetTransformService.java new file mode 100644 index 00000000..eec5c206 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/TweetTransformService.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.backend.service.transform; + +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; + +/** + * Created by tw on 28.06.17. + */ +public interface TweetTransformService extends TransformService { +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/UrlTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UrlTransformService.java new file mode 100644 index 00000000..17d1b477 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UrlTransformService.java @@ -0,0 +1,21 @@ +package org.woehlke.twitterwall.backend.service.transform; + +import org.springframework.social.twitter.api.Tweet; +import org.springframework.social.twitter.api.TwitterProfile; +import org.springframework.social.twitter.api.UrlEntity; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; + +import java.util.Set; + +/** + * Created by tw on 28.06.17. + */ +public interface UrlTransformService extends TransformService { + + Set getUrlsForTwitterProfile(TwitterProfile userSource, Task task); + + Set getUrlsForTweet(Tweet tweetFromTwitterApi, Task task); + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserListTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserListTransformService.java new file mode 100644 index 00000000..537efa92 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserListTransformService.java @@ -0,0 +1,7 @@ +package org.woehlke.twitterwall.backend.service.transform; + +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; + +public interface UserListTransformService extends TransformService { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserTransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserTransformService.java new file mode 100644 index 00000000..f29579ac --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/UserTransformService.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.service.transform; + +import org.springframework.social.twitter.api.TwitterProfile; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.backend.service.transform.common.TransformService; + +/** + * Created by tw on 28.06.17. + */ +public interface UserTransformService extends TransformService { + +} diff --git a/src/main/java/org/woehlke/twitterwall/backend/service/transform/common/TransformService.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/common/TransformService.java new file mode 100644 index 00000000..1cb8495a --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/common/TransformService.java @@ -0,0 +1,12 @@ +package org.woehlke.twitterwall.backend.service.transform.common; + +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; + +/** + * Created by tw on 28.06.17. + */ +public interface TransformService { + + T transform(SRC twitterObject, Task task); +} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/EntitiesTransformServiceImpl.java similarity index 63% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/EntitiesTransformServiceImpl.java index a3bb3599..3c9c2362 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/EntitiesTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/EntitiesTransformServiceImpl.java @@ -1,13 +1,14 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.social.twitter.api.*; +import org.springframework.social.twitter.api.Tweet; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.scheduled.service.transform.*; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.backend.service.transform.*; import java.util.List; import java.util.Set; @@ -40,15 +41,15 @@ public EntitiesTransformServiceImpl(UrlTransformService urlTransformService, Has } @Override - public Entities transformEntitiesForUser(TwitterProfile userSource, Task task) { - String msg = "transformEntitiesForUser: "+userSource.getScreenName()+" : "; - String description = userSource.getDescription(); + public Entities transformEntitiesForUser(TwitterProfile userFromTwitterApi, Task task) { + String msg = "transformEntitiesForUser: "+userFromTwitterApi.getScreenName()+" : "; + String description = userFromTwitterApi.getDescription(); Entities entitiesTarget = new Entities(); - Set urls = urlTransformService.getUrlsFor(userSource,task); - Set hashTags = hashTagTransformService.getHashTagsFor(userSource,task); - Set mentions = mentionTransformService.findByUser(userSource,task); - Set media = mediaTransformService.getMediaFor(userSource,task); - Set tickerSymbols = tickerSymbolTransformService.getTickerSymbolsFor(userSource,task); + Set urls = urlTransformService.getUrlsForTwitterProfile(userFromTwitterApi,task); + Set hashTags = hashTagTransformService.getHashTagsFor(userFromTwitterApi,task); + Set mentions = mentionTransformService.findByUser(userFromTwitterApi,task); + Set media = mediaTransformService.getMediaFor(userFromTwitterApi,task); + Set tickerSymbols = tickerSymbolTransformService.getTickerSymbolsFor(userFromTwitterApi,task); entitiesTarget.setMentions(mentions); entitiesTarget.addAllUrls(urls); entitiesTarget.setMedia(media); @@ -64,14 +65,14 @@ public Entities transformEntitiesForUser(TwitterProfile userSource, Task task) { } @Override - public Entities transform(org.springframework.social.twitter.api.Entities entitiesSource, Task task) { - String msg = "transform "; + public Entities transformEntitiesForTweet(Tweet tweetFromTwitterApi, Task task) { + String msg = "transformEntitiesForTweet "; log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); - List listUrlEntity = entitiesSource.getUrls(); - List listHashTagEntity = entitiesSource.getHashTags(); - List listMentionEntity = entitiesSource.getMentions(); - List listMediaEntity = entitiesSource.getMedia(); - List listTickerSymbolEntity = entitiesSource.getTickerSymbols(); + List listUrlEntity = tweetFromTwitterApi.getEntities().getUrls(); + List listHashTagEntity = tweetFromTwitterApi.getEntities().getHashTags(); + List listMentionEntity = tweetFromTwitterApi.getEntities().getMentions(); + List listMediaEntity = tweetFromTwitterApi.getEntities().getMedia(); + List listTickerSymbolEntity = tweetFromTwitterApi.getEntities().getTickerSymbols(); log.debug(msg+"listUrlEntity = "+listUrlEntity.size()); log.debug(msg+"listHashTagEntity = "+listHashTagEntity.size()); log.debug(msg+"listMentionEntity = "+listMentionEntity.size()); @@ -104,8 +105,37 @@ public Entities transform(org.springframework.social.twitter.api.Entities entiti log.debug(msg+"transformed TickerSymbol = "+tickerSymbol.getUniqueId()); entitiesTarget.addTickerSymbol(tickerSymbol); } + Set transformedMentions = entitiesTarget.getMentions(); + Set createdMentions = mentionTransformService.findByTweet(tweetFromTwitterApi,task); + for(Mention createdMention:createdMentions){ + boolean insert = true; + for(Mention transformedMention:transformedMentions){ + if(createdMention.getScreenNameUnique().compareTo(transformedMention.getScreenNameUnique())==0){ + insert = false; + } + } + if(insert){ + log.debug(msg+"created Mention = "+createdMention.getUniqueId()); + entitiesTarget.addMention(createdMention); + } + } + Set transformedUrls = entitiesTarget.getUrls(); + Set createdUrls = urlTransformService.getUrlsForTweet(tweetFromTwitterApi,task); + for(Url createdUrl:createdUrls){ + boolean insert = true; + for(Url transformedUrl:transformedUrls){ + if(createdUrl.getUrl().compareTo(transformedUrl.getUrl())==0){ + insert = false; + } + } + if(insert){ + log.debug(msg+"created Url = "+createdUrl.getUniqueId()); + entitiesTarget.addUrl(createdUrl); + } + } log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); - log.debug(msg+"entitiesSource: "+entitiesSource.toString()); + log.debug(msg+"TweetId: "+tweetFromTwitterApi.getId()); + log.debug(msg+"entitiesSource: "+tweetFromTwitterApi.getEntities().toString()); log.debug(msg+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); log.debug(msg+"entitiesTarget: "+entitiesTarget.getUniqueId()); log.trace(msg+"entitiesTarget: "+entitiesTarget.toString()); diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/HashTagTransformServiceImpl.java similarity index 72% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/HashTagTransformServiceImpl.java index adbdff57..3b64992d 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/HashTagTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/HashTagTransformServiceImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.social.twitter.api.HashTagEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.scheduled.service.transform.HashTagTransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.backend.service.transform.HashTagTransformService; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MediaTransformServiceImpl.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MediaTransformServiceImpl.java index d0350acc..587ddb82 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MediaTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MediaTransformServiceImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.social.twitter.api.MediaEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.Media; -import org.woehlke.twitterwall.scheduled.service.transform.MediaTransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.Media; +import org.woehlke.twitterwall.backend.service.transform.MediaTransformService; import java.util.LinkedHashSet; import java.util.Set; diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MentionTransformServiceImpl.java similarity index 55% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MentionTransformServiceImpl.java index f789bd08..c0820241 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/MentionTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/MentionTransformServiceImpl.java @@ -1,14 +1,15 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.social.twitter.api.MentionEntity; +import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.scheduled.service.transform.MentionTransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.backend.service.transform.MentionTransformService; import java.util.Set; @@ -23,9 +24,9 @@ public class MentionTransformServiceImpl extends EntitiesFilter implements Menti @Override public Mention transform(MentionEntity mention,Task task) { long idTwitter = mention.getId(); - String screenNameUnique = mention.getScreenName(); + String screenName = mention.getScreenName(); String name = mention.getName(); - Mention myMentionEntity = new Mention(task,null,idTwitter, screenNameUnique, name); + Mention myMentionEntity = Mention.createByTransformService(task, idTwitter, screenName, name); return myMentionEntity; } @@ -35,4 +36,11 @@ public Set findByUser(TwitterProfile userSource,Task task) { Set mentionsTarget = super.findByUserDescription(description,task); return mentionsTarget; } + + @Override + public Set findByTweet(Tweet tweetSource, Task task) { + String description = tweetSource.getText(); + Set mentionsTarget = super.findByUserDescription(description,task); + return mentionsTarget; + } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TickerSymbolTransformServiceImpl.java similarity index 50% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TickerSymbolTransformServiceImpl.java index 2d7bbca3..d5a6fae0 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TickerSymbolTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TickerSymbolTransformServiceImpl.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.social.twitter.api.TickerSymbolEntity; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; -import org.woehlke.twitterwall.scheduled.service.transform.TickerSymbolTransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; +import org.woehlke.twitterwall.backend.service.transform.TickerSymbolTransformService; import java.util.LinkedHashSet; import java.util.Set; @@ -19,11 +19,12 @@ public class TickerSymbolTransformServiceImpl extends EntitiesFilter implements TickerSymbolTransformService { @Override - public TickerSymbol transform(TickerSymbolEntity tickerSymbol,Task task) { - String tickerSymbolString = tickerSymbol.getTickerSymbol(); - String url = tickerSymbol.getUrl(); - TickerSymbol myTickerSymbolEntity = new TickerSymbol(task, null, tickerSymbolString, url); - return myTickerSymbolEntity; + public TickerSymbol transform(TickerSymbolEntity tickerSymbolSource,Task createdBy) { + String tickerSymbolString = tickerSymbolSource.getTickerSymbol(); + String url = tickerSymbolSource.getUrl(); + Task updatedBy = null; + TickerSymbol tickerSymboTarget = new TickerSymbol(createdBy, updatedBy, tickerSymbolString, url); + return tickerSymboTarget; } @Override diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TweetTransformServiceImpl.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TweetTransformServiceImpl.java index 5b31c1d9..2e66fb0e 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/TweetTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/TweetTransformServiceImpl.java @@ -1,19 +1,19 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.social.twitter.api.*; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.scheduled.service.transform.EntitiesTransformService; -import org.woehlke.twitterwall.scheduled.service.transform.TweetTransformService; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.backend.service.transform.EntitiesTransformService; +import org.woehlke.twitterwall.backend.service.transform.TweetTransformService; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; import java.util.Date; /** * Created by tw on 28.06.17. */ - @Component public class TweetTransformServiceImpl implements TweetTransformService { @@ -28,9 +28,8 @@ public TweetTransformServiceImpl(UserTransformService userTransformService, Enti } @Override - public org.woehlke.twitterwall.oodm.entities.Tweet transform(org.springframework.social.twitter.api.Tweet tweetSource,Task task) { + public org.woehlke.twitterwall.oodm.model.Tweet transform(org.springframework.social.twitter.api.Tweet tweetSource, Task task) { if (tweetSource == null) { return null; } else { - org.woehlke.twitterwall.oodm.entities.Tweet retweetedStatus = transform(tweetSource.getRetweetedStatus(),task); long idTwitter = tweetSource.getId(); String idStr = tweetSource.getIdStr(); String text = tweetSource.getText(); @@ -41,7 +40,7 @@ public org.woehlke.twitterwall.oodm.entities.Tweet transform(org.springframework long fromUserId = tweetSource.getFromUserId(); String languageCode = tweetSource.getLanguageCode(); String source = tweetSource.getSource(); - org.woehlke.twitterwall.oodm.entities.Tweet tweetTarget = new org.woehlke.twitterwall.oodm.entities.Tweet(task,null,idTwitter, idStr, text, createdAt, fromUser, profileImageUrl, toUserId, fromUserId, languageCode, source); + org.woehlke.twitterwall.oodm.model.Tweet tweetTarget = new org.woehlke.twitterwall.oodm.model.Tweet(task,null,idTwitter, idStr, text, createdAt, fromUser, profileImageUrl, toUserId, fromUserId, languageCode, source); tweetTarget.setFavoriteCount(tweetSource.getFavoriteCount()); tweetTarget.setFavorited(tweetSource.isFavorited()); tweetTarget.setInReplyToScreenName(tweetSource.getInReplyToScreenName()); @@ -53,17 +52,18 @@ public org.woehlke.twitterwall.oodm.entities.Tweet transform(org.springframework tweetTarget.setFromUser(tweetSource.getFromUser()); tweetTarget.setFavorited(tweetSource.isFavorited()); tweetTarget.setInReplyToStatusId(tweetSource.getInReplyToStatusId()); + /* retweetedStatus */ + org.woehlke.twitterwall.oodm.model.Tweet retweetedStatus = transform(tweetSource.getRetweetedStatus(),task); tweetTarget.setRetweetedStatus(retweetedStatus); - TwitterProfile userSource = tweetSource.getUser(); - - org.woehlke.twitterwall.oodm.entities.parts.Entities entitiesTarget = entitiesTransformService.transform(tweetSource.getEntities(),task); - + /* Entities */ + Entities entitiesTarget = entitiesTransformService.transformEntitiesForTweet(tweetSource,task); tweetTarget.setEntities(entitiesTarget); - - /* transform userTarget */ + /* transformEntitiesForTweet userTarget */ + TwitterProfile userSource = tweetSource.getUser(); User userTarget = userTransformService.transform(userSource,task); tweetTarget.setUser(userTarget); - + /* ExtraData */ + tweetTarget.setExtraData(tweetSource.getExtraData()); return tweetTarget; } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UrlTransformServiceImpl.java similarity index 60% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UrlTransformServiceImpl.java index c5f96701..478175ba 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UrlTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UrlTransformServiceImpl.java @@ -1,14 +1,15 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.social.twitter.api.Tweet; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.social.twitter.api.UrlEntity; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.EntitiesFilter; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.scheduled.service.transform.UrlTransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.EntitiesFilter; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.backend.service.transform.UrlTransformService; import java.util.*; @@ -19,22 +20,28 @@ public class UrlTransformServiceImpl extends EntitiesFilter implements UrlTransformService { @Override - public Url transform(UrlEntity url, Task task) { - String display = url.getDisplayUrl(); - String expanded = url.getExpandedUrl(); - String urlStr = url.getUrl(); - Url myUrlEntity = new Url(task,null,display, expanded, urlStr); - return myUrlEntity; + public Url transform(UrlEntity urlSource, Task task) { + String display = urlSource.getDisplayUrl(); + String expanded = urlSource.getExpandedUrl(); + String urlStr = urlSource.getUrl(); + Url urlTarget = Url.createByTransformation(task, display, expanded, urlStr); + urlTarget.setExtraData(urlSource.getExtraData()); + return urlTarget; } @Override - public Set getUrlsFor(TwitterProfile userSource,Task task) { - Set urlsTarget = new LinkedHashSet<>(); + public Set getUrlsForTwitterProfile(TwitterProfile userSource, Task task) { Map extraData = userSource.getExtraData(); + String description = userSource.getDescription(); + return getUrlsFromExtraDataAndText(extraData,description,task); + } + + private Set getUrlsFromExtraDataAndText(Map extraData, String description, Task task){ + Set urlsTarget = new LinkedHashSet<>(); if(extraData.containsKey("status")){ Object o = extraData.get("status"); if(o != null && o instanceof Map) { - Object oo = ((Map) o).get("entities"); + Object oo = ((Map) o).get("model"); if(oo != null && oo instanceof Map) { Object ooo = ((Map) oo).get("urls"); if(ooo != null && ooo instanceof List) { @@ -51,8 +58,8 @@ public Set getUrlsFor(TwitterProfile userSource,Task task) { } } } - if(extraData.containsKey("entities")){ - Object o = extraData.get("entities"); + if(extraData.containsKey("model")){ + Object o = extraData.get("model"); if(o != null && o instanceof Map) { Object oo = ((Map) o).get("url"); if(oo != null && oo instanceof Map) { @@ -71,12 +78,28 @@ public Set getUrlsFor(TwitterProfile userSource,Task task) { } } } - String description = userSource.getDescription(); Set rawUrlsFromDescription = getUrlsForDescription(description,task); - urlsTarget.addAll(rawUrlsFromDescription); + for(Url rawUrlFromDescription:rawUrlsFromDescription){ + boolean insert = true; + for(Url urlTarget :urlsTarget){ + if(rawUrlFromDescription.getUrl().compareTo(urlTarget.getUrl())==0){ + insert = false; + } + } + if(insert){ + urlsTarget.add(rawUrlFromDescription); + } + } return urlsTarget; } + @Override + public Set getUrlsForTweet(Tweet tweetFromTwitterApi, Task task) { + Map extraData = tweetFromTwitterApi.getExtraData(); + String text = tweetFromTwitterApi.getText(); + return getUrlsFromExtraDataAndText(extraData,text,task); + } + private static final Logger log = LoggerFactory.getLogger(UrlTransformServiceImpl.class); diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserListTransformServiceImpl.java similarity index 62% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserListTransformServiceImpl.java index a45146ec..c03ebb76 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserListTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserListTransformServiceImpl.java @@ -1,9 +1,13 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.impl; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.UserList; -import org.woehlke.twitterwall.scheduled.service.transform.UserListTransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.UserList; +import org.woehlke.twitterwall.backend.service.transform.UserListTransformService; + +import java.util.LinkedHashSet; +import java.util.Set; @Component public class UserListTransformServiceImpl implements UserListTransformService { @@ -22,7 +26,11 @@ public UserList transform(org.springframework.social.twitter.api.UserList twitte boolean isFollowing = twitterObject.isFollowing(); int memberCount = twitterObject.getMemberCount(); int subscriberCount = twitterObject.getSubscriberCount(); - UserList userList = new UserList(createdBy, updatedBy, idTwitter, name, fullName, uriPath, description, slug, isPublic, isFollowing, memberCount, subscriberCount); + Set members = new LinkedHashSet(); + Set subscriber = new LinkedHashSet(); + User listOwner = null; + UserList userList = new UserList(createdBy, updatedBy, idTwitter, name, fullName, uriPath, description, slug, isPublic, isFollowing, memberCount, subscriberCount,listOwner,members,subscriber); + userList.setExtraData(twitterObject.getExtraData()); return userList; } } diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformServiceImpl.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java rename to src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformServiceImpl.java index 8e50a4e0..25614f89 100644 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/impl/UserTransformServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/backend/service/transform/impl/UserTransformServiceImpl.java @@ -1,22 +1,21 @@ -package org.woehlke.twitterwall.scheduled.service.transform.impl; +package org.woehlke.twitterwall.backend.service.transform.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.Component; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.scheduled.service.transform.EntitiesTransformService; -import org.woehlke.twitterwall.scheduled.service.transform.UserTransformService; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.backend.service.transform.EntitiesTransformService; +import org.woehlke.twitterwall.backend.service.transform.UserTransformService; import java.util.Date; /** * Created by tw on 28.06.17. */ - @Component public class UserTransformServiceImpl implements UserTransformService { @@ -32,7 +31,7 @@ public UserTransformServiceImpl(EntitiesTransformService entitiesTransformServic @Override public User transform(TwitterProfile userSource,Task task) { - String msg = "User.transform for "+userSource.getId(); + String msg = "User.transformEntitiesForTweet for "+userSource.getId(); long idTwitter = userSource.getId(); String screenName = userSource.getScreenName(); String name = userSource.getName(); @@ -78,10 +77,11 @@ public User transform(TwitterProfile userSource,Task task) { userTarget.setShowAllInlineMedia(userSource.showAllInlineMedia()); userTarget.setProfileBannerUrl(userSource.getProfileBannerUrl()); Entities entities = this.entitiesTransformService.transformEntitiesForUser(userSource,task); - log.debug(msg+" entities = "+entities.getUniqueId()); + log.debug(msg+" model = "+entities.getUniqueId()); userTarget.setEntities(entities); log.debug(msg+" userTarget = "+userTarget.getUniqueId()); log.trace(msg+" userTarget = "+userTarget.toString()); + userTarget.setExtraData(userSource.getExtraData()); return userTarget; } diff --git a/src/main/java/org/woehlke/twitterwall/conf/DataSourceConfig.java b/src/main/java/org/woehlke/twitterwall/configuration/DataSourceConfig.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/conf/DataSourceConfig.java rename to src/main/java/org/woehlke/twitterwall/configuration/DataSourceConfig.java index 8b15d9e5..17dd8f2e 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/DataSourceConfig.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/DataSourceConfig.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf; +package org.woehlke.twitterwall.configuration; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/WebMvcConfig.java b/src/main/java/org/woehlke/twitterwall/configuration/WebMvcConfig.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/conf/WebMvcConfig.java rename to src/main/java/org/woehlke/twitterwall/configuration/WebMvcConfig.java index 84f91e3d..d43ca3c7 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/WebMvcConfig.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/WebMvcConfig.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf; +package org.woehlke.twitterwall.configuration; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/org/woehlke/twitterwall/conf/WebSecurityConfig.java b/src/main/java/org/woehlke/twitterwall/configuration/WebSecurityConfig.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/conf/WebSecurityConfig.java rename to src/main/java/org/woehlke/twitterwall/configuration/WebSecurityConfig.java index 34803d6d..9802065c 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/WebSecurityConfig.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/WebSecurityConfig.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf; +package org.woehlke.twitterwall.configuration; import org.springframework.beans.factory.annotation.Autowired; @@ -7,7 +7,7 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; @Configuration @EnableWebSecurity diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/BackendProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/BackendProperties.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/conf/properties/BackendProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/BackendProperties.java index 1262c80c..3ce5ebf4 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/BackendProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/BackendProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/FrontendProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/FrontendProperties.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/conf/properties/FrontendProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/FrontendProperties.java index 8178b059..cb7b7fd1 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/FrontendProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/FrontendProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java similarity index 97% rename from src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java index 3d96569a..ff89dce7 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/SchedulerProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/SchedulerProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -9,7 +9,7 @@ @Component @Validated -@ConfigurationProperties(prefix="twitterwall.scheduler") +@ConfigurationProperties(prefix="twitterwall.cronjobs") public class SchedulerProperties { @NotNull diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/TestdataProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/TestdataProperties.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/conf/properties/TestdataProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/TestdataProperties.java index af9e2c1d..b45d8b23 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/TestdataProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/TestdataProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/conf/properties/TwitterProperties.java b/src/main/java/org/woehlke/twitterwall/configuration/properties/TwitterProperties.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/conf/properties/TwitterProperties.java rename to src/main/java/org/woehlke/twitterwall/configuration/properties/TwitterProperties.java index dd85b7ca..10a15b0e 100644 --- a/src/main/java/org/woehlke/twitterwall/conf/properties/TwitterProperties.java +++ b/src/main/java/org/woehlke/twitterwall/configuration/properties/TwitterProperties.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.conf.properties; +package org.woehlke.twitterwall.configuration.properties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/ControllerHelper.java b/src/main/java/org/woehlke/twitterwall/frontend/content/ContentFactory.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/frontend/controller/common/ControllerHelper.java rename to src/main/java/org/woehlke/twitterwall/frontend/content/ContentFactory.java index 54df3a47..ac6c9215 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/ControllerHelper.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/ContentFactory.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.controller.common; +package org.woehlke.twitterwall.frontend.content; import org.springframework.ui.Model; import org.springframework.web.servlet.ModelAndView; @@ -6,7 +6,7 @@ /** * Created by tw on 18.07.17. */ -public interface ControllerHelper { +public interface ContentFactory { int FIRST_PAGE_NUMBER = 0; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/model/Page.java b/src/main/java/org/woehlke/twitterwall/frontend/content/Page.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/frontend/model/Page.java rename to src/main/java/org/woehlke/twitterwall/frontend/content/Page.java index 03d8e2d1..260702ca 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/model/Page.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/Page.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.model; +package org.woehlke.twitterwall.frontend.content; import java.io.Serializable; @@ -81,7 +81,7 @@ public boolean isHistoryBack() { public void setHistoryBack(boolean historyBack) { this.historyBack = historyBack; } - + public String getTheme() { return theme; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/content/Symbols.java b/src/main/java/org/woehlke/twitterwall/frontend/content/Symbols.java new file mode 100644 index 00000000..02e4d19c --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/Symbols.java @@ -0,0 +1,57 @@ +package org.woehlke.twitterwall.frontend.content; + +/** + * Created by tw on 01.07.17. + */ +public enum Symbols { + + TWEET(""), + USER(""), + HASHTAG(""), + MEDIA(""), + MENTION(""), + TICKER_SYMBOL(""), + URL(""), + USERLIST(""), + TASK(""), + TASK_HISTORY(""), + TASKS_ALL(""), + TASK_START(""), + TWEETS_HOME_TIMELINE(""), + TWEETS_USER_TIMELINE(""), + TWEETS_MENTIONS(""), + TWEETS_FAVORITES(""), + TWEETS_RETWEETS_OF_ME(""), + USER_TWEETING(""), + USER_ALL(""), + USER_FRIENDS(""), + USER_FOLLOWER(""), + USER_ON_LIST(""), + USER_NOT_YET_ON_LIST(""), + USER_CONNECTIONS(""), + USER_NOT_YET_FRIENDS(""), + USER_PROFILE(""), + IMPRINT(""), + HOME(""), + STARTPAGE(""), + GET_TEST_DATA("\n"), + EXCEPTION(""), + LEAF(""), + DATABASE(""), + MANAGEMENT(""), + DELETE_ALL(""), + LOGIN(""); + + + Symbols(String html){ + this.html=html; + } + + private String html; + + @Override + public String toString(){ + return html; + } + +} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java b/src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java rename to src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java index b902ab9c..28e971c8 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/impl/ControllerHelperImpl.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/content/impl/ContentFactoryImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.controller.common.impl; +package org.woehlke.twitterwall.frontend.content.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,16 +6,16 @@ import org.springframework.stereotype.Component; import org.springframework.ui.Model; import org.springframework.web.servlet.ModelAndView; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.model.Page; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.frontend.content.Page; /** * Created by tw on 18.07.17. */ @Component -public class ControllerHelperImpl implements ControllerHelper { +public class ContentFactoryImpl implements ContentFactory { private Page setupPage(Page page, String title, String subtitle, String symbol) { page.setTitle(title); @@ -56,7 +56,7 @@ public Model setupPage(Model model, String title, String subtitle, String symbol return model; } - private static final Logger log = LoggerFactory.getLogger(ControllerHelperImpl.class); + private static final Logger log = LoggerFactory.getLogger(ContentFactoryImpl.class); private final FrontendProperties frontendProperties; @@ -74,7 +74,7 @@ public Model setupPage(Model model, String title, String subtitle, String symbol @Autowired - public ControllerHelperImpl( + public ContentFactoryImpl( FrontendProperties frontendProperties, TwitterProperties twitterProperties ) { diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java index b98a06f2..280b0b20 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ApplicationController.java @@ -4,9 +4,9 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; /** * Created by tw on 03.07.17. @@ -21,19 +21,19 @@ public String managementPage(Model model) { String title = "Application Management"; String subtitle = twitterProperties.getSearchQuery(); String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); return "application/management"; } - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private final TwitterProperties twitterProperties; @Autowired public ApplicationController( - ControllerHelper controllerHelper, + ContentFactory contentFactory, TwitterProperties twitterProperties) { - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; this.twitterProperties = twitterProperties; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java index b76df6b8..1632ebb4 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/CountedEntitiesController.java @@ -8,13 +8,13 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; import org.woehlke.twitterwall.oodm.service.*; import java.util.ArrayList; @@ -35,7 +35,7 @@ public String domainCount(Model model) { String title = "Counted Entities"; String subtitle = twitterProperties.getSearchQuery(); String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); CountedEntities countedEntities =this.countedEntitiesService.countAll(); model.addAttribute("countedEntities", countedEntities); return "application/domain/count"; @@ -47,7 +47,7 @@ public String domainDeleteAll(Model model) { String title = "Counted Entities"; String subtitle = twitterProperties.getSearchQuery(); String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); CountedEntities countedEntities =this.countedEntitiesService.deleteAll(); model.addAttribute("countedEntities", countedEntities); return "application/domain/count"; @@ -55,7 +55,7 @@ public String domainDeleteAll(Model model) { @RequestMapping(path="/tweet/hashtag") public String domainCountTweet2hashtag( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> HashTag"; @@ -79,7 +79,7 @@ public String domainCountTweet2hashtag( @RequestMapping(path="/tweet/media") public String domainCountTweet2media( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> Media"; @@ -103,7 +103,7 @@ public String domainCountTweet2media( @RequestMapping(path="/tweet/mention") public String domainCountTweet2mention( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> Mention"; @@ -127,7 +127,7 @@ public String domainCountTweet2mention( @RequestMapping(path="/tweet/tickersymbol") public String domainCountTweet2tickersymbol( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> TickerSymbol"; @@ -151,7 +151,7 @@ public String domainCountTweet2tickersymbol( @RequestMapping(path="/tweet/url") public String domainCountTweet2url( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweet -> Url"; @@ -175,7 +175,7 @@ public String domainCountTweet2url( @RequestMapping(path="/user/hashtag") public String domainCountUserprofile2hashtag( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> HashTag"; @@ -199,7 +199,7 @@ public String domainCountUserprofile2hashtag( @RequestMapping(path="/user/media") public String domainCountUserprofile2media( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> Media"; @@ -223,7 +223,7 @@ public String domainCountUserprofile2media( @RequestMapping(path="/user/mention") public String domainCountUserprofile2mention( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> Mention"; @@ -247,7 +247,7 @@ public String domainCountUserprofile2mention( @RequestMapping(path="/user/tickersymbol") public String domainCountUserprofile2Tickersymbol( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> TickerSymbol"; @@ -271,7 +271,7 @@ public String domainCountUserprofile2Tickersymbol( @RequestMapping(path="/user/url") public String domainCountUserprofile2Url( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "UserProfile -> Url"; @@ -296,13 +296,13 @@ public String domainCountUserprofile2Url( private void setUpThisPage(String title,Model model){ String subtitle = "Counted Entities"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); } private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private final TweetService tweetService; @@ -325,7 +325,7 @@ private void setUpThisPage(String title,Model model){ @Autowired public CountedEntitiesController( FrontendProperties frontendProperties, - ControllerHelper controllerHelper, + ContentFactory contentFactory, TweetService tweetService, UserService userService, HashTagService hashTagService, @@ -335,7 +335,7 @@ public CountedEntitiesController( UrlService urlService, CountedEntitiesService countedEntitiesService, TwitterProperties twitterProperties) { this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; this.tweetService = tweetService; this.userService = userService; this.hashTagService = hashTagService; diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java index fcd76f96..80061fdb 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/HashTagController.java @@ -12,26 +12,24 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -//import org.woehlke.twitterwall.frontend.controller.common.HashTagsOverviewHelper; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; -//import org.woehlke.twitterwall.oodm.entities.transients.HashTagOverview; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.HashTag; -//import org.woehlke.twitterwall.oodm.entities.transients.HashTagOverviewPaged; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; import org.woehlke.twitterwall.oodm.service.HashTagService; +import javax.persistence.EntityNotFoundException; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; -import static org.woehlke.twitterwall.oodm.entities.HashTag.HASHTAG_TEXT_PATTERN; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.oodm.model.HashTag.HASHTAG_TEXT_PATTERN; /** * Created by tw on 12.07.17. @@ -48,7 +46,7 @@ public String getAll( String subtitle = "all"; String title = "HashTag"; String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -61,30 +59,34 @@ public String getAll( } @RequestMapping(path="/{id}") - public String findById( + public String findHashTagById( @PathVariable("id") HashTag hashTag, @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, Model model ) { - String msg = "/hashtag/" + hashTag.getId()+ " "; - String msg2 = msg + " parameter IS valid - START "; - log.debug(msg2); - Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); - Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); - String subtitle = "Tweets und User für HashTag"; - String title = hashTag.getText(); - String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); - model.addAttribute("hashTag",hashTag); - log.debug(msg+" try to: tweetService.findTweetsForHashTag: "); - Page tweets = tweetService.findTweetsForHashTag(hashTag,pageRequestTweet); - model.addAttribute("latestTweets", tweets); - log.debug(msg+" try to: userService.getUsersForHashTag: "); - Page users = userService.getUsersForHashTag(hashTag,pageRequestUser); - model.addAttribute("users", users); - log.debug(msg + " READY - DONE"); - return "hashtag/id"; + if(hashTag == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/hashtag/" + hashTag.getId()+ " "; + String msg2 = msg + " parameter IS valid - START "; + log.debug(msg2); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + String subtitle = "Tweets und User für HashTag"; + String title = hashTag.getText(); + String symbol = Symbols.HASHTAG.toString(); + model = contentFactory.setupPage(model, title, subtitle, symbol); + model.addAttribute("hashTag",hashTag); + log.debug(msg+" try to: tweetService.findTweetsForHashTag: "); + Page tweets = tweetService.findTweetsForHashTag(hashTag,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForHashTag: "); + Page users = userService.getUsersForHashTag(hashTag,pageRequestUser); + model.addAttribute("users", users); + log.debug(msg + " READY - DONE"); + return "hashtag/id"; + } } @RequestMapping(path="/text/{text}") @@ -105,7 +107,7 @@ public String hashTagFromTweetsAndUsers( String subtitle = "Tweets und User für HashTag"; String title = text; String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); log.debug(msg + " try to: hashTagService.findByText "); HashTag hashTag = hashTagService.findByText(text); model.addAttribute("hashTag",hashTag); @@ -134,7 +136,7 @@ public String hashTagsOverview( String title = "HashTags"; String subtitle = twitterProperties.getSearchQuery(); String symbol = Symbols.HASHTAG.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); int size= frontendProperties.getPageSize() * 2; Pageable pageRequestTweets = new PageRequest(pageTweet,size); Pageable pageRequestUsers = new PageRequest(pageUser,size); @@ -157,9 +159,7 @@ public String hashTagsOverview( private final UserService userService; - private final ControllerHelper controllerHelper; - - //private final HashTagsOverviewHelper hashTagsOverviewHelper; + private final ContentFactory contentFactory; @Autowired public HashTagController( @@ -168,16 +168,14 @@ public HashTagController( HashTagService hashTagService, TweetService tweetService, UserService userService, - ControllerHelper controllerHelper/*, - HashTagsOverviewHelper hashTagsOverviewHelper*/ + ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; this.twitterProperties = twitterProperties; this.hashTagService = hashTagService; this.tweetService = tweetService; this.userService = userService; - this.controllerHelper = controllerHelper; - //this.hashTagsOverviewHelper = hashTagsOverviewHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java index 3894e86b..c751b796 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/ImprintController.java @@ -6,11 +6,11 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.scheduled.mq.endpoint.StartTask; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStart; /** @@ -25,8 +25,8 @@ public String imprint(Model model) { String symbol = Symbols.IMPRINT.toString(); String title = "Imprint"; String subtitle = frontendProperties.getImprintSubtitle(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); - User user = startTask.createImprintUser(); + model = contentFactory.setupPage(model, title, subtitle, symbol); + User user = taskStart.createImprintUser(); model.addAttribute("user", user); log.info("-----------------------------------------"); return "imprint/imprint"; @@ -36,19 +36,19 @@ public String imprint(Model model) { private final FrontendProperties frontendProperties; - private final StartTask startTask; + private final TaskStart taskStart; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public ImprintController( FrontendProperties frontendProperties, - StartTask startTask, - ControllerHelper controllerHelper + TaskStart taskStart, + ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; - this.startTask = startTask; - this.controllerHelper = controllerHelper; + this.taskStart = taskStart; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java index 626f65ec..951a5c81 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/LoginController.java @@ -6,8 +6,8 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.frontend.content.Symbols; @Controller public class LoginController { @@ -15,22 +15,22 @@ public class LoginController { @RequestMapping("/login") public String login(Model model) { log.info("-----------------------------------------"); - String symbol = Symbols.LEAF.toString(); + String symbol = Symbols.LOGIN.toString(); String title = "Login"; String subtitle = "Enter your Credentials"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); log.info("-----------------------------------------"); return "login/login"; } private static final Logger log = LoggerFactory.getLogger(LoginController.class); - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public LoginController( - ControllerHelper controllerHelper + ContentFactory contentFactory ) { - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java index b2b65e06..2b9c97d3 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MediaController.java @@ -1,5 +1,7 @@ package org.woehlke.twitterwall.frontend.controller; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -7,13 +9,22 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.Media; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.MediaService; +import org.woehlke.twitterwall.oodm.service.TweetService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import javax.persistence.EntityNotFoundException; + +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -25,13 +36,13 @@ public class MediaController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String subtitle = "all"; String title = "Media"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -43,21 +54,56 @@ public String getAll( return "media/all"; } + @RequestMapping(path="/{id}") + public String getMediaById( + @PathVariable("id") Media media, + @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, + @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, + Model model) { + if(media == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/media/ "+media.getId(); + String title = "Media "+media.getUniqueId(); + String subtitle = "List of User and Tweets for one Media"; + String symbol = Symbols.MEDIA.toString(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + log.debug(msg+" try to: tweetService.findTweetsForMedia: "); + Page tweets = tweetService.findTweetsForMedia(media,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForMedia: "); + Page users = userService.getUsersForMedia(media,pageRequestUser); + model.addAttribute("users", users); + model.addAttribute("media", media); + return "media/id"; + } + } + + private static final Logger log = LoggerFactory.getLogger(MediaController.class); + private final MediaService mediaService; + private final UserService userService; + + private final TweetService tweetService; + private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public MediaController( MediaService mediaService, - FrontendProperties frontendProperties, - ControllerHelper controllerHelper + UserService userService, TweetService tweetService, FrontendProperties frontendProperties, + ContentFactory contentFactory ) { this.mediaService = mediaService; + this.userService = userService; + this.tweetService = tweetService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java index fa9a5003..1084440e 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/MentionController.java @@ -1,5 +1,7 @@ package org.woehlke.twitterwall.frontend.controller; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -7,13 +9,22 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.MentionService; +import org.woehlke.twitterwall.oodm.service.TweetService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import javax.persistence.EntityNotFoundException; + +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -24,13 +35,13 @@ public class MentionController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String subtitle = "all"; String title = "Mention"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), Sort.Direction.ASC, @@ -41,20 +52,55 @@ public String getAll( return "mention/all"; } + @RequestMapping(path="/{id}") + public String getMentionById( + @PathVariable("id") Mention mention, + @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, + @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, + Model model) { + if(mention == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/mention/ "+mention.getId(); + String title = "Mention "+mention.getUniqueId(); + String subtitle = "List of User and Tweets for one Mention"; + String symbol = Symbols.MENTION.toString(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + log.debug(msg+" try to: tweetService.findTweetsForMedia: "); + Page tweets = tweetService.findTweetsForMention(mention,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForMedia: "); + Page users = userService.getUsersForMention(mention,pageRequestUser); + model.addAttribute("users", users); + model.addAttribute("mention", mention); + return "mention/id"; + } + } + + private static final Logger log = LoggerFactory.getLogger(MentionController.class); + private final FrontendProperties frontendProperties; private final MentionService mentionService; - private final ControllerHelper controllerHelper; + private final UserService userService; + + private final TweetService tweetService; + + private final ContentFactory contentFactory; @Autowired public MentionController( FrontendProperties frontendProperties, MentionService mentionService, - ControllerHelper controllerHelper) { + UserService userService, TweetService tweetService, ContentFactory contentFactory) { this.frontendProperties = frontendProperties; this.mentionService = mentionService; - this.controllerHelper = controllerHelper; + this.userService = userService; + this.tweetService = tweetService; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java index 3034a692..fe08ff99 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskController.java @@ -12,17 +12,21 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TaskHistoryService; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask; +import org.woehlke.twitterwall.backend.mq.tasks.TaskStartFireAndForget; + +import javax.persistence.EntityNotFoundException; +import java.util.ArrayList; +import java.util.List; /** @@ -34,14 +38,14 @@ public class TaskController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page",defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page",defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String msg = "/task/all: "; String title = "Tasks"; String subtitle = "List aller Tasks"; - String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + String symbol = Symbols.TASKS_ALL.toString(); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), Sort.Direction.DESC, @@ -54,30 +58,34 @@ public String getAll( @RequestMapping(path="/{id}") public String getTaskById( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, @PathVariable("id") Task task, Model model) { - String msg = "/task/ "+task.getId(); - String title = "Task "+task.getUniqueId(); - String subtitle = "List of TasksHistory for Task"; - String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - Page taskHistoryList = taskHistoryService.findByTask(task,pageRequest); - model.addAttribute("task",task); - model.addAttribute("taskHistoryList",taskHistoryList); - return PATH+"/id"; + if(task == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/task/ "+task.getId(); + String title = "Task "+task.getUniqueId(); + String subtitle = "List of TasksHistory for Task"; + String symbol = Symbols.TASK.toString(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); + Page taskHistoryList = taskHistoryService.findByTask(task,pageRequest); + model.addAttribute("task",task); + model.addAttribute("taskHistoryList",taskHistoryList); + return PATH+"/id"; + } } @RequestMapping("/start/createTestData") public String createTTestData(Model model) { - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model,"Test Data Tweets", twitterProperties.getSearchQuery(), Symbols.GET_TEST_DATA.toString() ); if(frontendProperties.getContextTest()){ - Task taskTweets = mqAsyncStartTask.createTestDataForTweets(); - Task taskUsers = mqAsyncStartTask.createTestDataForUser(); + Task taskTweets = mqTaskStartFireAndForget.createTestDataForTweets(); + Task taskUsers = mqTaskStartFireAndForget.createTestDataForUser(); model.addAttribute("taskTweets", taskTweets); model.addAttribute("taskUsers",taskUsers); } else { @@ -89,13 +97,13 @@ public String createTTestData(Model model) { @RequestMapping("/start/user/onlist/renew") public String getOnListRenew( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); String msg = "getOnListRenew: "; log.info(msg+"START startTask.fetchUsersFromList"); - Task task = mqAsyncStartTask.fetchUsersFromList(); + Task task = mqTaskStartFireAndForget.fetchUsersFromList(); model.addAttribute("task",task); log.info(msg+"DONE startTask.fetchUsersFromList: "); log.info(msg+"START userService.findOnList(): "); @@ -104,18 +112,18 @@ public String getOnListRenew( model.addAttribute("users", usersOnList); String symbol = Symbols.LEAF.toString(); String title = "Renew List of Users On List"; - model = controllerHelper.setupPage(model, title, "Users", symbol); + model = contentFactory.setupPage(model, title, "Users", symbol); return PATH+"/start/renew"; } @RequestMapping(path="/start/tweets/search") public String fetchTweetsFromTwitterSearchStartTask(Model model) { String msg = "/start/tweets/search"; - String title = "Scheduled Task started: fetch Tweets from Search"; + String title = "Cronjob Task started: fetch Tweets from Search"; String subtitle = "/start/tweets/search"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.fetchTweetsFromSearch(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.fetchTweetsFromSearch(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -123,11 +131,11 @@ public String fetchTweetsFromTwitterSearchStartTask(Model model) { @RequestMapping(path="/start/tweets/update") public String updateTweetsStartTask(Model model) { String msg = "/start/tweets/update"; - String title = "Scheduled Task started: update Tweets"; + String title = "Cronjob Task started: update Tweets"; String subtitle = "/start/tweets/update"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.updateTweets(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.updateTweets(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -135,11 +143,11 @@ public String updateTweetsStartTask(Model model) { @RequestMapping(path="/start/users/update") public String updateUsersStartTask(Model model) { String msg = "/start/users/update"; - String title = "Scheduled Task started: update Users"; + String title = "Cronjob Task started: update Users"; String subtitle = "/start/users/update"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.updateUsers(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.updateUsers(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -147,11 +155,11 @@ public String updateUsersStartTask(Model model) { @RequestMapping(path="/start/users/list/fetch") public String fetchUsersFromDefinedUserListStartTask(Model model){ String msg = "/start/users/list/fetch"; - String title = "Scheduled Task started: fetch Users from List"; + String title = "Cronjob Task started: fetch Users from List"; String subtitle = "/start/users/list/fetch"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.fetchUsersFromList(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.fetchUsersFromList(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -159,11 +167,11 @@ public String fetchUsersFromDefinedUserListStartTask(Model model){ @RequestMapping(path="/start/users/follower/fetch") public String fetchFollowerStartTask(Model model){ String msg = "/start/users/follower/fetch"; - String title = "Scheduled Task started: fetch Follower"; + String title = "Cronjob Task started: fetch Follower"; String subtitle = "/start/users/follower/fetch"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.fetchFollower(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.fetchFollower(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -171,11 +179,11 @@ public String fetchFollowerStartTask(Model model){ @RequestMapping(path="/start/users/friends/fetch") public String fetchFriendsStartTask(Model model){ String msg = "/start/users/friends/fetch"; - String title = "Scheduled Task started: fetch Friends"; + String title = "Cronjob Task started: fetch Friends"; String subtitle = "/start/users/friends/fetch"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.fetchFriends(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.fetchFriends(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -183,11 +191,11 @@ public String fetchFriendsStartTask(Model model){ @RequestMapping(path="/start/users/mentions/update") public String updateUserProfilesFromMentionsStartTask(Model model){ String msg = "/start/users/mentions/update"; - String title = "Scheduled Task started: update Users from Mentions"; + String title = "Cronjob Task started: update Users from Mentions"; String subtitle = "/start/users/mentions/update"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.updateUsersFromMentions(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.updateUsersFromMentions(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -195,11 +203,11 @@ public String updateUserProfilesFromMentionsStartTask(Model model){ @RequestMapping(path="/start/tweets/timeline/home") public String getHomeTimeline(Model model) { String msg = "/start/tweets/timeline/home"; - String title = "Scheduled Task started: getHomeTimeline"; + String title = "Cronjob Task started: getHomeTimeline"; String subtitle = "/start/tweets/timeline/home"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getHomeTimeline(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.getHomeTimeline(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -207,11 +215,11 @@ public String getHomeTimeline(Model model) { @RequestMapping(path="/start/tweets/timeline/user") public String getUserTimeline(Model model) { String msg = "/start/tweets/timeline/user"; - String title = "Scheduled Task started: getUserTimeline"; + String title = "Cronjob Task started: getUserTimeline"; String subtitle = "/start/tweets/timeline/user"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getUserTimeline(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.getUserTimeline(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -219,11 +227,11 @@ public String getUserTimeline(Model model) { @RequestMapping(path="/start/tweets/mentions") public String getMentions(Model model) { String msg = "/start/tweets/mentions"; - String title = "Scheduled Task started: getMentions"; + String title = "Cronjob Task started: getMentions"; String subtitle = "/start/tweets/mentions"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getMentions(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.getMentions(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -231,11 +239,11 @@ public String getMentions(Model model) { @RequestMapping(path="/start/tweets/favorites") public String getFavorites(Model model) { String msg = "/start/tweets/favorites"; - String title = "Scheduled Task started: getFavorites"; + String title = "Cronjob Task started: getFavorites"; String subtitle = "/start/tweets/favorites"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getFavorites(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.getFavorites(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -243,11 +251,11 @@ public String getFavorites(Model model) { @RequestMapping(path="/start/tweets/myretweets") public String getRetweetsOfMe(Model model) { String msg = "/start/tweets/myretweets"; - String title = "Scheduled Task started: getRetweetsOfMe"; + String title = "Cronjob Task started: getRetweetsOfMe"; String subtitle = "/start/tweets/myretweets"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getRetweetsOfMe(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.getRetweetsOfMe(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -255,11 +263,27 @@ public String getRetweetsOfMe(Model model) { @RequestMapping(path="/start/userlists") public String getLists(Model model) { String msg = "/start/userlists"; - String title = "Scheduled Task started: getLists"; + String title = "Cronjob Task started: getLists"; String subtitle = "/start/userlists"; String symbol = Symbols.TASK.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); - Task task = mqAsyncStartTask.getLists(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + List listOfTasks = new ArrayList<>(); + Task task1 = mqTaskStartFireAndForget.getLists(); + listOfTasks.add(task1); + Task task2 = mqTaskStartFireAndForget.fetchUserlistOwners(); + listOfTasks.add(task2); + model.addAttribute("listOfTasks",listOfTasks); + return PATH+"/start/tasksStarted"; + } + + @RequestMapping(path="/start/url/update") + public String startUpdateUrls(Model model) { + String msg = "/start/url/update"; + String title = "Cronjob Task started: UpdateUrls"; + String subtitle = "/start/url/update"; + String symbol = Symbols.TASK.toString(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Task task = mqTaskStartFireAndForget.startUpdateUrls(); model.addAttribute("task",task); return PATH+"/start/taskStarted"; } @@ -277,9 +301,9 @@ public String getLists(Model model) { private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; - private final AsyncStartTask mqAsyncStartTask; + private final TaskStartFireAndForget mqTaskStartFireAndForget; private final TwitterProperties twitterProperties; @@ -288,15 +312,15 @@ public TaskController( UserService userService, TaskService taskService, TaskHistoryService taskHistoryService, FrontendProperties frontendProperties, - ControllerHelper controllerHelper, - AsyncStartTask mqAsyncStartTask, + ContentFactory contentFactory, + TaskStartFireAndForget mqTaskStartFireAndForget, TwitterProperties twitterProperties) { this.userService = userService; this.taskService = taskService; this.taskHistoryService = taskHistoryService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; - this.mqAsyncStartTask = mqAsyncStartTask; + this.contentFactory = contentFactory; + this.mqTaskStartFireAndForget = mqTaskStartFireAndForget; this.twitterProperties = twitterProperties; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java index def07262..6a38cc65 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryController.java @@ -9,10 +9,10 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.service.TaskHistoryService; /** @@ -25,13 +25,13 @@ public class TaskHistoryController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String subtitle = "all"; String title = "TaskHistory"; - String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + String symbol = Symbols.TASK_HISTORY.toString(); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -47,17 +47,17 @@ public String getAll( private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; @Autowired public TaskHistoryController( TaskHistoryService taskHistoryService, FrontendProperties frontendProperties, - ControllerHelper controllerHelper + ContentFactory contentFactory ) { this.taskHistoryService = taskHistoryService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java index d1d90b4e..8c1f693c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolController.java @@ -1,5 +1,7 @@ package org.woehlke.twitterwall.frontend.controller; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -7,13 +9,22 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TickerSymbolService; +import org.woehlke.twitterwall.oodm.service.TweetService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import javax.persistence.EntityNotFoundException; + +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -24,14 +35,14 @@ public class TickerSymbolController { @RequestMapping(path="/all") public String getAll( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String subtitle = "all"; String title = "TickerSymbol"; String sortByColumn = "url"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -43,21 +54,56 @@ public String getAll( return "tickersymbol/all"; } + @RequestMapping(path="/{id}") + public String getTickerSymbolById( + @PathVariable("id") TickerSymbol tickerSymbol, + @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, + @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, + Model model) { + if(tickerSymbol == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/tickersymbol/ "+tickerSymbol.getId(); + String title = "TickerSymbol "+tickerSymbol.getUniqueId(); + String subtitle = "List of User and Tweets for one TickerSymbol"; + String symbol = Symbols.TICKER_SYMBOL.toString(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + log.debug(msg+" try to: tweetService.findTweetsForMedia: "); + Page tweets = tweetService.findTweetsForTickerSymbol(tickerSymbol,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForMedia: "); + Page users = userService.getUsersForTickerSymbol(tickerSymbol,pageRequestUser); + model.addAttribute("users", users); + model.addAttribute("tickerSymbol", tickerSymbol); + return "tickersymbol/id"; + } + } + + private static final Logger log = LoggerFactory.getLogger(TickerSymbolController.class); + private final FrontendProperties frontendProperties; private final TickerSymbolService tickerSymbolService; - private final ControllerHelper controllerHelper; + private final UserService userService; + + private final TweetService tweetService; + + private final ContentFactory contentFactory; @Autowired public TickerSymbolController( FrontendProperties frontendProperties, TickerSymbolService tickerSymbolService, - ControllerHelper controllerHelper + UserService userService, TweetService tweetService, ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; this.tickerSymbolService = tickerSymbolService; - this.controllerHelper = controllerHelper; + this.userService = userService; + this.tweetService = tweetService; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java index 2d7b5501..a301fd4f 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/TweetController.java @@ -12,13 +12,15 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TweetService; +import javax.persistence.EntityNotFoundException; + /** * Created by tw on 10.06.17. @@ -29,15 +31,15 @@ public class TweetController { @RequestMapping("/all") public String getLatestTweets( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, twitterProperties.getSearchQuery(), - Symbols.HOME.toString() + Symbols.STARTPAGE.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -55,28 +57,32 @@ public String getLatestTweets( public String getTweetById( @PathVariable("id") Tweet tweet, Model model ) { - String title = "Tweet"; - model = controllerHelper.setupPage( - model, - title, - twitterProperties.getSearchQuery(), - Symbols.HOME.toString() - ); - model.addAttribute("tweet", tweet); - return "tweet/id"; + if(tweet == null){ + throw new EntityNotFoundException(); + } else { + String title = "Tweet"; + model = contentFactory.setupPage( + model, + title, + twitterProperties.getSearchQuery(), + Symbols.HOME.toString() + ); + model.addAttribute("tweet", tweet); + return "tweet/id"; + } } @RequestMapping("/timeline/home") public String getHomeTimeline( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "Home Timneline", - Symbols.HOME_TIMELINE_TWEETS.toString() + Symbols.TWEETS_HOME_TIMELINE.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -92,15 +98,15 @@ public String getHomeTimeline( @RequestMapping("/timeline/user") public String getUserTimeline( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "User Timeline", - Symbols.USER_TIMELINE_TWEETS.toString() + Symbols.TWEETS_USER_TIMELINE.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -116,15 +122,15 @@ public String getUserTimeline( @RequestMapping("/mentions") public String getMentions( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "Mentions", - Symbols.MENTIONS_TWEETS.toString() + Symbols.TWEETS_MENTIONS.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -140,15 +146,15 @@ public String getMentions( @RequestMapping("/favorites") public String getFavorites( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "Favorites", - Symbols.FAVORITES_TWEETS.toString() + Symbols.TWEETS_FAVORITES.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -164,15 +170,15 @@ public String getFavorites( @RequestMapping("/retweets") public String getRetweetsOfMe( - @RequestParam(name= "page", defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ String title = "Tweets"; - model = controllerHelper.setupPage( + model = contentFactory.setupPage( model, title, "Retweets Of Me", - Symbols.RETWEETS_OF_ME_FAVORITES_TWEETS.toString() + Symbols.TWEETS_RETWEETS_OF_ME.toString() ); String sortByColumn = "createdAt"; Pageable pageRequest = new PageRequest( @@ -190,7 +196,7 @@ public String getRetweetsOfMe( private final TweetService tweetService; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private final FrontendProperties frontendProperties; @@ -199,12 +205,12 @@ public String getRetweetsOfMe( @Autowired public TweetController( TweetService tweetService, - ControllerHelper controllerHelper, + ContentFactory contentFactory, FrontendProperties frontendProperties, TwitterProperties twitterProperties ) { this.tweetService = tweetService; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; this.frontendProperties = frontendProperties; this.twitterProperties = twitterProperties; } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java index 9f1cdbcc..dd2c052a 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UrlController.java @@ -1,5 +1,7 @@ package org.woehlke.twitterwall.frontend.controller; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -7,13 +9,22 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UrlService; +import org.woehlke.twitterwall.oodm.service.UserService; + +import javax.persistence.EntityNotFoundException; + +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 16.07.17. @@ -24,12 +35,12 @@ public class UrlController { @RequestMapping(path="/all") - public String getAll(@RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, Model model){ + public String getAll(@RequestParam(name= "page" ,defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model){ String subtitle = "all"; String title = "Url"; String sortByColumn = "url"; String symbol = Symbols.DATABASE.toString(); - model = controllerHelper.setupPage(model,title,subtitle,symbol); + model = contentFactory.setupPage(model,title,subtitle,symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -41,21 +52,56 @@ public String getAll(@RequestParam(name= "page" ,defaultValue=""+ControllerHelpe return "url/all"; } + @RequestMapping(path="/{id}") + public String getUrlById( + @PathVariable("id") Url url, + @RequestParam(name= "pageTweet" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageTweet, + @RequestParam(name= "pageUser" ,defaultValue=""+ FIRST_PAGE_NUMBER) int pageUser, + Model model) { + if(url == null){ + throw new EntityNotFoundException(); + } else { + String msg = "/url/ "+url.getId(); + String title = "Url "+url.getUniqueId(); + String subtitle = "List of User and Tweets for one Url"; + String symbol = Symbols.MENTION.toString(); + model = contentFactory.setupPage(model,title,subtitle,symbol); + Pageable pageRequestTweet = new PageRequest(pageTweet, frontendProperties.getPageSize()); + Pageable pageRequestUser = new PageRequest(pageUser, frontendProperties.getPageSize()); + log.debug(msg+" try to: tweetService.findTweetsForMedia: "); + Page tweets = tweetService.findTweetsForUrl(url,pageRequestTweet); + model.addAttribute("latestTweets", tweets); + log.debug(msg+" try to: userService.getUsersForMedia: "); + Page users = userService.getUsersForUrl(url,pageRequestUser); + model.addAttribute("users", users); + model.addAttribute("url", url); + return "url/id"; + } + } + + private static final Logger log = LoggerFactory.getLogger(UrlController.class); + private final FrontendProperties frontendProperties; private final UrlService urlService; - private final ControllerHelper controllerHelper; + private final UserService userService; + + private final TweetService tweetService; + + private final ContentFactory contentFactory; @Autowired public UrlController( FrontendProperties frontendProperties, UrlService urlService, - ControllerHelper controllerHelper + UserService userService, TweetService tweetService, ContentFactory contentFactory ) { this.frontendProperties = frontendProperties; this.urlService = urlService; - this.controllerHelper = controllerHelper; + this.userService = userService; + this.tweetService = tweetService; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java index 939fe0f1..fe29cb25 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserController.java @@ -12,14 +12,16 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; +import javax.persistence.EntityNotFoundException; + /** * Created by tw on 12.06.17. */ @@ -31,7 +33,7 @@ public class UserController { @RequestMapping("/all") public String getAll( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -43,49 +45,53 @@ public String getAll( model.addAttribute("users", userService.getAll(pageRequest)); String symbol = Symbols.USER_ALL.toString(); String subtitle = "All Users"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/all"; } @RequestMapping("/{id}") public String getUserForId( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, @PathVariable("id") User user, Model model ) { - Pageable pageRequest = new PageRequest( - page, - frontendProperties.getPageSize(), - Sort.Direction.DESC, - "createdAt" - ); - Page latestTweets = tweetService.findTweetsForUser(user,pageRequest); - String symbol = Symbols.PROFILE.toString(); - String title = "@" + user.getScreenName(); - String subtitle = user.getName(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); - model.addAttribute("user", user); - model.addAttribute("latestTweets",latestTweets); - return "user/id"; + if(user == null){ + throw new EntityNotFoundException(); + } else { + Pageable pageRequest = new PageRequest( + page, + frontendProperties.getPageSize(), + Sort.Direction.DESC, + "createdAt" + ); + Page latestTweets = tweetService.findTweetsForUser(user,pageRequest); + String symbol = Symbols.USER_PROFILE.toString(); + String title = "@" + user.getScreenName(); + String subtitle = user.getName(); + model = contentFactory.setupPage(model, title, subtitle, symbol); + model.addAttribute("user", user); + model.addAttribute("latestTweets",latestTweets); + return "user/id"; + } } @RequestMapping("/screenName/{screenName}") public String getUserForScreeName( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, @PathVariable String screenName, Model model ) { if (User.isValidScreenName(screenName)) { User user = userService.findByScreenName(screenName); if(user==null){ - String symbol = Symbols.PROFILE.toString(); + String symbol = Symbols.USER_PROFILE.toString(); String title = "404"; String subtitle = "404: no user found for @"+screenName; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/id"; } else { - String symbol = Symbols.PROFILE.toString(); + String symbol = Symbols.USER_PROFILE.toString(); String title = "@" + user.getScreenName(); String subtitle = user.getName(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); Pageable pageRequest = new PageRequest( page, frontendProperties.getPageSize(), @@ -99,17 +105,17 @@ public String getUserForScreeName( return "user/id"; } } else { - String symbol = Symbols.PROFILE.toString(); + String symbol = Symbols.USER_PROFILE.toString(); String title = "400"; String subtitle = "400: screenName not valid: for /user/screenName/"+screenName; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/id"; } } @RequestMapping("/list/tweets") public String getTweetingUsers( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -120,15 +126,15 @@ public String getTweetingUsers( ); Page tweetingUsers = userService.getTweetingUsers(pageRequest); model.addAttribute("users", tweetingUsers); - String symbol = Symbols.USER_TWEETS.toString(); + String symbol = Symbols.USER_TWEETING.toString(); String subtitle = "With one or more Tweets"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/allWithTweets"; } @RequestMapping("/list/notyetfriends") public String getNotYetFriendUsers( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -141,13 +147,13 @@ public String getNotYetFriendUsers( model.addAttribute("users", users); String symbol = Symbols.USER_NOT_YET_FRIENDS.toString(); String subtitle = "Not Yet Friends"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/friendsNotYet"; } @RequestMapping("/list/friends") public String getFriendUsers( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -160,13 +166,13 @@ public String getFriendUsers( model.addAttribute("users", users); String symbol = Symbols.USER_FRIENDS.toString(); String subtitle = "Friends"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/friends"; } @RequestMapping("/list/follower") public String getFollower( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -179,13 +185,13 @@ public String getFollower( model.addAttribute("users", users); String symbol = Symbols.USER_FOLLOWER.toString(); String subtitle = "Follower"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/follower"; } @RequestMapping("/list/notyetfollower") public String getNotYetFollower( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -198,13 +204,13 @@ public String getNotYetFollower( model.addAttribute("users", users); String symbol = Symbols.USER_FOLLOWER.toString(); String subtitle = "Follower"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/followerNotYet"; } @RequestMapping("/list/onlist") public String getOnList( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -217,13 +223,13 @@ public String getOnList( model.addAttribute("users", usersOnList); String symbol = Symbols.LEAF.toString(); String subtitle = "On List"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/onlist"; } @RequestMapping("/list/notyetonlist") public String getNotYetOnList( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -235,13 +241,13 @@ public String getNotYetOnList( model.addAttribute("users", userService.getNotYetOnList(pageRequest)); String symbol = Symbols.USER_NOT_YET_ON_LIST.toString(); String subtitle = "Not Yet On List"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/onlistNotYet"; } @RequestMapping("/list/usersWhoAreFollowersButNotFriends") public String findUsersWhoAreFollowersButNotFriends( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ Pageable pageRequest = new PageRequest( @@ -253,13 +259,13 @@ public String findUsersWhoAreFollowersButNotFriends( model.addAttribute("users", userService.findUsersWhoAreFollowersButNotFriends(pageRequest)); String symbol = Symbols.USER_CONNECTIONS.toString(); String subtitle = "Users who are Followers but not Friends"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/usersWhoAreFollowersButNotFriends"; } @RequestMapping("/list/usersWhoAreFollowersAndFriends") public String findUsersWhoAreFollowersAndFriends( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ Pageable pageRequest = new PageRequest( @@ -271,13 +277,13 @@ public String findUsersWhoAreFollowersAndFriends( model.addAttribute("users", userService.findUsersWhoAreFollowersAndFriends(pageRequest)); String symbol = Symbols.USER_CONNECTIONS.toString(); String subtitle = "Users who are Followers AND Friends"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/usersWhoAreFollowersAndFriends"; } @RequestMapping("/list/usersWhoAreFriendsButNotFollowers") public String findUsersWhoAreFriendsButNotFollowers( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ){ Pageable pageRequest = new PageRequest( @@ -289,7 +295,7 @@ public String findUsersWhoAreFriendsButNotFollowers( model.addAttribute("users", userService.findUsersWhoAreFriendsButNotFollowers(pageRequest)); String symbol = Symbols.USER_CONNECTIONS.toString(); String subtitle = "Users who are Friends but not Followers"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "user/list/usersWhoAreFriendsButNotFollowers"; } @@ -301,7 +307,7 @@ public String findUsersWhoAreFriendsButNotFollowers( private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private static String title = "Users"; @@ -310,11 +316,11 @@ public UserController( UserService userService, TweetService tweetService, FrontendProperties frontendProperties, - ControllerHelper controllerHelper + ContentFactory contentFactory ) { this.userService = userService; this.tweetService = tweetService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java index 18396890..3ae0fd1c 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/controller/UserListController.java @@ -13,11 +13,13 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.controller.common.Symbols; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.service.UserListService; +import org.woehlke.twitterwall.oodm.service.UserService; @Controller @RequestMapping("/userlist") @@ -27,7 +29,7 @@ public class UserListController { @RequestMapping("/all") public String getAll( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, Model model ) { Pageable pageRequest = new PageRequest( @@ -40,13 +42,13 @@ public String getAll( model.addAttribute("myPageContent", userlists); String symbol = Symbols.USER_ALL.toString(); String subtitle = "All Users"; - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); return "userlist/all"; } @RequestMapping("/{id}") public String getUserListForId( - @RequestParam(name= "page", defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, @PathVariable("id") UserList userList, Model model ) { Pageable pageRequest = new PageRequest( @@ -55,28 +57,73 @@ public String getUserListForId( Sort.Direction.DESC, "createdAt" ); - String symbol = Symbols.PROFILE.toString(); + String symbol = Symbols.USER_PROFILE.toString(); String title = userList.getFullName(); String subtitle = userList.getDescription(); - model = controllerHelper.setupPage(model, title, subtitle, symbol); + model = contentFactory.setupPage(model, title, subtitle, symbol); + Page userPage = userService.findUsersForUserList(userList,pageRequest); + model.addAttribute("users", userPage); model.addAttribute("userList", userList); return "userlist/id"; } + //TODO: jdscdgsv + @RequestMapping("/list/userList2Subcriber") + public String userList2Subcriber( + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, + Model model + ) { + Pageable pageRequest = new PageRequest( + page, + frontendProperties.getPageSize(), + Sort.Direction.ASC, + "slug" + ); + Page userlists = userListService.getAll(pageRequest); + model.addAttribute("myPageContent", userlists); + String symbol = Symbols.USER_ALL.toString(); + String subtitle = "All Users"; + model = contentFactory.setupPage(model, title, subtitle, symbol); + return "userlist/all"; + } + + //TODO: jdscdgsv + @RequestMapping("/list/userList2Members") + public String userList2Members( + @RequestParam(name= "page", defaultValue=""+ ContentFactory.FIRST_PAGE_NUMBER) int page, + Model model + ) { + Pageable pageRequest = new PageRequest( + page, + frontendProperties.getPageSize(), + Sort.Direction.ASC, + "slug" + ); + Page userlists = userListService.getAll(pageRequest); + model.addAttribute("myPageContent", userlists); + String symbol = Symbols.USER_ALL.toString(); + String subtitle = "All Users"; + model = contentFactory.setupPage(model, title, subtitle, symbol); + return "userlist/all"; + } + private static final Logger log = LoggerFactory.getLogger(UserController.class); private final UserListService userListService; + private final UserService userService; + private final FrontendProperties frontendProperties; - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private static String title = "User List"; @Autowired - public UserListController(UserListService userListService, FrontendProperties frontendProperties, ControllerHelper controllerHelper) { + public UserListController(UserListService userListService, UserService userService, FrontendProperties frontendProperties, ContentFactory contentFactory) { this.userListService = userListService; + this.userService = userService; this.frontendProperties = frontendProperties; - this.controllerHelper = controllerHelper; + this.contentFactory = contentFactory; } } diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java b/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java deleted file mode 100644 index ef9bb960..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/Symbols.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.woehlke.twitterwall.frontend.controller.common; - -/** - * Created by tw on 01.07.17. - */ -public enum Symbols { - - HASHTAG(""), - IMPRINT(""), - PROFILE(""), - HOME(""), - HOME_TIMELINE_TWEETS(""), - USER_TIMELINE_TWEETS(""), - MENTIONS_TWEETS(""), - FAVORITES_TWEETS(""), - RETWEETS_OF_ME_FAVORITES_TWEETS(""), - USER_ALL(""), - USER_TWEETS(""), - USER_NOT_YET_FRIENDS(""), - GET_TEST_DATA("\n"), - EXCEPTION(""), - LEAF(""), - DATABASE(""), - USER_NOT_YET_ON_LIST(""), - USER_CONNECTIONS(""), - USER_FRIENDS(""), - USER_FOLLOWER(""), - TASK(""), - TASK_HISTORY(""); - - Symbols(String html){ - this.html=html; - } - - private String html; - - @Override - public String toString(){ - return html; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java b/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java similarity index 73% rename from src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java rename to src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java index bb197a5b..e8d229cd 100644 --- a/src/main/java/org/woehlke/twitterwall/frontend/controller/common/GlobalExceptionHandler.java +++ b/src/main/java/org/woehlke/twitterwall/frontend/errorhandling/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.frontend.controller.common; +package org.woehlke.twitterwall.frontend.errorhandling; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,7 +9,10 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.servlet.ModelAndView; +import org.woehlke.twitterwall.frontend.content.Symbols; +import org.woehlke.twitterwall.frontend.content.ContentFactory; +import javax.persistence.EntityNotFoundException; import javax.servlet.http.HttpServletRequest; /** @@ -18,6 +21,13 @@ @ControllerAdvice public class GlobalExceptionHandler { + @ExceptionHandler(EntityNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public ModelAndView notFound(HttpServletRequest request, Exception ex) { + log.warn("EntityNotFoundException occured :: URL=" + request.getRequestURL()); + log.warn(ex.getMessage()); + return getTemplate(request, ex); + } @ExceptionHandler(Throwable.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @@ -27,7 +37,7 @@ public ModelAndView exception(final HttpServletRequest request, final Throwable String symbol = Symbols.EXCEPTION.toString(); String title = "Exception"; String subtitle = throwable.getMessage(); - mav = controllerHelper.setupPage(mav, title, subtitle, symbol); + mav = contentFactory.setupPage(mav, title, subtitle, symbol); mav.addObject("exception", throwable); mav.addObject("url", request.getRequestURL()); mav.setViewName("exceptionhandler/persistentObjectNotFound"); @@ -49,7 +59,7 @@ private ModelAndView getTemplate(HttpServletRequest request, Exception ex) { String symbol = Symbols.EXCEPTION.toString(); String title = "Exception"; String subtitle = ex.getMessage(); - mav = controllerHelper.setupPage(mav, title, subtitle, symbol); + mav = contentFactory.setupPage(mav, title, subtitle, symbol); mav.addObject("exception", ex); mav.addObject("url", request.getRequestURL()); mav.setViewName("exceptionhandler/persistentObjectNotFound"); @@ -57,11 +67,11 @@ private ModelAndView getTemplate(HttpServletRequest request, Exception ex) { } @Autowired - public GlobalExceptionHandler(ControllerHelper controllerHelper) { - this.controllerHelper = controllerHelper; + public GlobalExceptionHandler(ContentFactory contentFactory) { + this.contentFactory = contentFactory; } - private final ControllerHelper controllerHelper; + private final ContentFactory contentFactory; private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); diff --git a/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java b/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java deleted file mode 100644 index daf979a8..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/model/TaskResourceModel.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.woehlke.twitterwall.frontend.model; - -import org.springframework.data.domain.Page; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; - -import java.io.Serializable; - -/** - * Created by tw on 12.07.17. - */ -public class TaskResourceModel implements Serializable { - - private Task oneTask; - private Page taskHistoryList; - - public TaskResourceModel(Task oneTask, Page taskHistoryList) { - this.oneTask = oneTask; - this.taskHistoryList = taskHistoryList; - } - - public TaskResourceModel() { - } - - public Task getOneTask() { - return oneTask; - } - - public void setOneTask(Task oneTask) { - this.oneTask = oneTask; - } - - public Page getTaskHistoryList() { - return taskHistoryList; - } - - public void setTaskHistoryList(Page taskHistoryList) { - this.taskHistoryList = taskHistoryList; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof TaskResourceModel)) return false; - - TaskResourceModel that = (TaskResourceModel) o; - - if (oneTask != null ? !oneTask.equals(that.oneTask) : that.oneTask != null) return false; - return taskHistoryList != null ? taskHistoryList.equals(that.taskHistoryList) : that.taskHistoryList == null; - } - - @Override - public int hashCode() { - int result = oneTask != null ? oneTask.hashCode() : 0; - result = 31 * result + (taskHistoryList != null ? taskHistoryList.hashCode() : 0); - return result; - } -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/CountedEntitiesResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/CountedEntitiesResource.java deleted file mode 100644 index 08d8619a..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/CountedEntitiesResource.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/common") -public class CountedEntitiesResource { - - @RequestMapping(path="/count",method= RequestMethod.GET) - public @ResponseBody - CountedEntities countAll(){ - return this.countedEntitiesService.countAll(); - } - - - private final CountedEntitiesService countedEntitiesService; - - @Autowired - public CountedEntitiesResource( - CountedEntitiesService countedEntitiesService - ) { - this.countedEntitiesService = countedEntitiesService; - } -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java deleted file mode 100644 index c68a7936..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/HashTagResource.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.service.HashTagService; - - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/hashtag") -public class HashTagResource { - - @RequestMapping(path="/count",method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.hashTagService.count(); - } - - @RequestMapping(path="/all",params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.hashTagService.getAll(pageRequest); - } - - @RequestMapping(path="/overview", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getOverview( - @RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.hashTagService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - HashTag findById( - @PathVariable("id") HashTag hashTag - ) { - return hashTag; - } - - private final HashTagService hashTagService; - - private final FrontendProperties frontendProperties; - - @Autowired - public HashTagResource( - HashTagService hashTagService, - FrontendProperties frontendProperties - ) { - this.hashTagService = hashTagService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/MediaResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/MediaResource.java deleted file mode 100644 index c3cd5343..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/MediaResource.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Media; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.service.MediaService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/media") -public class MediaResource { - - @RequestMapping(path="/count", method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.mediaService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.mediaService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody Media findById( - @PathVariable("id") Media media - ) { - return media; - } - - private final MediaService mediaService; - - private final FrontendProperties frontendProperties; - - @Autowired - public MediaResource( - MediaService mediaService, - FrontendProperties frontendProperties - ) { - this.mediaService = mediaService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/MentionResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/MentionResource.java deleted file mode 100644 index c879c189..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/MentionResource.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.service.MentionService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/mention") -public class MentionResource { - - @RequestMapping(path="/count", method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.mentionService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.mentionService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody Mention findById( - @PathVariable("id") Mention mention - ) { - return mention; - } - - private final MentionService mentionService; - - private final FrontendProperties frontendProperties; - - @Autowired - public MentionResource( - MentionService mentionService, - FrontendProperties frontendProperties - ) { - this.mentionService = mentionService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskHistoryResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskHistoryResource.java deleted file mode 100644 index 20363a8b..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskHistoryResource.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.service.TaskHistoryService; - -/** - * Created by tw on 12.07.17. - */ -@Controller -@RequestMapping("/rest/taskhistory") -public class TaskHistoryResource { - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody Page countedEntities( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - Page allTasks = taskHistoryService.getAll(pageRequest); - return allTasks; - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody TaskHistory findById( - @PathVariable("id") TaskHistory taskHistory - ) { - return taskHistory; - } - - private final TaskHistoryService taskHistoryService; - - private final FrontendProperties frontendProperties; - - @Autowired - public TaskHistoryResource( - TaskHistoryService taskHistoryService, - FrontendProperties frontendProperties - ) { - this.taskHistoryService = taskHistoryService; - this.frontendProperties = frontendProperties; - } -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskResource.java deleted file mode 100644 index 4ec6fb6b..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/TaskResource.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.frontend.model.TaskResourceModel; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.service.TaskHistoryService; -import org.woehlke.twitterwall.oodm.service.TaskService; - -/** - * Created by tw on 12.07.17. - */ -@Controller -@RequestMapping("/rest/task") -public class TaskResource { - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - Page allTasks = taskService.getAll(pageRequest); - return allTasks; - } - - @RequestMapping(path="/{id}", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody TaskResourceModel findByTaskId( - @RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page, - @PathVariable long id - ) { - Task oneTask = taskService.findById(id); - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - Page taskHistoryList = taskHistoryService.findByTask(oneTask,pageRequest); - TaskResourceModel taskResourceModel = new TaskResourceModel(oneTask,taskHistoryList); - return taskResourceModel; - } - - @Autowired - public TaskResource(TaskService taskService, TaskHistoryService taskHistoryService, FrontendProperties frontendProperties) { - this.taskService = taskService; - this.taskHistoryService = taskHistoryService; - this.frontendProperties = frontendProperties; - } - - private final TaskService taskService; - - private final TaskHistoryService taskHistoryService; - - private final FrontendProperties frontendProperties; -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/TickerSymbolResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/TickerSymbolResource.java deleted file mode 100644 index 5a1560ef..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/TickerSymbolResource.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; -import org.woehlke.twitterwall.oodm.service.TickerSymbolService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/tickersymbol") -public class TickerSymbolResource { - - @RequestMapping(path="/count", method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.tickerSymbolService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll(@RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.tickerSymbolService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - TickerSymbol findById( - @PathVariable("id") TickerSymbol tickerSymbol - ) { - return tickerSymbol; - } - - private final TickerSymbolService tickerSymbolService; - - private final FrontendProperties frontendProperties; - - @Autowired - public TickerSymbolResource(TickerSymbolService tickerSymbolService, FrontendProperties frontendProperties) { - this.tickerSymbolService = tickerSymbolService; - this.frontendProperties = frontendProperties; - } -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/TweetResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/TweetResource.java deleted file mode 100644 index 0d3c33f7..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/TweetResource.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.service.TweetService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/tweet") -public class TweetResource { - - @RequestMapping(path="/count",method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.tweetService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.tweetService.getAll(pageRequest); - } - - @RequestMapping(path="/latest", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getLatestTweets( - @RequestParam(name= "page" ,defaultValue=""+ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest( - page, - frontendProperties.getPageSize(), - Sort.Direction.DESC, - "createdAt" - ); - return this.tweetService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - Tweet findById( - @PathVariable("id") Tweet tweet - ) { - return tweet; - } - - private final TweetService tweetService; - - private final FrontendProperties frontendProperties; - - @Autowired - public TweetResource( - TweetService tweetService, - FrontendProperties frontendProperties - ) { - this.tweetService = tweetService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/UrlResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/UrlResource.java deleted file mode 100644 index 267be250..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/UrlResource.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.oodm.service.UrlService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/url") -public class UrlResource { - - @RequestMapping(path="/count", method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.urlService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.urlService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - Url findById( - @PathVariable("id") Url url - ) { - return url; - } - - private final UrlService urlService; - - private final FrontendProperties frontendProperties; - - @Autowired - public UrlResource( - UrlService urlService, - FrontendProperties frontendProperties - ) { - this.urlService = urlService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/frontend/rest/UserResource.java b/src/main/java/org/woehlke/twitterwall/frontend/rest/UserResource.java deleted file mode 100644 index 199be814..00000000 --- a/src/main/java/org/woehlke/twitterwall/frontend/rest/UserResource.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.woehlke.twitterwall.frontend.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.frontend.controller.common.ControllerHelper; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.service.UserService; - -/** - * Created by tw on 03.07.17. - */ -@Controller -@RequestMapping("/rest/user") -public class UserResource { - - @RequestMapping(path="/count",method= RequestMethod.GET) - public @ResponseBody - long getCount() { - return this.userService.count(); - } - - @RequestMapping(path="/all", params = { "page" }, method= RequestMethod.GET) - public @ResponseBody - Page getAll( - @RequestParam(name= "page" ,defaultValue=""+ ControllerHelper.FIRST_PAGE_NUMBER) int page - ) { - Pageable pageRequest = new PageRequest(page, frontendProperties.getPageSize()); - return this.userService.getAll(pageRequest); - } - - @RequestMapping(path="/{id}", method= RequestMethod.GET) - public @ResponseBody - User findById( - @PathVariable("id") User user - ) { - return user; - } - - private final UserService userService; - - private final FrontendProperties frontendProperties; - - @Autowired - public UserResource( - UserService userService, - FrontendProperties frontendProperties - ) { - this.userService = userService; - this.frontendProperties = frontendProperties; - } - -} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithApiCaching.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithApiCaching.java deleted file mode 100644 index 9db2fb43..00000000 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithApiCaching.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.oodm.entities.common; - -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; - -public interface DomainObjectWithApiCaching { - - Boolean isCached(TaskType taskType, long timeToLive); -} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskInfo.java b/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskInfo.java deleted file mode 100644 index 61993e8b..00000000 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskInfo.java +++ /dev/null @@ -1,341 +0,0 @@ -package org.woehlke.twitterwall.oodm.entities.parts; - -import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.Task; - -import javax.persistence.Column; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import javax.validation.constraints.NotNull; -import java.io.Serializable; - -/** - * Created by tw on 10.07.17. - */ -@Validated -@Embeddable -public class TaskInfo implements Serializable { - - @NotNull - @Column(nullable = false,name="fetch_tweets_from_search") - private Boolean fetchTweetsFromSearch = false; - - @NotNull - @Column(nullable = false,name="update_tweets") - private Boolean updateTweets = false; - - @NotNull - @Column(nullable = false,name="update_users") - private Boolean updatedUsers = false; - - @NotNull - @Column(nullable = false,name="update_users_from_mentions") - private Boolean updateUsersFromMentions = false; - - @NotNull - @Column(nullable = false,name="fetch_users_from_list") - private Boolean fetchUsersFromList = false; - - @NotNull - @Column(nullable = false,name="controller_add_user_for_screen_name") - private Boolean controllerAddUserForScreenName = false; - - @NotNull - @Column(nullable = false,name="controller_create_testdata_tweets") - private Boolean controllerCreateTestdataTweets = false; - - @NotNull - @Column(nullable = false,name="controller_create_testdata_users") - private Boolean controllerCreateTestdataUsers = false; - - @NotNull - @Column(nullable = false,name="controller_create_imprint_user") - private Boolean controllerCreateImprintUser = false; - - @NotNull - @Column(nullable = false,name="remove_old_data_from_storage") - private Boolean removeOldDataFromStorage = false; - - @NotNull - @Column(nullable = false,name="fetch_follower") - private Boolean fetchFollower = false; - - @NotNull - @Column(nullable = false,name="fetch_friends") - private Boolean fetchFriends = false; - - @NotNull - @Column(nullable = false,name="fetch_home_timeline") - private Boolean getHomeTimeline = false; - - @NotNull - @Column(nullable = false,name="fetch_user_timeline") - private Boolean getUserTimeline = false; - - @NotNull - @Column(nullable = false,name="fetch_mentions") - private Boolean getMentions = false; - - @NotNull - @Column(nullable = false,name="fetch_favorites") - private Boolean getFavorites = false; - - @NotNull - @Column(nullable = false,name="fetch_retweets_of_me") - private Boolean getRetweetsOfMe = false; - - @NotNull - @Column(nullable = false,name="fetch_lists") - private Boolean getLists = false; - - @Transient - public void setTaskInfoFromTask(Task task) { - if(task!=null) { - TaskType useCase = task.getTaskType(); - switch (useCase) { - case FETCH_TWEETS_FROM_SEARCH: - this.fetchTweetsFromSearch = true; - break; - case UPDATE_TWEETS: - this.updateTweets = true; - break; - case UPDATE_USERS: - this.updatedUsers = true; - break; - case UPDATE_USERS_FROM_MENTIONS: - this.updateUsersFromMentions = true; - break; - case FETCH_USERS_FROM_LIST: - this.fetchUsersFromList = true; - break; - case CONTROLLER_ADD_USER_FOR_SCREEN_NAME: - this.controllerAddUserForScreenName = true; - break; - case CONTROLLER_CREATE_TESTDATA_TWEETS: - this.controllerCreateTestdataTweets = true; - break; - case CONTROLLER_CREATE_TESTDATA_USERS: - this.controllerCreateTestdataUsers = true; - break; - case CONTROLLER_CREATE_IMPRINT_USER: - controllerCreateImprintUser = true; - break; - case REMOVE_OLD_DATA_FROM_STORAGE: - removeOldDataFromStorage = true; - break; - case FETCH_FOLLOWER: - fetchFollower = true; - break; - case FETCH_FRIENDS: - fetchFriends = true; - break; - case FETCH_HOME_TIMELINE: - getHomeTimeline = true; - break; - case FETCH_USER_TIMELINE: - getUserTimeline = true; - break; - case FETCH_MENTIONS: - getMentions = true; - break; - case FETCH_FAVORITES: - getFavorites = true; - break; - case FETCH_RETWEETS_OF_ME: - getRetweetsOfMe = true; - break; - case FETCH_LISTS: - getLists = true; - break; - default: - break; - } - } - } - - protected TaskInfo() { - } - - public TaskInfo(Boolean fetchTweetsFromSearch, Boolean updateTweets, Boolean updatedUsers, Boolean updateUsersFromMentions, Boolean fetchUsersFromList, Boolean controllerAddUserForScreenName, Boolean controllerCreateTestdataTweets, Boolean controllerCreateTestdataUsers, Boolean controllerCreateImprintUser, Boolean removeOldDataFromStorage, Boolean fetchFollower, Boolean fetchFriends) { - this.fetchTweetsFromSearch = fetchTweetsFromSearch; - this.updateTweets = updateTweets; - this.updatedUsers = updatedUsers; - this.updateUsersFromMentions = updateUsersFromMentions; - this.fetchUsersFromList = fetchUsersFromList; - this.controllerAddUserForScreenName = controllerAddUserForScreenName; - this.controllerCreateTestdataTweets = controllerCreateTestdataTweets; - this.controllerCreateTestdataUsers = controllerCreateTestdataUsers; - this.controllerCreateImprintUser = controllerCreateImprintUser; - this.removeOldDataFromStorage = removeOldDataFromStorage; - this.fetchFollower = fetchFollower; - this.fetchFriends = fetchFriends; - } - - public Boolean getFetchTweetsFromSearch() { - return fetchTweetsFromSearch; - } - - public Boolean getUpdateTweets() { - return updateTweets; - } - - public Boolean getUpdatedUsers() { - return updatedUsers; - } - - public Boolean getUpdateUsersFromMentions() { - return updateUsersFromMentions; - } - - public Boolean getFetchUsersFromList() { - return fetchUsersFromList; - } - - public Boolean getControllerAddUserForScreenName() { - return controllerAddUserForScreenName; - } - - public Boolean getControllerCreateTestdataTweets() { - return controllerCreateTestdataTweets; - } - - public Boolean getControllerCreateTestdataUsers() { - return controllerCreateTestdataUsers; - } - - public Boolean getControllerCreateImprintUser() { - return controllerCreateImprintUser; - } - - public Boolean getRemoveOldDataFromStorage() { - return removeOldDataFromStorage; - } - - public Boolean getFetchFollower() { - return fetchFollower; - } - - public Boolean getFetchFriends() { - return fetchFriends; - } - - public Boolean getGetHomeTimeline() { - return getHomeTimeline; - } - - public Boolean getGetUserTimeline() { - return getUserTimeline; - } - - public Boolean getGetMentions() { - return getMentions; - } - - public Boolean getGetFavorites() { - return getFavorites; - } - - public Boolean getGetRetweetsOfMe() { - return getRetweetsOfMe; - } - - public Boolean getGetLists() { - return getLists; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof TaskInfo)) return false; - - TaskInfo taskInfo = (TaskInfo) o; - - if (getFetchTweetsFromSearch() != null ? !getFetchTweetsFromSearch().equals(taskInfo.getFetchTweetsFromSearch()) : taskInfo.getFetchTweetsFromSearch() != null) - return false; - if (getUpdateTweets() != null ? !getUpdateTweets().equals(taskInfo.getUpdateTweets()) : taskInfo.getUpdateTweets() != null) - return false; - if (getUpdatedUsers() != null ? !getUpdatedUsers().equals(taskInfo.getUpdatedUsers()) : taskInfo.getUpdatedUsers() != null) - return false; - if (getUpdateUsersFromMentions() != null ? !getUpdateUsersFromMentions().equals(taskInfo.getUpdateUsersFromMentions()) : taskInfo.getUpdateUsersFromMentions() != null) - return false; - if (getFetchUsersFromList() != null ? !getFetchUsersFromList().equals(taskInfo.getFetchUsersFromList()) : taskInfo.getFetchUsersFromList() != null) - return false; - if (getControllerAddUserForScreenName() != null ? !getControllerAddUserForScreenName().equals(taskInfo.getControllerAddUserForScreenName()) : taskInfo.getControllerAddUserForScreenName() != null) - return false; - if (getControllerCreateTestdataTweets() != null ? !getControllerCreateTestdataTweets().equals(taskInfo.getControllerCreateTestdataTweets()) : taskInfo.getControllerCreateTestdataTweets() != null) - return false; - if (getControllerCreateTestdataUsers() != null ? !getControllerCreateTestdataUsers().equals(taskInfo.getControllerCreateTestdataUsers()) : taskInfo.getControllerCreateTestdataUsers() != null) - return false; - if (getControllerCreateImprintUser() != null ? !getControllerCreateImprintUser().equals(taskInfo.getControllerCreateImprintUser()) : taskInfo.getControllerCreateImprintUser() != null) - return false; - if (getRemoveOldDataFromStorage() != null ? !getRemoveOldDataFromStorage().equals(taskInfo.getRemoveOldDataFromStorage()) : taskInfo.getRemoveOldDataFromStorage() != null) - return false; - if (getFetchFollower() != null ? !getFetchFollower().equals(taskInfo.getFetchFollower()) : taskInfo.getFetchFollower() != null) - return false; - if (getFetchFriends() != null ? !getFetchFriends().equals(taskInfo.getFetchFriends()) : taskInfo.getFetchFriends() != null) - return false; - if (getGetHomeTimeline() != null ? !getGetHomeTimeline().equals(taskInfo.getGetHomeTimeline()) : taskInfo.getGetHomeTimeline() != null) - return false; - if (getGetUserTimeline() != null ? !getGetUserTimeline().equals(taskInfo.getGetUserTimeline()) : taskInfo.getGetUserTimeline() != null) - return false; - if (getGetMentions() != null ? !getGetMentions().equals(taskInfo.getGetMentions()) : taskInfo.getGetMentions() != null) - return false; - if (getGetFavorites() != null ? !getGetFavorites().equals(taskInfo.getGetFavorites()) : taskInfo.getGetFavorites() != null) - return false; - if (getGetRetweetsOfMe() != null ? !getGetRetweetsOfMe().equals(taskInfo.getGetRetweetsOfMe()) : taskInfo.getGetRetweetsOfMe() != null) - return false; - return getGetLists() != null ? getGetLists().equals(taskInfo.getGetLists()) : taskInfo.getGetLists() == null; - } - - @Override - public int hashCode() { - int result = getFetchTweetsFromSearch() != null ? getFetchTweetsFromSearch().hashCode() : 0; - result = 31 * result + (getUpdateTweets() != null ? getUpdateTweets().hashCode() : 0); - result = 31 * result + (getUpdatedUsers() != null ? getUpdatedUsers().hashCode() : 0); - result = 31 * result + (getUpdateUsersFromMentions() != null ? getUpdateUsersFromMentions().hashCode() : 0); - result = 31 * result + (getFetchUsersFromList() != null ? getFetchUsersFromList().hashCode() : 0); - result = 31 * result + (getControllerAddUserForScreenName() != null ? getControllerAddUserForScreenName().hashCode() : 0); - result = 31 * result + (getControllerCreateTestdataTweets() != null ? getControllerCreateTestdataTweets().hashCode() : 0); - result = 31 * result + (getControllerCreateTestdataUsers() != null ? getControllerCreateTestdataUsers().hashCode() : 0); - result = 31 * result + (getControllerCreateImprintUser() != null ? getControllerCreateImprintUser().hashCode() : 0); - result = 31 * result + (getRemoveOldDataFromStorage() != null ? getRemoveOldDataFromStorage().hashCode() : 0); - result = 31 * result + (getFetchFollower() != null ? getFetchFollower().hashCode() : 0); - result = 31 * result + (getFetchFriends() != null ? getFetchFriends().hashCode() : 0); - result = 31 * result + (getGetHomeTimeline() != null ? getGetHomeTimeline().hashCode() : 0); - result = 31 * result + (getGetUserTimeline() != null ? getGetUserTimeline().hashCode() : 0); - result = 31 * result + (getGetMentions() != null ? getGetMentions().hashCode() : 0); - result = 31 * result + (getGetFavorites() != null ? getGetFavorites().hashCode() : 0); - result = 31 * result + (getGetRetweetsOfMe() != null ? getGetRetweetsOfMe().hashCode() : 0); - result = 31 * result + (getGetLists() != null ? getGetLists().hashCode() : 0); - return result; - } - - @Override - public String toString() { - return "TaskInfo{" + - "fetchTweetsFromSearch=" + fetchTweetsFromSearch + - ", updateTweets=" + updateTweets + - ", updatedUsers=" + updatedUsers + - ", updateUsersFromMentions=" + updateUsersFromMentions + - ", fetchUsersFromList=" + fetchUsersFromList + - ", controllerAddUserForScreenName=" + controllerAddUserForScreenName + - ", controllerCreateTestdataTweets=" + controllerCreateTestdataTweets + - ", controllerCreateTestdataUsers=" + controllerCreateTestdataUsers + - ", controllerCreateImprintUser=" + controllerCreateImprintUser + - ", removeOldDataFromStorage=" + removeOldDataFromStorage + - ", fetchFollower=" + fetchFollower + - ", fetchFriends=" + fetchFriends + - ", getHomeTimeline=" + getHomeTimeline + - ", getUserTimeline=" + getUserTimeline + - ", getMentions=" + getMentions + - ", getFavorites=" + getFavorites + - ", getRetweetsOfMe=" + getRetweetsOfMe + - ", getLists=" + getLists + - '}'; - } - - @Transient - public String getUniqueId() { - return toString(); - } -} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/HashTag.java b/src/main/java/org/woehlke/twitterwall/oodm/model/HashTag.java similarity index 88% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/HashTag.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/HashTag.java index aea527d6..cbe10ad8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/HashTag.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/HashTag.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.SafeHtml; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.listener.HashTagListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.listener.HashTagListener; import javax.persistence.*; import java.util.regex.Matcher; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Media.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Media.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Media.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Media.java index d5592e4e..fa99c624 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Media.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Media.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.URL; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithIdTwitter; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; -import org.woehlke.twitterwall.oodm.entities.listener.MediaListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithIdTwitter; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.listener.MediaListener; import javax.persistence.*; import javax.validation.constraints.NotNull; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Mention.java similarity index 65% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Mention.java index 0d94b2ba..f26e903b 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Mention.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Mention.java @@ -1,12 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithIdTwitter; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithScreenName; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.listener.MentionListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithIdTwitter; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithScreenName; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.listener.MentionListener; +import org.woehlke.twitterwall.oodm.model.parts.MentionStatus; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -25,8 +26,9 @@ }, indexes = { @Index(name = "idx_mention_name", columnList = "name"), - @Index(name = "idx_mention_name", columnList = "screen_name"), - @Index(name = "idx_mention_id_twitter_of_user", columnList = "id_twitter_of_user") + @Index(name = "idx_mention_screen_name", columnList = "screen_name"), + @Index(name = "idx_mention_id_twitter_of_user", columnList = "id_twitter_of_user"), + @Index(name = "idx_mention_fk_user", columnList = "fk_user") } ) @NamedQueries({ @@ -36,11 +38,35 @@ ), @NamedQuery( name="Mention.findAllWithoutUser", - query="select t from Mention t where t.idTwitterOfUser=0" + query="select t from Mention t where t.idTwitterOfUser=0L or t.idOfUser=0L" ), @NamedQuery( name="Mention.countAllWithoutUser", - query="select count(t) from Mention t where t.idTwitterOfUser=0" + query="select count(t) from Mention t where t.idTwitterOfUser=0L or t.idOfUser=0L" + ), + @NamedQuery( + name="Mention.findByUserId", + query="select t from Mention t where t.idOfUser=:idOfUser order by t.screenName" + ), + @NamedQuery( + name="Mention.countByUserId", + query="select count(t) from Mention t where t.idOfUser=:idOfUser" + ), + @NamedQuery( + name="Mention.findByScreenNameUnique", + query="select t from Mention t where t.screenNameUnique=:screenNameUnique order by t.screenName" + ), + @NamedQuery( + name="Mention.countByScreenNameUnique", + query="select count(t) from Mention t where t.screenNameUnique=:screenNameUnique" + ), + @NamedQuery( + name="Mention.findByIdTwitterOfUser", + query="select t from Mention t where t.idTwitterOfUser=:idTwitterOfUser order by t.screenName" + ), + @NamedQuery( + name="Mention.countByIdTwitterOfUser", + query="select count(t) from Mention t where t.idTwitterOfUser=:idTwitterOfUser" ) }) @EntityListeners(MentionListener.class) @@ -50,6 +76,8 @@ public class Mention extends AbstractDomainObject implements DomainObje public static final long ID_TWITTER_UNDEFINED = -1L; + public static final long HAS_NO_USER = 0L; + @Id @GeneratedValue(strategy = GenerationType.AUTO) protected Long id; @@ -70,7 +98,16 @@ public class Mention extends AbstractDomainObject implements DomainObje @NotNull @Column(name = "id_twitter_of_user",nullable = false) - private Long idTwitterOfUser = 0L; + private Long idTwitterOfUser = HAS_NO_USER; + + @NotNull + @Column(name = "fk_user",nullable = false) + private Long idOfUser = HAS_NO_USER; + + @NotNull + @Column(name="mention_status",nullable = false) + @Enumerated(EnumType.STRING) + private MentionStatus mentionStatus = MentionStatus.NULL; public Mention(Task createdBy, Task updatedBy, long idTwitter, String screenName, String name) { super(createdBy,updatedBy); @@ -86,8 +123,8 @@ public Mention(Task createdBy, Task updatedBy, String mentionString) { super(createdBy,updatedBy); this.idTwitter = ID_TWITTER_UNDEFINED; this.screenName = mentionString; - if(screenName!=null) { - this.screenNameUnique = screenName.toLowerCase(); + if(mentionString!=null) { + this.screenNameUnique = mentionString.toLowerCase(); } this.name = mentionString; } @@ -98,6 +135,7 @@ private Mention() { @Transient @Override public String getUniqueId() { + return "" + idTwitter +"_"+ screenNameUnique; } @@ -180,12 +218,8 @@ public boolean hasUser() { } @Transient - public boolean isRawMentionFromUserDescription() { - if(this.isValid()) { - return (this.getIdTwitter() == ID_TWITTER_UNDEFINED); - } else { - return false; - } + public boolean isNotFetchedFromTwitter() { + return (this.getIdTwitter() == ID_TWITTER_UNDEFINED); } public static long getSerialVersionUID() { @@ -233,6 +267,16 @@ public void setIdTwitter(Long idTwitter) { this.idTwitter = idTwitter; } + @Transient + public void setIdTwitteToUndefined() { + this.idTwitter = ID_TWITTER_UNDEFINED; + } + + @Transient + public boolean isIdTwitterUndefined(){ + return (this.idTwitter == ID_TWITTER_UNDEFINED); + } + public Long getIdTwitterOfUser() { return idTwitterOfUser; } @@ -251,17 +295,22 @@ public void setScreenNameUnique(String screenNameUnique) { this.screenNameUnique = screenNameUnique.toLowerCase(); } - /* - @Override - public String toString() { - return "Mention{" + - " id=" + id + - ", idTwitter=" + idTwitter + - ", screenName='" + screenName + '\'' + - ", name='" + name + '\'' + - super.toString() + - " }\n"; - }*/ + public Long getIdOfUser() { + return idOfUser; + } + + public void setIdOfUser(Long idOfUser) { + this.idOfUser = idOfUser; + } + + public MentionStatus getMentionStatus() { + return mentionStatus; + } + + public void setMentionStatus(MentionStatus mentionStatus) { + this.mentionStatus = mentionStatus; + } + @Override public String toString() { @@ -272,6 +321,8 @@ public String toString() { ", screenNameUnique='" + screenNameUnique + '\'' + ", name='" + name + '\'' + ", idTwitterOfUser=" + idTwitterOfUser + + ", idOfUser=" + idOfUser + + ", mentionStatus=" + mentionStatus + super.toString() + '}'; } @@ -295,4 +346,28 @@ public int hashCode() { result = 31 * result + (screenNameUnique != null ? screenNameUnique.hashCode() : 0); return result; } + + public static Mention createByTransformService(Task task, long idTwitter, String screenName, String name) { + Mention mention = new Mention(); + mention.setIdTwitter(idTwitter); + mention.setCreatedBy(task); + mention.setScreenName(screenName); + mention.setName(name); + mention.setMentionStatus(MentionStatus.FETCHED_FROM_TWITTER); + mention.setIdOfUser(Mention.HAS_NO_USER); + mention.setIdTwitterOfUser(Mention.HAS_NO_USER); + return mention; + } + + public static Mention createFromUserDescriptionOrTweetText(Task task, String screenName) { + Mention mention = new Mention(); + mention.setCreatedBy(task); + mention.setScreenName(screenName); + mention.setName(screenName); + mention.setMentionStatus(MentionStatus.CREATED_BY_TEXT); + mention.setIdTwitteToUndefined(); + mention.setIdOfUser(Mention.HAS_NO_USER); + mention.setIdTwitterOfUser(Mention.HAS_NO_USER); + return mention; + } } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Task.java similarity index 87% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Task.java index c2a3697a..1d32ccbc 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Task.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Task.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.SafeHtml; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectMinimal; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.oodm.entities.listener.TaskListener; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectMinimal; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.listener.TaskListener; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -60,7 +60,7 @@ public class Task implements DomainObjectMinimal { @NotNull @Column(name="send_type",nullable = false) @Enumerated(EnumType.STRING) - private SendType sendType = SendType.NULL; + private TaskSendType taskSendType = TaskSendType.NULL; @NotNull @Temporal(TemporalType.TIMESTAMP) @@ -79,11 +79,11 @@ public class Task implements DomainObjectMinimal { private Task() { } - public Task(String description, TaskType taskType, TaskStatus taskStatus, SendType sendType, Date timeStarted, Date timeLastUpdate, Date timeFinished) { + public Task(String description, TaskType taskType, TaskStatus taskStatus, TaskSendType taskSendType, Date timeStarted, Date timeLastUpdate, Date timeFinished) { this.description = description; this.taskType = taskType; this.taskStatus = taskStatus; - this.sendType = sendType; + this.taskSendType = taskSendType; this.timeStarted = timeStarted; this.timeLastUpdate = timeLastUpdate; this.timeFinished = timeFinished; @@ -155,12 +155,12 @@ public void setTaskStatus(TaskStatus taskStatus) { this.taskStatus = taskStatus; } - public SendType getSendType() { - return sendType; + public TaskSendType getTaskSendType() { + return taskSendType; } - public void setSendType(SendType sendType) { - this.sendType = sendType; + public void setTaskSendType(TaskSendType taskSendType) { + this.taskSendType = taskSendType; } public String getDescription() { @@ -191,7 +191,7 @@ public String toString() { ", description='" + description + '\'' + ", taskType=" + taskType + ", taskStatus=" + taskStatus + - ", sendType=" + sendType + + ", taskSendType=" + taskSendType + ", timeStarted=" + timeStarted + ", timeLastUpdate=" + timeLastUpdate + ", timeFinished=" + timeFinished + diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java b/src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java index a5bfd5bc..18591b8d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/TaskHistory.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/TaskHistory.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.SafeHtml; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectMinimal; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.listener.TaskHistoryListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectMinimal; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.listener.TaskHistoryListener; import javax.persistence.*; import javax.validation.Valid; @@ -68,7 +68,6 @@ public class TaskHistory implements DomainObjectMinimal { @JoinColumn(name="task_id") private Task task; - //@NotNull @Valid @Embedded @AttributeOverrides({ @@ -91,7 +90,9 @@ public class TaskHistory implements DomainObjectMinimal { @AttributeOverride(name = "userprofile2media", column = @Column(name = "count_userprofile2media",nullable=false)), @AttributeOverride(name = "userprofile2mention", column = @Column(name = "count_userprofile2mention",nullable=false)), @AttributeOverride(name = "userprofile2tickersymbol", column = @Column(name = "count_userprofile2tickersymbol",nullable=false)), - @AttributeOverride(name = "userprofile2url", column = @Column(name = "count_userprofile2url",nullable=false)) + @AttributeOverride(name = "userprofile2url", column = @Column(name = "count_userprofile2url",nullable=false)), + @AttributeOverride(name = "userList2Members", column = @Column(name = "count_userlist2members",nullable=false)), + @AttributeOverride(name = "userList2Subcriber", column = @Column(name = "count_userlist2subcriber",nullable=false)) }) private CountedEntities countedEntities = new CountedEntities(); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/TickerSymbol.java b/src/main/java/org/woehlke/twitterwall/oodm/model/TickerSymbol.java similarity index 90% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/TickerSymbol.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/TickerSymbol.java index 9d0be9b4..eb890fe3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/TickerSymbol.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/TickerSymbol.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.SafeHtml; import org.hibernate.validator.constraints.URL; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; -import org.woehlke.twitterwall.oodm.entities.listener.TickerSymbolListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.listener.TickerSymbolListener; import javax.persistence.*; import java.net.MalformedURLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Tweet.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Tweet.java index be621bf3..8fcd4000 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Tweet.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Tweet.java @@ -1,11 +1,11 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.oodm.entities.listener.TweetListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithEntities; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.listener.TweetListener; import javax.persistence.*; import javax.validation.Valid; @@ -73,6 +73,22 @@ @NamedQuery( name="Tweet.getRetweetsOfMe", query="select t from Tweet t where t.taskInfo.getRetweetsOfMe=true" + ), + @NamedQuery( + name="Tweet.findTweetsForMedia", + query="select t from Tweet t join t.entities.media medium where medium=:media" + ), + @NamedQuery( + name="Tweet.findTweetsForMention", + query="select t from Tweet t join t.entities.mentions mention where mention=:mention" + ), + @NamedQuery( + name="Tweet.findTweetsForUrl", + query="select t from Tweet t join t.entities.urls url where url=:url" + ), + @NamedQuery( + name="Tweet.findTweetsForTickerSymbol", + query="select t from Tweet t join t.entities.tickerSymbols tickerSymbol where tickerSymbol=:tickerSymbol" ) }) @NamedNativeQueries({ @@ -469,7 +485,7 @@ public String toString() { ", favoriteCount=" + favoriteCount + ",\n retweetedStatus=" + toStringRetweetedStatus() + super.toString() + - ",\n entities=" + toStringEntities() + + ",\n model=" + toStringEntities() + ",\n user=" + toStringUser() + "\n}"; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/Url.java b/src/main/java/org/woehlke/twitterwall/oodm/model/Url.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/Url.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/Url.java index 5374d02d..30f2baef 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/Url.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/Url.java @@ -1,16 +1,14 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.URL; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; -import org.woehlke.twitterwall.oodm.entities.listener.UrlListener; -import org.woehlke.twitterwall.oodm.entities.parts.TaskBasedCaching; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.listener.UrlListener; import javax.persistence.*; -import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.net.MalformedURLException; @@ -32,6 +30,14 @@ @NamedQuery( name="Url.findByUniqueId", query="select t from Url t where t.url=:url" + ), + @NamedQuery( + name="Url.findRawUrlsFromDescription", + query="select t from Url t where t.expanded='UNDEFINED'" + ), + @NamedQuery( + name="Url.findUrlAndExpandedTheSame", + query="select t from Url t where t.expanded=t.url" ) }) @EntityListeners(UrlListener.class) @@ -62,11 +68,6 @@ public class Url extends AbstractDomainObject implements DomainObjectEntity @Column(nullable = false,length=4096) private String url; - @Valid - @NotNull - @Embedded - private TaskBasedCaching taskBasedCaching = new TaskBasedCaching(); - @Transient public boolean isUrlAndExpandedTheSame(){ if(this.isValid()){ @@ -124,11 +125,6 @@ public Url(Task createdBy, Task updatedBy,String display, String expanded, Strin this.display = display; this.expanded = expanded; this.url = url; - if(updatedBy != null){ - taskBasedCaching.store(updatedBy.getTaskType()); - } else { - taskBasedCaching.store(createdBy.getTaskType()); - } } public Url(Task createdBy, Task updatedBy,String url) { @@ -136,11 +132,6 @@ public Url(Task createdBy, Task updatedBy,String url) { this.display = Url.UNDEFINED; this.expanded = Url.UNDEFINED; this.url = url; - if(updatedBy != null){ - taskBasedCaching.store(updatedBy.getTaskType()); - } else { - taskBasedCaching.store(createdBy.getTaskType()); - } } protected Url() { @@ -182,14 +173,6 @@ public void setUrl(String url) { this.url = url; } - public TaskBasedCaching getTaskBasedCaching() { - return taskBasedCaching; - } - - public void setTaskBasedCaching(TaskBasedCaching taskBasedCaching) { - this.taskBasedCaching = taskBasedCaching; - } - @Override public String toString() { return "Url{" + @@ -218,4 +201,18 @@ public int hashCode() { result = 31 * result + (url != null ? url.hashCode() : 0); return result; } + + public static Url createByTransformation(Task task, String display, String expanded, String urlStr) { + Task updatedBy = null; + Url myUrlEntity = new Url(task,updatedBy,display, expanded, urlStr); + return myUrlEntity; + } + + public static Url createFromText(Task task, String urlString) { + Task updatedBy = null; + String display = Url.UNDEFINED; + String expanded = Url.UNDEFINED; + Url myUrlEntity = new Url(task,updatedBy,display, expanded, urlString); + return myUrlEntity; + } } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java b/src/main/java/org/woehlke/twitterwall/oodm/model/User.java similarity index 94% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/User.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/User.java index 26e00f9e..7efaeac4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/User.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/User.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithScreenName; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.oodm.entities.listener.UserListener; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithEntities; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithScreenName; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.listener.UserListener; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -90,6 +90,22 @@ @NamedQuery( name="User.findUsersWhoAreFollowersButNotFriends", query="select t from User as t where t.taskInfo.fetchFollower=true and t.taskInfo.fetchFriends=false" + ), + @NamedQuery( + name="User.getUsersForMedia", + query="select t from User t join t.entities.media medium where medium=:media" + ), + @NamedQuery( + name="User.getUsersForMention", + query="select t from User t join t.entities.mentions mention where mention=:mention" + ), + @NamedQuery( + name="User.getUsersForUrl", + query="select t from User t join t.entities.urls url where url=:url" + ), + @NamedQuery( + name="User.getUsersForTickerSymbol", + query="select t from User t join t.entities.tickerSymbols tickerSymbol where tickerSymbol=:tickerSymbol" ) }) @NamedNativeQueries({ @@ -798,7 +814,7 @@ public String toString() { ", friend=" + friend + ", profileBannerUrl='" + profileBannerUrl + '\'' + super.toString() + - ",\n entities=" + this.entities.toString() + + ",\n model=" + this.entities.toString() + "\n}"; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java similarity index 59% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java index 8e53064c..8de3c496 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/UserList.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/UserList.java @@ -1,13 +1,20 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.hibernate.validator.constraints.NotEmpty; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithIdTwitter; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; -import org.woehlke.twitterwall.oodm.entities.listener.UserListListener; -import org.woehlke.twitterwall.oodm.entities.parts.AbstractDomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithIdTwitter; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.listener.UserListListener; +import org.woehlke.twitterwall.oodm.model.parts.AbstractDomainObject; import javax.persistence.*; import javax.validation.constraints.NotNull; +import java.util.LinkedHashSet; +import java.util.Set; + +import static javax.persistence.CascadeType.DETACH; +import static javax.persistence.CascadeType.REFRESH; +import static javax.persistence.CascadeType.REMOVE; +import static javax.persistence.FetchType.LAZY; @Entity @Table( @@ -28,6 +35,17 @@ query = "select t from UserList as t where t.idTwitter=:idTwitter" ) }) + +@NamedNativeQueries({ + @NamedNativeQuery( + name = "UserList.countUserList2Subcriber", + query = "SELECT count(*) AS z FROM userlist_subcriber" + ), + @NamedNativeQuery( + name = "UserList.countUserList2Members", + query = "SELECT count(*) AS z FROM userlist_members" + ) +}) @EntityListeners(UserListListener.class) public class UserList extends AbstractDomainObject implements DomainObjectWithTask,DomainObjectWithIdTwitter { @@ -83,7 +101,34 @@ public String getListOwnersScreenName(){ return myuriPath.split("/")[1]; } - public UserList(Task createdBy, Task updatedBy, long idTwitter, String name, String fullName, String uriPath, String description, String slug, boolean isPublic, boolean isFollowing, int memberCount, int subscriberCount) { + @NotNull + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name="fk_user") + private User listOwner; + + + @NotNull + @JoinTable( + name="userlist_members" + ) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = LAZY + ) + private Set members = new LinkedHashSet(); + + + @NotNull + @JoinTable( + name="userlist_subcriber" + ) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = LAZY + ) + private Set subscriber = new LinkedHashSet(); + + public UserList(Task createdBy, Task updatedBy, long idTwitter, String name, String fullName, String uriPath, String description, String slug, boolean isPublic, boolean isFollowing, int memberCount, int subscriberCount, User listOwner,Set members,Set subscriber) { super(createdBy, updatedBy); this.idTwitter = idTwitter; this.name = name; @@ -99,6 +144,9 @@ public UserList(Task createdBy, Task updatedBy, long idTwitter, String name, Str } else { this.description = description; } + this.listOwner = listOwner; + this.members = members; + this.subscriber = subscriber; } protected UserList() { @@ -213,6 +261,31 @@ public void setSubscriberCount(Integer subscriberCount) { this.subscriberCount = subscriberCount; } + + public User getListOwner() { + return listOwner; + } + + public void setListOwner(User listOwner) { + this.listOwner = listOwner; + } + + public Set getMembers() { + return members; + } + + public void setMembers(Set members) { + this.members = members; + } + + public Set getSubscriber() { + return subscriber; + } + + public void setSubscriber(Set subscriber) { + this.subscriber = subscriber; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -220,38 +293,42 @@ public boolean equals(Object o) { UserList userList = (UserList) o; - if (getId() != null ? !getId().equals(userList.getId()) : userList.getId() != null) return false; - if (getIdTwitter() != null ? !getIdTwitter().equals(userList.getIdTwitter()) : userList.getIdTwitter() != null) + if (id != null ? !id.equals(userList.id) : userList.id != null) return false; + if (idTwitter != null ? !idTwitter.equals(userList.idTwitter) : userList.idTwitter != null) return false; + if (name != null ? !name.equals(userList.name) : userList.name != null) return false; + if (fullName != null ? !fullName.equals(userList.fullName) : userList.fullName != null) return false; + if (uriPath != null ? !uriPath.equals(userList.uriPath) : userList.uriPath != null) return false; + if (description != null ? !description.equals(userList.description) : userList.description != null) return false; - if (getName() != null ? !getName().equals(userList.getName()) : userList.getName() != null) return false; - if (getFullName() != null ? !getFullName().equals(userList.getFullName()) : userList.getFullName() != null) - return false; - if (getUriPath() != null ? !getUriPath().equals(userList.getUriPath()) : userList.getUriPath() != null) - return false; - if (getDescription() != null ? !getDescription().equals(userList.getDescription()) : userList.getDescription() != null) - return false; - if (getSlug() != null ? !getSlug().equals(userList.getSlug()) : userList.getSlug() != null) return false; + if (slug != null ? !slug.equals(userList.slug) : userList.slug != null) return false; if (isPublic != null ? !isPublic.equals(userList.isPublic) : userList.isPublic != null) return false; if (isFollowing != null ? !isFollowing.equals(userList.isFollowing) : userList.isFollowing != null) return false; - if (getMemberCount() != null ? !getMemberCount().equals(userList.getMemberCount()) : userList.getMemberCount() != null) + if (memberCount != null ? !memberCount.equals(userList.memberCount) : userList.memberCount != null) + return false; + if (subscriberCount != null ? !subscriberCount.equals(userList.subscriberCount) : userList.subscriberCount != null) return false; - return getSubscriberCount() != null ? getSubscriberCount().equals(userList.getSubscriberCount()) : userList.getSubscriberCount() == null; + if (listOwner != null ? !listOwner.equals(userList.listOwner) : userList.listOwner != null) return false; + if (members != null ? !members.equals(userList.members) : userList.members != null) return false; + return subscriber != null ? subscriber.equals(userList.subscriber) : userList.subscriber == null; } @Override public int hashCode() { - int result = getId() != null ? getId().hashCode() : 0; - result = 31 * result + (getIdTwitter() != null ? getIdTwitter().hashCode() : 0); - result = 31 * result + (getName() != null ? getName().hashCode() : 0); - result = 31 * result + (getFullName() != null ? getFullName().hashCode() : 0); - result = 31 * result + (getUriPath() != null ? getUriPath().hashCode() : 0); - result = 31 * result + (getDescription() != null ? getDescription().hashCode() : 0); - result = 31 * result + (getSlug() != null ? getSlug().hashCode() : 0); + int result = id != null ? id.hashCode() : 0; + result = 31 * result + (idTwitter != null ? idTwitter.hashCode() : 0); + result = 31 * result + (name != null ? name.hashCode() : 0); + result = 31 * result + (fullName != null ? fullName.hashCode() : 0); + result = 31 * result + (uriPath != null ? uriPath.hashCode() : 0); + result = 31 * result + (description != null ? description.hashCode() : 0); + result = 31 * result + (slug != null ? slug.hashCode() : 0); result = 31 * result + (isPublic != null ? isPublic.hashCode() : 0); result = 31 * result + (isFollowing != null ? isFollowing.hashCode() : 0); - result = 31 * result + (getMemberCount() != null ? getMemberCount().hashCode() : 0); - result = 31 * result + (getSubscriberCount() != null ? getSubscriberCount().hashCode() : 0); + result = 31 * result + (memberCount != null ? memberCount.hashCode() : 0); + result = 31 * result + (subscriberCount != null ? subscriberCount.hashCode() : 0); + result = 31 * result + (listOwner != null ? listOwner.hashCode() : 0); + result = 31 * result + (members != null ? members.hashCode() : 0); + result = 31 * result + (subscriber != null ? subscriber.hashCode() : 0); return result; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObject.java similarity index 74% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObject.java index 0dd8b49e..3b525d33 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObject.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObject.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; /** diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectEntity.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectEntity.java similarity index 66% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectEntity.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectEntity.java index 20e74f60..6e65ac3e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectEntity.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectEntity.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; public interface DomainObjectEntity extends DomainObjectWithTask { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectMinimal.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectMinimal.java index 0dec201d..cfea585c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectMinimal.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectMinimal.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithApiCaching.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithApiCaching.java new file mode 100644 index 00000000..a1e7cc73 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithApiCaching.java @@ -0,0 +1,8 @@ +package org.woehlke.twitterwall.oodm.model.common; + +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; + +public interface DomainObjectWithApiCaching { + + Boolean isCached(TaskType taskType, long timeToLive); +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithEntities.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithEntities.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithEntities.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithEntities.java index 690bd5e5..f3322dca 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithEntities.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithEntities.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; +import org.woehlke.twitterwall.oodm.model.entities.Entities; public interface DomainObjectWithEntities extends DomainObjectWithIdTwitter,DomainObjectWithTask { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithIdTwitter.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithIdTwitter.java similarity index 79% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithIdTwitter.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithIdTwitter.java index caa578c2..676e9980 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithIdTwitter.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithIdTwitter.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithScreenName.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithScreenName.java similarity index 85% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithScreenName.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithScreenName.java index e5224f95..e8fe568e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithScreenName.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithScreenName.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithTask.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithTask.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithTask.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithTask.java index fd02757b..dbe56bad 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithTask.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithTask.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.TaskInfo; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.tasks.TaskInfo; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUniqueId.java similarity index 57% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUniqueId.java index 078ff578..6c792537 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUniqueId.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUniqueId.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; public interface DomainObjectWithUniqueId { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUrl.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUrl.java similarity index 77% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUrl.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUrl.java index d10c79a6..a4ae57c6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithUrl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithUrl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; /** * Created by tw on 28.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithValidation.java similarity index 54% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithValidation.java index c9c3c345..7c77f39e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/common/DomainObjectWithValidation.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/common/DomainObjectWithValidation.java @@ -1,6 +1,6 @@ -package org.woehlke.twitterwall.oodm.entities.common; +package org.woehlke.twitterwall.oodm.model.common; public interface DomainObjectWithValidation { - + boolean isValid(); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/Entities.java b/src/main/java/org/woehlke/twitterwall/oodm/model/entities/Entities.java similarity index 95% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/Entities.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/entities/Entities.java index f779a791..ed2c8bc8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/Entities.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/entities/Entities.java @@ -1,9 +1,9 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.entities; import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUniqueId; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithValidation; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUniqueId; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithValidation; import javax.persistence.*; import javax.validation.constraints.AssertTrue; @@ -25,23 +25,38 @@ public class Entities extends EntitiesFilter implements Serializable,DomainObjectWithValidation,DomainObjectWithUniqueId { @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set urls = new LinkedHashSet(); @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set hashTags = new LinkedHashSet(); @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set mentions = new LinkedHashSet(); @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set media = new LinkedHashSet(); @NotNull - @ManyToMany(cascade = { DETACH, REFRESH, REMOVE }, fetch = EAGER) + @ManyToMany( + cascade = { DETACH, REFRESH, REMOVE }, + fetch = EAGER + ) private Set tickerSymbols = new LinkedHashSet(); public Entities(Set urls, Set hashTags, Set mentions, Set media, Set tickerSymbols) { @@ -302,7 +317,7 @@ public boolean removeTickerSymbol(TickerSymbol tickerSymbol) { } public String getFormattedTextForMentionsForTweets(String formattedText){ - return super.getFormattedTextForMentionsForTweets(this.mentions,formattedText); + return super.getFormattedTextForMentions(this.mentions,formattedText); } private String toStringUrls(){ diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/EntitiesFilter.java b/src/main/java/org/woehlke/twitterwall/oodm/model/entities/EntitiesFilter.java similarity index 92% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/EntitiesFilter.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/entities/EntitiesFilter.java index a6b29ad9..a99dac29 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/EntitiesFilter.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/entities/EntitiesFilter.java @@ -1,15 +1,15 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.entities; -import org.woehlke.twitterwall.oodm.entities.*; +import org.woehlke.twitterwall.oodm.model.*; import java.util.LinkedHashSet; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.woehlke.twitterwall.oodm.entities.HashTag.HASHTAG_TEXT_PATTERN; -import static org.woehlke.twitterwall.oodm.entities.Url.URL_PATTTERN_FOR_USER_HTTP; -import static org.woehlke.twitterwall.oodm.entities.Url.URL_PATTTERN_FOR_USER_HTTPS; +import static org.woehlke.twitterwall.oodm.model.HashTag.HASHTAG_TEXT_PATTERN; +import static org.woehlke.twitterwall.oodm.model.Url.URL_PATTTERN_FOR_USER_HTTP; +import static org.woehlke.twitterwall.oodm.model.Url.URL_PATTTERN_FOR_USER_HTTPS; /** * Created by tw on 15.07.17. @@ -18,27 +18,31 @@ public class EntitiesFilter { protected Set findByUserDescription(String description,Task task) { Set mentions = new LinkedHashSet<>(); + Set screenNames = new LinkedHashSet<>(); 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[] = { - 1, 1 + 1, 1 }; for(int i=0; i<2;i++){ Pattern mentionPattern = Pattern.compile(USER_PROFILE_INPUT[i]); Matcher m = mentionPattern.matcher(description); while (m.find()) { - Mention newMention = new Mention(task,null,m.group(USER_PROFILE_OUTPUT[i])); - if(!mentions.contains(newMention)){ - mentions.add(newMention); - } + String screenName = m.group(USER_PROFILE_OUTPUT[i]); + screenNames.add(screenName); } } + + for(String screenName:screenNames){ + Mention newMention = Mention.createFromUserDescriptionOrTweetText(task,screenName); + mentions.add(newMention); + } } return mentions; } @@ -46,7 +50,7 @@ protected Set findByUserDescription(String description,Task task) { protected String getFormattedTextForMentions(Set mentions, String formattedText) { for (Mention mention : mentions) { if(mention != null) { - if (mention.isProxy() && mention.hasUser() && (!mention.getScreenName().isEmpty())) { + if(!mention.getScreenName().isEmpty()) { String USER_PROFILE_INPUT[] = { "@(" + mention.getScreenName() + ")(" + stopChar + ")", @@ -54,8 +58,8 @@ protected String getFormattedTextForMentions(Set mentions, String forma }; String USER_PROFILE_OUTPUT[] = { - " @$1$2", - " @$1 " + " @$1$2", + " @$1 " }; String USER_PROFILE_OUTPUT_UNDEFINED[] = { @@ -66,7 +70,7 @@ protected String getFormattedTextForMentions(Set mentions, String forma for (int i = 0; i < 2; i++) { Pattern userPattern = Pattern.compile(USER_PROFILE_INPUT[i]); Matcher m = userPattern.matcher(formattedText); - if(mention.isRawMentionFromUserDescription()){ + if(mention.isNotFetchedFromTwitter()){ formattedText = m.replaceAll(USER_PROFILE_OUTPUT_UNDEFINED[i]); } else { formattedText = m.replaceAll(USER_PROFILE_OUTPUT[i]); @@ -78,6 +82,8 @@ protected String getFormattedTextForMentions(Set mentions, String forma return formattedText; } + //TODO: remove dead code: + /* protected String getFormattedTextForMentionsForTweets(Set mentions, String formattedText) { for (Mention mention : mentions) { if(mention != null) { @@ -101,7 +107,7 @@ protected String getFormattedTextForMentionsForTweets(Set mentions, Str for (int i = 0; i < 2; i++) { Pattern userPattern = Pattern.compile(USER_PROFILE_INPUT[i]); Matcher m = userPattern.matcher(formattedText); - if(mention.isRawMentionFromUserDescription()){ + if(mention.isNotFetchedFromTwitter()){ formattedText = m.replaceAll(USER_PROFILE_OUTPUT_UNDEFINED[i]); } else { formattedText = m.replaceAll(USER_PROFILE_OUTPUT[i]); @@ -112,6 +118,7 @@ protected String getFormattedTextForMentionsForTweets(Set mentions, Str } return formattedText; } + */ protected String getFormattedTextForUserProfiles(String formattedText) { @@ -306,6 +313,7 @@ public String getFormattedUrlForUrls(Set urls, String formattedText) { protected Set getUrlsForDescription(String description,Task task) { Set urls = new LinkedHashSet<>(); + Set urlStrings = new LinkedHashSet<>(); if (description != null) { String USER_PROFILE_INPUT[] = { @@ -327,9 +335,15 @@ protected Set getUrlsForDescription(String description,Task task) { Pattern userPattern = Pattern.compile(USER_PROFILE_INPUT[i]); Matcher m = userPattern.matcher(description); while (m.find()) { - urls.add(new Url(task,null, m.group(USER_PROFILE_OUTPUT[i]))); + String urlString = m.group(USER_PROFILE_OUTPUT[i]); + urlStrings.add(urlString); } } + + for(String urlString:urlStrings){ + Url newUrl = Url.createFromText(task,urlString); + urls.add(newUrl); + } } return urls; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/HashTagListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/HashTagListener.java index abc52304..2c7b7cb1 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/HashTagListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/HashTagListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.model.HashTag; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/MediaListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/MediaListener.java index beb48218..c8ce8c58 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MediaListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/MediaListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/MentionListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/MentionListener.java index 8d28638e..2e56dcc8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/MentionListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/MentionListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskHistoryListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskHistoryListener.java index 1009cc54..2f24d6f8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskHistoryListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskHistoryListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskListener.java index c3e273ae..39e428fa 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TaskListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TaskListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TickerSymbolListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/TickerSymbolListener.java index d9359aef..bd02ab5a 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TickerSymbolListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TickerSymbolListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TweetListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/TweetListener.java index 0671af3a..bf54c32e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/TweetListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/TweetListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.model.Tweet; import javax.persistence.*; /** diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UrlListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/UrlListener.java index 27b41033..b76a10dd 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UrlListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UrlListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListListener.java index 8d995928..ff16a5bb 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListener.java similarity index 93% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListener.java index 1fce97c2..ab58ed6d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/listener/UserListener.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/listener/UserListener.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.listener; +package org.woehlke.twitterwall.oodm.model.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import javax.persistence.*; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/AbstractDomainObject.java similarity index 81% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/parts/AbstractDomainObject.java index f5b09362..cc10a9e5 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/AbstractDomainObject.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/AbstractDomainObject.java @@ -1,9 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.parts; import com.fasterxml.jackson.annotation.JsonAnySetter; +import org.hibernate.annotations.IndexColumn; import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.tasks.TaskBasedCaching; +import org.woehlke.twitterwall.oodm.model.tasks.TaskInfo; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import javax.persistence.*; import javax.validation.Valid; @@ -33,17 +37,28 @@ public abstract class AbstractDomainObject implements Do private TaskBasedCaching taskBasedCaching = new TaskBasedCaching(); @NotNull - @JoinColumn(name = "fk_created_by_task", nullable = false) + @JoinColumn( + name = "fk_created_by_task", + foreignKey=@ForeignKey(name="fkey_fk_created_by_task"), + nullable = false + ) @ManyToOne(cascade = {REFRESH, DETACH}, fetch = EAGER, optional = false) private Task createdBy; - @JoinColumn(name = "fk_updated_by_task", nullable = true) + @JoinColumn( + name = "fk_updated_by_task", + foreignKey=@ForeignKey(name="fkey_fk_updated_by_task"), + nullable = true + ) @ManyToOne(cascade = {REFRESH, DETACH}, fetch = EAGER, optional = true) private Task updatedBy; @Transient private Map extraData = new HashMap<>(); + @Transient + private int[] indices; + @Transient public Boolean isCached(TaskType taskType, long timeToLive){ return this.taskBasedCaching.isCached(taskType,timeToLive); @@ -59,6 +74,10 @@ protected AbstractDomainObject(Task createdBy, Task updatedBy) { } protected AbstractDomainObject() { + this.createdBy = null; + this.updatedBy = null; + this.taskInfo = new TaskInfo(); + this.taskBasedCaching = new TaskBasedCaching(); } /** @@ -82,6 +101,13 @@ public void setExtraData(Map extraData) { this.extraData = extraData; } + public int[] getIndices() { + return indices; + } + + public void setIndices(int[] indices) { + this.indices = indices; + } @Override public String toString() { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java similarity index 89% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java index 3a164873..496788e0 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/CountedEntities.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/CountedEntities.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.parts; import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithValidation; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithValidation; import javax.persistence.Embeddable; import javax.persistence.Transient; @@ -76,6 +76,12 @@ public class CountedEntities implements Serializable,DomainObjectWithValidation @NotNull private Long userprofile2url=0L; + @NotNull + private Long userList2Members=0L; + + @NotNull + private Long userList2Subcriber=0L; + public CountedEntities() { } @@ -100,7 +106,9 @@ public Long getTotalNumberOfRows(){ userprofile2media + userprofile2mention + userprofile2tickersymbol + - userprofile2url; + userprofile2url + + userList2Members + + userList2Subcriber; } public Long getCountUser() { @@ -263,6 +271,22 @@ public void setUserprofile2url(Long userprofile2url) { this.userprofile2url = userprofile2url; } + public Long getUserList2Members() { + return userList2Members; + } + + public void setUserList2Members(Long userList2Members) { + this.userList2Members = userList2Members; + } + + public Long getUserList2Subcriber() { + return userList2Subcriber; + } + + public void setUserList2Subcriber(Long userList2Subcriber) { + this.userList2Subcriber = userList2Subcriber; + } + @Override public String toString() { return "CountedEntities{" + @@ -286,6 +310,8 @@ public String toString() { ", userprofile2mention=" + userprofile2mention + ", userprofile2tickersymbol=" + userprofile2tickersymbol + ", userprofile2url=" + userprofile2url + + ", countUserList2Members=" + userList2Members + + ", countUserList2Subcriber=" + userList2Subcriber + '}'; } @@ -334,7 +360,11 @@ public boolean equals(Object o) { return false; if (getUserprofile2tickersymbol() != null ? !getUserprofile2tickersymbol().equals(that.getUserprofile2tickersymbol()) : that.getUserprofile2tickersymbol() != null) return false; - return getUserprofile2url() != null ? getUserprofile2url().equals(that.getUserprofile2url()) : that.getUserprofile2url() == null; + if (getUserprofile2url() != null ? !getUserprofile2url().equals(that.getUserprofile2url()) : that.getUserprofile2url() != null) + return false; + if (getUserList2Members() != null ? !getUserList2Members().equals(that.getUserList2Members()) : that.getUserList2Members() != null) + return false; + return getUserList2Subcriber() != null ? getUserList2Subcriber().equals(that.getUserList2Subcriber()) : that.getUserList2Subcriber() == null; } @Override @@ -359,6 +389,8 @@ public int hashCode() { result = 31 * result + (getUserprofile2mention() != null ? getUserprofile2mention().hashCode() : 0); result = 31 * result + (getUserprofile2tickersymbol() != null ? getUserprofile2tickersymbol().hashCode() : 0); result = 31 * result + (getUserprofile2url() != null ? getUserprofile2url().hashCode() : 0); + result = 31 * result + (getUserList2Members() != null ? getUserList2Members().hashCode() : 0); + result = 31 * result + (getUserList2Subcriber() != null ? getUserList2Subcriber().hashCode() : 0); return result; } @@ -425,6 +457,12 @@ public boolean isValid() { if(userprofile2url == null){ return false; } + if(userList2Members == null){ + return false; + } + if(userList2Subcriber == null){ + return false; + } if(countUser < 0){ return false; } @@ -479,6 +517,12 @@ public boolean isValid() { if(userprofile2url < 0){ return false; } + if(userList2Members < 0){ + return false; + } + if(userList2Subcriber < 0){ + return false; + } return true; } } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/parts/MentionStatus.java b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/MentionStatus.java new file mode 100644 index 00000000..6fd3e940 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/parts/MentionStatus.java @@ -0,0 +1,23 @@ +package org.woehlke.twitterwall.oodm.model.parts; + + +//TODO: wieder entfernen +@Deprecated +public enum MentionStatus { + + @Deprecated + NULL, + @Deprecated + FETCHED_FROM_TWITTER, + @Deprecated + CREATED_BY_TEXT, + @Deprecated + HAS_USER__FETCHED_FROM_TWITTER, + @Deprecated + HAS_USER__CREATED_BY_TEXT, + @Deprecated + NO_USER_FOUND__FETCHED_FROM_TWITTER, + @Deprecated + NO_USER_FOUND__CREATED_BY_TEXT + +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskBasedCaching.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java similarity index 53% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskBasedCaching.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java index 1ca0b9c0..95195feb 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskBasedCaching.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskBasedCaching.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.tasks; import org.springframework.validation.annotation.Validated; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import javax.persistence.Column; import javax.persistence.Embeddable; @@ -22,6 +22,9 @@ public class TaskBasedCaching implements Serializable { @Column(name=COLUMN_PREFIX+"update_users") private Date updateUsers; + @Column(name=COLUMN_PREFIX+"update_urls") + private Date updatedUrls; + @Column(name=COLUMN_PREFIX+"update_users_from_mentions") private Date updateUsersFromMentions; @@ -67,6 +70,18 @@ public class TaskBasedCaching implements Serializable { @Column(name=COLUMN_PREFIX+"fetch_lists") private Date getLists; + @Column(name=COLUMN_PREFIX+"fetch_userlist_owners") + private Date fetchUserlistOwners; + + @Column(name=COLUMN_PREFIX+"fetch_userlists_for_users") + private Date fetchListsForUsers; + + @Column(name=COLUMN_PREFIX+"start_garbage_collection") + private Date startGarbageCollection; + + @Column(name=COLUMN_PREFIX+"no_type") + private Date noType; + @Transient public Boolean isCached(TaskType taskType, long timeToLive){ Date lastApiCall = null; @@ -80,22 +95,22 @@ public Boolean isCached(TaskType taskType, long timeToLive){ case UPDATE_USERS: lastApiCall = updateUsers; break; - case UPDATE_USERS_FROM_MENTIONS: + case UPDATE_MENTIONS_FOR_USERS: lastApiCall = updateUsersFromMentions; break; + case UPDATE_URLS: + lastApiCall = updatedUrls; + break; case FETCH_USERS_FROM_LIST: lastApiCall = fetchUsersFromList; break; - case CONTROLLER_CREATE_TESTDATA_TWEETS: + case CREATE_TESTDATA_TWEETS: lastApiCall = controllerGetTestdataTweets; break; - case CONTROLLER_CREATE_TESTDATA_USERS: + case CREATE_TESTDATA_USERS: lastApiCall = controllerGetTestdataUser; break; - case CONTROLLER_ADD_USER_FOR_SCREEN_NAME: - lastApiCall = controllerAddUserForScreenName; - break; - case CONTROLLER_CREATE_IMPRINT_USER: + case CREATE_IMPRINT_USER: lastApiCall = controllerCreateImprintUser; break; case REMOVE_OLD_DATA_FROM_STORAGE: @@ -125,6 +140,18 @@ public Boolean isCached(TaskType taskType, long timeToLive){ case FETCH_LISTS: lastApiCall = getLists; break; + case FETCH_USERLIST_OWNERS: + lastApiCall = fetchUserlistOwners; + break; + case FETCH_LISTS_FOR_USERS: + lastApiCall = fetchListsForUsers; + break; + case GARBAGE_COLLECTION: + lastApiCall = startGarbageCollection; + break; + case NULL: + lastApiCall = noType; + break; default: break; } if(lastApiCall == null){ @@ -157,22 +184,22 @@ public void store(TaskType taskType){ case UPDATE_USERS: updateUsers = lastApiCall; break; - case UPDATE_USERS_FROM_MENTIONS: + case UPDATE_MENTIONS_FOR_USERS: updateUsersFromMentions = lastApiCall; break; case FETCH_USERS_FROM_LIST: fetchUsersFromList = lastApiCall; break; - case CONTROLLER_CREATE_TESTDATA_TWEETS: + case UPDATE_URLS: + updatedUrls = lastApiCall; + break; + case CREATE_TESTDATA_TWEETS: controllerGetTestdataTweets = lastApiCall; break; - case CONTROLLER_CREATE_TESTDATA_USERS: + case CREATE_TESTDATA_USERS: controllerGetTestdataUser = lastApiCall; break; - case CONTROLLER_ADD_USER_FOR_SCREEN_NAME: - controllerAddUserForScreenName = lastApiCall; - break; - case CONTROLLER_CREATE_IMPRINT_USER: + case CREATE_IMPRINT_USER: controllerCreateImprintUser = lastApiCall; break; case REMOVE_OLD_DATA_FROM_STORAGE: @@ -201,13 +228,25 @@ public void store(TaskType taskType){ break; case FETCH_LISTS: getLists = lastApiCall; + case FETCH_USERLIST_OWNERS: + fetchUserlistOwners = lastApiCall; + break; + case FETCH_LISTS_FOR_USERS: + fetchListsForUsers = lastApiCall; + break; + case GARBAGE_COLLECTION: + startGarbageCollection = lastApiCall; + break; + case NULL: + noType = lastApiCall; + break; default: break; } } } - public TaskBasedCaching(Date fetchTweetsFromSearch, Date updateTweets, Date updateUsers, Date updateUsersFromMentions, Date fetchUsersFromList, Date controllerGetTestdataTweets, Date controllerGetTestdataUser, Date controllerAddUserForScreenName, Date controllerCreateImprintUser, Date removeOldDataFromStorage, Date fetchFollower, Date fetchFriends, Date getHomeTimeline, Date getUserTimeline, Date getMentions, Date getFavorites, Date getRetweetsOfMe, Date getLists) { + public TaskBasedCaching(Date fetchTweetsFromSearch, Date updateTweets, Date updateUsers, Date updateUsersFromMentions, Date fetchUsersFromList, Date controllerGetTestdataTweets, Date controllerGetTestdataUser, Date controllerAddUserForScreenName, Date controllerCreateImprintUser, Date removeOldDataFromStorage, Date fetchFollower, Date fetchFriends, Date getHomeTimeline, Date getUserTimeline, Date getMentions, Date getFavorites, Date getRetweetsOfMe, Date getLists,Date fetchUserlistOwners,Date fetchListsForUsers,Date startGarbageCollection, Date updatedUrls, Date noType) { this.fetchTweetsFromSearch = fetchTweetsFromSearch; this.updateTweets = updateTweets; this.updateUsers = updateUsers; @@ -226,6 +265,11 @@ public TaskBasedCaching(Date fetchTweetsFromSearch, Date updateTweets, Date upda this.getFavorites = getFavorites; this.getRetweetsOfMe = getRetweetsOfMe; this.getLists = getLists; + this.fetchUserlistOwners = fetchUserlistOwners; + this.fetchListsForUsers = fetchListsForUsers; + this.startGarbageCollection = startGarbageCollection; + this.updatedUrls = updatedUrls; + this.noType = noType; } public TaskBasedCaching() { @@ -246,6 +290,11 @@ public TaskBasedCaching() { this.getFavorites = null; this.getRetweetsOfMe = null; this.getLists = null; + this.fetchUserlistOwners = null; + this.fetchListsForUsers = null; + this.startGarbageCollection = null; + this.updatedUrls = null; + this.noType = null; } public Date getFetchTweetsFromSearch() { @@ -320,6 +369,26 @@ public Date getGetLists() { return getLists; } + public Date getFetchUserlistOwners() { + return fetchUserlistOwners; + } + + public Date getFetchListsForUsers() { + return fetchListsForUsers; + } + + public Date getStartGarbageCollection() { + return startGarbageCollection; + } + + public Date getUpdatedUrls() { + return updatedUrls; + } + + public Date getNoType() { + return noType; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -327,88 +396,101 @@ public boolean equals(Object o) { TaskBasedCaching that = (TaskBasedCaching) o; - if (getFetchTweetsFromSearch() != null ? !getFetchTweetsFromSearch().equals(that.getFetchTweetsFromSearch()) : that.getFetchTweetsFromSearch() != null) - return false; - if (getUpdateTweets() != null ? !getUpdateTweets().equals(that.getUpdateTweets()) : that.getUpdateTweets() != null) - return false; - if (getUpdateUsers() != null ? !getUpdateUsers().equals(that.getUpdateUsers()) : that.getUpdateUsers() != null) + if (fetchTweetsFromSearch != null ? !fetchTweetsFromSearch.equals(that.fetchTweetsFromSearch) : that.fetchTweetsFromSearch != null) return false; - if (getUpdateUsersFromMentions() != null ? !getUpdateUsersFromMentions().equals(that.getUpdateUsersFromMentions()) : that.getUpdateUsersFromMentions() != null) + if (updateTweets != null ? !updateTweets.equals(that.updateTweets) : that.updateTweets != null) return false; + if (updateUsers != null ? !updateUsers.equals(that.updateUsers) : that.updateUsers != null) return false; + if (updatedUrls != null ? !updatedUrls.equals(that.updatedUrls) : that.updatedUrls != null) return false; + if (updateUsersFromMentions != null ? !updateUsersFromMentions.equals(that.updateUsersFromMentions) : that.updateUsersFromMentions != null) return false; - if (getFetchUsersFromList() != null ? !getFetchUsersFromList().equals(that.getFetchUsersFromList()) : that.getFetchUsersFromList() != null) + if (fetchUsersFromList != null ? !fetchUsersFromList.equals(that.fetchUsersFromList) : that.fetchUsersFromList != null) return false; - if (getControllerGetTestdataTweets() != null ? !getControllerGetTestdataTweets().equals(that.getControllerGetTestdataTweets()) : that.getControllerGetTestdataTweets() != null) + if (controllerGetTestdataTweets != null ? !controllerGetTestdataTweets.equals(that.controllerGetTestdataTweets) : that.controllerGetTestdataTweets != null) return false; - if (getControllerGetTestdataUser() != null ? !getControllerGetTestdataUser().equals(that.getControllerGetTestdataUser()) : that.getControllerGetTestdataUser() != null) + if (controllerGetTestdataUser != null ? !controllerGetTestdataUser.equals(that.controllerGetTestdataUser) : that.controllerGetTestdataUser != null) return false; - if (getControllerAddUserForScreenName() != null ? !getControllerAddUserForScreenName().equals(that.getControllerAddUserForScreenName()) : that.getControllerAddUserForScreenName() != null) + if (controllerAddUserForScreenName != null ? !controllerAddUserForScreenName.equals(that.controllerAddUserForScreenName) : that.controllerAddUserForScreenName != null) return false; - if (getControllerCreateImprintUser() != null ? !getControllerCreateImprintUser().equals(that.getControllerCreateImprintUser()) : that.getControllerCreateImprintUser() != null) + if (controllerCreateImprintUser != null ? !controllerCreateImprintUser.equals(that.controllerCreateImprintUser) : that.controllerCreateImprintUser != null) return false; - if (getRemoveOldDataFromStorage() != null ? !getRemoveOldDataFromStorage().equals(that.getRemoveOldDataFromStorage()) : that.getRemoveOldDataFromStorage() != null) + if (removeOldDataFromStorage != null ? !removeOldDataFromStorage.equals(that.removeOldDataFromStorage) : that.removeOldDataFromStorage != null) return false; - if (getFetchFollower() != null ? !getFetchFollower().equals(that.getFetchFollower()) : that.getFetchFollower() != null) + if (fetchFollower != null ? !fetchFollower.equals(that.fetchFollower) : that.fetchFollower != null) return false; - if (getFetchFriends() != null ? !getFetchFriends().equals(that.getFetchFriends()) : that.getFetchFriends() != null) + if (fetchFriends != null ? !fetchFriends.equals(that.fetchFriends) : that.fetchFriends != null) return false; + if (getHomeTimeline != null ? !getHomeTimeline.equals(that.getHomeTimeline) : that.getHomeTimeline != null) return false; - if (getGetHomeTimeline() != null ? !getGetHomeTimeline().equals(that.getGetHomeTimeline()) : that.getGetHomeTimeline() != null) + if (getUserTimeline != null ? !getUserTimeline.equals(that.getUserTimeline) : that.getUserTimeline != null) return false; - if (getGetUserTimeline() != null ? !getGetUserTimeline().equals(that.getGetUserTimeline()) : that.getGetUserTimeline() != null) + if (getMentions != null ? !getMentions.equals(that.getMentions) : that.getMentions != null) return false; + if (getFavorites != null ? !getFavorites.equals(that.getFavorites) : that.getFavorites != null) return false; + if (getRetweetsOfMe != null ? !getRetweetsOfMe.equals(that.getRetweetsOfMe) : that.getRetweetsOfMe != null) return false; - if (getGetMentions() != null ? !getGetMentions().equals(that.getGetMentions()) : that.getGetMentions() != null) + if (getLists != null ? !getLists.equals(that.getLists) : that.getLists != null) return false; + if (fetchUserlistOwners != null ? !fetchUserlistOwners.equals(that.fetchUserlistOwners) : that.fetchUserlistOwners != null) return false; - if (getGetFavorites() != null ? !getGetFavorites().equals(that.getGetFavorites()) : that.getGetFavorites() != null) + if (fetchListsForUsers != null ? !fetchListsForUsers.equals(that.fetchListsForUsers) : that.fetchListsForUsers != null) return false; - if (getGetRetweetsOfMe() != null ? !getGetRetweetsOfMe().equals(that.getGetRetweetsOfMe()) : that.getGetRetweetsOfMe() != null) + if (startGarbageCollection != null ? !startGarbageCollection.equals(that.startGarbageCollection) : that.startGarbageCollection != null) return false; - return getGetLists() != null ? getGetLists().equals(that.getGetLists()) : that.getGetLists() == null; + return noType != null ? noType.equals(that.noType) : that.noType == null; } @Override public int hashCode() { - int result = getFetchTweetsFromSearch() != null ? getFetchTweetsFromSearch().hashCode() : 0; - result = 31 * result + (getUpdateTweets() != null ? getUpdateTweets().hashCode() : 0); - result = 31 * result + (getUpdateUsers() != null ? getUpdateUsers().hashCode() : 0); - result = 31 * result + (getUpdateUsersFromMentions() != null ? getUpdateUsersFromMentions().hashCode() : 0); - result = 31 * result + (getFetchUsersFromList() != null ? getFetchUsersFromList().hashCode() : 0); - result = 31 * result + (getControllerGetTestdataTweets() != null ? getControllerGetTestdataTweets().hashCode() : 0); - result = 31 * result + (getControllerGetTestdataUser() != null ? getControllerGetTestdataUser().hashCode() : 0); - result = 31 * result + (getControllerAddUserForScreenName() != null ? getControllerAddUserForScreenName().hashCode() : 0); - result = 31 * result + (getControllerCreateImprintUser() != null ? getControllerCreateImprintUser().hashCode() : 0); - result = 31 * result + (getRemoveOldDataFromStorage() != null ? getRemoveOldDataFromStorage().hashCode() : 0); - result = 31 * result + (getFetchFollower() != null ? getFetchFollower().hashCode() : 0); - result = 31 * result + (getFetchFriends() != null ? getFetchFriends().hashCode() : 0); - result = 31 * result + (getGetHomeTimeline() != null ? getGetHomeTimeline().hashCode() : 0); - result = 31 * result + (getGetUserTimeline() != null ? getGetUserTimeline().hashCode() : 0); - result = 31 * result + (getGetMentions() != null ? getGetMentions().hashCode() : 0); - result = 31 * result + (getGetFavorites() != null ? getGetFavorites().hashCode() : 0); - result = 31 * result + (getGetRetweetsOfMe() != null ? getGetRetweetsOfMe().hashCode() : 0); - result = 31 * result + (getGetLists() != null ? getGetLists().hashCode() : 0); + int result = fetchTweetsFromSearch != null ? fetchTweetsFromSearch.hashCode() : 0; + result = 31 * result + (updateTweets != null ? updateTweets.hashCode() : 0); + result = 31 * result + (updateUsers != null ? updateUsers.hashCode() : 0); + result = 31 * result + (updatedUrls != null ? updatedUrls.hashCode() : 0); + result = 31 * result + (updateUsersFromMentions != null ? updateUsersFromMentions.hashCode() : 0); + result = 31 * result + (fetchUsersFromList != null ? fetchUsersFromList.hashCode() : 0); + result = 31 * result + (controllerGetTestdataTweets != null ? controllerGetTestdataTweets.hashCode() : 0); + result = 31 * result + (controllerGetTestdataUser != null ? controllerGetTestdataUser.hashCode() : 0); + result = 31 * result + (controllerAddUserForScreenName != null ? controllerAddUserForScreenName.hashCode() : 0); + result = 31 * result + (controllerCreateImprintUser != null ? controllerCreateImprintUser.hashCode() : 0); + result = 31 * result + (removeOldDataFromStorage != null ? removeOldDataFromStorage.hashCode() : 0); + result = 31 * result + (fetchFollower != null ? fetchFollower.hashCode() : 0); + result = 31 * result + (fetchFriends != null ? fetchFriends.hashCode() : 0); + result = 31 * result + (getHomeTimeline != null ? getHomeTimeline.hashCode() : 0); + result = 31 * result + (getUserTimeline != null ? getUserTimeline.hashCode() : 0); + result = 31 * result + (getMentions != null ? getMentions.hashCode() : 0); + result = 31 * result + (getFavorites != null ? getFavorites.hashCode() : 0); + result = 31 * result + (getRetweetsOfMe != null ? getRetweetsOfMe.hashCode() : 0); + result = 31 * result + (getLists != null ? getLists.hashCode() : 0); + result = 31 * result + (fetchUserlistOwners != null ? fetchUserlistOwners.hashCode() : 0); + result = 31 * result + (fetchListsForUsers != null ? fetchListsForUsers.hashCode() : 0); + result = 31 * result + (startGarbageCollection != null ? startGarbageCollection.hashCode() : 0); + result = 31 * result + (noType != null ? noType.hashCode() : 0); return result; } @Override public String toString() { return "TaskBasedCaching{" + - "fetchTweetsFromSearch=" + fetchTweetsFromSearch + - ", updateTweets=" + updateTweets + - ", updateUsers=" + updateUsers + - ", updateUsersFromMentions=" + updateUsersFromMentions + - ", fetchUsersFromList=" + fetchUsersFromList + - ", controllerGetTestdataTweets=" + controllerGetTestdataTweets + - ", controllerGetTestdataUser=" + controllerGetTestdataUser + - ", controllerAddUserForScreenName=" + controllerAddUserForScreenName + - ", controllerCreateImprintUser=" + controllerCreateImprintUser + - ", removeOldDataFromStorage=" + removeOldDataFromStorage + - ", fetchFollower=" + fetchFollower + - ", fetchFriends=" + fetchFriends + - ", getHomeTimeline=" + getHomeTimeline + - ", getUserTimeline=" + getUserTimeline + - ", getMentions=" + getMentions + - ", getFavorites=" + getFavorites + - ", getRetweetsOfMe=" + getRetweetsOfMe + - ", getLists=" + getLists + - '}'; + "fetchTweetsFromSearch=" + fetchTweetsFromSearch + + ", updateTweets=" + updateTweets + + ", updateUsers=" + updateUsers + + ", updatedUrls=" + updatedUrls + + ", updateUsersFromMentions=" + updateUsersFromMentions + + ", fetchUsersFromList=" + fetchUsersFromList + + ", controllerGetTestdataTweets=" + controllerGetTestdataTweets + + ", controllerGetTestdataUser=" + controllerGetTestdataUser + + ", controllerAddUserForScreenName=" + controllerAddUserForScreenName + + ", controllerCreateImprintUser=" + controllerCreateImprintUser + + ", removeOldDataFromStorage=" + removeOldDataFromStorage + + ", fetchFollower=" + fetchFollower + + ", fetchFriends=" + fetchFriends + + ", getHomeTimeline=" + getHomeTimeline + + ", getUserTimeline=" + getUserTimeline + + ", getMentions=" + getMentions + + ", getFavorites=" + getFavorites + + ", getRetweetsOfMe=" + getRetweetsOfMe + + ", getLists=" + getLists + + ", fetchUserlistOwners=" + fetchUserlistOwners + + ", fetchListsForUsers=" + fetchListsForUsers + + ", startGarbageCollection=" + startGarbageCollection + + ", noType=" + noType + + '}'; } private final static String COLUMN_PREFIX = "cache_"; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java new file mode 100644 index 00000000..b7238565 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskInfo.java @@ -0,0 +1,402 @@ +package org.woehlke.twitterwall.oodm.model.tasks; + +import org.springframework.validation.annotation.Validated; +import org.woehlke.twitterwall.oodm.model.Task; + +import javax.persistence.Column; +import javax.persistence.Embeddable; +import javax.persistence.Transient; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * Created by tw on 10.07.17. + */ +@Validated +@Embeddable +public class TaskInfo implements Serializable { + + @NotNull + @Column(nullable = false,name="fetch_tweets_from_search") + private Boolean fetchTweetsFromSearch = false; + + @NotNull + @Column(nullable = false,name="update_tweets") + private Boolean updateTweets = false; + + @NotNull + @Column(nullable = false,name="update_users") + private Boolean updatedUsers = false; + + @NotNull + @Column(nullable = false,name="update_urls") + private Boolean updatedUrls = false; + + @NotNull + @Column(nullable = false,name="update_users_from_mentions") + private Boolean updateUsersFromMentions = false; + + @NotNull + @Column(nullable = false,name="fetch_users_from_list") + private Boolean fetchUsersFromList = false; + + @NotNull + @Column(nullable = false,name="controller_create_testdata_tweets") + private Boolean controllerCreateTestdataTweets = false; + + @NotNull + @Column(nullable = false,name="controller_create_testdata_users") + private Boolean controllerCreateTestdataUsers = false; + + @NotNull + @Column(nullable = false,name="controller_create_imprint_user") + private Boolean controllerCreateImprintUser = false; + + @NotNull + @Column(nullable = false,name="remove_old_data_from_storage") + private Boolean removeOldDataFromStorage = false; + + @NotNull + @Column(nullable = false,name="fetch_follower") + private Boolean fetchFollower = false; + + @NotNull + @Column(nullable = false,name="fetch_friends") + private Boolean fetchFriends = false; + + @NotNull + @Column(nullable = false,name="fetch_home_timeline") + private Boolean getHomeTimeline = false; + + @NotNull + @Column(nullable = false,name="fetch_user_timeline") + private Boolean getUserTimeline = false; + + @NotNull + @Column(nullable = false,name="fetch_mentions") + private Boolean getMentions = false; + + @NotNull + @Column(nullable = false,name="fetch_favorites") + private Boolean getFavorites = false; + + @NotNull + @Column(nullable = false,name="fetch_retweets_of_me") + private Boolean getRetweetsOfMe = false; + + @NotNull + @Column(nullable = false,name="fetch_lists") + private Boolean getLists = false; + + @NotNull + @Column(nullable = false,name="fetch_userlist_owners") + private Boolean fetchUserlistOwners = false; + + @NotNull + @Column(nullable = false,name="fetch_userlists_for_users") + private Boolean fetchListsForUsers = true; + + @NotNull + @Column(nullable = false,name="start_garbage_collection") + private Boolean startGarbageCollection = false; + + @NotNull + @Column(nullable = false,name="no_type") + private Boolean noType = false; + + @Transient + public void setTaskInfoFromTask(Task task) { + if(task!=null) { + TaskType useCase = task.getTaskType(); + switch (useCase) { + case FETCH_TWEETS_FROM_SEARCH: + this.fetchTweetsFromSearch = true; + break; + case UPDATE_TWEETS: + this.updateTweets = true; + break; + case UPDATE_USERS: + this.updatedUsers = true; + break; + case UPDATE_MENTIONS_FOR_USERS: + this.updateUsersFromMentions = true; + break; + case UPDATE_URLS: + this.updatedUrls = true; + break; + case FETCH_USERS_FROM_LIST: + this.fetchUsersFromList = true; + break; + case CREATE_TESTDATA_TWEETS: + this.controllerCreateTestdataTweets = true; + break; + case CREATE_TESTDATA_USERS: + this.controllerCreateTestdataUsers = true; + break; + case CREATE_IMPRINT_USER: + controllerCreateImprintUser = true; + break; + case REMOVE_OLD_DATA_FROM_STORAGE: + removeOldDataFromStorage = true; + break; + case FETCH_FOLLOWER: + fetchFollower = true; + break; + case FETCH_FRIENDS: + fetchFriends = true; + break; + case FETCH_HOME_TIMELINE: + getHomeTimeline = true; + break; + case FETCH_USER_TIMELINE: + getUserTimeline = true; + break; + case FETCH_MENTIONS: + getMentions = true; + break; + case FETCH_FAVORITES: + getFavorites = true; + break; + case FETCH_RETWEETS_OF_ME: + getRetweetsOfMe = true; + break; + case FETCH_LISTS: + getLists = true; + break; + case FETCH_USERLIST_OWNERS: + fetchUserlistOwners = true; + break; + case FETCH_LISTS_FOR_USERS: + fetchListsForUsers = true; + break; + case GARBAGE_COLLECTION: + startGarbageCollection = true; + break; + case NULL: + noType = true; + break; + default: + break; + } + } + } + + public TaskInfo() { + } + + public TaskInfo(Boolean fetchTweetsFromSearch, Boolean updateTweets, Boolean updatedUsers, Boolean updateUsersFromMentions, Boolean fetchUsersFromList, Boolean controllerCreateTestdataTweets, Boolean controllerCreateTestdataUsers, Boolean controllerCreateImprintUser, Boolean removeOldDataFromStorage, Boolean fetchFollower, Boolean fetchFriends,Boolean fetchUserlistOwners, Boolean updatedUrls, Boolean noType) { + this.fetchTweetsFromSearch = fetchTweetsFromSearch; + this.updateTweets = updateTweets; + this.updatedUsers = updatedUsers; + this.updateUsersFromMentions = updateUsersFromMentions; + this.fetchUsersFromList = fetchUsersFromList; + this.controllerCreateTestdataTweets = controllerCreateTestdataTweets; + this.controllerCreateTestdataUsers = controllerCreateTestdataUsers; + this.controllerCreateImprintUser = controllerCreateImprintUser; + this.removeOldDataFromStorage = removeOldDataFromStorage; + this.fetchFollower = fetchFollower; + this.fetchFriends = fetchFriends; + this.fetchUserlistOwners = fetchUserlistOwners; + this.updatedUrls = updatedUrls; + this.noType = noType; + } + + public Boolean getFetchTweetsFromSearch() { + return fetchTweetsFromSearch; + } + + public Boolean getUpdateTweets() { + return updateTweets; + } + + public Boolean getUpdatedUsers() { + return updatedUsers; + } + + public Boolean getUpdateUsersFromMentions() { + return updateUsersFromMentions; + } + + public Boolean getFetchUsersFromList() { + return fetchUsersFromList; + } + + public Boolean getControllerCreateTestdataTweets() { + return controllerCreateTestdataTweets; + } + + public Boolean getControllerCreateTestdataUsers() { + return controllerCreateTestdataUsers; + } + + public Boolean getControllerCreateImprintUser() { + return controllerCreateImprintUser; + } + + public Boolean getRemoveOldDataFromStorage() { + return removeOldDataFromStorage; + } + + public Boolean getFetchFollower() { + return fetchFollower; + } + + public Boolean getFetchFriends() { + return fetchFriends; + } + + public Boolean getGetHomeTimeline() { + return getHomeTimeline; + } + + public Boolean getGetUserTimeline() { + return getUserTimeline; + } + + public Boolean getGetMentions() { + return getMentions; + } + + public Boolean getGetFavorites() { + return getFavorites; + } + + public Boolean getGetRetweetsOfMe() { + return getRetweetsOfMe; + } + + public Boolean getGetLists() { + return getLists; + } + + public Boolean getFetchUserlistOwners() { + return fetchUserlistOwners; + } + + public Boolean getFetchListsForUsers() { + return fetchListsForUsers; + } + + public Boolean getStartGarbageCollection() { + return startGarbageCollection; + } + + public Boolean getUpdatedUrls() { + return updatedUrls; + } + + public Boolean getNoType() { + return noType; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof TaskInfo)) return false; + + TaskInfo taskInfo = (TaskInfo) o; + + if (fetchTweetsFromSearch != null ? !fetchTweetsFromSearch.equals(taskInfo.fetchTweetsFromSearch) : taskInfo.fetchTweetsFromSearch != null) + return false; + if (updateTweets != null ? !updateTweets.equals(taskInfo.updateTweets) : taskInfo.updateTweets != null) + return false; + if (updatedUsers != null ? !updatedUsers.equals(taskInfo.updatedUsers) : taskInfo.updatedUsers != null) + return false; + if (updatedUrls != null ? !updatedUrls.equals(taskInfo.updatedUrls) : taskInfo.updatedUrls != null) + return false; + if (updateUsersFromMentions != null ? !updateUsersFromMentions.equals(taskInfo.updateUsersFromMentions) : taskInfo.updateUsersFromMentions != null) + return false; + if (fetchUsersFromList != null ? !fetchUsersFromList.equals(taskInfo.fetchUsersFromList) : taskInfo.fetchUsersFromList != null) + return false; + if (controllerCreateTestdataTweets != null ? !controllerCreateTestdataTweets.equals(taskInfo.controllerCreateTestdataTweets) : taskInfo.controllerCreateTestdataTweets != null) + return false; + if (controllerCreateTestdataUsers != null ? !controllerCreateTestdataUsers.equals(taskInfo.controllerCreateTestdataUsers) : taskInfo.controllerCreateTestdataUsers != null) + return false; + if (controllerCreateImprintUser != null ? !controllerCreateImprintUser.equals(taskInfo.controllerCreateImprintUser) : taskInfo.controllerCreateImprintUser != null) + return false; + if (removeOldDataFromStorage != null ? !removeOldDataFromStorage.equals(taskInfo.removeOldDataFromStorage) : taskInfo.removeOldDataFromStorage != null) + return false; + if (fetchFollower != null ? !fetchFollower.equals(taskInfo.fetchFollower) : taskInfo.fetchFollower != null) + return false; + if (fetchFriends != null ? !fetchFriends.equals(taskInfo.fetchFriends) : taskInfo.fetchFriends != null) + return false; + if (getHomeTimeline != null ? !getHomeTimeline.equals(taskInfo.getHomeTimeline) : taskInfo.getHomeTimeline != null) + return false; + if (getUserTimeline != null ? !getUserTimeline.equals(taskInfo.getUserTimeline) : taskInfo.getUserTimeline != null) + return false; + if (getMentions != null ? !getMentions.equals(taskInfo.getMentions) : taskInfo.getMentions != null) + return false; + if (getFavorites != null ? !getFavorites.equals(taskInfo.getFavorites) : taskInfo.getFavorites != null) + return false; + if (getRetweetsOfMe != null ? !getRetweetsOfMe.equals(taskInfo.getRetweetsOfMe) : taskInfo.getRetweetsOfMe != null) + return false; + if (getLists != null ? !getLists.equals(taskInfo.getLists) : taskInfo.getLists != null) return false; + if (fetchUserlistOwners != null ? !fetchUserlistOwners.equals(taskInfo.fetchUserlistOwners) : taskInfo.fetchUserlistOwners != null) + return false; + if (fetchListsForUsers != null ? !fetchListsForUsers.equals(taskInfo.fetchListsForUsers) : taskInfo.fetchListsForUsers != null) + return false; + if (startGarbageCollection != null ? !startGarbageCollection.equals(taskInfo.startGarbageCollection) : taskInfo.startGarbageCollection != null) + return false; + return noType != null ? noType.equals(taskInfo.noType) : taskInfo.noType == null; + } + + @Override + public int hashCode() { + int result = fetchTweetsFromSearch != null ? fetchTweetsFromSearch.hashCode() : 0; + result = 31 * result + (updateTweets != null ? updateTweets.hashCode() : 0); + result = 31 * result + (updatedUsers != null ? updatedUsers.hashCode() : 0); + result = 31 * result + (updatedUrls != null ? updatedUrls.hashCode() : 0); + result = 31 * result + (updateUsersFromMentions != null ? updateUsersFromMentions.hashCode() : 0); + result = 31 * result + (fetchUsersFromList != null ? fetchUsersFromList.hashCode() : 0); + result = 31 * result + (controllerCreateTestdataTweets != null ? controllerCreateTestdataTweets.hashCode() : 0); + result = 31 * result + (controllerCreateTestdataUsers != null ? controllerCreateTestdataUsers.hashCode() : 0); + result = 31 * result + (controllerCreateImprintUser != null ? controllerCreateImprintUser.hashCode() : 0); + result = 31 * result + (removeOldDataFromStorage != null ? removeOldDataFromStorage.hashCode() : 0); + result = 31 * result + (fetchFollower != null ? fetchFollower.hashCode() : 0); + result = 31 * result + (fetchFriends != null ? fetchFriends.hashCode() : 0); + result = 31 * result + (getHomeTimeline != null ? getHomeTimeline.hashCode() : 0); + result = 31 * result + (getUserTimeline != null ? getUserTimeline.hashCode() : 0); + result = 31 * result + (getMentions != null ? getMentions.hashCode() : 0); + result = 31 * result + (getFavorites != null ? getFavorites.hashCode() : 0); + result = 31 * result + (getRetweetsOfMe != null ? getRetweetsOfMe.hashCode() : 0); + result = 31 * result + (getLists != null ? getLists.hashCode() : 0); + result = 31 * result + (fetchUserlistOwners != null ? fetchUserlistOwners.hashCode() : 0); + result = 31 * result + (fetchListsForUsers != null ? fetchListsForUsers.hashCode() : 0); + result = 31 * result + (startGarbageCollection != null ? startGarbageCollection.hashCode() : 0); + result = 31 * result + (noType != null ? noType.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "TaskInfo{" + + "fetchTweetsFromSearch=" + fetchTweetsFromSearch + + ", updateTweets=" + updateTweets + + ", updatedUsers=" + updatedUsers + + ", updatedUrls=" + updatedUrls + + ", updateUsersFromMentions=" + updateUsersFromMentions + + ", fetchUsersFromList=" + fetchUsersFromList + + ", controllerCreateTestdataTweets=" + controllerCreateTestdataTweets + + ", controllerCreateTestdataUsers=" + controllerCreateTestdataUsers + + ", controllerCreateImprintUser=" + controllerCreateImprintUser + + ", removeOldDataFromStorage=" + removeOldDataFromStorage + + ", fetchFollower=" + fetchFollower + + ", fetchFriends=" + fetchFriends + + ", getHomeTimeline=" + getHomeTimeline + + ", getUserTimeline=" + getUserTimeline + + ", getMentions=" + getMentions + + ", getFavorites=" + getFavorites + + ", getRetweetsOfMe=" + getRetweetsOfMe + + ", getLists=" + getLists + + ", fetchUserlistOwners=" + fetchUserlistOwners + + ", fetchListsForUsers=" + fetchListsForUsers + + ", startGarbageCollection=" + startGarbageCollection + + ", noType=" + noType + + '}'; + } + + @Transient + public String getUniqueId() { + return toString(); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskSendType.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskSendType.java new file mode 100644 index 00000000..c21e4515 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskSendType.java @@ -0,0 +1,9 @@ +package org.woehlke.twitterwall.oodm.model.tasks; + +public enum TaskSendType { + + NULL, + NO_MQ, + SEND_AND_WAIT_FOR_RESULT, + FIRE_AND_FORGET +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskStatus.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskStatus.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskStatus.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskStatus.java index bf6b7758..8f6fcf26 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskStatus.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskStatus.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.tasks; /** * Created by tw on 10.07.17. @@ -11,5 +11,6 @@ public enum TaskStatus { ERROR, FINAL_ERROR, WARN, + STOPPED_BY_TIMEOUT, NULL } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskType.java b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java similarity index 54% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskType.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java index 592cb7b3..c6ec311d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/parts/TaskType.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/tasks/TaskType.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.parts; +package org.woehlke.twitterwall.oodm.model.tasks; /** * Created by tw on 09.07.17. @@ -14,15 +14,17 @@ public enum TaskType { FETCH_RETWEETS_OF_ME, FETCH_LISTS, FETCH_USERS_FROM_LIST, + FETCH_LISTS_FOR_USERS, + FETCH_USERLIST_OWNERS, FETCH_FOLLOWER, FETCH_FRIENDS, UPDATE_TWEETS, UPDATE_USERS, - UPDATE_USERS_FROM_MENTIONS, - CONTROLLER_CREATE_IMPRINT_USER, - CONTROLLER_CREATE_TESTDATA_TWEETS, - CONTROLLER_CREATE_TESTDATA_USERS, - CONTROLLER_ADD_USER_FOR_SCREEN_NAME, - REMOVE_OLD_DATA_FROM_STORAGE - + UPDATE_MENTIONS_FOR_USERS, + UPDATE_URLS, + CREATE_IMPRINT_USER, + CREATE_TESTDATA_TWEETS, + CREATE_TESTDATA_USERS, + REMOVE_OLD_DATA_FROM_STORAGE, + GARBAGE_COLLECTION } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/HashTagCounted.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/HashTagCounted.java similarity index 86% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/HashTagCounted.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/HashTagCounted.java index 33eb137a..323dbe38 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/HashTagCounted.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/HashTagCounted.java @@ -1,16 +1,17 @@ -package org.woehlke.twitterwall.oodm.entities.transients; +package org.woehlke.twitterwall.oodm.model.transients; import org.springframework.data.domain.Pageable; +import org.woehlke.twitterwall.oodm.model.entities.Entities; import java.io.Serializable; /** * Created by tw on 14.06.17. * - * @see org.woehlke.twitterwall.oodm.entities.HashTag - * @see org.woehlke.twitterwall.oodm.entities.parts.Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.HashTag + * @see Entities + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllTweet2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllUser2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsTweets(Pageable) diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2Entity.java similarity index 98% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2Entity.java index 6cbe1c78..8cb476c3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2Entity.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2Entity.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.transients; +package org.woehlke.twitterwall.oodm.model.transients; import java.io.Serializable; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java similarity index 72% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java index 8d82de0c..eaf8c959 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/Object2EntityTable.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/Object2EntityTable.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.transients; +package org.woehlke.twitterwall.oodm.model.transients; public enum Object2EntityTable { @@ -11,7 +11,9 @@ public enum Object2EntityTable { USERPROFILE_MEDIA, USERPROFILE_MENTION, USERPROFILE_TICKERSYMBOL, - USERPROFILE_URL; + USERPROFILE_URL, + USERLIST_MEMBERS, + USERLIST_SUBCRIBER; public String getTableName() { return this.name().toLowerCase(); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllTweets2HashTagsRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllTweets2HashTagsRowMapper.java similarity index 80% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllTweets2HashTagsRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllTweets2HashTagsRowMapper.java index dc1aa061..4e80133b 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllTweets2HashTagsRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllTweets2HashTagsRowMapper.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import java.sql.ResultSet; import java.sql.SQLException; @@ -9,7 +9,7 @@ public class CountAllTweets2HashTagsRowMapper implements RowMapper { /** - * @see org.woehlke.twitterwall.oodm.entities.HashTag + * @see org.woehlke.twitterwall.oodm.model.HashTag */ public final static String SQL_COUNT_ALL_TWEET_2_HASHTAG = "select count(tweet_id) as number_of_tweets,hash_tags_id,text from tweet_hashtag,hashtag where hashtag.id = hash_tags_id group by hash_tags_id,hashtag.id order by number_of_tweets desc"; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllUsers2HashTagsRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllUsers2HashTagsRowMapper.java similarity index 84% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllUsers2HashTagsRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllUsers2HashTagsRowMapper.java index 6a46d23c..c10a8382 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/CountAllUsers2HashTagsRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/CountAllUsers2HashTagsRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/RowMapperCount.java similarity index 82% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/RowMapperCount.java index 41048500..f95d12ee 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/RowMapperCount.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/RowMapperCount.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2HashTagRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2HashTagRowMapper.java index a3fb2dbc..8f89a24d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2HashTagRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2HashTagRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MediaRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MediaRowMapper.java index 71eb4081..2ebe1e2a 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MediaRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MediaRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MentionRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MentionRowMapper.java index 296e8d37..58cefd15 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2MentionRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2MentionRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2TickerSymbolRowMapper.java similarity index 69% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2TickerSymbolRowMapper.java index bc3d8642..75f6b4b2 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2TickerSymbolRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2TickerSymbolRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2UrlRowMapper.java similarity index 67% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2UrlRowMapper.java index 202ed6c5..0dfab941 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/Tweet2UrlRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/Tweet2UrlRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2HashTagRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2HashTagRowMapper.java index 52be0c9f..7222f149 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2HashTagRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2HashTagRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MediaRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MediaRowMapper.java index d42cf5dc..e78649b6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MediaRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MediaRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MentionRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MentionRowMapper.java index ce72ea4c..99107388 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2MentionRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2MentionRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2TickerSymbolRowMapper.java similarity index 69% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2TickerSymbolRowMapper.java index 98022530..727ac3e6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2TickerSymbolRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2TickerSymbolRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2UrlRowMapper.java similarity index 68% rename from src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java rename to src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2UrlRowMapper.java index 0fab56ac..783973af 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/entities/transients/mapper/User2UrlRowMapper.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/User2UrlRowMapper.java @@ -1,8 +1,8 @@ -package org.woehlke.twitterwall.oodm.entities.transients.mapper; +package org.woehlke.twitterwall.oodm.model.transients.mapper; import org.springframework.jdbc.core.RowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; -import org.woehlke.twitterwall.oodm.entities.transients.Object2EntityTable; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2MemberRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2MemberRowMapper.java new file mode 100644 index 00000000..e0493522 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2MemberRowMapper.java @@ -0,0 +1,20 @@ +package org.woehlke.twitterwall.oodm.model.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class UserList2MemberRowMapper implements RowMapper { + + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("user_list_id"), + rs.getLong("members_id"), + Object2EntityTable.USERLIST_MEMBERS + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2SubcriberRowMapper.java b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2SubcriberRowMapper.java new file mode 100644 index 00000000..96de9e21 --- /dev/null +++ b/src/main/java/org/woehlke/twitterwall/oodm/model/transients/mapper/UserList2SubcriberRowMapper.java @@ -0,0 +1,19 @@ +package org.woehlke.twitterwall.oodm.model.transients.mapper; + +import org.springframework.jdbc.core.RowMapper; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; +import org.woehlke.twitterwall.oodm.model.transients.Object2EntityTable; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class UserList2SubcriberRowMapper implements RowMapper { + @Override + public Object2Entity mapRow(ResultSet rs, int rowNum) throws SQLException { + return new Object2Entity( + rs.getLong("user_list_id"), + rs.getLong("subscriber_id"), + Object2EntityTable.USERLIST_SUBCRIBER + ); + } +} diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/HashTagRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/HashTagRepository.java index b560741e..bb342232 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/HashTagRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/HashTagRepository.java @@ -2,7 +2,7 @@ import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.HashTagRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/MediaRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/MediaRepository.java index 376dd684..31d412a5 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/MediaRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/MediaRepository.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.oodm.repositories; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.MediaRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/MentionRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/MentionRepository.java index b098f33a..a8c83ae5 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/MentionRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/MentionRepository.java @@ -3,8 +3,9 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.MentionRepositoryCustom; @@ -18,14 +19,38 @@ public interface MentionRepository extends DomainRepository,MentionRepo List findByIdTwitter(long idTwitter); - Mention findByScreenNameUnique(String screenNameUnique); + @Query(name = "Mention.findByScreenNameUnique") + Mention findByScreenNameUnique(@Param("screenNameUnique") String screenNameUnique); + @Query( - name="Mention.findAllWithoutUser", - countName = "Mention.countAllWithoutUser" + name = "Mention.findAllWithoutUser", + countName = "Mention.countAllWithoutUser" ) Page findAllWithoutUser(Pageable pageRequest); + + @Query( + name = "Mention.findByUserId", + countName = "Mention.countByUserId" + ) + Page findByUserId(@Param("idOfUser") long idOfUser, Pageable pageRequest); + + + @Query( + name = "Mention.findByScreenNameUnique", + countName = "Mention.countByScreenNameUnique" + ) + Page findAllByScreenNameUnique(@Param("screenNameUnique") String screenNameUnique, Pageable pageRequest); + + + @Query( + name = "Mention.findByIdTwitterOfUser", + countName = "Mention.countByIdTwitterOfUser" + ) + Page findByIdTwitterOfUser(@Param("idOfUser") long idOfUser, Pageable pageRequest); + + Mention findByScreenNameUniqueAndIdTwitter(String screenNameUnique,Long idTwitter); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskHistoryRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskHistoryRepository.java index a61cf53b..c5d66ba4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskHistoryRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskHistoryRepository.java @@ -4,8 +4,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TaskHistoryRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskRepository.java index d62137ef..29ceedfc 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TaskRepository.java @@ -2,7 +2,7 @@ import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TaskRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TickerSymbolRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TickerSymbolRepository.java index d1e94df7..706bebd8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TickerSymbolRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TickerSymbolRepository.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.oodm.repositories; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TickerSymbolRepositoryCustom; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java index 48ad6992..cdb6a9ce 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/TweetRepository.java @@ -5,8 +5,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.TweetRepositoryCustom; @@ -26,6 +25,18 @@ public interface TweetRepository extends DomainRepository,TweetRepository ) Page findByHashTag(@Param("hashtagText") String hashtagText, Pageable pageRequest); + @Query(name = "Tweet.findTweetsForMedia") + Page findTweetsForMedia(@Param("media") Media media, Pageable pageRequestTweet); + + @Query(name = "Tweet.findTweetsForMention") + Page findTweetsForMention(@Param("mention") Mention mention, Pageable pageRequestTweet); + + @Query(name = "Tweet.findTweetsForUrl") + Page findTweetsForUrl(@Param("url") Url url, Pageable pageRequestTweet); + + @Query(name = "Tweet.findTweetsForTickerSymbol") + Page findTweetsForTickerSymbol(@Param("tickerSymbol") TickerSymbol tickerSymbol, Pageable pageRequestTweet); + @Query(name = "Tweet.findAllTwitterIds") Page findAllTwitterIds(Pageable pageRequest); @@ -59,6 +70,4 @@ public interface TweetRepository extends DomainRepository,TweetRepository @Query(name="Tweet.getRetweetsOfMe",nativeQuery=true) Page getRetweetsOfMe(Pageable pageRequest); - - } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UrlRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UrlRepository.java index 5c2f52ee..7155acc4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UrlRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UrlRepository.java @@ -1,10 +1,13 @@ package org.woehlke.twitterwall.oodm.repositories; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UrlRepositoryCustom; +import java.util.List; + /** * Created by tw on 15.07.17. */ @@ -12,4 +15,11 @@ public interface UrlRepository extends DomainRepository,UrlRepositoryCustom { Url findByUrl(String url); + + @Query(name = "Url.findRawUrlsFromDescription") + List findRawUrlsFromDescription(); + + @Query(name = "Url.findUrlAndExpandedTheSame") + List findUrlAndExpandedTheSame(); + } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java index e45af413..52ae16a3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserListRepository.java @@ -1,11 +1,18 @@ package org.woehlke.twitterwall.oodm.repositories; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.springframework.data.jpa.repository.Query; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UserListRepositoryCustom; public interface UserListRepository extends DomainRepository,UserListRepositoryCustom { UserList findByIdTwitter(long idTwitter); + + @Query(name="UserList.countUserList2Subcriber",nativeQuery=true) + long countUserList2Subcriber(); + + @Query(name="UserList.countUserList2Members",nativeQuery=true) + long countUserList2Members(); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java index 5004a985..a53e8478 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/UserRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.repositories.custom.UserRepositoryCustom; @@ -51,6 +51,18 @@ public interface UserRepository extends DomainRepository,UserRepositoryCus ) Page findUsersForHashTag(@Param("hashtagText") String hashtagText, Pageable pageRequest); + @Query(name="User.getUsersForMedia") + Page getUsersForMedia(@Param("media") Media media, Pageable pageRequestUser); + + @Query(name="User.getUsersForMention") + Page getUsersForMention(@Param("mention") Mention mention, Pageable pageRequestUser); + + @Query(name="User.getUsersForUrl") + Page getUsersForUrl(@Param("url") Url url, Pageable pageRequestUser); + + @Query(name="User.getUsersForTickerSymbol") + Page getUsersForTickerSymbol(@Param("tickerSymbol") TickerSymbol tickerSymbol, Pageable pageRequestUser); + @Query(name="User.findUsersWhoAreFriendsButNotFollowers") Page findUsersWhoAreFriendsButNotFollowers(Pageable pageRequest); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectEntityRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectEntityRepository.java index c3308e69..d9a0e6c4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectEntityRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectEntityRepository.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; public interface DomainObjectEntityRepository extends DomainObjectMinimalRepository { } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectMinimalRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectMinimalRepository.java index 05b6a067..828e0fd3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectMinimalRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectMinimalRepository.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectMinimal; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectMinimal; public interface DomainObjectMinimalRepository { T findByUniqueId(T domainObject); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectWithEntitiesRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectWithEntitiesRepository.java index 3f567e04..ea988ca1 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectWithEntitiesRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainObjectWithEntitiesRepository.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithEntities; public interface DomainObjectWithEntitiesRepository extends DomainObjectMinimalRepository { } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainRepository.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainRepository.java index 37c5c534..e1cad721 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainRepository.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/common/DomainRepository.java @@ -2,7 +2,7 @@ import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.PagingAndSortingRepository; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; @NoRepositoryBean public interface DomainRepository extends DomainObjectMinimalRepository,PagingAndSortingRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/HashTagRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/HashTagRepositoryCustom.java index 3f116daa..ad803180 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/HashTagRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/HashTagRepositoryCustom.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface HashTagRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MediaRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MediaRepositoryCustom.java index 4d9f0d79..8e8fdc0c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MediaRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MediaRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface MediaRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MentionRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MentionRepositoryCustom.java index d12f29b7..d84839a6 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MentionRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/MentionRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface MentionRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskHistoryRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskHistoryRepositoryCustom.java index e5ce423a..6ad7eee1 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskHistoryRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskHistoryRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface TaskHistoryRepositoryCustom extends DomainObjectMinimalRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskRepositoryCustom.java index 180b2b6d..92914c7d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TaskRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface TaskRepositoryCustom extends DomainObjectMinimalRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TickerSymbolRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TickerSymbolRepositoryCustom.java index 7ed5c557..86b85f31 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TickerSymbolRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TickerSymbolRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface TickerSymbolRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java index 1aad0512..96f06de0 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/TweetRepositoryCustom.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectWithEntitiesRepository; public interface TweetRepositoryCustom extends DomainObjectWithEntitiesRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UrlRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UrlRepositoryCustom.java index 24a1beb1..6022e828 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UrlRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UrlRepositoryCustom.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectEntityRepository; public interface UrlRepositoryCustom extends DomainObjectEntityRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java index c8f5466e..0391be35 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserListRepositoryCustom.java @@ -1,9 +1,10 @@ package org.woehlke.twitterwall.oodm.repositories.custom; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectMinimalRepository; public interface UserListRepositoryCustom extends DomainObjectMinimalRepository { UserList findByUniqueId(UserList domainObject); + } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java index 73d673c0..704be0e0 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/UserRepositoryCustom.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.repositories.common.DomainObjectWithEntitiesRepository; public interface UserRepositoryCustom extends DomainObjectWithEntitiesRepository { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/HashTagRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/HashTagRepositoryImpl.java index a26934a1..225eb037 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/HashTagRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/HashTagRepositoryImpl.java @@ -6,19 +6,19 @@ import org.springframework.data.domain.Pageable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.RowMapperCount; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper; +import org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper; +import org.woehlke.twitterwall.oodm.model.transients.mapper.RowMapperCount; import org.woehlke.twitterwall.oodm.repositories.custom.HashTagRepositoryCustom; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; import java.util.List; -import static org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper.SQL_COUNT_ALL_TWEET_2_HASHTAG; -import static org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper.SQL_COUNT_ALL_USER_2_HASHTAG; +import static org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper.SQL_COUNT_ALL_TWEET_2_HASHTAG; +import static org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper.SQL_COUNT_ALL_USER_2_HASHTAG; @Repository public class HashTagRepositoryImpl implements HashTagRepositoryCustom { @@ -47,7 +47,7 @@ public HashTag findByUniqueId(HashTag domainObject) { } /** - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG */ @Override public Page countAllUser2HashTag(Pageable pageRequest) { @@ -62,7 +62,7 @@ public Page countAllUser2HashTag(Pageable pageRequest) { } /** - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG */ @Override public Page countAllTweet2HashTag(Pageable pageRequest) { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MediaRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MediaRepositoryImpl.java index 2ff4585b..b2ec3290 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MediaRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MediaRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.repositories.custom.MediaRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MentionRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MentionRepositoryImpl.java index 0dd71576..14e55b12 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MentionRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/MentionRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.repositories.custom.MentionRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskHistoryRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskHistoryRepositoryImpl.java index e3e31607..98dbdc33 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskHistoryRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskHistoryRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.repositories.custom.TaskHistoryRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskRepositoryImpl.java index 4fb21726..e8d9eec9 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TaskRepositoryImpl.java @@ -3,7 +3,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Task; +import org.woehlke.twitterwall.oodm.model.Task; import org.woehlke.twitterwall.oodm.repositories.custom.TaskRepositoryCustom; import javax.persistence.EntityManager; @@ -58,6 +58,8 @@ public void deleteAllDomainData() { "delete from hashtag", "delete from tweet", "delete from userprofile", + "delete from userlist_members", + "delete from userlist_subcriber", "delete from userlist", "delete from task_history", "delete from task" diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TickerSymbolRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TickerSymbolRepositoryImpl.java index a74663c9..438a9ec5 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TickerSymbolRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TickerSymbolRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.repositories.custom.TickerSymbolRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java index a0ef4f95..2c963690 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/TweetRepositoryImpl.java @@ -6,9 +6,9 @@ import org.springframework.data.domain.Pageable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.transients.*; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.*; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.transients.*; +import org.woehlke.twitterwall.oodm.model.transients.mapper.*; import org.woehlke.twitterwall.oodm.repositories.custom.TweetRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UrlRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UrlRepositoryImpl.java index ae3c9abb..284f2e93 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UrlRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UrlRepositoryImpl.java @@ -2,7 +2,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.repositories.custom.UrlRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserListRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserListRepositoryImpl.java index aa4c6af5..057c75d0 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserListRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserListRepositoryImpl.java @@ -3,7 +3,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.custom.UserListRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java index e9b91cda..4508e237 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/repositories/custom/impl/UserRepositoryImpl.java @@ -6,9 +6,9 @@ import org.springframework.data.domain.Pageable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.transients.*; -import org.woehlke.twitterwall.oodm.entities.transients.mapper.*; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.transients.*; +import org.woehlke.twitterwall.oodm.model.transients.mapper.*; import org.woehlke.twitterwall.oodm.repositories.custom.UserRepositoryCustom; import javax.persistence.EntityManager; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/CountedEntitiesService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/CountedEntitiesService.java index 861d5179..37f7fe1b 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/CountedEntitiesService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/CountedEntitiesService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; /** * Created by tw on 09.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/HashTagService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/HashTagService.java index 66f8ce9b..4ed15933 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/HashTagService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/HashTagService.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; import org.woehlke.twitterwall.oodm.service.common.DomainService; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/MediaService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/MediaService.java index 6ca77968..e12ccac8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/MediaService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/MediaService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithUrl; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/MentionService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/MentionService.java index be693011..7cc9c9cb 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/MentionService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/MentionService.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithScreenName; @@ -20,4 +20,9 @@ public interface MentionService extends DomainServiceWithScreenName,Dom Mention findByScreenNameAndIdTwitter(String screenName, Long idTwitter); + Page findByUserId(long idOfUser, Pageable pageRequest); + + Page findAllByScreenName(String screenName, Pageable pageRequest); + + Page findByIdTwitterOfUser(long idOfUser, Pageable pageRequest); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskHistoryService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskHistoryService.java index 82b2f2cb..e041366c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskHistoryService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskHistoryService.java @@ -2,8 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.service.common.DomainObjectMinimalService; /** diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java index 54b16500..ab09828c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TaskService.java @@ -1,10 +1,10 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.common.DomainObjectMinimalService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; /** * Created by tw on 09.07.17. @@ -13,7 +13,7 @@ public interface TaskService extends DomainObjectMinimalService { Task findById(long id); - Task create(String msg, TaskType type, SendType sendType, CountedEntities countedEntities); + Task create(String msg, TaskType type, TaskSendType taskSendType, CountedEntities countedEntities); Task done(Task task,CountedEntities countedEntities); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TickerSymbolService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TickerSymbolService.java index 89772537..75cc086d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TickerSymbolService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TickerSymbolService.java @@ -1,8 +1,7 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; -import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithUrl; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java index 57908189..517e0ce3 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/TweetService.java @@ -2,10 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.service.common.DomainObjectWithEntitiesService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; @@ -18,6 +16,14 @@ public interface TweetService extends DomainObjectWithEntitiesService,Dom Page findTweetsForHashTag(HashTag hashtag, Pageable pageRequest); + Page findTweetsForMedia(Media media, Pageable pageRequestTweet); + + Page findTweetsForMention(Mention mention, Pageable pageRequestTweet); + + Page findTweetsForUrl(Url url, Pageable pageRequestTweet); + + Page findTweetsForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestTweet); + Page findTweetsForUser(User user, Pageable pageRequest); Page findAllTweet2HashTag(Pageable pageRequest); @@ -39,5 +45,4 @@ public interface TweetService extends DomainObjectWithEntitiesService,Dom Page getFavorites(Pageable pageRequest); Page getRetweetsOfMe(Pageable pageRequest); - } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UrlService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UrlService.java index bda4f1f5..36c0713f 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UrlService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UrlService.java @@ -1,13 +1,19 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.service.common.DomainObjectEntityService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithUrl; +import java.util.List; + /** * Created by tw on 12.06.17. */ public interface UrlService extends DomainObjectEntityService,DomainServiceWithUrl { + List findRawUrlsFromDescription(); + + List findUrlAndExpandedTheSame(); + } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java index e220445f..fff3b720 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UserListService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithIdTwitter; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java index 1c58bd0d..6379c071 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/UserService.java @@ -2,9 +2,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.transients.*; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.service.common.DomainObjectWithEntitiesService; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithScreenName; @@ -22,6 +21,14 @@ public interface UserService extends DomainObjectWithEntitiesService,Domai Page getUsersForHashTag(HashTag hashTag,Pageable pageRequest); + Page getUsersForMedia(Media media, Pageable pageRequestUser); + + Page getUsersForMention(Mention mention, Pageable pageRequestUser); + + Page getUsersForUrl(Url url, Pageable pageRequestUser); + + Page getUsersForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestUser); + Page getFriends(Pageable pageRequest); Page getNotYetFriendUsers(Pageable pageRequest); @@ -51,4 +58,6 @@ public interface UserService extends DomainObjectWithEntitiesService,Domai Page findAllUser2TickerSymbol(Pageable pageRequest); boolean isByIdTwitter(long userIdTwitter); + + Page findUsersForUserList(UserList userList, Pageable pageRequest); } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectEntityService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectEntityService.java index 2ae133bf..9aed5af8 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectEntityService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectEntityService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectEntity; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectEntity; public interface DomainObjectEntityService extends DomainServiceWithTask { } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java index a5d66e54..84ddc4a9 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectMinimalService.java @@ -2,7 +2,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectMinimal; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectMinimal; public interface DomainObjectMinimalService { diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectWithEntitiesService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectWithEntitiesService.java index 5aca6f2f..fc6c07a4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectWithEntitiesService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainObjectWithEntitiesService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithEntities; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithEntities; public interface DomainObjectWithEntitiesService extends DomainServiceWithIdTwitter,DomainServiceWithTask { } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainService.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainService.java index 25caf1dd..459e8669 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainService.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainService.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; +import org.woehlke.twitterwall.oodm.model.common.DomainObject; /** * Created by tw on 24.06.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithIdTwitter.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithIdTwitter.java index 5099f5b9..31974c61 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithIdTwitter.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithIdTwitter.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithIdTwitter; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithIdTwitter; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithScreenName.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithScreenName.java index 2dea3a4c..8a34ba67 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithScreenName.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithScreenName.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithScreenName; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithScreenName; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithTask.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithTask.java index c227febd..d0d97c5f 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithTask.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithTask.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithUrl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithUrl.java index 2f680c26..c161bcb4 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithUrl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/common/DomainServiceWithUrl.java @@ -1,6 +1,6 @@ package org.woehlke.twitterwall.oodm.service.common; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithUrl; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithUrl; /** * Created by tw on 14.07.17. diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/CountedEntitiesServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/CountedEntitiesServiceImpl.java index 1bb9ef63..79aa7dee 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/CountedEntitiesServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/CountedEntitiesServiceImpl.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; import org.woehlke.twitterwall.oodm.repositories.*; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; @@ -58,6 +58,9 @@ public CountedEntities countAll() { c.setUserprofile2tickersymbol(userRepository.countAllUser2TickerSymbol()); c.setUserprofile2url(userRepository.countAllUser2Url()); + c.setUserList2Subcriber(userListRepository.countUserList2Subcriber()); + c.setUserList2Members(userListRepository.countUserList2Members()); + log.debug(msg+c.toString()); return c; } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java index 122761fb..2cdf6ab7 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/DomainServiceWithTaskImpl.java @@ -6,8 +6,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.common.DomainObjectWithTask; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.common.DomainObjectWithTask; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.common.DomainRepository; import org.woehlke.twitterwall.oodm.service.common.DomainServiceWithTask; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/HashTagServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/HashTagServiceImpl.java index cba07152..c16aad23 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/HashTagServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/HashTagServiceImpl.java @@ -8,8 +8,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; import org.woehlke.twitterwall.oodm.repositories.HashTagRepository; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.service.HashTagService; @@ -40,9 +41,9 @@ public HashTag findByText(String text) { * @param pageRequestTweets org.springframework.data.domain.Pageable * @return HashTagCounted * - * @see org.woehlke.twitterwall.oodm.entities.HashTag - * @see org.woehlke.twitterwall.oodm.entities.parts.Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.HashTag + * @see Entities + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllTweet2HashTag(Pageable) */ @Override @@ -54,9 +55,9 @@ public Page getHashTagsTweets(Pageable pageRequestTweets) { * @param pageRequestUsers org.springframework.data.domain.Pageable * @return HashTagCounted * - * @see org.woehlke.twitterwall.oodm.entities.HashTag - * @see org.woehlke.twitterwall.oodm.entities.parts.Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.HashTag + * @see Entities + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllUser2HashTag(Pageable) */ @Override diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java index c5d7fd1a..8b2cc0ed 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MediaServiceImpl.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.oodm.model.Media; import org.woehlke.twitterwall.oodm.repositories.MediaRepository; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.service.MediaService; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java index 23ccc439..64a15a32 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/MentionServiceImpl.java @@ -8,8 +8,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Mention; import org.woehlke.twitterwall.oodm.repositories.MentionRepository; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.service.MentionService; @@ -79,6 +79,22 @@ public Mention findByScreenNameAndIdTwitter(String screenName, Long idTwitter) { return mentionRepository.findByScreenNameUniqueAndIdTwitter(screenNameUnique, idTwitter); } + @Override + public Page findByUserId(long idOfUser, Pageable pageRequest) { + return mentionRepository.findByUserId(idOfUser,pageRequest); + } + + @Override + public Page findAllByScreenName(String screenName, Pageable pageRequest) { + String screenNameUnique = screenName.toLowerCase(); + return mentionRepository.findAllByScreenNameUnique(screenNameUnique,pageRequest); + } + + @Override + public Page findByIdTwitterOfUser(long idOfUser, Pageable pageRequest) { + return mentionRepository.findByIdTwitterOfUser(idOfUser,pageRequest); + } + @Override public Mention findByUniqueId(Mention domainExampleObject) { return mentionRepository.findByUniqueId(domainExampleObject); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskHistoryServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskHistoryServiceImpl.java index 44119e99..18d8e9f1 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskHistoryServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskHistoryServiceImpl.java @@ -8,8 +8,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; import org.woehlke.twitterwall.oodm.repositories.TaskHistoryRepository; import org.woehlke.twitterwall.oodm.service.TaskHistoryService; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskServiceImpl.java index 902aa654..9af154fb 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TaskServiceImpl.java @@ -8,15 +8,15 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.TaskHistory; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.repositories.TaskHistoryRepository; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.service.TaskService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; import java.util.Date; @@ -61,13 +61,13 @@ public Task findById(long id) { @Override @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false) - public Task create(String msg, TaskType type, SendType sendType, CountedEntities countedEntities) { + public Task create(String msg, TaskType type, TaskSendType taskSendType, CountedEntities countedEntities) { String descriptionTask = "start: "+msg; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task = taskRepository.save(task); Date now = new Date(); TaskHistory event = new TaskHistory("create: "+msg,TaskStatus.READY, TaskStatus.READY,now,task,countedEntities); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java index 9eb47aa3..74a7cc80 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TickerSymbolServiceImpl.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.TickerSymbolRepository; import org.woehlke.twitterwall.oodm.service.TickerSymbolService; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java index 6209277f..0c07e520 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/TweetServiceImpl.java @@ -8,10 +8,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.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.model.*; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.TweetRepository; import org.woehlke.twitterwall.oodm.service.TweetService; @@ -39,6 +37,26 @@ public Page findTweetsForHashTag(HashTag hashtag, Pageable pageRequest) { return tweetRepository.findByHashTag(hashtag.getText(),pageRequest); } + @Override + public Page findTweetsForMedia(Media media, Pageable pageRequestTweet) { + return tweetRepository.findTweetsForMedia(media,pageRequestTweet); + } + + @Override + public Page findTweetsForMention(Mention mention, Pageable pageRequestTweet) { + return tweetRepository.findTweetsForMention(mention,pageRequestTweet); + } + + @Override + public Page findTweetsForUrl(Url url, Pageable pageRequestTweet) { + return tweetRepository.findTweetsForUrl(url, pageRequestTweet); + } + + @Override + public Page findTweetsForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestTweet) { + return tweetRepository.findTweetsForTickerSymbol(tickerSymbol,pageRequestTweet); + } + @Override public Page findTweetsForUser(User user, Pageable pageRequest) { return tweetRepository.findByUser(user,pageRequest); diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlServiceImpl.java index 413633b4..a0601c8d 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UrlServiceImpl.java @@ -6,11 +6,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.oodm.model.Url; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.UrlRepository; import org.woehlke.twitterwall.oodm.service.UrlService; +import java.util.List; + /** * Created by tw on 12.06.17. */ @@ -50,4 +52,14 @@ public Url findByUrl(String url) { public Url findByUniqueId(Url domainExampleObject) { return urlRepository.findByUniqueId(domainExampleObject); } + + @Override + public List findRawUrlsFromDescription() { + return urlRepository.findRawUrlsFromDescription(); + } + + @Override + public List findUrlAndExpandedTheSame() { + return urlRepository.findUrlAndExpandedTheSame(); + } } diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java index 64970827..76e91b9e 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserListServiceImpl.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import org.woehlke.twitterwall.oodm.entities.UserList; +import org.woehlke.twitterwall.oodm.model.UserList; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.UserListRepository; import org.woehlke.twitterwall.oodm.service.UserListService; diff --git a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java index dd9dd722..824f478c 100644 --- a/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java +++ b/src/main/java/org/woehlke/twitterwall/oodm/service/impl/UserServiceImpl.java @@ -4,17 +4,20 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; 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.model.*; +import org.woehlke.twitterwall.oodm.model.transients.*; import org.woehlke.twitterwall.oodm.repositories.TaskRepository; import org.woehlke.twitterwall.oodm.repositories.UserRepository; import org.woehlke.twitterwall.oodm.service.UserService; +import java.util.ArrayList; +import java.util.List; + /** * Created by tw on 11.06.17. @@ -96,6 +99,26 @@ public Page getUsersForHashTag(HashTag hashTag, Pageable pageRequest) { return userRepository.findUsersForHashTag(hashTag.getText(),pageRequest); } + @Override + public Page getUsersForMedia(Media media, Pageable pageRequestUser) { + return userRepository.getUsersForMedia(media, pageRequestUser); + } + + @Override + public Page getUsersForMention(Mention mention, Pageable pageRequestUser) { + return userRepository.getUsersForMention(mention, pageRequestUser); + } + + @Override + public Page getUsersForUrl(Url url, Pageable pageRequestUser) { + return userRepository.getUsersForUrl(url,pageRequestUser); + } + + @Override + public Page getUsersForTickerSymbol(TickerSymbol tickerSymbol, Pageable pageRequestUser) { + return userRepository.getUsersForTickerSymbol(tickerSymbol,pageRequestUser); + } + @Override public Page getFriends(Pageable pageRequest) { return userRepository.findFriendUsers(pageRequest); @@ -141,6 +164,14 @@ public boolean isByIdTwitter(long userIdTwitter) { return ((userRepository.findByIdTwitter(userIdTwitter)) != null); } + @Override + public Page findUsersForUserList(UserList userList, Pageable pageRequest) { + List userPageContent = new ArrayList<>(); + long totalSize = 0L; + Page page = new PageImpl(userPageContent,pageRequest,totalSize); + return page; + } + @Override public User findByUniqueId(User domainExampleObject) { return userRepository.findByUniqueId(domainExampleObject); diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTask.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTask.java deleted file mode 100644 index 68045762..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTask.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; - -import org.woehlke.twitterwall.oodm.entities.User; - -public interface StartTask extends AsyncStartTask { - - User createImprintUser(); - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TwitterwallMessageBuilder.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TwitterwallMessageBuilder.java deleted file mode 100644 index 5342b1e7..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/TwitterwallMessageBuilder.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common; - -import org.springframework.messaging.Message; -import org.springframework.social.twitter.api.Tweet; -import org.springframework.social.twitter.api.TwitterProfile; -import org.springframework.social.twitter.api.UserList; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; - -public interface TwitterwallMessageBuilder { - - Message buildTweetMessage(Message incomingTaskMessage, org.woehlke.twitterwall.oodm.entities.Tweet tweet, int loopId, int loopAll); - - Message buildTweetMessage(Message incomingTaskMessage, Tweet tweet, int loopId, int loopAll); - - Message buildUserMessage(Message incomingTaskMessage, User userPers, int loopId, int loopAll); - - Message buildUserMessage(Message incomingTaskMessage, TwitterProfile userProfiles, int loopId, int loopAll); - - Message buildUserMessage(Message incomingTaskMessage, long twitterProfileId , int loopId, int loopAll); - - Message buildTaskMessage(Task task); - - Message buildUserMessage(Message incomingMessage, boolean isInStorage); - - Message buildUserMessage(Message incomingMessage, TwitterProfile twitterProfile, boolean ignoreTransformation); - - Message buildUserMessage(Message mqMessageIn, TwitterProfile twitterProfile); - - Message buildUserMessage(Message mqMessageIn, User imprintUser); - - Message buildUserListMessage(Message incomingTaskMessage, UserList userList, int loopId, int loopAll); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/impl/TwitterwallMessageBuilderImpl.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/impl/TwitterwallMessageBuilderImpl.java deleted file mode 100644 index 1d351f6f..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/common/impl/TwitterwallMessageBuilderImpl.java +++ /dev/null @@ -1,172 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.common.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.integration.support.MessageBuilder; -import org.springframework.messaging.Message; -import org.springframework.social.twitter.api.Tweet; -import org.springframework.social.twitter.api.TwitterProfile; -import org.springframework.social.twitter.api.UserList; -import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserListMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; - -@Component -public class TwitterwallMessageBuilderImpl implements TwitterwallMessageBuilder { - - - @Override - public Message buildTweetMessage(Message incomingTaskMessage, org.woehlke.twitterwall.oodm.entities.Tweet tweet, int loopId, int loopAll){ - TweetMessage outputPayload = new TweetMessage(incomingTaskMessage.getPayload(),tweet); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingTaskMessage.getHeaders()) - .setHeader("loop_id",loopId) - .setHeader("loop_all",loopAll) - .build(); - return mqMessageOut; - } - - @Override - public Message buildTweetMessage(Message incomingTaskMessage, Tweet tweet, int loopId, int loopAll){ - TweetMessage outputPayload = new TweetMessage(incomingTaskMessage.getPayload(),tweet); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingTaskMessage.getHeaders()) - .setHeader("loop_id",loopId) - .setHeader("loop_all",loopAll) - .build(); - return mqMessageOut; - } - - @Override - public Message buildUserMessage(Message incomingTaskMessage, User userPers, int loopId, int loopAll){ - UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),userPers); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingTaskMessage.getHeaders()) - .setHeader("loop_id",loopId) - .setHeader("loop_all",loopAll) - .build(); - return mqMessageOut; - } - - @Override - public Message buildUserMessage(Message incomingTaskMessage, TwitterProfile userProfiles, int loopId, int loopAll){ - UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),userProfiles); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingTaskMessage.getHeaders()) - .setHeader("loop_id",loopId) - .setHeader("loop_all",loopAll) - .build(); - return mqMessageOut; - } - - @Override - public Message buildUserMessage(Message incomingTaskMessage, long twitterProfileId, int loopId, int loopAll) { - UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),twitterProfileId); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingTaskMessage.getHeaders()) - .setHeader("loop_id",loopId) - .setHeader("loop_all",loopAll) - .build(); - return mqMessageOut; - } - - @Override - public Message buildTaskMessage(Task task) { - TaskMessage outputPayload = new TaskMessage(task.getId(), task.getTaskType(), task.getSendType(), task.getTimeStarted()); - Message mqMessage = - MessageBuilder.withPayload(outputPayload) - .setHeader("task_id", task.getId()) - .setHeader("task_uid", task.getUniqueId()) - .setHeader("task_type", task.getTaskType()) - .setHeader("time_started", task.getTimeStarted().getTime()) - .setHeader("send_type", task.getSendType()) - .build(); - return mqMessage; - } - - @Override - public Message buildUserMessage(Message incomingMessage, boolean isInStorage) { - UserMessage outputPayload = new UserMessage(incomingMessage.getPayload().getTaskMessage(),incomingMessage.getPayload().getTwitterProfileId(),isInStorage); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingMessage.getHeaders()) - .setHeader("checked_storage",Boolean.TRUE) - .build(); - return mqMessageOut; - } - - @Override - public Message buildUserMessage(Message incomingMessage, TwitterProfile twitterProfile, boolean ignoreTransformation) { - if(twitterProfile == null){ - log.error("buildUserMessage: TwitterProfile twitterProfile == null - bust must not be null"); - } - UserMessage outputPayload = new UserMessage(incomingMessage.getPayload().getTaskMessage(),twitterProfile,ignoreTransformation); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingMessage.getHeaders()) - .setHeader("checked_storage",Boolean.TRUE) - .build(); - return mqMessageOut; - } - - @Override - public Message buildUserMessage(Message incomingMessage, TwitterProfile twitterProfile) { - if(twitterProfile == null){ - log.error("buildUserMessage: TwitterProfile twitterProfile == null - bust must not be null"); - } - UserMessage outputPayload = new UserMessage(incomingMessage.getPayload(),twitterProfile); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingMessage.getHeaders()) - .setHeader("twitter_profile_id", twitterProfile.getId()) - .build(); - return mqMessageOut; - } - - @Override - public Message buildUserMessage(Message incomingMessage, User imprintUser) { - if(imprintUser == null){ - log.error("buildUserMessage: User imprintUser == null - bust must not be null"); - } - UserMessage outputPayload = new UserMessage(incomingMessage.getPayload(), imprintUser); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingMessage.getHeaders()) - .setHeader("twitter_profile_id", imprintUser.getIdTwitter()) - .build(); - return mqMessageOut; - } - - @Override - public Message buildUserListMessage(Message incomingTaskMessage, UserList userList, int loopId, int loopAll) { - UserListMessage outputPayload = new UserListMessage(incomingTaskMessage.getPayload(),userList); - Message mqMessageOut = - MessageBuilder.withPayload(outputPayload) - .copyHeaders(incomingTaskMessage.getHeaders()) - .setHeader("loop_id",loopId) - .setHeader("loop_all",loopAll) - .build(); - return mqMessageOut; - } - - @Autowired - public TwitterwallMessageBuilderImpl(TwitterProperties twitterProperties) { - this.twitterProperties = twitterProperties; - } - - private final TwitterProperties twitterProperties; - - private static final Logger log = LoggerFactory.getLogger(TwitterwallMessageBuilderImpl.class); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java deleted file mode 100644 index 088c1feb..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/CreateTestDataTweetsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface CreateTestDataTweetsSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FavoritesSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FavoritesSplitter.java deleted file mode 100644 index 29c333fe..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FavoritesSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface FavoritesSplitter extends TweetsSplitter { -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java deleted file mode 100644 index e9fd75ff..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FetchTweetsFromSearchSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface FetchTweetsFromSearchSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java deleted file mode 100644 index 542da1b0..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/FindTweetsToRemoveSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface FindTweetsToRemoveSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java deleted file mode 100644 index e39a8cf0..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/HomeTimelineSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface HomeTimelineSplitter extends TweetsSplitter { -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/MentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/MentionsSplitter.java deleted file mode 100644 index 21b80294..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/MentionsSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface MentionsSplitter extends TweetsSplitter { -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java deleted file mode 100644 index 5dedff8a..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/RetweetsOfMeSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface RetweetsOfMeSplitter extends TweetsSplitter{ -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java deleted file mode 100644 index 34f9550c..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UpdateTweetsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface UpdateTweetsSplitter extends TweetsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UserTimelineSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UserTimelineSplitter.java deleted file mode 100644 index b0151210..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/tweets/splitter/UserTimelineSplitter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.tweets.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TweetsSplitter; - -public interface UserTimelineSplitter extends TweetsSplitter{ -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java deleted file mode 100644 index 411c591f..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/userlist/splitter/ListsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.userlist.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserListsSplitter; - -public interface ListsSplitter extends UserListsSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java deleted file mode 100644 index ea95db1d..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/services/CreateImprintUser.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.services; - -import org.springframework.messaging.Message; -import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage; -import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage; - -public interface CreateImprintUser { - - Message createImprintUser(Message mqMessage); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java deleted file mode 100644 index 0ce5b272..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/CreateTestDataUsersSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface CreateTestDataUsersSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java deleted file mode 100644 index b97d8d02..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFollowerSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface FetchFollowerSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java deleted file mode 100644 index b4a99d0c..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchFriendsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface FetchFriendsSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java deleted file mode 100644 index e4a500e8..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/FetchUsersFromListSplitter.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface FetchUsersFromListSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersFromMentionsSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersFromMentionsSplitter.java deleted file mode 100644 index 4f8716b1..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersFromMentionsSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface UpdateUsersFromMentionsSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java deleted file mode 100644 index 13565ef5..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/users/splitter/UpdateUsersSplitter.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint.users.splitter; - -import org.woehlke.twitterwall.scheduled.mq.endpoint.common.UserSplitter; - -public interface UpdateUsersSplitter extends UserSplitter { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/SendType.java b/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/SendType.java deleted file mode 100644 index 7f6a5eed..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/mq/msg/SendType.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.msg; - -public enum SendType { - - NULL, - NO_MQ, - SEND_AND_WAIT_FOR_RESULT, - FIRE_AND_FORGET -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java deleted file mode 100644 index ab541ba8..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentMention.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.persist; - -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; - -/** - * Created by tw on 14.07.17. - */ -public interface CreatePersistentMention { - - Mention getPersistentMentionAndUserFor(Mention mention, Task task); - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java deleted file mode 100644 index 97f91b1c..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/CreatePersistentUrl.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.persist; - -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; - -/** - * Created by tw on 09.07.17. - */ -public interface CreatePersistentUrl { - - Url createPersistentUrlFor(String url, Task task); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java deleted file mode 100644 index 2cb53394..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreEntitiesProcess.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.persist; - -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.oodm.entities.Task; - -/** - * Created by tw on 11.07.17. - */ -public interface StoreEntitiesProcess { - - Entities storeEntitiesProcess(Entities entities,Task task); - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java deleted file mode 100644 index a8772a8d..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreOneTweetPerform.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.persist; - -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.Task; - -/** - * Created by tw on 09.07.17. - */ -public interface StoreOneTweetPerform { - - Tweet storeOneTweetPerform(Tweet tweet, Task task); - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java deleted file mode 100644 index 58df9580..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreTwitterProfileForProxyMentionForUser.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.persist; - -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Mention; - -/** - * Created by tw on 14.07.17. - */ -public interface StoreTwitterProfileForProxyMentionForUser { - - User storeTwitterProfileForProxyMentionForUser(Mention mention, Task task); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java deleted file mode 100644 index 0b98d40d..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserFromMention.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.persist; - -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; - -/** - * Created by tw on 11.07.17. - */ -public interface StoreUserFromMention { - - User storeUserFromMention(User user, Task task); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java deleted file mode 100644 index 24b8e50f..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/persist/StoreUserProcess.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.persist; - -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.Task; - -/** - * Created by tw on 09.07.17. - */ -public interface StoreUserProcess { - - User storeUserProcess(User user, Task task); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java deleted file mode 100644 index 05f5f384..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlService.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.remote; - -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; - -/** - * Created by tw on 28.06.17. - */ -public interface TwitterUrlService { - - Url fetchTransientUrl(String urlSrc,Task task); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java deleted file mode 100644 index b5b09257..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/EntitiesTransformService.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.transform; - -import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; - -/** - * Created by tw on 11.07.17. - */ -public interface EntitiesTransformService { - - Entities transformEntitiesForUser(TwitterProfile userSource, Task task); - - Entities transform(org.springframework.social.twitter.api.Entities entities, Task task); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java deleted file mode 100644 index 5ab4505b..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/MentionTransformService.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.transform; - -import org.springframework.social.twitter.api.MentionEntity; -import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; - -import java.util.Set; - -/** - * Created by tw on 28.06.17. - */ -public interface MentionTransformService extends TransformService { - - Set findByUser(TwitterProfile userSource, Task task); -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java deleted file mode 100644 index e53bb315..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/TweetTransformService.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.transform; - -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; - -/** - * Created by tw on 28.06.17. - */ -public interface TweetTransformService extends TransformService { -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java deleted file mode 100644 index e07e3cc0..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UrlTransformService.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.transform; - -import org.springframework.social.twitter.api.TwitterProfile; -import org.springframework.social.twitter.api.UrlEntity; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; - -import java.util.Set; - -/** - * Created by tw on 28.06.17. - */ -public interface UrlTransformService extends TransformService { - - Set getUrlsFor(TwitterProfile userSource,Task task); - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java deleted file mode 100644 index 3ee1ba62..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserListTransformService.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.transform; - -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; - -public interface UserListTransformService extends TransformService { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java deleted file mode 100644 index a0c66c52..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/UserTransformService.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.transform; - -import org.springframework.social.twitter.api.TwitterProfile; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.scheduled.service.transform.common.TransformService; - -/** - * Created by tw on 28.06.17. - */ -public interface UserTransformService extends TransformService { - -} diff --git a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java b/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java deleted file mode 100644 index bc25187a..00000000 --- a/src/main/java/org/woehlke/twitterwall/scheduled/service/transform/common/TransformService.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.woehlke.twitterwall.scheduled.service.transform.common; - -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.common.DomainObject; - -/** - * Created by tw on 28.06.17. - */ -public interface TransformService { - - T transform(SRC twitterObject, Task task); -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 01038d4c..26b50577 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -49,6 +49,7 @@ spring: generate-ddl: true hibernate: ddl-auto: ${TWITTERWALL_JPA_HIBERNATE_DDL_AUTO} + #ddl-auto: create-drop properties: hibernate: dialect: org.hibernate.dialect.PostgreSQL94Dialect @@ -114,7 +115,7 @@ twitterwall: updateTweets: 43200000 # 12 Hours updateUserProfiles: 43200000 # 12 Hours updateUserProfilesFromMentions: 3600000 # One Hour - scheduler: + cronjobs: allowFetchTweetsFromTwitterSearch: true fetchUsersFromDefinedUserListAllow: true fetchUsersFromDefinedUserListName: ${TWITTERWALL_SCHEDULER_USER_LIST_NAME} diff --git a/src/main/resources/integration.xml b/src/main/resources/integration.xml index aefc868f..05ec5a23 100644 --- a/src/main/resources/integration.xml +++ b/src/main/resources/integration.xml @@ -7,1067 +7,98 @@ http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd"> - - - - - - - - + - + - + - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 3cfb87ff..cef4e3fd 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -1,19 +1,19 @@ - - - + + + - - - - + + + + diff --git a/src/main/resources/mq/CreateImprintUser.xml b/src/main/resources/mq/CreateImprintUser.xml new file mode 100644 index 00000000..89224437 --- /dev/null +++ b/src/main/resources/mq/CreateImprintUser.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/CreateTestDataTweets.xml b/src/main/resources/mq/CreateTestDataTweets.xml new file mode 100644 index 00000000..c02dedef --- /dev/null +++ b/src/main/resources/mq/CreateTestDataTweets.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/CreateTestDataUser.xml b/src/main/resources/mq/CreateTestDataUser.xml new file mode 100644 index 00000000..41e89b85 --- /dev/null +++ b/src/main/resources/mq/CreateTestDataUser.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchFavorites.xml b/src/main/resources/mq/FetchFavorites.xml new file mode 100644 index 00000000..d2b3299c --- /dev/null +++ b/src/main/resources/mq/FetchFavorites.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchFollower.xml b/src/main/resources/mq/FetchFollower.xml new file mode 100644 index 00000000..c5b452dd --- /dev/null +++ b/src/main/resources/mq/FetchFollower.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchFriends.xml b/src/main/resources/mq/FetchFriends.xml new file mode 100644 index 00000000..e884309e --- /dev/null +++ b/src/main/resources/mq/FetchFriends.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchHomeTimeline.xml b/src/main/resources/mq/FetchHomeTimeline.xml new file mode 100644 index 00000000..f7450450 --- /dev/null +++ b/src/main/resources/mq/FetchHomeTimeline.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchListOwner.xml b/src/main/resources/mq/FetchListOwner.xml new file mode 100644 index 00000000..1654a373 --- /dev/null +++ b/src/main/resources/mq/FetchListOwner.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchLists.xml b/src/main/resources/mq/FetchLists.xml new file mode 100644 index 00000000..79be618d --- /dev/null +++ b/src/main/resources/mq/FetchLists.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchListsForUsers.xml b/src/main/resources/mq/FetchListsForUsers.xml new file mode 100644 index 00000000..8041cc48 --- /dev/null +++ b/src/main/resources/mq/FetchListsForUsers.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchMentions.xml b/src/main/resources/mq/FetchMentions.xml new file mode 100644 index 00000000..d45165a6 --- /dev/null +++ b/src/main/resources/mq/FetchMentions.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchRetweetsOfMe.xml b/src/main/resources/mq/FetchRetweetsOfMe.xml new file mode 100644 index 00000000..6871685a --- /dev/null +++ b/src/main/resources/mq/FetchRetweetsOfMe.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchTweetsFromSearch.xml b/src/main/resources/mq/FetchTweetsFromSearch.xml new file mode 100644 index 00000000..3752e397 --- /dev/null +++ b/src/main/resources/mq/FetchTweetsFromSearch.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchUserTimeline.xml b/src/main/resources/mq/FetchUserTimeline.xml new file mode 100644 index 00000000..25e0f90e --- /dev/null +++ b/src/main/resources/mq/FetchUserTimeline.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/FetchUsersFromList.xml b/src/main/resources/mq/FetchUsersFromList.xml new file mode 100644 index 00000000..9ccc7e2b --- /dev/null +++ b/src/main/resources/mq/FetchUsersFromList.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/GarbageCollection.xml b/src/main/resources/mq/GarbageCollection.xml new file mode 100644 index 00000000..b9463166 --- /dev/null +++ b/src/main/resources/mq/GarbageCollection.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/RemoveOldDataFromStorage.xml b/src/main/resources/mq/RemoveOldDataFromStorage.xml new file mode 100644 index 00000000..0c3f6b5d --- /dev/null +++ b/src/main/resources/mq/RemoveOldDataFromStorage.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/TaskStart.xml b/src/main/resources/mq/TaskStart.xml new file mode 100644 index 00000000..c8443296 --- /dev/null +++ b/src/main/resources/mq/TaskStart.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/UpdateMentionsForUsers.xml b/src/main/resources/mq/UpdateMentionsForUsers.xml new file mode 100644 index 00000000..6954784a --- /dev/null +++ b/src/main/resources/mq/UpdateMentionsForUsers.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/UpdateTweets.xml b/src/main/resources/mq/UpdateTweets.xml new file mode 100644 index 00000000..8f79a7d2 --- /dev/null +++ b/src/main/resources/mq/UpdateTweets.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/UpdateUrls.xml b/src/main/resources/mq/UpdateUrls.xml new file mode 100644 index 00000000..f86906c4 --- /dev/null +++ b/src/main/resources/mq/UpdateUrls.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mq/UpdateUser.xml b/src/main/resources/mq/UpdateUser.xml new file mode 100644 index 00000000..4abda7ad --- /dev/null +++ b/src/main/resources/mq/UpdateUser.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/application/countedEntities.html b/src/main/resources/templates/application/countedEntities.html index d0c9f12d..339edfe2 100644 --- a/src/main/resources/templates/application/countedEntities.html +++ b/src/main/resources/templates/application/countedEntities.html @@ -50,8 +50,10 @@ - entityId - entityInfo + + entityId + entityInfo + diff --git a/src/main/resources/templates/application/domain/count.html b/src/main/resources/templates/application/domain/count.html index 52097e99..8a9a027b 100644 --- a/src/main/resources/templates/application/domain/count.html +++ b/src/main/resources/templates/application/domain/count.html @@ -40,6 +40,26 @@

Count Entities:

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

diff --git a/src/main/resources/templates/application/management.html b/src/main/resources/templates/application/management.html index c51c7aca..a5693602 100644 --- a/src/main/resources/templates/application/management.html +++ b/src/main/resources/templates/application/management.html @@ -90,6 +90,10 @@

Your Options:

Start Task: getLists + + + Start Task: UpdateUrls + diff --git a/src/main/resources/templates/hashtag/all.html b/src/main/resources/templates/hashtag/all.html index fecd57d2..75a4d657 100644 --- a/src/main/resources/templates/hashtag/all.html +++ b/src/main/resources/templates/hashtag/all.html @@ -27,7 +27,14 @@ - + + + + + id + + + diff --git a/src/main/resources/templates/layoutDataview.html b/src/main/resources/templates/layoutDataview.html index 46b9c85b..75f321eb 100644 --- a/src/main/resources/templates/layoutDataview.html +++ b/src/main/resources/templates/layoutDataview.html @@ -182,15 +182,6 @@
  • Controller: diff --git a/src/main/resources/templates/task/start/createTestData.html b/src/main/resources/templates/task/start/createTestData.html index 032d40ca..8d7778db 100644 --- a/src/main/resources/templates/task/start/createTestData.html +++ b/src/main/resources/templates/task/start/createTestData.html @@ -24,7 +24,7 @@

    Backend Task Started.

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

    Backend Task Started.

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

    Backend Task Started.

  • timeFinished: timeFinished
  • taskType: taskType
  • taskStatus: taskStatus
  • -
  • sendType: sendType
  • +
  • taskSendType: taskSendType
  • diff --git a/src/main/resources/templates/task/start/tasksStarted.html b/src/main/resources/templates/task/start/tasksStarted.html new file mode 100644 index 00000000..bf198173 --- /dev/null +++ b/src/main/resources/templates/task/start/tasksStarted.html @@ -0,0 +1,48 @@ + + + + + +
    +
    +
    +
    +
    +
    +

    Backend Task Started.

    +
    +
      +
    • + + + id + +
    • +
    • timeStarted: timeStarted
    • +
    • timeLastUpdate: timeLastUpdate
    • +
    • timeFinished: timeFinished
    • +
    • taskType: taskType
    • +
    • taskStatus: taskStatus
    • +
    • taskSendType: taskSendType
    • +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    + +
    + + diff --git a/src/main/resources/templates/taskhistory/all.html b/src/main/resources/templates/taskhistory/all.html index c97c71eb..a8202e5e 100644 --- a/src/main/resources/templates/taskhistory/all.html +++ b/src/main/resources/templates/taskhistory/all.html @@ -38,20 +38,26 @@
    -
    description:
    -
    +
    description:
    +
    description
    -
    taskStatusBefore:
    -
    +
    +
    +
    taskStatusBefore:
    +
    taskStatusBefore
    -
    taskStatusNow:
    -
    +
    +
    +
    taskStatusNow:
    +
    taskStatusNow
    -
    timeEvent:
    -
    +
    +
    +
    timeEvent:
    +
    timeEvent
    diff --git a/src/main/resources/templates/tickersymbol/all.html b/src/main/resources/templates/tickersymbol/all.html index 42053e40..ee9e8e9e 100644 --- a/src/main/resources/templates/tickersymbol/all.html +++ b/src/main/resources/templates/tickersymbol/all.html @@ -28,16 +28,25 @@ - + + + + + id + + +
    -
    tickerSymbol:
    -
    +
    tickerSymbol:
    +
    tickerSymbol
    -
    url:
    -
    +
    +
    +
    url:
    +
    url diff --git a/src/main/resources/templates/tickersymbol/id.html b/src/main/resources/templates/tickersymbol/id.html new file mode 100644 index 00000000..eca1ba81 --- /dev/null +++ b/src/main/resources/templates/tickersymbol/id.html @@ -0,0 +1,84 @@ + + + + + +
    +
    +
    +
    +
    +

    Tweets with the TickerSymbol TickerSymbol

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

    Users with the TickerSymbol TickerSymbol

    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + + + diff --git a/src/main/resources/templates/url/all.html b/src/main/resources/templates/url/all.html index 7d30daba..7e355305 100644 --- a/src/main/resources/templates/url/all.html +++ b/src/main/resources/templates/url/all.html @@ -29,22 +29,33 @@ - + + + + + id + + +
    -
    display:
    -
    +
    display:
    +
    display
    -
    expanded:
    -
    +
    +
    +
    expanded:
    + -
    url:
    -
    +
    +
    +
    url:
    +
    url diff --git a/src/main/resources/templates/url/id.html b/src/main/resources/templates/url/id.html new file mode 100644 index 00000000..beaaf2a2 --- /dev/null +++ b/src/main/resources/templates/url/id.html @@ -0,0 +1,113 @@ + + + + + +
    +
    +
    +
    +
    +

    Url

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

    Tweets with the Url Url

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

    Users with the Url Url

    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + + + diff --git a/src/main/resources/templates/userlist/all.html b/src/main/resources/templates/userlist/all.html index 9fd63221..d691f1cb 100644 --- a/src/main/resources/templates/userlist/all.html +++ b/src/main/resources/templates/userlist/all.html @@ -29,7 +29,14 @@ - + + + + + id + + +
    diff --git a/src/main/resources/templates/userlist/id.html b/src/main/resources/templates/userlist/id.html index e69de29b..0f152ac7 100644 --- a/src/main/resources/templates/userlist/id.html +++ b/src/main/resources/templates/userlist/id.html @@ -0,0 +1,140 @@ + + + + + +
    +
    +
    +
    +
    +

    UserList

    +
    +
    +
    idTwitter:
    +
    + idTwitter +
    +
    +
    +
    name:
    +
    + name +
    +
    +
    +
    fullName:
    +
    + fullName +
    +
    +
    +
    uriPath:
    +
    + uriPath +
    +
    +
    +
    description:
    +
    + description +
    +
    +
    +
    slug:
    +
    + slug +
    +
    +
    +
    isPublic:
    +
    + + + + + + +
    +
    +
    +
    isFollowing:
    +
    + + + + + + +
    +
    +
    +
    memberCount:
    +
    + memberCount +
    +
    +
    +
    subscriberCount:
    +
    + subscriberCount +
    +
    +
    +
    listOwnersScreenName:
    + +
    +
    +
    +
    +
    +
    +

    Users with the UserList UserList

    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + + + diff --git a/src/site/Twitterwall2/Twitterwall2.mdzip b/src/site/Twitterwall2/Twitterwall2.mdzip index 86bc6c09..8fa5e8fd 100644 Binary files a/src/site/Twitterwall2/Twitterwall2.mdzip and b/src/site/Twitterwall2/Twitterwall2.mdzip differ diff --git a/src/test/java/org/woehlke/twitterwall/ScheduledTasksTest.java b/src/test/java/org/woehlke/twitterwall/CronJobsTest.java similarity index 66% rename from src/test/java/org/woehlke/twitterwall/ScheduledTasksTest.java rename to src/test/java/org/woehlke/twitterwall/CronJobsTest.java index 104606f8..6c068a3e 100644 --- a/src/test/java/org/woehlke/twitterwall/ScheduledTasksTest.java +++ b/src/test/java/org/woehlke/twitterwall/CronJobsTest.java @@ -8,78 +8,78 @@ @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class}) -public class ScheduledTasksTest { +public class CronJobsTest { @Autowired - private ScheduledTasks scheduledTasks; + private CronJobs cronJobs; @Test public void createImprintUserAsync() throws Exception { - scheduledTasks.createImprintUserAsync(); + cronJobs.createImprintUserAsync(); } @Test public void fetchTweetsFromTwitterSearch() throws Exception { - scheduledTasks.fetchTweetsFromTwitterSearch(); + cronJobs.fetchTweetsFromTwitterSearch(); } @Test public void updateTweets() throws Exception { - scheduledTasks.updateTweets(); + cronJobs.updateTweets(); } @Test public void updateUserProfiles() throws Exception { - scheduledTasks.updateUserProfiles(); + cronJobs.updateUserProfiles(); } @Test public void updateUserProfilesFromMentions() throws Exception { - scheduledTasks.updateUserProfilesFromMentions(); + cronJobs.updateUserProfilesFromMentions(); } @Test public void fetchUsersFromDefinedUserList() throws Exception { - scheduledTasks.fetchUsersFromDefinedUserList(); + cronJobs.fetchUsersFromDefinedUserList(); } @Test public void removeOldDataFromStorage() throws Exception { - scheduledTasks.removeOldDataFromStorage(); + cronJobs.removeOldDataFromStorage(); } @Test public void fetchFollower() throws Exception { - scheduledTasks.fetchFollower(); + cronJobs.fetchFollower(); } @Test public void getHomeTimeline() throws Exception { - scheduledTasks.getHomeTimeline(); + cronJobs.getHomeTimeline(); } @Test public void getUserTimeline() throws Exception { - scheduledTasks.getUserTimeline(); + cronJobs.getUserTimeline(); } @Test public void getMentions() throws Exception { - scheduledTasks.getMentions(); + cronJobs.getMentions(); } @Test public void getFavorites() throws Exception { - scheduledTasks.getFavorites(); + cronJobs.getFavorites(); } @Test public void getRetweetsOfMe() throws Exception { - scheduledTasks.getRetweetsOfMe(); + cronJobs.getRetweetsOfMe(); } @Test public void getLists() throws Exception { - scheduledTasks.getLists(); + cronJobs.getLists(); } } diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AbstractMqEndpointTest.java similarity index 96% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AbstractMqEndpointTest.java index 58b498a4..c316817e 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AbstractMqEndpointTest.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/endpoint/AbstractMqEndpointTest.java @@ -1,7 +1,7 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.endpoint; import org.junit.Assert; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; public abstract class AbstractMqEndpointTest { diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java b/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForgetTest.java similarity index 80% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForgetTest.java index 7decaf2e..2f2a11f1 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForgetTest.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.tasks; /** - * @see org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask + * @see StartTaskAsynchron */ -public interface AsyncStartTaskTest { +public interface TaskStartFireAndForgetTest { void updateTweetsTest() throws Exception; diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java b/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForgetTestImpl.java similarity index 77% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForgetTestImpl.java index 79e508bd..1f4c5a9a 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/AsyncStartTaskTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartFireAndForgetTestImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.tasks; import org.junit.Assert; import org.junit.Ignore; @@ -10,34 +10,35 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.Application; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.backend.mq.endpoint.AbstractMqEndpointTest; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class}) -public class AsyncStartTaskTestImpl extends AbstractMqEndpointTest implements AsyncStartTaskTest { +public class TaskStartFireAndForgetTestImpl extends AbstractMqEndpointTest implements TaskStartFireAndForgetTest { - private static final Logger log = LoggerFactory.getLogger(AsyncStartTaskTestImpl.class); + private static final Logger log = LoggerFactory.getLogger(TaskStartFireAndForgetTestImpl.class); @Autowired private CountedEntitiesService countedEntitiesService; @Autowired - private AsyncStartTask mqAsyncStartTask; + private TaskStartFireAndForget mqTaskStartFireAndForget; @Test public void updateTweetsTest() throws Exception { String msg = "updateTweetsTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.updateTweets(); + Task task = this.mqTaskStartFireAndForget.updateTweets(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_TWEETS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -50,11 +51,11 @@ public void updateUsersTest() throws Exception { String msg = "updateUsersTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.updateUsers(); + Task task = this.mqTaskStartFireAndForget.updateUsers(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -67,12 +68,12 @@ public void updateUsersFromMentionsTest() throws Exception { String msg = "updateUsersFromMentionsTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.updateUsersFromMentions(); + Task task = this.mqTaskStartFireAndForget.updateUsersFromMentions(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); - Assert.assertEquals(TaskType.UPDATE_USERS_FROM_MENTIONS,task.getTaskType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); + Assert.assertEquals(TaskType.UPDATE_MENTIONS_FOR_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); @@ -84,11 +85,11 @@ public void fetchTweetsFromSearchTest() throws Exception { String msg = "fetchTweetsFromSearchTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.fetchTweetsFromSearch(); + Task task = this.mqTaskStartFireAndForget.fetchTweetsFromSearch(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_TWEETS_FROM_SEARCH,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -101,11 +102,11 @@ public void fetchUsersFromListTest() throws Exception { String msg = "fetchTweetsFromSearchTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.fetchUsersFromList(); + Task task = this.mqTaskStartFireAndForget.fetchUsersFromList(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_USERS_FROM_LIST,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -119,11 +120,11 @@ public void fetchFollowerTest() throws Exception { String msg = "fetchFollowerTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.fetchFollower(); + Task task = this.mqTaskStartFireAndForget.fetchFollower(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FOLLOWER,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -137,11 +138,11 @@ public void fetchFriendsTest() throws Exception { String msg = "fetchFriendsTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.fetchFriends(); + Task task = this.mqTaskStartFireAndForget.fetchFriends(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FRIENDS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -157,11 +158,11 @@ public void removeOldDataFromStorageTest() throws Exception { String msg = "removeOldDataFromStorageTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.removeOldDataFromStorage(); + Task task = this.mqTaskStartFireAndForget.removeOldDataFromStorage(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.REMOVE_OLD_DATA_FROM_STORAGE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -175,11 +176,11 @@ public void getHomeTimeline() throws Exception { String msg = "getHomeTimeline: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.getHomeTimeline(); + Task task = this.mqTaskStartFireAndForget.getHomeTimeline(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_HOME_TIMELINE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -193,11 +194,11 @@ public void getUserTimeline() throws Exception { String msg = "getUserTimeline: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.getUserTimeline(); + Task task = this.mqTaskStartFireAndForget.getUserTimeline(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_USER_TIMELINE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -211,11 +212,11 @@ public void getMentions() throws Exception { String msg = "getUserTimeline: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.getMentions(); + Task task = this.mqTaskStartFireAndForget.getMentions(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_MENTIONS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -229,11 +230,11 @@ public void getFavorites() throws Exception { String msg = "getFavorites: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.getFavorites(); + Task task = this.mqTaskStartFireAndForget.getFavorites(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FAVORITES,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -247,11 +248,11 @@ public void getRetweetsOfMe() throws Exception { String msg = "getRetweetsOfMe: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.getRetweetsOfMe(); + Task task = this.mqTaskStartFireAndForget.getRetweetsOfMe(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_RETWEETS_OF_ME,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -265,11 +266,11 @@ public void getLists() throws Exception { String msg = "getLists: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqAsyncStartTask.getLists(); + Task task = this.mqTaskStartFireAndForget.getLists(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.FIRE_AND_FORGET,task.getSendType()); + Assert.assertEquals(TaskSendType.FIRE_AND_FORGET,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_LISTS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); diff --git a/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartTest.java b/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartTest.java new file mode 100644 index 00000000..52e0fcec --- /dev/null +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartTest.java @@ -0,0 +1,15 @@ +package org.woehlke.twitterwall.backend.mq.tasks; + +/** + * @see TaskStart + * @see StartTaskAsynchron + */ +public interface TaskStartTest extends TaskStartFireAndForgetTest { + + void createImprintUserTest() throws Exception; + + void createTestDataUsersTest() throws Exception; + + void createTestDataTweetsTest() throws Exception; + +} diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java b/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartTestImpl.java similarity index 77% rename from src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java rename to src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartTestImpl.java index feb5ccac..39b488f9 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/backend/mq/tasks/TaskStartTestImpl.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; +package org.woehlke.twitterwall.backend.mq.tasks; import org.junit.Assert; @@ -11,25 +11,26 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.woehlke.twitterwall.Application; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.backend.mq.endpoint.AbstractMqEndpointTest; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class}) -public class StartTaskTestImpl extends AbstractMqEndpointTest implements StartTaskTest { +public class TaskStartTestImpl extends AbstractMqEndpointTest implements TaskStartTest { - private static final Logger log = LoggerFactory.getLogger(StartTaskTestImpl.class); + private static final Logger log = LoggerFactory.getLogger(TaskStartTestImpl.class); @Autowired private CountedEntitiesService countedEntitiesService; @Autowired - private StartTask mqStartTask; + private TaskStart mqTaskStart; @Autowired private FrontendProperties frontendProperties; @@ -39,11 +40,11 @@ public void updateTweetsTest() throws Exception { String msg = "updateTweetsTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.updateTweets(); + Task task = this.mqTaskStart.updateTweets(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_TWEETS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -56,11 +57,11 @@ public void updateUsersTest() throws Exception { String msg = "updateUsersTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.updateUsers(); + Task task = this.mqTaskStart.updateUsers(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.UPDATE_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -73,12 +74,12 @@ public void updateUsersFromMentionsTest() throws Exception { String msg = "updateUsersFromMentionsTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.updateUsersFromMentions(); + Task task = this.mqTaskStart.updateUsersFromMentions(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); - Assert.assertEquals(TaskType.UPDATE_USERS_FROM_MENTIONS,task.getTaskType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); + Assert.assertEquals(TaskType.UPDATE_MENTIONS_FOR_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); @@ -90,11 +91,11 @@ public void fetchTweetsFromSearchTest() throws Exception { String msg = "fetchTweetsFromSearchTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.fetchTweetsFromSearch(); + Task task = this.mqTaskStart.fetchTweetsFromSearch(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_TWEETS_FROM_SEARCH,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -107,11 +108,11 @@ public void fetchUsersFromListTest() throws Exception { String msg = "fetchUsersFromListTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.fetchUsersFromList(); + Task task = this.mqTaskStart.fetchUsersFromList(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_USERS_FROM_LIST,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); @@ -126,11 +127,11 @@ public void fetchFollowerTest() throws Exception { String msg = "fetchFollowerTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.fetchFollower(); + Task task = this.mqTaskStart.fetchFollower(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FOLLOWER,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -144,11 +145,11 @@ public void fetchFriendsTest() throws Exception { String msg = "fetchFollowerTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.fetchFriends(); + Task task = this.mqTaskStart.fetchFriends(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FRIENDS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -165,11 +166,11 @@ public void removeOldDataFromStorageTest() throws Exception { String msg = "removeOldDataFromStorageTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.removeOldDataFromStorage(); + Task task = this.mqTaskStart.removeOldDataFromStorage(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.REMOVE_OLD_DATA_FROM_STORAGE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -183,11 +184,11 @@ public void getHomeTimeline() throws Exception { String msg = "getHomeTimeline: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.getHomeTimeline(); + Task task = this.mqTaskStart.getHomeTimeline(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_HOME_TIMELINE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -201,11 +202,11 @@ public void getUserTimeline() throws Exception { String msg = "getUserTimeline: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.getUserTimeline(); + Task task = this.mqTaskStart.getUserTimeline(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_USER_TIMELINE,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -219,11 +220,11 @@ public void getMentions() throws Exception { String msg = "getMentions: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.getMentions(); + Task task = this.mqTaskStart.getMentions(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_MENTIONS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -237,11 +238,11 @@ public void getFavorites() throws Exception { String msg = "getFavorites: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.getFavorites(); + Task task = this.mqTaskStart.getFavorites(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_FAVORITES,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -255,11 +256,11 @@ public void getRetweetsOfMe() throws Exception { String msg = "getRetweetsOfMe: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.getRetweetsOfMe(); + Task task = this.mqTaskStart.getRetweetsOfMe(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_RETWEETS_OF_ME,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -273,11 +274,11 @@ public void getLists() throws Exception { String msg = "getLists: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.getLists(); + Task task = this.mqTaskStart.getLists(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); Assert.assertEquals(TaskType.FETCH_LISTS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntitiesReduced(beforeTest,afterTest); @@ -289,7 +290,7 @@ public void getLists() throws Exception { public void createImprintUserTest() throws Exception { String msg = "createImprintUserTest: "; log.info(msg+"START TEST"); - User user = this.mqStartTask.createImprintUser(); + User user = this.mqTaskStart.createImprintUser(); Assert.assertNotNull(user); Assert.assertNotNull(user.getUniqueId()); log.info(msg+"created User = "+user.getUniqueId()); @@ -303,12 +304,12 @@ public void createTestDataUsersTest() throws Exception { String msg = "createTestDataUsersTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.createTestDataForUser(); + Task task = this.mqTaskStart.createTestDataForUser(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); - Assert.assertEquals(TaskType.CONTROLLER_CREATE_TESTDATA_USERS,task.getTaskType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); + Assert.assertEquals(TaskType.CREATE_TESTDATA_USERS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); @@ -320,12 +321,12 @@ public void createTestDataTweetsTest() throws Exception { String msg = "createTestDataTweetsTest: "; log.info(msg+"START TEST"); CountedEntities beforeTest = countedEntitiesService.countAll(); - Task task = this.mqStartTask.createTestDataForTweets(); + Task task = this.mqTaskStart.createTestDataForTweets(); log.info(msg+"created Task = "+task.getUniqueId()); Assert.assertNotNull(task); Assert.assertNotNull(task.getUniqueId()); - Assert.assertEquals(SendType.SEND_AND_WAIT_FOR_RESULT,task.getSendType()); - Assert.assertEquals(TaskType.CONTROLLER_CREATE_TESTDATA_TWEETS,task.getTaskType()); + Assert.assertEquals(TaskSendType.SEND_AND_WAIT_FOR_RESULT,task.getTaskSendType()); + Assert.assertEquals(TaskType.CREATE_TESTDATA_TWEETS,task.getTaskType()); CountedEntities afterTest = countedEntitiesService.countAll(); boolean ok = assertCountedEntities(beforeTest,afterTest); Assert.assertTrue(ok); diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java b/src/test/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlServiceTest.java similarity index 88% rename from src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java rename to src/test/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlServiceTest.java index e816263f..36b0da66 100644 --- a/src/test/java/org/woehlke/twitterwall/scheduled/service/remote/TwitterUrlServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/backend/service/remote/TwitterUrlServiceTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.scheduled.service.remote; +package org.woehlke.twitterwall.backend.service.remote; import org.apache.http.HttpHost; import org.apache.http.client.methods.CloseableHttpResponse; @@ -15,12 +15,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.Url; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.io.IOException; import java.net.URI; @@ -53,7 +53,7 @@ public void fetchUrlTest(){ String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; long taskId = 222L; TaskStatus taskStatus = TaskStatus.READY; @@ -61,7 +61,7 @@ public void fetchUrlTest(){ Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); List exprectedUrls = testdataProperties.getOodm().getEntities().getUrl().getUrl(); for(String exprectedUrl:exprectedUrls){ diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java index 374d75e4..1909aa8b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/HashTagControllerTest.java @@ -19,7 +19,7 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.*; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.HashTag; +import org.woehlke.twitterwall.oodm.model.HashTag; import org.woehlke.twitterwall.oodm.service.HashTagService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -27,7 +27,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 01.07.17. @@ -101,8 +101,8 @@ private HashTag findOneHashTag(){ @Commit @WithAnonymousUser @Test - public void findByIdTest() throws Exception { - String msg ="findByIdTest: "; + public void findHashTagById() throws Exception { + String msg ="findHashTagById: "; HashTag hashTag = findOneHashTag(); long id = hashTag.getId(); MvcResult result = this.mockMvc.perform(get("/hashtag/"+id)) diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java index 0f24a3bb..239582a9 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/ImprintControllerTest.java @@ -14,7 +14,7 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; import static org.assertj.core.api.Java6Assertions.assertThat; diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java index cc26b790..4b1b88aa 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MediaControllerTest.java @@ -8,6 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @@ -15,12 +18,15 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; +import org.woehlke.twitterwall.oodm.model.Media; +import org.woehlke.twitterwall.oodm.service.MediaService; import static org.assertj.core.api.Java6Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -29,6 +35,9 @@ public class MediaControllerTest { private static final Logger log = LoggerFactory.getLogger(MediaControllerTest.class); + @Autowired + private MediaService mediaService; + @Autowired private MediaController controller; @@ -75,4 +84,43 @@ public void getAllTest() throws Exception { log.info(msg+"#######################################"); Assert.assertTrue(true); } + + @Commit + @WithMockUser + @Test + public void getMediaById() throws Exception { + String msg ="getMediaById: "; + Media oneMedia = findOneMedia(); + if(oneMedia != null) { + long id = oneMedia.getId(); + MvcResult result = this.mockMvc.perform(get("/media/" + id)) + .andExpect(status().isOk()) + .andExpect(view().name("media/id")) + .andExpect(model().attributeExists("users")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("media")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg + "#######################################"); + log.info(msg + "#######################################"); + log.info(msg + content); + log.info(msg + "#######################################"); + log.info(msg + "#######################################"); + Assert.assertTrue(true); + } + } + + private Media findOneMedia() { + int size = 1; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, size); + Page mediaPage = mediaService.getAll(pageRequest); + if(mediaPage.getContent().size()>0){ + return mediaPage.getContent().iterator().next(); + } else { + return null; + } + } } diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java index 7c1e7f4f..748ff547 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/MentionControllerTest.java @@ -8,6 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @@ -15,12 +18,15 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.service.MentionService; import static org.assertj.core.api.Java6Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -32,6 +38,9 @@ public class MentionControllerTest { @Autowired private MentionController controller; + @Autowired + private MentionService mentionService; + @Autowired private PrepareDataTest prepareDataTest; @@ -76,4 +85,43 @@ public void getAllTest() throws Exception { Assert.assertTrue(true); } + @Commit + @WithMockUser + @Test + public void getMentionById() throws Exception { + String msg ="getMentionById: "; + Mention oneMention = findOneMention(); + if(oneMention != null) { + long id = oneMention.getId(); + MvcResult result = this.mockMvc.perform(get("/mention/" + id)) + .andExpect(status().isOk()) + .andExpect(view().name("mention/id")) + .andExpect(model().attributeExists("users")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("mention")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg + "#######################################"); + log.info(msg + "#######################################"); + log.info(msg + content); + log.info(msg + "#######################################"); + log.info(msg + "#######################################"); + Assert.assertTrue(true); + } + } + + private Mention findOneMention() { + int size = 1; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, size); + Page mentionPage = mentionService.getAll(pageRequest); + if(mentionPage.getContent().size()>0){ + return mentionPage.getContent().iterator().next(); + } else { + return null; + } + } + } diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java index 7d66f842..aea995b7 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskControllerTest.java @@ -15,12 +15,12 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import static org.assertj.core.api.Java6Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -96,8 +96,8 @@ public void getTaskByIdTest() throws Exception { CountedEntities countedEntities = countedEntitiesService.countAll(); String msg ="getTaskByIdTest: "; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; - Task task = taskService.create(msg,taskType,sendType,countedEntities); + TaskSendType taskSendType = TaskSendType.NO_MQ; + Task task = taskService.create(msg,taskType, taskSendType,countedEntities); long id = task.getId(); MvcResult result = this.mockMvc.perform(get("/task/"+id)) .andExpect(status().isOk()) @@ -434,8 +434,8 @@ public void getListsTest() throws Exception { String msg = "updateUserProfilesStartTaskTest: "; MvcResult result = this.mockMvc.perform(get("/task/start/userlists")) .andExpect(status().isOk()) - .andExpect(view().name( PATH+"/start/taskStarted")) - .andExpect(model().attributeExists("task")) + .andExpect(view().name( PATH+"/start/tasksStarted")) + .andExpect(model().attributeExists("listOfTasks")) .andExpect(model().attributeExists("page")) .andReturn(); diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryControllerTest.java index 5e50c5af..6260241b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TaskHistoryControllerTest.java @@ -77,6 +77,4 @@ public void getAllTest() throws Exception { Assert.assertTrue(true); } - - } diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java index f6eff05b..465fb194 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TickerSymbolControllerTest.java @@ -8,6 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @@ -15,12 +18,15 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; +import org.woehlke.twitterwall.oodm.service.TickerSymbolService; import static org.assertj.core.api.Java6Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -32,6 +38,9 @@ public class TickerSymbolControllerTest { @Autowired private TickerSymbolController controller; + @Autowired + private TickerSymbolService tickerSymbolService; + @Autowired private PrepareDataTest prepareDataTest; @@ -74,4 +83,43 @@ public void getAllTest() throws Exception { log.info(msg+"#######################################"); Assert.assertTrue(true); } + + @Commit + @WithMockUser + @Test + public void getTickerSymbolById() throws Exception { + String msg ="getTickerSymbolById: "; + TickerSymbol oneTickerSymbol = findOneTickerSymbol(); + if(oneTickerSymbol != null) { + long id = oneTickerSymbol.getId(); + MvcResult result = this.mockMvc.perform(get("/tickersymbol/" + id)) + .andExpect(status().isOk()) + .andExpect(view().name("tickersymbol/id")) + .andExpect(model().attributeExists("users")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("tickersymbol")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg + "#######################################"); + log.info(msg + "#######################################"); + log.info(msg + content); + log.info(msg + "#######################################"); + log.info(msg + "#######################################"); + Assert.assertTrue(true); + } + } + + private TickerSymbol findOneTickerSymbol() { + int size = 1; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, size); + Page tickerSymbolPage = tickerSymbolService.getAll(pageRequest); + if(tickerSymbolPage.getContent().size()>0){ + return tickerSymbolPage.getContent().iterator().next(); + } else { + return null; + } + } } diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java index c5cf2dd9..983c7e02 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/TweetControllerTest.java @@ -19,7 +19,7 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.Tweet; +import org.woehlke.twitterwall.oodm.model.Tweet; import org.woehlke.twitterwall.oodm.service.TweetService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -27,7 +27,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 19.06.17. diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java index 8e844e9b..a291046e 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UrlControllerTest.java @@ -9,6 +9,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @@ -16,12 +19,15 @@ import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.Application; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.service.UrlService; import static org.assertj.core.api.Java6Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(classes={Application.class},webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -33,6 +39,9 @@ public class UrlControllerTest { @Autowired private UrlController controller; + @Autowired + private UrlService urlService; + @Autowired private PrepareDataTest prepareDataTest; @@ -77,4 +86,43 @@ public void getAllTest() throws Exception { Assert.assertTrue(true); } + @Commit + @WithMockUser + @Test + public void getUrlById() throws Exception { + String msg ="getUrlById: "; + Url oneUrl = findOneUrl(); + if(oneUrl != null) { + long id = oneUrl.getId(); + MvcResult result = this.mockMvc.perform(get("/url/" + id)) + .andExpect(status().isOk()) + .andExpect(view().name("url/id")) + .andExpect(model().attributeExists("users")) + .andExpect(model().attributeExists("latestTweets")) + .andExpect(model().attributeExists("url")) + .andExpect(model().attributeExists("page")) + .andReturn(); + + String content = result.getResponse().getContentAsString(); + + log.info(msg + "#######################################"); + log.info(msg + "#######################################"); + log.info(msg + content); + log.info(msg + "#######################################"); + log.info(msg + "#######################################"); + Assert.assertTrue(true); + } + } + + private Url findOneUrl() { + int size = 1; + Pageable pageRequest = new PageRequest(FIRST_PAGE_NUMBER, size); + Page urlPage = urlService.getAll(pageRequest); + if(urlPage.getContent().size()>0){ + return urlPage.getContent().iterator().next(); + } else { + return null; + } + } + } diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java index 461e2208..b359351b 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/UserControllerTest.java @@ -18,11 +18,11 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.woehlke.twitterwall.*; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; -import org.woehlke.twitterwall.conf.properties.SchedulerProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.SchedulerProperties; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; import org.woehlke.twitterwall.oodm.service.UserService; import static org.assertj.core.api.Java6Assertions.assertThat; @@ -30,7 +30,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; /** * Created by tw on 19.06.17. diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/PrepareDataTest.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/PrepareDataTest.java index 5fcb0a80..3e822e25 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/PrepareDataTest.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/PrepareDataTest.java @@ -1,7 +1,7 @@ package org.woehlke.twitterwall.frontend.controller.common; -import org.woehlke.twitterwall.oodm.entities.User; +import org.woehlke.twitterwall.oodm.model.User; @Deprecated public interface PrepareDataTest { diff --git a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java index 10c9adb6..1e67b057 100644 --- a/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java +++ b/src/test/java/org/woehlke/twitterwall/frontend/controller/common/impl/PrepareDataTestImpl.java @@ -8,22 +8,22 @@ import org.springframework.social.ResourceNotFoundException; import org.springframework.social.twitter.api.TwitterProfile; import org.springframework.stereotype.Component; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.conf.properties.FrontendProperties; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.configuration.properties.FrontendProperties; import org.woehlke.twitterwall.frontend.controller.common.PrepareDataTest; -import org.woehlke.twitterwall.oodm.entities.Tweet; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.User; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; +import org.woehlke.twitterwall.oodm.model.Tweet; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.User; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import org.woehlke.twitterwall.oodm.service.TaskService; import org.woehlke.twitterwall.oodm.service.TweetService; import org.woehlke.twitterwall.oodm.service.UserService; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; -import org.woehlke.twitterwall.scheduled.service.remote.TwitterApiService; +import org.woehlke.twitterwall.backend.service.remote.TwitterApiService; import org.woehlke.twitterwall.oodm.service.CountedEntitiesService; -import org.woehlke.twitterwall.scheduled.service.persist.StoreOneTweet; -import org.woehlke.twitterwall.scheduled.service.persist.StoreUserProfile; +import org.woehlke.twitterwall.backend.service.persist.StoreOneTweet; +import org.woehlke.twitterwall.backend.service.persist.StoreUserProfile; import javax.persistence.NoResultException; import java.util.ArrayList; @@ -54,10 +54,10 @@ public PrepareDataTestImpl(TwitterApiService twitterApiService, StoreOneTweet st @Override public void getTestDataTweets(String msg){ - SendType sendType = SendType.NO_MQ; - TaskType taskType = TaskType.CONTROLLER_CREATE_TESTDATA_TWEETS; + TaskSendType taskSendType = TaskSendType.NO_MQ; + TaskType taskType = TaskType.CREATE_TESTDATA_TWEETS; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create(msg, taskType, sendType, countedEntities); + Task task = taskService.create(msg, taskType, taskSendType, countedEntities); List latest = new ArrayList<>(); try { log.info(msg + "--------------------------------------------------------------------"); @@ -65,7 +65,7 @@ public void getTestDataTweets(String msg){ List idTwitterListTweets = testdataProperties.getOodm().getEntities().getTweet().getIdTwitter(); for (long idTwitter : idTwitterListTweets) { try { - org.woehlke.twitterwall.oodm.entities.Tweet persTweet = tweetService.findByIdTwitter(idTwitter); + org.woehlke.twitterwall.oodm.model.Tweet persTweet = tweetService.findByIdTwitter(idTwitter); if(persTweet != null){ loopId++; log.info(msg + "--------------------------------------------------------------------"); @@ -106,17 +106,17 @@ public void getTestDataTweets(String msg){ @Override public void getTestDataUser(String msg){ - SendType sendType = SendType.NO_MQ; - TaskType taskType = TaskType.CONTROLLER_CREATE_TESTDATA_USERS; + TaskSendType taskSendType = TaskSendType.NO_MQ; + TaskType taskType = TaskType.CREATE_TESTDATA_USERS; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task task = taskService.create(msg, taskType,sendType,countedEntities); - List user = new ArrayList<>(); + Task task = taskService.create(msg, taskType, taskSendType,countedEntities); + List user = new ArrayList<>(); try { int loopId = 0; List idTwitterListUsers = testdataProperties.getOodm().getEntities().getUser().getIdTwitter(); for (long idTwitter : idTwitterListUsers) { try { - org.woehlke.twitterwall.oodm.entities.User persUser = userService.findByIdTwitter(idTwitter); + org.woehlke.twitterwall.oodm.model.User persUser = userService.findByIdTwitter(idTwitter); if(persUser != null){ loopId++; user.add(persUser); @@ -141,7 +141,7 @@ public void getTestDataUser(String msg){ } } try { - org.woehlke.twitterwall.oodm.entities.User persUser = userService.findByScreenName(frontendProperties.getImprintScreenName()); + org.woehlke.twitterwall.oodm.model.User persUser = userService.findByScreenName(frontendProperties.getImprintScreenName()); if(persUser!=null){ loopId++; user.add(persUser); @@ -169,7 +169,7 @@ public void getTestDataUser(String msg){ } catch (Exception e) { log.warn(msg + e.getMessage()); } - for(org.woehlke.twitterwall.oodm.entities.User oneUser:user){ + for(org.woehlke.twitterwall.oodm.model.User oneUser:user){ log.debug(msg + oneUser.toString()); } countedEntities = countedEntitiesService.countAll(); @@ -178,11 +178,11 @@ public void getTestDataUser(String msg){ @Override public User createUser(String screenName) { - SendType sendType = SendType.NO_MQ; - TaskType taskType = TaskType.CONTROLLER_CREATE_TESTDATA_USERS; + TaskSendType taskSendType = TaskSendType.NO_MQ; + TaskType taskType = TaskType.CREATE_TESTDATA_USERS; CountedEntities countedEntities = countedEntitiesService.countAll(); String msg = "createUser for screenName="+screenName; - Task task = taskService.create(msg, taskType, sendType, countedEntities); + Task task = taskService.create(msg, taskType, taskSendType, countedEntities); log.info("-----------------------------------------"); try { log.info("screenName = "+ screenName); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/DomainObjectMinimalTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/DomainObjectMinimalTest.java similarity index 74% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/DomainObjectMinimalTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/DomainObjectMinimalTest.java index fb10e0ef..1a9aff59 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/DomainObjectMinimalTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/DomainObjectMinimalTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; public interface DomainObjectMinimalTest { diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/HashTagTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/HashTagTest.java similarity index 97% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/HashTagTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/HashTagTest.java index 4eb464a9..6e14e8f7 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/HashTagTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/HashTagTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/MediaTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/MediaTest.java similarity index 98% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/MediaTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/MediaTest.java index 731bf936..3c0cd99d 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/MediaTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/MediaTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/MentionTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/MentionTest.java similarity index 98% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/MentionTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/MentionTest.java index 24725a84..7b6ddd65 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/MentionTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/MentionTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; @@ -32,11 +32,11 @@ public void getUniqueIdTest() throws Exception { String name3 = "Java"; Mention mention1 = new Mention(createdBy,updatedBy,idTwitter1,screenName1,name1); - String expectedUniqueId1 = idTwitter1.toString() +"_"+ screenNameUnique1.toString(); + String expectedUniqueId1 = idTwitter1.toString() +"_"+ screenNameUnique1; Assert.assertEquals(msg,expectedUniqueId1,mention1.getUniqueId()); Mention mention2 = new Mention(createdBy,updatedBy,screenName2); - String expectedUniqueId2 = idTwitter2.toString() +"_"+ screenNameUnique2.toString(); + String expectedUniqueId2 = idTwitter2.toString() +"_"+ screenNameUnique2; Assert.assertEquals(msg,expectedUniqueId2,mention2.getUniqueId()); Mention mention3 = new Mention(createdBy,updatedBy,idTwitter3,screenName3,name3); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/TaskHistoryTest.java similarity index 85% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/TaskHistoryTest.java index 1fded06b..51524338 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskHistoryTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/TaskHistoryTest.java @@ -1,13 +1,13 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.Date; @@ -22,13 +22,13 @@ public void getUniqueIdTest() throws Exception { String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; long taskId = 222L; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task.setId(taskId); String description = "Beam me up, Scotty"; @@ -54,13 +54,13 @@ public void isValidTest() throws Exception { String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; long taskId = 222L; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task.setId(taskId); String description = "Beam me up, Scotty"; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/TaskTest.java similarity index 76% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/TaskTest.java index 248f34f4..9cb4b381 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/TaskTest.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.Date; @@ -21,7 +21,7 @@ public void getUniqueIdTest() throws Exception { String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; long taskId = 222L; TaskStatus taskStatus = TaskStatus.READY; @@ -29,7 +29,7 @@ public void getUniqueIdTest() throws Exception { Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task.setId(taskId); String myUniqueId = "" + taskType.name() +"_"+ timeStarted.getTime(); @@ -46,17 +46,17 @@ public void isValidTest() throws Exception { String descriptionTask = "Make it so, Scotty"; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task1 = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); - Task task2 = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); - Task task3 = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); - Task task4 = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task1 = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); + Task task2 = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); + Task task3 = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); + Task task4 = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); task2.setTaskType(null); task3.setTimeStarted(null); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TickerSymbolTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/TickerSymbolTest.java similarity index 96% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/TickerSymbolTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/TickerSymbolTest.java index 26e0c807..0c503814 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TickerSymbolTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/TickerSymbolTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/TweetTest.java similarity index 76% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/TweetTest.java index d746674e..dac07fde 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/TweetTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/TweetTest.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.Date; @@ -19,12 +19,12 @@ public class TweetTest implements DomainObjectMinimalTest { public void getUniqueIdTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); String msg = "getUniqueIdTest: "; Task createdBy = task; @@ -36,7 +36,7 @@ public void getUniqueIdTest() throws Exception { Tweet tweet = new Tweet(createdBy,updatedBy,idTwitter,idStr,text,createdAt); Assert.assertEquals(msg,idTwitter.toString(),tweet.getUniqueId()); } - + @Test @Override public void isValidTest() throws Exception { @@ -44,12 +44,12 @@ public void isValidTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); Task createdBy = task; Task updatedBy = null; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UrlTest.java similarity index 82% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/UrlTest.java index c9511dca..5c18cd1e 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UrlTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UrlTest.java @@ -1,10 +1,10 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.Date; @@ -17,12 +17,12 @@ public void getUniqueIdTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); Task createdBy=task; Task updatedBy=null; @@ -42,12 +42,12 @@ public void isValidTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); Task createdBy=task; Task updatedBy=null; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java similarity index 90% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java index a4876ff4..a4831ff1 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserDescriptionTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UserDescriptionTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,11 +7,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.parts.Entities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; import java.util.ArrayList; import java.util.Date; @@ -35,14 +35,14 @@ public class UserDescriptionTest { public void printDescriptionsTest(){ String descriptionTask = "Just another Task"; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskType taskType = TaskType.FETCH_TWEETS_FROM_SEARCH; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = new Date(); Date timeFinished = null; - Task task = new Task(descriptionTask,taskType,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,taskType,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); int lfdNr = 0; List descriptions = testdataProperties.getOodm().getEntities().getUser().getDescriptions(); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UserListTest.java similarity index 89% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/UserListTest.java index 066dcf63..fbd310f0 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserListTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UserListTest.java @@ -1,4 +1,4 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Test; import org.slf4j.Logger; diff --git a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java b/src/test/java/org/woehlke/twitterwall/oodm/model/UserTest.java similarity index 85% rename from src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java rename to src/test/java/org/woehlke/twitterwall/oodm/model/UserTest.java index 1e033b54..73bbc292 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/entities/UserTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/model/UserTest.java @@ -1,12 +1,12 @@ -package org.woehlke.twitterwall.oodm.entities; +package org.woehlke.twitterwall.oodm.model; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; import java.util.Date; @@ -28,12 +28,12 @@ public void getUniqueIdTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType, timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType, timeStarted,timeLastUpdate,timeFinished); User user1 = User.getDummyUserForScreenName(screenName,task); @@ -75,12 +75,12 @@ public void isValidTest() throws Exception { String descriptionTask = "start: "; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; TaskStatus taskStatus = TaskStatus.READY; Date timeStarted = new Date(); Date timeLastUpdate = timeStarted; Date timeFinished = null; - Task task = new Task(descriptionTask,type,taskStatus,sendType,timeStarted,timeLastUpdate,timeFinished); + Task task = new Task(descriptionTask,type,taskStatus, taskSendType,timeStarted,timeLastUpdate,timeFinished); Assert.assertFalse(msg,User.isValidScreenName(invalidScreenName)); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithTaskTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithTaskTest.java index 8a5b416e..e6a9ec27 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithTaskTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/DomainServiceWithTaskTest.java @@ -8,4 +8,5 @@ public interface DomainServiceWithTaskTest { void create() throws Exception; void update() throws Exception; + } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java index a83b72f6..51731a69 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/HashTagServiceTest.java @@ -12,9 +12,10 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.HashTag; -import org.woehlke.twitterwall.oodm.entities.transients.HashTagCounted; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.HashTag; +import org.woehlke.twitterwall.oodm.model.entities.Entities; +import org.woehlke.twitterwall.oodm.model.transients.HashTagCounted; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @@ -72,9 +73,9 @@ public void findByText() throws Exception { /** * @throws Exception * - * @see org.woehlke.twitterwall.oodm.entities.HashTag - * @see org.woehlke.twitterwall.oodm.entities.parts.Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.HashTag + * @see Entities + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllTweets2HashTagsRowMapper#SQL_COUNT_ALL_TWEET_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllTweet2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsTweets(Pageable) */ @@ -94,9 +95,9 @@ public void getHashTagsTweets() throws Exception { /** * @throws Exception * - * @see org.woehlke.twitterwall.oodm.entities.HashTag - * @see org.woehlke.twitterwall.oodm.entities.parts.Entities - * @see org.woehlke.twitterwall.oodm.entities.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG + * @see org.woehlke.twitterwall.oodm.model.HashTag + * @see Entities + * @see org.woehlke.twitterwall.oodm.model.transients.mapper.CountAllUsers2HashTagsRowMapper#SQL_COUNT_ALL_USER_2_HASHTAG * @see org.woehlke.twitterwall.oodm.repositories.custom.impl.HashTagRepositoryImpl#countAllUser2HashTag(Pageable) * @see org.woehlke.twitterwall.oodm.service.impl.HashTagServiceImpl#getHashTagsUsers(Pageable) */ diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java index 4c142c49..cbc3f529 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MediaServiceTest.java @@ -12,8 +12,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Media; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.Media; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java index 04f0be6a..369fff64 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/MentionServiceTest.java @@ -13,12 +13,14 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Mention; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.Mention; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; + +import java.util.Date; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @@ -38,6 +40,7 @@ public class MentionServiceTest implements DomainObjectMinimalServiceTest,Domain @Autowired private TestdataProperties testdataProperties; + @Commit @Test public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(mentionService); @@ -45,6 +48,47 @@ public void areDependenciesLoaded() throws Exception { Assert.assertNotNull(countedEntitiesService); } + @Commit + @Test + public void createTestData() throws Exception { + String msg = "createTestData: "; + CountedEntities countedEntities = countedEntitiesService.countAll(); + Task createdBy= taskService.create(msg, TaskType.NULL, TaskSendType.NO_MQ,countedEntities); + Task updatedBy=null; + + String screenName[] = { + "port80guru", + "ThomasWoehlke", + "OracleDevs", + "java" + }; + long idTwitter[] = {242L, 1242L, 3242L, 4242L}; + String name[] = { + "Natural Born Coder", + "Thomas Woehlke", + "Oracle Developer", + "Java" + }; + + int pageNr=1; + int pageSize=1; + Pageable pageRequest = new PageRequest(pageNr,pageSize); + + for(int i=0;i<4;i++){ + Page foundMentionsPage = mentionService.findAllByScreenName(screenName[i],pageRequest); + if(foundMentionsPage.getTotalElements() == 0){ + waitFor500ms(); + Date now = new Date(); + long myIdTwitter = idTwitter[i] + now.getTime(); + Mention mentionTest = new Mention(createdBy,updatedBy,myIdTwitter, screenName[i], name[i]); + mentionTest = mentionService.store(mentionTest,createdBy); + Assert.assertNotNull(mentionTest); + Assert.assertNotNull(mentionTest.getId()); + Assert.assertTrue(mentionTest.isValid()); + } + } + } + @Commit @Test public void fetchTestData() throws Exception { @@ -70,8 +114,8 @@ public void createProxyMention() throws Exception { String msg = "createProxyMention: "; CountedEntities countedEntities = countedEntitiesService.countAll(); TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; - Task task = taskService.create("MentionServiceTest."+msg,type,sendType,countedEntities); + TaskSendType taskSendType = TaskSendType.NO_MQ; + Task task = taskService.create("MentionServiceTest."+msg,type, taskSendType,countedEntities); String mentionString = "ddhgcvdghvsdhg"; Mention mention = new Mention(task,task, mentionString); Mention createdMention = mentionService.createProxyMention(mention,task); @@ -98,25 +142,28 @@ public void getAllWithoutPersistentUser() throws Exception { @Test public void findByIdTwitter() throws Exception { String msg = "findByIdTwitter: "; + createTestData(); int page=1; int size=20; Pageable pageRequest = new PageRequest(page,size); Page myPage = mentionService.getAll(pageRequest); Assert.assertTrue(msg,myPage.getTotalElements()>0); for(Mention myMention:myPage.getContent()){ - long idTwitter = myMention.getIdTwitter(); - if(idTwitter > 0L) { - Mention myFoundMention = mentionService.findByIdTwitter(idTwitter); + long myIdTwitter = myMention.getIdTwitter(); + if(myIdTwitter > 0L) { + Mention myFoundMention = mentionService.findByIdTwitter(myIdTwitter); Assert.assertNotNull(myFoundMention); - Assert.assertEquals(msg, idTwitter, myFoundMention.getIdTwitter().longValue()); + Assert.assertEquals(msg, myIdTwitter, myFoundMention.getIdTwitter().longValue()); } } } @Commit @Test + @Override public void findByScreenName() throws Exception { String msg = "findByScreenName: "; + createTestData(); int page=1; int size=1; Pageable pageRequest = new PageRequest(page,size); @@ -181,4 +228,31 @@ public void create() throws Exception { public void update() throws Exception { } + + @Commit + @Test + public void findByUserId() throws Exception { + + } + + @Commit + @Test + public void findAllByScreenName() throws Exception { + + } + + @Commit + @Test + public void findByIdTwitterOfUser() throws Exception { + + } + + private void waitFor500ms(){ + int millisToWait = 500; + log.debug("### waiting now for (ms): "+millisToWait); + try { + Thread.sleep(millisToWait); + } catch (InterruptedException e) { + } + } } diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java index 34ca723b..74867da5 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskHistoryServiceTest.java @@ -12,8 +12,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.TaskHistory; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.TaskHistory; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java index 2e585852..7dcbeb16 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TaskServiceTest.java @@ -12,12 +12,12 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Task; -import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities; -import org.woehlke.twitterwall.oodm.entities.parts.TaskStatus; -import org.woehlke.twitterwall.oodm.entities.parts.TaskType; -import org.woehlke.twitterwall.scheduled.mq.msg.SendType; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskStatus; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @@ -64,9 +64,9 @@ public void fetchTestData() throws Exception { public void create() throws Exception { String msg = "TaskServiceTest.create"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task createdTask = taskService.create(msg,type,sendType,countedEntities); + Task createdTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(createdTask.getTaskStatus(),TaskStatus.READY); } @@ -75,9 +75,9 @@ public void create() throws Exception { public void done() throws Exception { String msg = "TaskServiceTest.done"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.done(myTask,countedEntities); @@ -90,9 +90,9 @@ public void done() throws Exception { public void error() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.error(myTask,msg,countedEntities); @@ -105,9 +105,9 @@ public void error() throws Exception { public void warn() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.warn(myTask,msg,countedEntities); @@ -120,9 +120,9 @@ public void warn() throws Exception { public void event() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); TaskStatus oldStatus = myTask.getTaskStatus(); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); @@ -136,9 +136,9 @@ public void event() throws Exception { public void start() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.start(myTask,countedEntities); @@ -151,9 +151,9 @@ public void start() throws Exception { public void finalError() throws Exception { String msg = "TaskServiceTest.error"; TaskType type = TaskType.FETCH_TWEETS_FROM_SEARCH; - SendType sendType = SendType.NO_MQ; + TaskSendType taskSendType = TaskSendType.NO_MQ; CountedEntities countedEntities = countedEntitiesService.countAll(); - Task myTask = taskService.create(msg,type,sendType,countedEntities); + Task myTask = taskService.create(msg,type, taskSendType,countedEntities); Assert.assertEquals(myTask.getTaskStatus(),TaskStatus.READY); countedEntities = countedEntitiesService.countAll(); Task createdTask = taskService.finalError(myTask,msg,countedEntities); diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java index c287b45d..ac28692a 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TickerSymbolServiceTest.java @@ -13,8 +13,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.TickerSymbol; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.TickerSymbol; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java index ddf4799c..7803a58d 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/TweetServiceTest.java @@ -12,9 +12,9 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; import java.util.Set; @@ -117,6 +117,82 @@ public void findTweetsForHashTag() throws Exception { log.info(msg); } + @Commit + @Test + public void findTweetsForMedia() throws Exception { + String msg = "findTweetsForMedia: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page mediaList = mediaService.getAll(pageRequest); + for(Media media:mediaList.getContent()){ + log.debug(msg+" found Media: "+media.getUniqueId()); + Page tweets = tweetService.findTweetsForMedia(media,pageRequest); + for(Tweet tweet: tweets.getContent()){ + Assert.assertTrue(tweet.getEntities().getMedia().contains(media)); + log.debug(msg+" found Tweet: "+tweet.getUniqueId()+" found Media: "+media.getUniqueId()); + } + } + log.info(msg); + } + + @Commit + @Test + public void findTweetsForMention() throws Exception { + String msg = "findTweetsForMention: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page mentionList = mentionService.getAll(pageRequest); + for(Mention mention:mentionList.getContent()){ + log.debug(msg+" found Mention: "+mention.getUniqueId()); + Page tweets = tweetService.findTweetsForMention(mention,pageRequest); + for(Tweet tweet: tweets.getContent()){ + Assert.assertTrue(tweet.getEntities().getMentions().contains(mention)); + log.debug(msg+" found Tweet: "+tweet.getUniqueId()+" found Mention: "+mention.getUniqueId()); + } + } + log.info(msg); + } + + @Commit + @Test + public void findTweetsForUrl() throws Exception { + String msg = "findTweetsForUrl: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page urlPage = urlService.getAll(pageRequest); + for(Url url:urlPage.getContent()){ + log.debug(msg+" found Url: "+url.getUniqueId()); + Page tweets = tweetService.findTweetsForUrl(url,pageRequest); + for(Tweet tweet: tweets.getContent()){ + Assert.assertTrue(tweet.getEntities().getUrls().contains(url)); + log.debug(msg+" found Tweet: "+tweet.getUniqueId()+" found Url: "+url.getUniqueId()); + } + } + log.info(msg); + } + + @Commit + @Test + public void findTweetsForTickerSymbol() throws Exception { + String msg = "findTweetsForTickerSymbol: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page tickerSymbolPage = tickerSymbolService.getAll(pageRequest); + for(TickerSymbol tickerSymbol:tickerSymbolPage.getContent()){ + log.debug(msg+" found TickerSymbol: "+tickerSymbol.getUniqueId()); + Page tweets = tweetService.findTweetsForTickerSymbol(tickerSymbol,pageRequest); + for(Tweet tweet: tweets.getContent()){ + Assert.assertTrue(tweet.getEntities().getTickerSymbols().contains(tickerSymbol)); + log.debug(msg+" found Tweet: "+tweet.getUniqueId()+" found TickerSymbol: "+tickerSymbol.getUniqueId()); + } + } + log.info(msg); + } + @Commit @Test public void findTweetsForUser() throws Exception { diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java index 5e7ff6ca..0393ed3c 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UrlServiceTest.java @@ -12,8 +12,14 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.oodm.entities.Url; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.oodm.model.Task; +import org.woehlke.twitterwall.oodm.model.Url; +import org.woehlke.twitterwall.oodm.model.parts.CountedEntities; +import org.woehlke.twitterwall.oodm.model.tasks.TaskSendType; +import org.woehlke.twitterwall.oodm.model.tasks.TaskType; + +import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @@ -24,6 +30,12 @@ public class UrlServiceTest implements DomainObjectMinimalServiceTest,DomainServ @Autowired private UrlService urlService; + @Autowired + private TaskService taskService; + + @Autowired + private CountedEntitiesService countedEntitiesService; + @Autowired private TestdataProperties testdataProperties; @@ -71,6 +83,88 @@ public void findByUrl() throws Exception { } } + @Commit + @Test + public void findRawUrlsFromDescription() throws Exception { + String msg = "findRawUrlsFromDescription: "; + CountedEntities countedEntities = countedEntitiesService.countAll(); + Task createdBy= taskService.create(msg, TaskType.NULL, TaskSendType.NO_MQ,countedEntities); + Task updatedBy=null; + String display=Url.UNDEFINED; + String expanded=Url.UNDEFINED; + String url1="http://woehlke.org/"; + String url2="http://thomas-woehlke.de"; + String url3="http://java.sun.com"; + String url4="http://tomcat.apache.org"; + + Url urlTest1 = new Url(createdBy,updatedBy,display,expanded,url1); + Url urlTest2 = new Url(createdBy,updatedBy,display,expanded,url2); + Url urlTest3 = new Url(createdBy,updatedBy,url3,url3,url3); + Url urlTest4 = new Url(createdBy,updatedBy,url4,url4,url4); + + urlService.store(urlTest1,createdBy); + urlService.store(urlTest2,createdBy); + urlService.store(urlTest3,createdBy); + urlService.store(urlTest4,createdBy); + + List urlList = urlService.findRawUrlsFromDescription(); + log.info(msg+"+++++++++++++++++++++++++++++++++++++++++"); + log.info(msg+" size: "+urlList.size()); + log.info(msg+"+++++++++++++++++++++++++++++++++++++++++"); + Assert.assertTrue(urlList.size()>0); + for(Url url:urlList){ + Assert.assertTrue(url.isValid()); + Assert.assertTrue(url.isRawUrlsFromDescription()); + Assert.assertTrue(url.getExpanded().compareTo(Url.UNDEFINED)==0); + Assert.assertTrue(url.getDisplay().compareTo(Url.UNDEFINED)==0); + log.info(msg+"-----------------------------------------"); + log.info(msg+url.getUniqueId()); + log.info(msg+"-----------------------------------------"); + log.trace(msg+url.toString()); + } + } + + @Commit + @Test + public void findUrlAndExpandedTheSame() throws Exception { + String msg = "findUrlAndExpandedTheSame: "; + + CountedEntities countedEntities = countedEntitiesService.countAll(); + Task createdBy= taskService.create(msg, TaskType.NULL, TaskSendType.NO_MQ,countedEntities); + Task updatedBy=null; + String display=Url.UNDEFINED; + String expanded=Url.UNDEFINED; + String url1="http://woehlke.org/"; + String url2="http://thomas-woehlke.de"; + String url3="http://java.sun.com"; + String url4="http://tomcat.apache.org"; + + Url urlTest1 = new Url(createdBy,updatedBy,display,expanded,url1); + Url urlTest2 = new Url(createdBy,updatedBy,display,expanded,url2); + Url urlTest3 = new Url(createdBy,updatedBy,url3,url3,url3); + Url urlTest4 = new Url(createdBy,updatedBy,url4,url4,url4); + + urlService.store(urlTest1,createdBy); + urlService.store(urlTest2,createdBy); + urlService.store(urlTest3,createdBy); + urlService.store(urlTest4,createdBy); + + List urlList = urlService.findUrlAndExpandedTheSame(); + log.info(msg+"+++++++++++++++++++++++++++++++++++++++++"); + log.info(msg+" size: "+urlList.size()); + log.info(msg+"+++++++++++++++++++++++++++++++++++++++++"); + Assert.assertTrue(urlList.size()>0); + for(Url url:urlList){ + Assert.assertTrue(url.isValid()); + Assert.assertTrue(url.isUrlAndExpandedTheSame()); + Assert.assertTrue(url.getUrl().compareTo(url.getExpanded())==0); + log.info(msg+"-----------------------------------------"); + log.info(msg+url.getUniqueId()); + log.info(msg+"-----------------------------------------"); + log.trace(msg+url.toString()); + } + } + @Commit @Test @Override diff --git a/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java b/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java index 8b9b162a..42cbdb97 100644 --- a/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java +++ b/src/test/java/org/woehlke/twitterwall/oodm/service/UserServiceTest.java @@ -13,14 +13,14 @@ import org.springframework.data.domain.Pageable; import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; -import org.woehlke.twitterwall.conf.properties.TestdataProperties; -import org.woehlke.twitterwall.conf.properties.TwitterProperties; -import org.woehlke.twitterwall.oodm.entities.*; -import org.woehlke.twitterwall.oodm.entities.transients.Object2Entity; +import org.woehlke.twitterwall.configuration.properties.TestdataProperties; +import org.woehlke.twitterwall.configuration.properties.TwitterProperties; +import org.woehlke.twitterwall.oodm.model.*; +import org.woehlke.twitterwall.oodm.model.transients.Object2Entity; import java.util.Set; -import static org.woehlke.twitterwall.frontend.controller.common.ControllerHelper.FIRST_PAGE_NUMBER; +import static org.woehlke.twitterwall.frontend.content.ContentFactory.FIRST_PAGE_NUMBER; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) @@ -150,6 +150,78 @@ public void getUsersForHashTag() throws Exception { } } + @Commit + @Test + public void getUsersForMedia() throws Exception { + String msg = "getUsersForMedia: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page mediaPage = mediaService.getAll(pageRequest); + for(Media media:mediaPage.getContent()){ + log.debug(msg+" found Media: "+media.getUniqueId()); + Page users = userService.getUsersForMedia(media,pageRequest); + for(User user: users.getContent()){ + log.debug(msg+" found Media: "+user.getUniqueId()); + Assert.assertTrue(user.getEntities().getMedia().contains(media)); + } + } + } + + @Commit + @Test + public void getUsersForMention() throws Exception { + String msg = "getUsersForMention: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page mentionPage = mentionService.getAll(pageRequest); + for(Mention mention:mentionPage.getContent()){ + log.debug(msg+" found Mention: "+mention.getUniqueId()); + Page users = userService.getUsersForMention(mention,pageRequest); + for(User user: users.getContent()){ + log.debug(msg+" found Mention: "+user.getUniqueId()); + Assert.assertTrue(user.getEntities().getMentions().contains(mention)); + } + } + } + + @Commit + @Test + public void getUsersForUrl() throws Exception { + String msg = "getUsersForUrl: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page urlPage = urlService.getAll(pageRequest); + for(Url url:urlPage.getContent()){ + log.debug(msg+" found Url: "+url.getUniqueId()); + Page users = userService.getUsersForUrl(url,pageRequest); + for(User user: users.getContent()){ + log.debug(msg+" found User: "+user.getUniqueId()); + Assert.assertTrue(user.getEntities().getUrls().contains(url)); + } + } + } + + @Commit + @Test + public void getUsersForTickerSymbol() throws Exception { + String msg = "getUsersForTickerSymbol: "; + int page=1; + int size=10; + Pageable pageRequest = new PageRequest(page,size); + Page tickerSymbolPage = tickerSymbolService.getAll(pageRequest); + for(TickerSymbol tickerSymbol:tickerSymbolPage.getContent()){ + log.debug(msg+" found TickerSymbol: "+tickerSymbol.getUniqueId()); + Page users = userService.getUsersForTickerSymbol(tickerSymbol,pageRequest); + for(User user: users.getContent()){ + log.debug(msg+" found User: "+user.getUniqueId()); + Assert.assertTrue(user.getEntities().getTickerSymbols().contains(tickerSymbol)); + } + } + } + @Commit @Test public void getFriends() throws Exception { diff --git a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java b/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java deleted file mode 100644 index 2c00c561..00000000 --- a/src/test/java/org/woehlke/twitterwall/scheduled/mq/endpoint/StartTaskTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.woehlke.twitterwall.scheduled.mq.endpoint; - -/** - * @see org.woehlke.twitterwall.scheduled.mq.endpoint.StartTask - * @see org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask - */ -public interface StartTaskTest extends AsyncStartTaskTest { - - void createImprintUserTest() throws Exception; - - void createTestDataUsersTest() throws Exception; - - void createTestDataTweetsTest() throws Exception; - -} diff --git a/src/test/resources/application-test.yml b/src/test/resources/application-test.yml deleted file mode 100644 index 2f48e6b0..00000000 --- a/src/test/resources/application-test.yml +++ /dev/null @@ -1,40 +0,0 @@ -endpoints: - health: - sensitive: true - endpoints: - shutdown: - enabled: true -logging: - file: test/twitterwall.log.txt -management: - security: - enabled: true -spring: - application: - admin: - enabled: true - jpa: - show-sql: true -twitterwall: - backend: - twitter: - millisToWaitForFetchTweetsFromTwitterSearch: 6000000 - contextTest: true - scheduler: - allowFetchTweetsFromTwitterSearch: true - allowUpdateTweets: true - allowUpdateUserProfiles: true - allowUpdateUserProfilesFromMention: true - fetchUsersFromDefinedUserListAllow: true - fetchUsersFromDefinedUserListName: ${TWITTERWALL_SCHEDULER_USER_LIST_NAME} - herokuDbRowsLimit: false - removeOldDataFromStorageAllow: true - fetchFollowerAllow: true - fetchFriendsAllow: true - allowGetHomeTimeline: true - allowGetUserTimeline: true - allowGetMentions: true - allowGetFavorites: true - allowGetRetweetsOfMe: true - allowGetLists: true - skipFortesting: true \ No newline at end of file diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml index ceaf1fc2..d28cf14d 100644 --- a/src/test/resources/logback.xml +++ b/src/test/resources/logback.xml @@ -1,10 +1,10 @@ - + - + @@ -13,10 +13,10 @@ - - - - + + + + diff --git a/test/db-count.sql b/test/db-count.sql index c7e96c7d..e00e9bb4 100644 --- a/test/db-count.sql +++ b/test/db-count.sql @@ -14,6 +14,8 @@ select count(*) from mention; select count(*) from media; select count(*) from hashtag; select count(*) from tweet; +select count(*) from userlist_members; +select count(*) from userlist_subcriber; select count(*) from userprofile; select count(*) from userlist; select count(*) from task_history; diff --git a/test/db-drop-tables.sql b/test/db-drop-tables.sql index 99ceebac..15ad5faf 100644 --- a/test/db-drop-tables.sql +++ b/test/db-drop-tables.sql @@ -15,6 +15,8 @@ drop table media; drop table hashtag; drop table tweet; drop table userprofile; +drop table userlist_members; +drop table userlist_subcriber; drop table userlist; drop table task_history; drop table task; diff --git a/test/db-reset.sql b/test/db-reset.sql index 27c15415..dda6c62d 100644 --- a/test/db-reset.sql +++ b/test/db-reset.sql @@ -15,6 +15,8 @@ delete from media; delete from hashtag; delete from tweet; delete from userprofile; +delete from userlist_members; +delete from userlist_subcriber; delete from userlist; delete from task_history; delete from task;